論文地址: https://arxiv.org/abs/1612.08242
或者:https://pjreddie.com/media/files/papers/YOLO9000.pdf
代碼地址: http://pjreddie.com/yolo9000/
相關內容: YOLO_v1論文詳解You Only Look Once,Unified, Real-Time Object Detection
目錄
Dataset combination and WordTree
Joint classification and detection
一、概覽
1.1 貢獻點
YOLO9000,可以檢測超過9000個物體的目標檢測模型。
- 在YOLO的基礎上,引入了各種改進。
- 在PASCAL VOC與COCO數據集上達到了SOTA
- 可以實現速度與準確率的trade off
- 模型可以進行多尺度訓練,並且可以對任意尺寸的圖片進行檢測。
- 比目前最佳的SSD或者faster RCNN更快且準確率更佳。
- 在VOC數據集上,67FPS的時候達到76.8mAP,40FPS的時候達到78.6mAP
1.2 創新點
改進訓練方法,訓練模型時不僅使用目標檢測的數據,也使用大量的目標分類數據。
- 引入了數據集結合的方法
- 創建了目標檢測SOTA的實時模型。
- 從COCO數據集與ImageNet數據集結合模型可以分類9000樣本的目標檢測模型。
二、方法
2.1 Better
從之前的模型中引入了一系列新的方法
Batch Norm
BatchNorm的作用詳見:
批歸一化Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift論文詳解
- BN的引入使得YOLO的mAP提升了2%
- BN可以有效的對模型進行正則化,避免過擬合。
High Resolution Classifier
YOLO是以224*224分辨率訓練分類器網絡,隨後將分辨率提高到448*448進行檢測,意味着網絡需要可以將較低分辨率的圖片泛化到較高分辨率。所以前期訓練用224*224的圖像,最終的10個epoch用448*448的圖像進行微調。
- 提升了4%的mAP
- 所有的SOTA目標檢測模型均需要通過ImageNet預訓練。
- 初始YOLO訓練時候用224*224大小的圖像,然後需要將尺寸增加到448*448.相當於需要用大尺寸高分辨率的圖像對模型進行Fine-tune。
- 對於YOLOv2,作者將ImageNet的448*448的圖像在ImageNet上進行了10個epoch的fine-tune
- 我們產生了一個疑問,如果一開始直接用448*448的圖像對模型進行訓練,會產生什麼樣的結果呢?
Ancher Box
Ancher box即先驗框,即網絡在先驗框的基礎上進行預測,
- 借鑑了Faster-RCNN的做法。
- 對於Faster-RCNN來講,region proposal network(RPN) 用於生成相應的offset與confidence。因此,作者經過改進,將YOLOv1中的全連接層刪掉,運用ancher box預測相應的備選框。YOLO通過圖像提取,輸入圖像經過縮放係數是32的尺寸縮小到feature上,例如416的圖片會被縮小爲13 (416/32=13).
- 無ancher box的模型,mAP 69.5,recall 81%,加入ancher box之後,mAP 69.2,recall 88%。即mAP少量降低,但是recall大量增加。
Dimension Clusters
先驗框的尺寸可以手動來選擇,也可以通過聚類的方法選擇,作者引入聚類的方法針對ancher box的尺寸進行選擇。
(聚類是否只聚類了box的尺寸,對box的位置是否有聚類?)
- 關於ancher box的尺寸,可以通過手動選擇,選擇較好的尺寸可以提升網絡性能。作者通過K-means的聚類來選取ancher box。
聚類的距離d的衡量
k-means聚類需要有一個衡量樣本之間的距離的距離度量d
- 之前採用的聚類距離d,採用幾何距離,這樣就會使得聚類的中大邊框的聚類距離更大。
- 爲了更好的平衡上面說的大邊框的聚類距離d過大的問題,作者引入了IOU來實現距離d的衡量。
運用IOU作爲衡量標準之後,模型精度確實得到了提升,下圖是實驗證明了這一點。在VOC2007上,聚類採用IOU距離取得了更高的mAP:
聚類的k值
k值表示聚類數量的個數,即備選框聚類爲幾類。
- 此值表示聚類出的備選框的尺寸的個數,比如k=1表示聚類結果只有一個尺寸的備選框。
- k越大則聚類的框的大小數量越多,因此準確率越高。
- 但是k值過大,運算量會增加,因此作者取了一個trade-off 的結果,k=5,相對平衡運算量和IoU精度。
Direct location prediction
此方法用於對模型的先驗框的範圍進行約束,可以提升5%的mAP
對於模型而言,主要的非穩定性來自於備選框的中心位置(x,y), 特別是初始的幾個epoch,預測結果很不穩定。
按照原始的做法:
- x,y是預測邊框的中心,模型需要將此結果作爲最終的預測邊框
- xa, ya是先驗框ancher box的中心,是確定的量
- wa,ha是先驗框的寬和高,是確定的量
- tx,ty是網絡需要預測的參數,即網絡根據已知的先驗框和輸入圖片,預測出tx,ty
- 因爲tx,ty沒有任何約束,導致中心可能出現在任何位置,不確定性很高,因此需要加以約束。
約束後的公式如下:
加入限定之後,可以將藍色區域限制在藍色框內,預測更爲穩定。
限定的公式如下:
- cx,cy是先驗框左上角的座標
- pw,ph是先驗框的寬和高
- tx,ty,tw,th,to是網絡需要預測的量。
- 經過上面公式的映射,相應的備選框可以被限定在虛線框內,相對更穩定。
Multi-scale training
多尺度訓練,提升了1.4的mAP
- 原始的YOLO輸入圖象是448*448大小,加入ancher box之後,輸入尺寸變爲416*416大小。
- 因爲模型有卷積和pooling層,因此可以適應任意大小的圖像。(YOLO是可以對任意尺寸的圖像進行目標檢測。這裏的同尺寸是指訓練與測試同尺寸且任意尺寸?還是訓練與測試可以不同尺寸?)
- 訓練每10個batch,YOLO隨機選擇一個新的圖像尺寸。尺寸有{320, 352, ... , 608}
- 因爲YOLO可以針對尺寸的圖片進行目標檢測,因此,YOLO可以用低分辨率的圖片實現高幀率。
- 在228*228大小的時候,YOLO可以實現90FPS的幀率,並且具有與fast R-CNN幾乎相同的mAP
- 高分辨率模式之下,YOLO在VOC2007數據集上達到了最佳的78.6的mAP,下圖即爲各個分辨率下YOLO的識別準確率以及同類網絡的對比。
2.2 faster
不少目標檢測模型將VGG作爲基本框架。但是VGG較爲耗費運算,例如對於224*224大小的圖像,VGG需要進行30.69billion(30.69*10^9)次浮點運算進行一次預測,因此運算量巨大。
DarkNet-19
YOLO在VGG的基礎上進行更改,只需要8.52Billion次浮點運算即可進行一次前饋運算。
YOLOv2運用darknet-19結構(如下表),19個conv,5個max_pooling,相比VGG浮點運算量降低1/5,只需要5.58 billion次浮點運算,但是精度並不弱。在ImageNet上可以達到72.9%的top-1準確率與91.2%的top-5準確率。
分類任務訓練過程
在ImageNet上,1000類,160次epoch迭代訓練,使用隨機梯度下降算法,同時用起始的學習率0.1,decay power of 4,weight decay of 0.0005 and momentum of 0.9.
訓練過程中,使用相應的訓練技巧,包括: random crops, rotations, and hue, saturation, and exposure shifts
訓練過程:初始用224*224大小的圖像訓練,之後改用448*448進行fine-tune,達到了top-1 準確率76.5%和top-5準確率93.3%
目標檢測任務的訓練過程
刪掉最後的卷積層,只保留1024給3*3的卷積核,每個卷積核加一個1*1的卷積。
2.3 Stronger
作者提出一種機制,將分類任務與目標檢測任務共同進行訓練。
識別對象更多,且分層識別的結構Hierarchical classification。
Dataset combination and WordTree
Joint classification and detection
將分類任務與檢測任務共同執行。
三、實驗及結論
YOLO2通過一些改進明顯提升了預測準確性,同時繼續保持其運行速度快的優勢。