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