論文筆記之YOLOv2、YOLOv3

1. YOLO存在的問題:

(1)定位誤差大
(2)召回率低

2. YOLOv2的改進:

YOLOv2主要從以下幾個方面做了改進:
在這裏插入圖片描述

2.1 Batch Normallzation

Batch Normalization可以提升模型收斂速度,而且可以起到一定正則化效果,降低模型的過擬合。在YOLOv2中,每個卷積層後面都添加了Batch Normalization層,並且不再使用dropout。使用Batch Normalization後,YOLOv2的mAP提升了2.4%。

2.2 High Resolution Classifier

目前大部分的檢測模型都會在先在ImageNet分類數據集上預訓練模型的主體部分(CNN特徵提取器),ImageNet分類模型基本採用大小爲 224×224 的圖片作爲輸入,分辨率相對較低,不利於檢測模型。所以YOLOv1在採用 224×224 分類模型預訓練後,將分辨率增加至 448×448 ,並使用這個高分辨率在檢測數據集上微調。但是直接切換分辨率,檢測模型可能難以快速適應高分辨率。所以YOLOv2增加了在ImageNet數據集上使用448×448來微調分類網絡這一中間過程(10 epochs),這可以使得模型在檢測數據集上finetune之前已經適用高分辨率輸入。使用高分辨率分類器後,YOLOv2的mAP提升了約4%。

2.3 Convolutionlal With Anchor Boxes

在YOLOv1中,輸入圖片最終被劃分爲7*7網格,每個單元格預測2個邊界框。YOLOv1最後採用的是全連接層直接對邊界框進行預測,其中邊界框的寬與高是相對整張圖片大小的,而由於各個圖片中存在不同尺度和長寬比的物體,YOLOv1在訓練過程中學習適應不同物體的形狀是比較困難的,這也導致YOLOv1在精確定位方面表現較差。

YOLOv2借鑑了Faster R-CNN中RPN網絡的先驗框策略。RPN對CNN特徵提取器得到的特徵圖進行卷積來預測每個位置的邊界框以及置信度(是否含有物體),並且各個位置設置不同尺度和比例的先驗框,所以RPN預測的是邊界框相對於先驗框的offsets值,採用先驗框使得模型更容易學習。所以YOLOv2移除了YOLOv1中的全連接層而採用了卷積和anchor boxes來預測邊界框。爲了使檢測所用的特徵圖分辨率更高,移除其中的一個pool層。

在檢測模型中,YOLOv2不是採481418圖片作爲輸入,而是採用416416大小。因爲YOLOv2模型下采樣的總步長爲32,對於416416大小的圖片,最終得到的特徵圖大小爲1313,維度是奇數,這樣特徵圖恰好只有一箇中心位置。對於一些大物體,它們中心點往往落入圖片中心位置,此時使用特徵圖的一箇中心點去預測這些物體的邊界框相對容易些。所以在YOLOv2設計中要保證最終的特徵圖有奇數個位置。

對於YOLOv1,每個cell都預測2個boxes,每個boxes包含5個值:(x,y,w,h,c)前4個值是邊界框位置與大小,最後一個值是置信度(confidence scores,包含兩部分:含有物體的概率以及預測框與ground truth的IOU)。但是每個cell只預測一套分類概率值(class predictions,其實是置信度下的條件概率值),供2個boxes共享。YOLOv2使用了anchor boxes之後,每個位置的各個anchor box都單獨預測一套分類概率值,這和SSD比較類似(但SSD沒有預測置信度,而是把background作爲一個類別來處理)。

使用anchor boxes之後,YOLOv2的mAP有稍微下降(可能是訓練方法不正確)。YOLOv1只能預測98個邊界框(7×7×2),而YOLOv2使用anchor boxes之後可以預測上千個邊界框(13×13×num_anchors)。所以使用anchor boxes之後,YOLOv2的召回率大大提升,由原來的81%升至88%。

2.4 Dimension Clusters

在Faster R-CNN和SSD中,先驗框的維度(長和寬)都是手動設定的,帶有一定的主觀性。如果選取的先驗框維度比較合適,那麼模型更容易學習,從而做出更好的預測。

因此,YOLOv2採用k-means聚類方法對訓練集中的邊界框做了聚類分析。因爲設置先驗框的主要目的是爲了使得預測框與ground truth的IOU更好,所以聚類分析時選用box與聚類中心box之間的IOU值作爲距離指標:
在這裏插入圖片描述
對k的各種值運行k-means,並繪製平均IOU(各個邊界框與聚類中心的IOU的平均值),見圖:
在這裏插入圖片描述
最後選擇k=5作爲模型複雜度和高召回率之間的一個很好的折衷。聚類中心明顯不同於人工選取的anchor box。少了一些又短又寬的box,多了一些又高又窄的box。使用k-means生成的默認框可以以更好的表示方式啓動模型,並使任務更易於學習。

2.5 Direct location prediction

YOLOv2借鑑RPN網絡使用anchor boxes來預測邊界框相對先驗框的offsets。而在區域建議網絡中,網絡預測值tx和ty以及(x,y)中心座標的計算公式爲:
在這裏插入圖片描述
此公式不受約束,預測的邊界框很容易向任何方向偏移。在隨機初始化的情況下,模型需要很長時間才能穩定下來,以預測合理的偏移量。

