YOLO升级版:YOLOv2和YOLO9000解析
評論:YOLO是基于深度學習方法的端到端實時目標檢測系統(YOLO:實時快速目標檢測)。YOLO的升級版有兩種:YOLOv2和YOLO9000。作者采用了一系列的方法優化了YOLO的模型結構,產生了YOLOv2,在快速的同時準確率達到state of the art。然后作者采用wordtree的方法,綜合ImageNet數據集和COCO數據集訓練YOLO9000,使之可以實時識別超過9000種物品。本文有以下幾點非常值得參考:
一,對模型的一系列分析和改進非常值得參考;
二,采用多尺度訓練方法,使模型可以適應不同的輸入尺寸,非常值得參考。
三,綜合不同數據集的方法非常值得參考;
四,聯合訓練方法也是非常值得參考;
五,YOLO端到端實時檢測和識別的思路非常值得參考。
總體說,本文很值得參考。
簡介
YOLO9000是可以檢測超過9000種類別的實時檢測系統。首先,作者在YOLO基礎上進行了一系列的改進,產生了YOLOv2。YOLOv2在PASCAL VOC和COCO數據集上獲得了目前最好的結果(state of the art)。然后,采用多尺度訓練方法,YOLOv2可以根據速度和精確度需求調整輸入尺寸。67FPS時,YOLOv2在VOC2007數據集上可以達到76.8mAP;40FPS,可以達到78.6mAP,比目前最好的Faster R-CNN和SSD精確度更高,檢測速度更快。最后提出了目標檢測和分類的共訓練方法。采用該方法,作者分別在COCO目標檢測數據集和ImageNet分類數據集上訓練了YOLO9000。聯合訓練使YOLO9000可以預測沒有labelled的目標檢測數據。YOLO9000在ImageNet驗證集(200類)上獲得了19.7mAP。其中,156類沒有出現在COCO訓練集中,YOLO9000獲得了16.0mAP。YOLO9000可以實時識別超過9000類別。
1 前言
目標檢測系統要求快速,準確以及能識別大范圍種類數量。但是,目前基于深度神經網絡方法的目前檢測系統能識別的物品種類較少。其原因在于:相對于物品分類數據集,目標檢測數據集中的物品種類較少。標記目標識別數據集所耗費的精力遠大于標記物品分類數據集。物品分類數據集包含成千上萬種超過數百萬張圖片,而目標識別數據集就很小了。
本文中,作者提出了一種結合不同類型數據集的方法。基于該方法,作者提出了一種新的聯合訓練方法,結合目前物品分類數據集的優點,將其應用于訓練目標檢測模型。模型可以從目標檢測數據集中學會準確定位目標,同時從物品分類數據集中學會識別更多的種類,增強模型的魯棒性。
采用該方法,作者訓練了可以識別超過9000種物品的實時目標檢測與識別系統-YOLO9000。首先,作者在YOLO的基礎上進行了改進,產生了YOLOv2(獲得了state of the art)。然后,作者采用數據集結合方法和聯合訓練方法,采用ImageNet和COCO數據集訓練該模型,使該模型可以識別和檢測 超過9000種類別。
2 改進-YOLOv2
YOLO相對于目前最好的目標檢測系統存在的問題是精確度不夠。錯誤項目分析顯示,相對于Fast R-CNN,YOLO在目標定位方面錯誤率較高。因此,對于YOLO的改進集中于在保持分類準確率的基礎上增強定位精確度。改進的項目如表2-1所示。
表2-1 YOLOv2的改進
<img src="https://pic1.zhimg.com/v2-0a1a9e06ec5ec77efc1efc4eb960d44c_b.png" data-rawwidth="842" data-rawheight="331" class="origin_image zh-lightbox-thumb" width="842" data-original="https://pic1.zhimg.com/v2-0a1a9e06ec5ec77efc1efc4eb960d44c_r.png">2.1 Batch Normalization
Batch Normalization可以提高模型收斂速度,減少過擬合。作者在所有卷積層應用了Batch Normalization,使結果提升了2%。同時,Batch Normalization的應用,去除了dropout,而不會過擬合。
2.2 High Resolution Classifier
目前最好的圖像分類器采用基于ImageNet數據集預訓練模型。大部分類器輸入圖像尺寸小于256×256。原始YOLO接受圖像尺寸為224×224。在YOLOv2中,作者首先采用448×448分辨率的ImageNet數據finetune使網絡適應高分辨率輸入;然后將該網絡用于目標檢測任務finetune。高分辨率輸入使結果提升了4%mAP。
2.3 Convolutional With Anchor Boxes
YOLO采用全連接層來直接預測bounding boxes,而Fast R-CNN采用人工選擇的bounding boxes。Fast R-CNN中的 region proposal network僅采用卷積層來預測固定的boxes(anchor boxes)的偏移和置信度。
作者去除了YOLO的全連接層,采用固定框(anchor boxes)來預測bounding boxes。首先,去除了一個pooling層來提高卷積層輸出分辨率。然后,修改網絡輸入尺寸:由448×448改為416,使特征圖只有一個中心。物品(特別是大的物品)更有可能出現在圖像中心。YOLO的卷積層下采樣率為32,因此輸入尺寸變為416,輸出尺寸為13×13。
采用anchor boxes,提升了精確度。YOLO每張圖片預測98個boxes,但是采用anchor boxes,每張圖片可以預測超過1000個boxes。YOLO模型精確度為69.5mAP,recall為81%;采用anchor boxes方法后,結果為69.2mAP,recall為88%。
2.4 Dimension Clusters
在YOLO模型上采用anchor boxes有兩個關鍵。第一,box維度為人工選擇。模型可以學會適應boxes,但是如果人工選擇更好的boxes,可以讓模型更加容易學習。我們采用K-means聚類方法來自動選擇最佳的初始boxes。我們希望的是人工選擇的boxes提高IOU分數,因此,我們公式定義為:。k-means結果如圖2-1所示,作者選擇了k=5.
<img src="https://pic4.zhimg.com/v2-69d4bf5be3cf72df525b7779860cf24f_b.png" data-rawwidth="515" data-rawheight="448" class="origin_image zh-lightbox-thumb" width="515" data-original="https://pic4.zhimg.com/v2-69d4bf5be3cf72df525b7779860cf24f_r.png">圖2-1 k-means結果
圖2-1 k-means結果2.5 Direct location prediction
在YOLO模型上采用anchor boxes的第二個關鍵是模型不穩定性,特別是在前面幾輪訓練。大部分不穩定因素來源于預測boxes位置(x,y)。作者將預測偏移量改變為YOLO的預測grid cell的位置匹配性(location coordinate),將預測值限定在0-1范圍內,增強穩定性。網絡對feature map中的每個cell預測5個bounding boxes。對每一個bounding boxes,模型預測5個匹配性值()。采用聚類方法選擇boxes維度和直接預測bounding boxes中心位置提高YOLO將近5%準確率。
2.6 Fine-Grained Features
改進后的YOLO對13×13的feature map進行目標檢測。更精確的特征(finer grained features)可以提高對于小目標的檢測。作者向網絡加入passtrough層以增加特征。passthrough類似于ResNet,將高分辨率特征和低分辨率特征結合,使26×26×512的特征圖轉化為13×13×2048的特征圖。該改進增加了1%的性能。
2.7 Multi-Scale Training(多尺度訓練,很有參考價值)
最初的YOLO輸入尺寸為448×448,加入anchor boxes后,輸入尺寸為416×416。模型只包含卷積層和pooling 層,因此可以隨時改變輸入尺寸。
作者在訓練時,每隔幾輪便改變模型輸入尺寸,以使模型對不同尺寸圖像具有魯棒性。每個10batches,模型隨機選擇一種新的輸入圖像尺寸(320,352,...608,32的倍數,因為模型下采樣因子為32),改變模型輸入尺寸,繼續訓練。
該訓練規則強迫模型取適應不同的輸入分辨率。模型對于小尺寸的輸入處理速度更快,因此YOLOv2可以按照需求調節速度和準確率。在低分辨率情況下(288×288),YOLOv2可以在保持和Fast R-CNN持平的準確率的情況下,處理速度可以達到90FPS。在高分辨率情況下,YOLOv2在VOC2007數據集上準確率可以達到state of the art(78.6mAP),如表2-2所示。
表2-2 多尺度訓練結果
<img src="https://pic3.zhimg.com/v2-8f8510bd3a94d295eadccc8d44e0132e_b.png" data-rawwidth="421" data-rawheight="412" class="origin_image zh-lightbox-thumb" width="421" data-original="https://pic3.zhimg.com/v2-8f8510bd3a94d295eadccc8d44e0132e_r.png">
2.8 其它實驗
作者在VOC2012數據集和COCO數據集上進行了實驗,結果如表2-3和表2-4所示。
表2-3 VOC2012測試結果
<img src="https://pic2.zhimg.com/v2-669c7e7d4f68525743a1c70d03e95249_b.png" data-rawwidth="848" data-rawheight="247" class="origin_image zh-lightbox-thumb" width="848" data-original="https://pic2.zhimg.com/v2-669c7e7d4f68525743a1c70d03e95249_r.png">表2-4 COCO測試結果
<img src="https://pic1.zhimg.com/v2-d6b0f2fa744a8ee6030cc14748033658_b.png" data-rawwidth="637" data-rawheight="228" class="origin_image zh-lightbox-thumb" width="637" data-original="https://pic1.zhimg.com/v2-d6b0f2fa744a8ee6030cc14748033658_r.png">
3 檢測更加快速(faster)
大部分檢測框架是基于VGG-16作為特征提取網絡,但是VGG-16比較復雜,耗費計算量大。YOLO框架使用了類似googlenet的網絡結構,計算量比VGG-16小,準確率比VGG16略低。
3.1 Darknet-19
作者設計了一個新的分類網絡(Darknet-19)來作為YOLOv2的基礎模型。Darknet-19模型結構如表3-1所示。
表3-1 Darknet-19網絡參數
<img src="https://pic2.zhimg.com/v2-e79c2f41d984c69cd3aa805f86c6abe9_b.png" data-rawwidth="307" data-rawheight="429" class="content_image" width="307">
3.2 分類任務訓練
作者采用ImageNet1000類數據集來訓練分類模型。訓練過程中,采用了 random crops, rotations, and hue, saturation, and exposure shifts等data augmentation方法。預訓練后,作者采用高分辨率圖像(448×448)對模型進行finetune。
3.3 檢測任務訓練
作者將分類模型的最后一層卷積層去除,替換為三層卷積層(3×3,1024 filters),最后一層為1×1卷積層,filters數目為需要檢測的數目。對于VOC數據集,我們需要預測5個boxes,每個boxes包含5個適應度值,每個boxes預測20類別。因此,輸出為125(5*20+5*5) filters。最后還加入了passthough 層。
4 stronger
作者提出了將分類數據和檢測數據綜合的聯合訓練機制。該機制使用目標檢測標簽的數據訓練模型學習定位目標和檢測部分類別的目標;再使用分類標簽的數據取擴展模型對多類別的識別能力。在訓練的過程中,混合目標檢測和分類的數據集。當網絡接受目標檢測的訓練數據,反饋網絡采用YOLOv2 loss函數;當網絡接受分類訓練數據,反饋網絡只更新部分網絡參數。
這類訓練方法有一定的難度。目標識別數據集僅包含常見目標和標簽(比如狗,船);分類數據集包含更廣和更深的標簽。比如狗,ImageNet上包含超過100種的狗的類別。如果要聯合訓練,需要將這些標簽進行合并。
大部分分類方法采用softmax輸出所有類別的概率。采用softmax的前提假設是類別之間不相互包含(比如,犬和牧羊犬就是相互包含)。因此,我們需要一個多標簽的模型來綜合數據集,使類別之間不相互包含。
4.1 Hierarchical classification(多層分類)
ImageNet的數據標簽來源于WordNet,具有一定層次結構。作者根據WordNet建立了ImageNet標簽的樹(WordTree)。作者采用標簽樹訓練了Darknet-19,結果如圖4-1所示。
<img src="https://pic4.zhimg.com/v2-8021c4fbb7252f2ce479be8ab0100b43_b.png" data-rawwidth="428" data-rawheight="440" class="origin_image zh-lightbox-thumb" width="428" data-original="https://pic4.zhimg.com/v2-8021c4fbb7252f2ce479be8ab0100b43_r.png">圖4-1 采用WordTree訓練結果
圖4-1 采用WordTree訓練結果4.2 采用Wordtree綜合數據集
作者采用wordtree綜合ImageNet和COCO數據集,如圖4-2所示。<img src="https://pic1.zhimg.com/v2-b42a24a9ca65bff4104b687d8e12bcd4_b.png" data-rawwidth="440" data-rawheight="569" class="origin_image zh-lightbox-thumb" width="440" data-original="https://pic1.zhimg.com/v2-b42a24a9ca65bff4104b687d8e12bcd4_r.png">
圖4-2 Wordtree層次
4.3 聯合分類和檢測
作者采用綜合數據集訓練了YOLO9000,結果如圖4-3所示.<img src="https://pic3.zhimg.com/v2-e1cbaee8ab0940700e99c9b7a680d376_b.png" data-rawwidth="418" data-rawheight="332" class="content_image" width="418">圖4-3 YOLO9000測試結果
圖4-3 YOLO9000測試結果5 結論
作者通過對YOLO網絡結構和訓練方法的改進,提出了YOLOv2和YOLO9000兩種實時目標檢測系統。YOLOv2在YOLO的基礎上進行了一系列的改進,在快速的同時達到state of the art。同時,YOLOv2可以適應不同的輸入尺寸,根據需要調整檢測準確率和檢測速度(值得參考)。作者綜合了ImageNet數據集和COCO數據集,采用聯合訓練的方式訓練,使該系統可以識別超過9000種物品。除此之外,作者提出的WordTree可以綜合多種數據集 的方法可以應用于其它計算機數覺任務中。
總結
以上是生活随笔為你收集整理的YOLO升级版:YOLOv2和YOLO9000解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人人都是 Serverless 架构师
- 下一篇: 搜索NLP行业模型和轻量化客户定制