深度學習_目標檢測_YOLOv2論文詳解

YOLOv2的創新點

YOLOv1雖然檢測速度塊,但在定位方面不夠準確,並且召回率低。爲了提升定位準確率,改善召回率,YOLOv2在YOLOv1的基礎上提出了幾種改進策略,如下圖所示,可以看到,一些改進方法能有效提高模型的mAP。

  1. 大尺度預訓練分類。
  2. 使用新的網絡:DarkNet-19。
  3. 加入anchor。

在這裏插入圖片描述

YOLOv2詳解介紹

1.Batch Normalization

YOLOv2中在每個卷積層後加Batch Normalization層,去掉dropout。

BN層可以起到一定的正則化效果,能提升模型收斂速度,防止模型過擬合。YOLOv2通過使用BN層使得mAP提高了2%。

2.High Resolution Classifier

目前的大部分檢測模型都會使用主流分類網絡(如VGG、ResNet等)在ImageNet上的預訓練模型作爲特徵提取器,而這些分類網絡大部分都是以小於256×256256\times 256的圖片作爲輸入進行訓練的,低分辨率會影響模型檢測能力。YOLOv2將輸入圖片的分辨率提升至448×448448\times 448,爲了使網絡適應新的分辨率,YOLOv2先在ImageNet上以448×448448\times 448的分辨率對網絡進行10個epoch的微調,讓網絡適應高分辨率的輸入。通過使用高分辨率的輸入,YOLOv2的mAP提升了約4%。

3.Convolutional With Anchor Boxes

YOLOv1利用全連接層直接對邊界框進行預測,導致丟失較多空間信息,定位不準。YOLOv2去掉了YOLOv1中的全連接層,使用Anchor Boxes預測邊界框,同時爲了得到更高分辨率的特徵圖,YOLOv2還去掉了一個池化層。由於圖片中的物體都傾向於出現在圖片的中心位置,若特徵圖恰好有一箇中心位置,利用這個中心位置預測中心點落入該位置的物體,對這些物體的檢測會更容易。所以總希望得到的特徵圖的寬高都爲奇數。YOLOv2通過縮減網絡,使用416×416416\times 416的輸入,模型下采樣的總步長爲32,最後得到13×1313\times 13的特徵圖的每個像素預測5個anchor boxes,對每個anchor box預測邊界框的位置信息、置信度和一套分類概率值。使用anchor boxes之後,YOLOv2可以預測13×13×5=84513\times 13\times 5 = 845個邊界框,模型的召回率由原來的81%提升到88%,mAP由原來的69.5%降低到69.2%。也就是說召回率提升了7%,準確率下降了0.3%。

4.Dimension Clusters

在Faster R-CNN和SSD中,先驗框都是手動設定的,帶有一定的主觀性。YOLOv2採用k-means聚類算法對訓練集中的邊界框做了聚類分析,選用boxes之間的IOU值作爲聚類指標。綜合考慮模型複雜度和召回率,最終選擇5個聚類中心,得到5個先驗框,發現其中中扁長的框較少,而瘦高的框更多,更符合行人特徵。通過對比實驗,發現用聚類分析得到的先驗框比手動選擇的先驗框有更高的平均IOU值,這使得模型更容易訓練學習。

5.New Network:Darknet-19

YOLOv2採用Darknet-19,其網絡結構如下圖所示,包括19個卷積層和5個max pooling層,主要採用3×33\times 3卷積和1×11\times 1卷積,這裏1×11\times 1卷積可以壓縮特徵圖通道數以降低模型計算量和參數,每個卷積層後使用BN層以加快模型收斂同時防止過擬合。最終採用global avg pool做預測。採用darknet-19模型,mAP值沒有顯著提升,但計算量減少了。

在這裏插入圖片描述

6.Direct location prediction

Faster R-CNN使用anchor boxes預測邊界框相對先驗框的偏移量,由於沒有對偏移量進行約束,每個位置預測的邊界框可以落在圖片任何位置,會導致模型不穩定,加長訓練時間。YOLOv2沿用YOLOv1的方法,根據所在網格單元的位置來預測座標,則Ground Truth的值介於0到1之間。網絡中將得到的網格預測結果再輸入sigmoid函數中,讓輸出結果介於0到1之間。設一個網格相對於圖片左上角的偏移量是cx,cy。先驗框的寬度和高度分別是pw和ph,則預測的邊界框相對於特徵圖的中心座標(bx,by)和寬高bw、bh的計算公式如下圖所示。

在這裏插入圖片描述

YOLOv2結合Dimention Clusters,通過對比邊界框的位置預測進行約束,使模型更容易穩定訓練,這種方式使得模型的mAP值提升了約5%。

7.Fine-Grained Features

YOLOv2借鑑SSD使用了多尺度的特徵圖做檢測,提出pass through層將高分辨率的特徵圖與低分辨率的特徵圖聯繫在一起,從而實現多尺度檢測。YOLOv2提取Darknet-19最後一個max pool層的輸入,得到26×26×51226\times 26\times 512的特徵圖。經過1×1×641\times 1\times 64的卷積以降低特徵圖的維度,得到26×26×6426\times 26\times 64,然後經過pass through層的處理變成13×13×25613\times 13\times 256的特徵圖(抽取願特徵圖每個2×22\times 2的局部區域組成新的channel,即原特徵圖大小降低4倍,channel增加4倍),再與13×13×102413\times 13\times 1024大小的特徵圖連接,變成13×13×128013\times 13\times 1280的特徵圖,最後在這些特徵圖上做預測。使用Fine-Grained Features,YOLOv2的性能提升了1%。

8.Multi-Scale Training

YOLOv2中使用的Darknet-19網絡結構中只有卷積層和池化層,所以對輸入圖片的大小沒有限制。YOLOv2採用多尺度輸入的方式訓練,在訓練過程中每隔10個batches,重新隨機選擇輸入圖片的尺寸,由於Darknet-19下采樣總步長爲32,輸入圖片的尺寸一般選擇32的倍數{320, 352, …,608}。採用Multi-Scale Training,可以適應不同大小的圖片輸入,當採用低分辨率的圖片輸入時,mAP值略有下降,但速度更快,當採用高分辨率的圖片輸入時,能得到較高mAP值,但速度有所下降。

YOLOv2借鑑了很多其他目標檢測模型的一些技巧,如Faster R-CNN的anchor boxes,SSD中的多尺度檢測。除此之外,YOLOv2在網絡設計上做了很多tricks,使它能在保證速度的同時提高檢測準確率,Multi-Scale Training更使得同一個模型適應不同大小的輸入,從而可以在速度和精度上進行自由權衡。

YOLOv2的訓練過程

  1. 先在ImageNet分類數據集上預訓練Darknet-19,此時模型輸入爲224×224224\times 224的尺寸,共訓練160個epochs。
  2. 將網絡的輸入調整爲448×448448\times 448,繼續在ImageNet數據集上finetune分類模型,訓練10個epochs,此時分類模型的top-1準確率爲76.5%,而top-5準確率爲93.3%。
  3. 修改Darknet-19分類模型爲檢測模型,並在檢測數據集上繼續finetune網絡。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章