YOLO系列論文筆記--YOLOv2

YOLOv2

速度

--YOLOv2:67FPS(76.8mAP on VOC2007);40FPS(78.6mAP on VOC2007),mAP優於Fater R-CNN(ResNet和SSD)而且運行更快;

目的

--改進YOLO;

--爲了解決檢測圖像標籤昂貴而不能進一步提高網絡檢測性能的問題,利用ImageNet分類數據和COCO檢測數據的組合數據集聯合訓練一種多達9000類的實時檢測模型;

YOLO改進--Better

--YOLO與Fast R-CNN對比,其錯誤主要來源於定位錯誤,而且相比於基於區域的方法,YOLO具有相對低的檢全率;所以接下來的問題就是在維持分類精度的同時提高檢全率與定位準確率;以往的網絡爲了提高準確率往往是加深加大網絡,YOLOv2爲了保持原有的快速,簡化網絡模型並且尋找更容易學習的(損失)表示法(收集以前的各種想法,用新的概念改進YOLO的性能);


--Batch Normalization:所有層添加batch normalization;提高約2%的mAP;無過擬合情況下去掉dropout;

--High Resolution Classifier:將YOLO中在ImageNet上和224*224分辨率條件下訓練的模型,首先在448*448分辨率條件下微調10epoch是,使得網絡能夠更好的適應高分辨的輸入;提高几乎4%的mAP;

--Convolutional With Anchor Boxes:借鑑Fater R-CNN的Anchor boxes;預測偏置而不是座標簡化了問題,使得該網絡能夠更好的學習;做法:移除全連接層使用anchor,刪除一個池化層增加輸入分辨率,輸入圖片大小改爲416使得特徵map的位置數量爲奇數(可以有一箇中間的cell,因爲目標往往位於圖片的中間,而不是附近四個位置),將之前每一位置的預測一個類的條件概率和和多個目標對象預測替換成爲每個anchor box預測一個類和目標對象(真實的目標框與預測的目標框的IOU);無anchor boxes:69.5mAP,recall81%;有anchor boxes:69.2mAP,recall88%;mAP下降少許,但是檢全率增加;

--Dimension Clusters(尺寸聚類)(使用Anchor boxes的第一個問題):之前的anchor尺寸都是先驗知識手動挑選的,好的尺寸會得到好的檢測;在訓練集上利用k-means聚類自動尋找好的anchor尺寸;利用k-means的Euclidean distance進行聚類,運用小boxes和大boxes生成的結果存在誤差,而需要的anchor尺寸是不會依賴訓練集boxes尺寸的,所以YOLOv2使用的距離公式爲

  

--Direct location prediction(使用Anchor boxes的第一個問題):模型不穩定,尤其是早期迭代時(這個公式沒有任何限制,使得無論在什麼位置進行預測,任何anchor boxes可以在圖像中任意一點結束,tx沒有數值限定,可能會出現anchor檢測很遠的目標box的情況,效率比較低);將預測直接的offset改爲預測相對於grid cell的座標位置,爲此利用logistics迴歸函數將ground truth限制在0到1之間;限制了位置預測使得模型更加穩定,使用尺寸聚類並且直接預測boundingbox的中心位置,YOLOv2的性能提高5%;

(論文中應該爲加號,據有關資料,不過不影響理解,表明tx爲正向右移,反之,左移)

 

