概述
YOLO(You Only Look Once: Unified, Real-Time Object Detection)從v1版本進化到了v2版本,作者在darknet主頁先行一步放出源代碼,論文在我們等候之下終於在12月25日發布出來。
新的YOLO版本論文全名叫“YOLO9000: Better, Faster, Stronger”,主要有兩個大方面的改進:
第一,作者使用了一系列的方法對原來的YOLO多目標檢測框架進行了改進,在保持原有速度的優勢之下,精度上得以提升。VOC 2007數據集測試,67FPS下mAP達到76.8%,40FPS下mAP達到78.6%,基本上可以與Faster R-CNN和SSD一戰。這一部分是本文主要關心的地方。
第二,作者提出了一種目標分類與檢測的聯合訓練方法,通過這種方法,YOLO9000可以同時在COCO和ImageNet數據集中進行訓練,訓練后的模型可以實現多達9000種物體的實時檢測。這一方面本文暫時不涉及,待后面有時間再補充。
YOLOv2精度的改進(Better)
先來一個總覽圖,看看它到底用了多少技巧,以及這些技巧起了多少作用:
Batch Normalization
CNN在訓練過程中網絡每層輸入的分布一直在改變, 會使訓練過程難度加大,但可以通過normalize每層的輸入解決這個問題。新的YOLO網絡在每一個卷積層后添加batch normalization,通過這一方法,mAP獲得了2%的提升。batch normalization 也有助於規范化模型,可以在舍棄dropout優化后依然不會過擬合。
High Resolution Classifier
目前的目標檢測方法中,基本上都會使用ImageNet預訓練過的模型(classifier)來提取特征,如果用的是AlexNet網絡,那么輸入圖片會被resize到不足256 * 256,導致分辨率不夠高,給檢測帶來困難。為此,新的YOLO網絡把分辨率直接提升到了448 * 448,這也意味之原有的網絡模型必須進行某種調整以適應新的分辨率輸入。
對於YOLOv2,作者首先對分類網絡(自定義的darknet)進行了fine tune,分辨率改成448 * 448,在ImageNet數據集上訓練10輪(10 epochs),訓練后的網絡就可以適應高分辨率的輸入了。然后,作者對檢測網絡部分(也就是后半部分)也進行fine tune。這樣通過提升輸入的分辨率,mAP獲得了4%的提升。
Convolutional With Anchor Boxes
之前的YOLO利用全連接層的數據完成邊框的預測,導致丟失較多的空間信息,定位不准。作者在這一版本中借鑒了Faster R-CNN中的anchor思想,回顧一下,anchor是RNP網絡中的一個關鍵步驟,說的是在卷積特征圖上進行滑窗操作,每一個中心可以預測9種不同大小的建議框。
為了引入anchor boxes來預測bounding boxes,作者在網絡中果斷去掉了全連接層。剩下的具體怎么操作呢?首先,作者去掉了后面的一個池化層以確保輸出的卷積特征圖有更高的分辨率。然后,通過縮減網絡,讓圖片輸入分辨率為416 * 416,這一步的目的是為了讓后面產生的卷積特征圖寬高都為奇數,這樣就可以產生一個center cell。作者觀察到,大物體通常占據了圖像的中間位置, 就可以只用中心的一個cell來預測這些物體的位置,否則就要用中間的4個cell來進行預測,這個技巧可稍稍提升效率。最后,YOLOv2使用了卷積層降采樣(factor為32),使得輸入卷積網絡的416 * 416圖片最終得到13 * 13的卷積特征圖(416/32=13)。
加入了anchor boxes后,可以預料到的結果是召回率上升,准確率下降。我們來計算一下,假設每個cell預測9個建議框,那么總共會預測13 * 13 * 9 = 1521個boxes,而之前的網絡僅僅預測7 * 7 * 2 = 98個boxes。具體數據為:沒有anchor boxes,模型recall為81%,mAP為69.5%;加入anchor boxes,模型recall為88%,mAP為69.2%。這樣看來,准確率只有小幅度的下降,而召回率則提升了7%,說明可以通過進一步的工作來加強准確率,的確有改進空間。
Dimension Clusters(維度聚類)
作者在使用anchor的時候遇到了兩個問題,第一個是anchor boxes的寬高維度往往是精選的先驗框(hand-picked priors),雖說在訓練過程中網絡也會學習調整boxes的寬高維度,最終得到准確的bounding boxes。但是,如果一開始就選擇了更好的、更有代表性的先驗boxes維度,那么網絡就更容易學到准確的預測位置。
和以前的精選boxes維度不同,作者使用了K-means聚類方法類訓練bounding boxes,可以自動找到更好的boxes寬高維度。傳統的K-means聚類方法使用的是歐氏距離函數,也就意味着較大的boxes會比較小的boxes產生更多的error,聚類結果可能會偏離。為此,作者采用的評判標准是IOU得分(也就是boxes之間的交集除以並集),這樣的話,error就和box的尺度無關了,最終的距離函數為:
可以看到,平衡復雜度和IOU之后,最終得到k值為5,意味着作者選擇了5種大小的box維度來進行定位預測,這與手動精選的box維度不同。結果中扁長的框較少,而瘦高的框更多(這符合行人的特征),這種結論如不通過聚類實驗恐怕是發現不了的。
當然,作者也做了實驗來對比兩種策略的優劣,如下圖,使用聚類方法,僅僅5種boxes的召回率就和Faster R-CNN的9種相當。說明K-means方法的引入使得生成的boxes更具有代表性,為后面的檢測任務提供了便利。
Direct location prediction(直接位置預測)
那么,作者在使用anchor boxes時發現的第二個問題就是:模型不穩定,尤其是在早期迭代的時候。大部分的不穩定現象出現在預測box的 坐標上了。在區域建議網絡中,預測 以及 , 使用的是如下公式:
這個公式沒有任何限制,使得無論在什么位置進行預測,任何anchor boxes可以在圖像中任意一點結束(我的理解是, 沒有數值限定,可能會出現anchor檢測很遠的目標box的情況,效率比較低。正確做法應該是每一個anchor只負責檢測周圍正負一個單位以內的目標box)。模型隨機初始化后,需要花很長一段時間才能穩定預測敏感的物體位置。
在此,作者就沒有采用預測直接的offset的方法,而使用了預測相對於grid cell的坐標位置的辦法,作者又把ground truth限制在了0到1之間,利用logistic回歸函數來進行這一限制。
現在,神經網絡在特征圖(13 *13 )的每個cell上預測5個bounding boxes(聚類得出的值),同時每一個bounding box預測5個坐值,分別為 ,其中前四個是坐標,是置信度。如果這個cell距離圖像左上角的邊距為 以及該cell對應box(bounding box prior)的長和寬分別為 ,那么預測值可以表示為:
這幾個公式參考上面Faster-RCNN和YOLOv1的公式以及下圖就比較容易理解。 經sigmod函數處理過,取值限定在了0~1,實際意義就是使anchor只負責周圍的box,有利於提升效率和網絡收斂。 函數的意義沒有給,但估計是把歸一化值轉化為圖中真實值,使用 的冪函數是因為前面做了 計算,因此,是bounding box的中心相對柵格左上角的橫坐標,是縱坐標,是bounding box的confidence score。
定位預測值被歸一化后,參數就更容易得到學習,模型就更穩定。作者使用Dimension Clusters和Direct location prediction這兩項anchor boxes改進方法,mAP獲得了5%的提升。
Fine-Grained Features(細粒度特征)
上述網絡上的修改使YOLO最終在13 * 13的特征圖上進行預測,雖然這足以勝任大尺度物體的檢測,但是用上細粒度特征的話,這可能對小尺度的物體檢測有幫助。Faser R-CNN和SSD都在不同層次的特征圖上產生區域建議(SSD直接就可看得出來這一點),獲得了多尺度的適應性。這里使用了一種不同的方法,簡單添加了一個轉移層( passthrough layer),這一層要把淺層特征圖(分辨率為26 * 26,是底層分辨率4倍)連接到深層特征圖。
這個轉移層也就是把高低兩種分辨率的特征圖做了一次連結,連接方式是疊加特征到不同的通道而不是空間位置,類似於Resnet中的identity mappings。這個方法把26 * 26 * 512的特征圖連接到了13 * 13 * 2048的特征圖,這個特征圖與原來的特征相連接。YOLO的檢測器使用的就是經過擴張的特征圖,它可以擁有更好的細粒度特征,使得模型的性能獲得了1%的提升。(這段理解的也不是很好,要看到網絡結構圖才能清楚)
補充:關於passthrough layer,具體來說就是特征重排(不涉及到參數學習),前面26 * 26 * 512的特征圖使用按行和按列隔行采樣的方法,就可以得到4個新的特征圖,維度都是13 * 13 * 512,然后做concat操作,得到13 * 13 * 2048的特征圖,將其拼接到后面的層,相當於做了一次特征融合,有利於檢測小目標。
Multi-Scale Training
原來的YOLO網絡使用固定的448 * 448的圖片作為輸入,現在加入anchor boxes后,輸入變成了416 * 416。目前的網絡只用到了卷積層和池化層,那么就可以進行動態調整(意思是可檢測任意大小圖片)。作者希望YOLOv2具有不同尺寸圖片的魯棒性,因此在訓練的時候也考慮了這一點。
不同於固定輸入網絡的圖片尺寸的方法,作者在幾次迭代后就會微調網絡。沒經過10次訓練(10 epoch),就會隨機選擇新的圖片尺寸。YOLO網絡使用的降采樣參數為32,那么就使用32的倍數進行尺度池化{320,352,…,608}。最終最小的尺寸為320 * 320,最大的尺寸為608 * 608。接着按照輸入尺寸調整網絡進行訓練。
這種機制使得網絡可以更好地預測不同尺寸的圖片,意味着同一個網絡可以進行不同分辨率的檢測任務,在小尺寸圖片上YOLOv2運行更快,在速度和精度上達到了平衡。
在小尺寸圖片檢測中,YOLOv2成績很好,輸入為228 * 228的時候,幀率達到90FPS,mAP幾乎和Faster R-CNN的水准相同。使得其在低性能GPU、高幀率視頻、多路視頻場景中更加適用。
在大尺寸圖片檢測中,YOLOv2達到了先進水平,VOC2007 上mAP為78.6%,仍然高於平均水准。
YOLOv2速度的改進(Faster)
YOLO一向是速度和精度並重,作者為了改善檢測速度,也作了一些相關工作。
大多數檢測網絡有賴於VGG-16作為特征提取部分,VGG-16的確是一個強大而准確的分類網絡,但是復雜度有些冗余。224 * 224的圖片進行一次前向傳播,其卷積層就需要多達306.9億次浮點數運算。
YOLOv2使用的是基於Googlenet的定制網絡,比VGG-16更快,一次前向傳播僅需85.2億次運算。可是它的精度要略低於VGG-16,單張224 * 224取前五個預測概率的對比成績為88%和90%(低一點點也是可以接受的)。
Darknet-19
YOLOv2使用了一個新的分類網絡作為特征提取部分,參考了前人的先進經驗,比如類似於VGG,作者使用了較多的3 * 3卷積核,在每一次池化操作后把通道數翻倍。借鑒了network in network的思想,網絡使用了全局平均池化(global average pooling),把1 * 1的卷積核置於3 * 3的卷積核之間,用來壓縮特征。也用了batch normalization(前面介紹過)穩定模型訓練。
最終得出的基礎模型就是Darknet-19,如下圖,其包含19個卷積層、5個最大值池化層(maxpooling layers ),下圖展示網絡具體結構。Darknet-19運算次數為55.8億次,imagenet圖片分類top-1准確率72.9%,top-5准確率91.2%。
Training for classification
作者使用Darknet-19在標准1000類的ImageNet上訓練了160次,用的隨機梯度下降法,starting learning rate 為0.1,polynomial rate decay 為4,weight decay為0.0005 ,momentum 為0.9。訓練的時候仍然使用了很多常見的數據擴充方法(data augmentation),包括random crops, rotations, and hue, saturation, and exposure shifts。 (這些訓練參數是基於darknet框架,和caffe不盡相同)
初始的224 * 224訓練后,作者把分辨率上調到了448 * 448,然后又訓練了10次,學習率調整到了0.001。高分辨率下訓練的分類網絡在top-1准確率76.5%,top-5准確率93.3%。
Training for detection
分類網絡訓練完后,就該訓練檢測網絡了,作者去掉了原網絡最后一個卷積層,轉而增加了三個3 * 3 * 1024的卷積層(可參考darknet中cfg文件),並且在每一個上述卷積層后面跟一個1 * 1的卷積層,輸出維度是檢測所需的數量。對於VOC數據集,預測5種boxes大小,每個box包含5個坐標值和20個類別,所以總共是5 * (5+20)= 125個輸出維度。同時也添加了轉移層(passthrough layer ),從最后那個3 * 3 * 512的卷積層連到倒數第二層,使模型有了細粒度特征。
作者的檢測模型以0.001的初始學習率訓練了160次,在60次和90次的時候,學習率減為原來的十分之一。其他的方面,weight decay為0.0005,momentum為0.9,依然使用了類似於Faster-RCNN和SSD的數據擴充(data augmentation)策略。
YOLOv2分類的改進(Stronger)
這一部分,作者使用聯合訓練方法,結合wordtree等方法,使YOLOv2的檢測種類擴充到了上千種,具體內容沒看懂。
參考:https://blog.csdn.net/wfei101/article/details/79398563