而預測相對網格單元位置的位置座標(邊界框中心點相對於對應cell左上角位置的相對偏移值)。這限制了真實值在0和1(每個cell是1)之間。使用logistic激活來限制網絡的預測在這個範圍內。

該網絡在輸出特徵圖的每個網格單元預測5個邊界框。網絡爲每個邊界框預測5個座標tx、ty、tw、th和to。如果單元格與圖像左上角的偏移量爲(cx,cy),並且prior 邊界框具有寬度和高度pw,ph,則預測對應於:
在這裏插入圖片描述
因爲限制了位置預測,所以參數更容易學習,使網絡更加穩定。使用聚類分析和直接預測邊界框中心位置比使用anchor box的版本提高了約5%。
在這裏插入圖片描述

2.6 Fine-Grained Features

YOLOv2的輸入圖片大小爲416416,經過5次maxpooling之後得到1313大小的特徵圖,並以此特徵圖採用卷積做預測。13*13大小的特徵圖對檢測大物體是足夠了,但是對於小物體還需要更精細的特徵圖(Fine-Grained Features)。因此SSD使用了多尺度的特徵圖來分別檢測不同大小的物體,前面更精細的特徵圖可以用來預測小物體。YOLOv2提出了一種passthrough層來利用更精細的特徵圖。

YOLOv2所利用的Fine-Grained Features是2626大小的特徵圖(最後一個maxpooling層的輸入),對於Darknet-19模型來說就是大小爲2626512的特徵圖。passthrough層與ResNet網絡的shortcut類似,以前面更高分辨率的特徵圖爲輸入,然後將其連接到後面的低分辨率特徵圖上。前面的特徵圖維度是後面的特徵圖的2倍,passthrough層抽取前面層的每個22的局部區域,然後將其轉化爲channel維度,對於2626512的特徵圖,經passthrough層處理之後就變成了13132048的新特徵圖(特徵圖大小降低4倍,而channles增加4倍),這樣就可以與後面的13131024特徵圖連接在一起形成13133072的特徵圖,然後在此特徵圖基礎上卷積做預測。這使性能略微提高了1%。

2.7 Multi-Scale Training

由於YOLOv2模型中只有卷積層和池化層,所以YOLOv2的輸入可以不限於416416大小的圖片。爲了增強模型的魯棒性,YOLOv2採用了多尺度輸入訓練策略,具體來說就是在訓練過程中每間隔一定的iterations之後改變模型的輸入圖片大小。由於YOLOv2的下采樣總步長爲32,輸入圖片大小選擇一系列爲32倍數的值:(320,352,…,608),輸入圖片最小爲320320,此時對應的特徵圖大小爲1010,而輸入圖片最大爲608608,對應的特徵圖大小爲19*19,在訓練過程,每隔10個iterations隨機選擇一種輸入圖片大小,然後只需要修改對最後檢測層的處理就可以重新訓練。
在這裏插入圖片描述

2.8 DarkNet-19

提出了一個新的分類模型作爲YOLOv2的基礎。與VGG模型類似,主要使用3 × 3的卷積,在每個池化步驟之後通道數量增加一倍。與網絡中的網絡類似(NIN),使用全局平均池化進行預測,並使用1 × 1卷積壓縮3 × 3卷積之間的特徵表示以降低模型計算量和參數。使用batch normalization來穩定訓練,加速收斂,並使模型正則化。
最終模型,稱爲Darknet-19,有19個卷積層和5個maxpooling層。有關詳細說明,請參見表6.
在這裏插入圖片描述

3. YOLOv3的改進:

3.1 跨尺度預測

YOLOv3預測3種不同尺度的box。其實就是使用了與金字塔網絡相似的概念,從這些尺度中提取特徵。(當輸入爲416416時爲:(1313),(2626),(5252))。
在這裏插入圖片描述
從前面的兩層中提取特徵圖,並將其放大2倍(上採樣)。另外還從網絡的早期獲取一個特徵圖,並使用cocat將這個與上採樣特徵融合。這個方法可以從上採樣的特徵中獲取更有意義的語義信息,並從早期的特徵映射中獲取更細粒度的信息。然後,再添加一些卷積層來處理這個組合的特徵映射,並最終預測一個相似的張量。

再次執行相同的步驟,加上原來的和上一個,共3個尺度。

TOLOv3仍然使用k-means聚類來確定先驗框。任意選擇了9個簇和3個尺度,然後在尺度上均勻地劃分簇。在COCO數據集上,9個聚類爲:(10 × 13);(16 × 30);(33 × 23);(30 × 61);(62 × 45);(59 × 119);(116 × 90);(156 × 198);(373 × 326)。

3.2 DarkNet-53

新網絡是YOLOv2,Darknet-19中使用的網絡和新的殘差網絡之間的混合。網絡使用連續的3 × 3和1 × 1卷積層,但現在也有一些快捷連接,並且明顯更大。它有53個卷積層,所以稱之爲Darknet-53.
在這裏插入圖片描述

3.3 實驗結果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章