(預測的5個座標爲

--Fine-Grained Features(細粒度特徵):修改使YOLO最終在13 * 13的特徵圖上進行預測(足以勝任大尺度物體的檢測),細粒度特徵可能對小尺度的物體檢測有幫助;Faser R-CNN和SSD在不同層次的特徵圖上產生區域建議(SSD直接就可看得出來這一點),獲得了多尺度的適應性。添加了一個轉移層( passthrough layer),這一層要把淺層特徵圖(分辨率爲26 * 26,是底層分辨率4倍)連接到深層特徵圖;passthrough layer,具體來說就是特徵重排(按行和按列隔行採樣);

--Multi-Scale Training:每10batches隨機選擇圖像的維度,最小320*320,最大608*608;

  

--Further Experiments:在VOC2012上訓練YOLOv2以及在COCO數據集上訓練



YOLO改進--Faster

--總覽:很多檢測網絡依賴VGG-16作爲特徵提取部分,VGG-16是一個強大而準確的分類網絡,但是複雜度有些冗餘;224 * 224的圖片進行一次前向傳播,其卷積層就需要多達306.9億次浮點數運算;YOLO使用基於Googlenet的定製網絡,比VGG-16更快,一次前向傳播僅需85.2億次運算;但精度要略低於VGG-16,單張224 * 224的top-5準確率爲88%(YOLO)和90%(VGG-16);

--Darknet-19:借鑑network in network的思想,網絡使用全局平均池化(global average pooling),1 * 1的卷積核置於3 * 3的卷積核之間,用來壓縮特徵;用batch normalization穩定模型訓練、加速收斂並正則化模型;Darknet-19運算次數爲55.8億次,imagenet圖片分類top-1準確率72.9%,top-5準確率91.2%;


--分類訓練:標準ImageNet 1000類分類數據集;160epochs;SGD;初始學習率0.1;多項式速度衰減(polynomial rate decay)權值爲4;weight decay 0.0005;momentum 0.9;Darknet-19網絡框架;數據集擴展:隨機裁剪,旋轉,hue,saturation和exposure的變換;訓練時初始圖片大小爲224*224,在448*448圖片上微調圖像(參數同上,訓練10epochs,初始學習率0.001),最終在448*448分辨率下實現top-1準確率76.5%和top-5準確率93.3%;

--檢測訓練:刪除最後一個卷積層及後面的層,添加3個3*3*1024卷積層和一個用於檢測1*1*out_num的卷積層;爲了能夠使用細粒度特徵,在倒數第三個卷積層後添加一個轉移層(最後一個3*3*512層);訓練:160epochs,初始學習率0.001(在60epochs和90epochs時分別除以10),weight decay 0.0005,momentum 0.9;數據擴展方式與YOLO和SSD類似;

YOLO改進--Stronger(YOLO9000)

--總述:提出在分類數據和檢測數據集上聯合訓練的機制;使用檢測數據集學習特定檢測信息(boundingbox的座標和目標對象(置信度))以及對公共目標分類;使用分類數據集擴展以上能夠檢測到的目標的類別數量;

--訓練:混合分類數據與檢測數據,網絡識別訓練數據爲檢測數據時,反向傳播YOLOv2的整個損失,反之,只反向傳播分類部分的損失;

--挑戰:檢測數據具有普遍目標的概括性標籤(例如狗不會細分),而分類數據具有寬泛深層次的標籤,所以要合併數據集訓練就需要以一種連貫的方式合併兩類數據的標籤 ;

--層次分類:層次樹;利用可能的詞增加層次樹;詞語存在多條路徑,選擇短路徑;形成WordTree;爲了執行分類,計算條件概率;某一節點的絕對條件概率,利用條件概率知識計算,默認根節點概率爲1;


--驗證(WordTree上的對比):Darknet-19;WordTree;1000 class ImageNet;WordTree1k;標籤空間從1000到1369;模型預測1369維向量;根據每一層次計算softmax;訓練參數與之前相同,層次Darknet-19實現top-1準確率71.9%和top-5準確率90.4%(Darknet-19,top-1準確率76.5%和top-5準確率93.3%);


--用WordTree組合數據集

--聯合分類和檢測:WordTree組合COCO 檢測數據集和9000類的ImageNet;可以從ImageNet上添加之前不存在的檢測數據集;平衡COCO 檢測數據集和9000類的ImageNet;使用3個anchor限制輸出向量的大小;損失反向傳播(分類數據與檢測數據集);IOU至少爲0.3(假設);

--評估:ImageNet上得到19.7mAP;檢測數據裏未出現的ImageNet的156類上得到16.0mAP;(任務ImageNet上每張圖片只有一類);該結果比DPM模型的檢測性能高,而且YOLO9000檢測很多類,半監督,具有實時性;

--優缺點:可以很好的學習新動物(從COCO數據集上得到);COCO沒有關於任何衣服類型的標籤,所以YOLO9000在檢測這類目標上具有競爭性;

--接下來的工作:分割領域;弱監督的圖像分割;訓練期間爲分類數據使用弱標籤以提高檢測性能;

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