YOLOv2 論文全篇完整翻譯
摘要
我們介紹了YOLO9000
,這是一種先進(jìn)的、實(shí)時(shí)的目標(biāo)檢測(cè)系統(tǒng),可以檢測(cè)超過9000
個(gè)物體類別。首先,我們對(duì)YOLO
檢測(cè)方法進(jìn)行了各種改進(jìn),包括新穎的方法和借鑒自先前工作的方法。改進(jìn)后的模型YOLOv2
在標(biāo)準(zhǔn)的檢測(cè)任務(wù)(如PASCAL VOC
和COCO
)上達(dá)到了最先進(jìn)的水平。使用一種新穎的多尺度訓(xùn)練方法,同一個(gè)YOLOv2
模型可以在不同的尺寸下運(yùn)行,提供了速度和準(zhǔn)確性之間的簡便權(quán)衡。以67
幀每秒的速度,YOLOv2
在VOC 2007
上獲得了76.8
的mAP
。以40
幀每秒的速度,YOLOv2
獲得了78.6
的mAP
,性能超過了Faster RCNN
與ResNet
和SSD
等最先進(jìn)的方法,同時(shí)仍然運(yùn)行速度顯著更快。最后,我們提出了一種同時(shí)進(jìn)行目標(biāo)檢測(cè)和分類訓(xùn)練的方法。使用這種方法,我們同時(shí)在COCO
檢測(cè)數(shù)據(jù)集和ImageNet
分類數(shù)據(jù)集上訓(xùn)練YOLO9000
。我們的聯(lián)合訓(xùn)練使得YOLO9000
能夠?qū)]有標(biāo)注檢測(cè)數(shù)據(jù)的物體類別進(jìn)行檢測(cè)預(yù)測(cè)。我們?cè)贗mageNet檢測(cè)任務(wù)上驗(yàn)證了我們的方法。盡管只有44
個(gè)類別有檢測(cè)數(shù)據(jù),但YOLO9000
在ImageNet
檢測(cè)驗(yàn)證集上獲得了19.7
的mAP
。在COCO
中沒有的156
個(gè)類別上,YOLO9000
獲得了16.0
的mAP
。但YOLO
不僅可以檢測(cè)超過200
個(gè)類別,還可以預(yù)測(cè)超過9000個(gè)
不同的物體類別,并且仍然能夠?qū)崟r(shí)運(yùn)行。
圖1:YOLO9000。YOLO9000能夠?qū)崟r(shí)檢測(cè)多種物體類別。
1. 介紹
通用目標(biāo)檢測(cè)應(yīng)該具備快速、準(zhǔn)確和能夠識(shí)別各種物體的能力。自神經(jīng)網(wǎng)絡(luò)引入以來,檢測(cè)框架變得越來越快速和準(zhǔn)確。然而,大多數(shù)檢測(cè)方法仍然局限于一小組物體。當(dāng)前的目標(biāo)檢測(cè)數(shù)據(jù)集與用于分類和標(biāo)記等其他任務(wù)的數(shù)據(jù)集相比較有限。最常見的檢測(cè)數(shù)據(jù)集包含數(shù)千到數(shù)十萬張圖像,具有幾十到幾百個(gè)標(biāo)簽[3] [10] [2]。而分類數(shù)據(jù)集則包含數(shù)百萬張圖像,涵蓋數(shù)萬到數(shù)十萬個(gè)類別[20] [2]。我們希望目標(biāo)檢測(cè)能夠達(dá)到物體分類的水平。然而,與分類數(shù)據(jù)集相比,標(biāo)注用于檢測(cè)的圖像要昂貴得多(而標(biāo)記通常是用戶免費(fèi)提供的)。因此,在可預(yù)見的將來,我們不太可能看到與分類數(shù)據(jù)集規(guī)模相當(dāng)?shù)臋z測(cè)數(shù)據(jù)集。我們提出了一種新的方法,利用我們已有的大量分類數(shù)據(jù),擴(kuò)展當(dāng)前檢測(cè)系統(tǒng)的范圍。我們的方法使用層次化的物體分類視圖,可以將不同的數(shù)據(jù)集組合在一起。我們還提出了一種聯(lián)合訓(xùn)練算法,可以在檢測(cè)和分類數(shù)據(jù)上訓(xùn)練目標(biāo)檢測(cè)器。我們的方法利用標(biāo)記的檢測(cè)圖像來學(xué)習(xí)精確定位物體,同時(shí)利用分類圖像來增加其詞匯量和魯棒性。使用這種方法,我們訓(xùn)練了YOLO9000
,一個(gè)可以檢測(cè)超過9000
個(gè)不同物體類別的實(shí)時(shí)目標(biāo)檢測(cè)器。首先,我們改進(jìn)了基礎(chǔ)的YOLO
檢測(cè)系統(tǒng),提出了YOLOv2
,一個(gè)先進(jìn)的實(shí)時(shí)檢測(cè)器。然后,我們使用數(shù)據(jù)集組合方法和聯(lián)合訓(xùn)練算法,從ImageNet
中訓(xùn)練了一個(gè)涵蓋9000
多個(gè)類別的模型,并使用了來自COCO
的檢測(cè)數(shù)據(jù)。我們的所有代碼和預(yù)訓(xùn)練模型都可以在 http://pjreddie.com/yolo9000/上在線獲取。
2. Better
相對(duì)于最先進(jìn)的檢測(cè)系統(tǒng),YOLO
存在各種缺點(diǎn)。與Fast R-CNN
相比,對(duì)YOLO
的錯(cuò)誤分析顯示出它在定位上出現(xiàn)了大量的錯(cuò)誤。此外,與基于區(qū)域提議的方法相比,YOLO
的召回率相對(duì)較低。因此,我們主要關(guān)注提高召回率和定位準(zhǔn)確性,同時(shí)保持分類準(zhǔn)確性。計(jì)算機(jī)視覺通常趨向于更大、更深的網(wǎng)絡(luò) [6] [18] [17]。更好的性能通常依賴于訓(xùn)練更大的網(wǎng)絡(luò)或?qū)⒍鄠€(gè)模型集成在一起。然而,對(duì)于YOLOv2
,我們希望得到一個(gè)更準(zhǔn)確的檢測(cè)器,同時(shí)保持速度快。我們并沒有擴(kuò)大網(wǎng)絡(luò)規(guī)模,而是簡化網(wǎng)絡(luò),并使表示更容易學(xué)習(xí)。我們匯集了過去的研究中的各種想法,并結(jié)合了我們自己的創(chuàng)新概念,來改進(jìn)YOLO
的性能。結(jié)果摘要可以在表2中找到。
表2:從YOLO到Y(jié)OLOv2的路徑。大多數(shù)列出的設(shè)計(jì)決策都顯著提高了mAP。有兩個(gè)例外,即采用全卷積網(wǎng)絡(luò)與錨框的方法以及使用新網(wǎng)絡(luò)。采用錨框方法增加了召回率而不改變mAP,而使用新網(wǎng)絡(luò)降低了計(jì)算量33%。
批標(biāo)準(zhǔn)化(Batch Normalization)。批標(biāo)準(zhǔn)化在收斂性方面帶來了顯著的改進(jìn),同時(shí)消除了對(duì)其他形式的正則化的需求[7]。通過在YOLO
的所有卷積層中添加批標(biāo)準(zhǔn)化,我們?cè)?code>mAP上獲得了超過2%
的改進(jìn)。批標(biāo)準(zhǔn)化還有助于對(duì)模型進(jìn)行正則化。通過批標(biāo)準(zhǔn)化,我們可以在不過擬合的情況下將模型中的dropout
去除。
高分辨率分類器(High Resolution Classifier)。所有最先進(jìn)的檢測(cè)方法都使用在ImageNet
上進(jìn)行預(yù)訓(xùn)練的分類器[16]。從AlexNet
開始,大多數(shù)分類器都在小于
256
×
256
256×256
256×256 的輸入圖像上運(yùn)行[8]。原始的YOLO
在
224
×
224
224×224
224×224 的分辨率下訓(xùn)練分類器網(wǎng)絡(luò),并將分辨率增加到
448
448
448 用于目標(biāo)檢測(cè)。這意味著網(wǎng)絡(luò)必須同時(shí)切換到學(xué)習(xí)目標(biāo)檢測(cè)并適應(yīng)新的輸入分辨率。對(duì)于YOLOv2
,我們首先在ImageNet
上將分類網(wǎng)絡(luò)以完整的
448
×
448
448×448
448×448 分辨率進(jìn)行微調(diào)訓(xùn)練10
個(gè)epochs
。這使得網(wǎng)絡(luò)有時(shí)間調(diào)整其濾波器,以在更高分辨率的輸入上表現(xiàn)更好。然后,我們?cè)谀繕?biāo)檢測(cè)上對(duì)所得到的網(wǎng)絡(luò)進(jìn)行微調(diào)訓(xùn)練。這個(gè)高分辨率分類網(wǎng)絡(luò)使得我們的mAP
增加了將近4%
。
使用錨框的卷積網(wǎng)絡(luò)(Convolutional With Anchor Boxes)。YOLO
通過在卷積特征提取器之上的全連接層直接預(yù)測(cè)邊界框的坐標(biāo)。而Faster R-CNN
則使用手動(dòng)選擇的先驗(yàn)框來預(yù)測(cè)邊界框[15]。在Faster R-CNN
中,只使用卷積層的區(qū)域建議網(wǎng)絡(luò)(RPN
)預(yù)測(cè)先驗(yàn)框的偏移量和置信度。由于預(yù)測(cè)層是卷積層,在特征圖的每個(gè)位置上,RPN
都會(huì)預(yù)測(cè)這些偏移量。通過預(yù)測(cè)偏移量而不是坐標(biāo),簡化了問題,并使網(wǎng)絡(luò)更容易學(xué)習(xí)。我們從YOLO
中移除了全連接層,并使用錨框來預(yù)測(cè)邊界框。首先,我們?nèi)サ粢粋€(gè)池化層,使網(wǎng)絡(luò)的卷積層輸出更高的分辨率。我們還將網(wǎng)絡(luò)縮小,使其在
416
×
416
416×416
416×416 的輸入圖像上操作,而不是
448
×
448
448×448
448×448。我們這樣做是因?yàn)槲覀兿M谔卣鲌D中有奇數(shù)個(gè)位置,這樣就有一個(gè)單獨(dú)的中心單元格。物體,特別是大物體,傾向于占據(jù)圖像的中心位置,因此在中心位置預(yù)測(cè)這些物體比在附近的四個(gè)位置預(yù)測(cè)更好。YOLO
的卷積層通過32
倍下采樣圖像,因此通過使用
416
416
416 的輸入圖像,我們得到一個(gè)
13
×
13
13×13
13×13 的輸出特征圖。當(dāng)我們轉(zhuǎn)向錨框時(shí),我們還將類別預(yù)測(cè)機(jī)制與空間位置分離,而是為每個(gè)錨框預(yù)測(cè)類別和物體概率。與YOLO
類似,物體概率預(yù)測(cè)仍然預(yù)測(cè)了真實(shí)框與提議框之間的IOU
,而類別預(yù)測(cè)則預(yù)測(cè)了給定存在物體的情況下該類別的條件概率。使用錨框,我們的模型的準(zhǔn)確率略有下降。YOLO
每個(gè)圖像只預(yù)測(cè)98
個(gè)框,但使用錨框后,我們的模型預(yù)測(cè)超過一千個(gè)框。在沒有錨框的情況下,我們的中間模型在69.5 mAP
的情況下具有81%
的召回率。而使用錨框后,我們的模型在69.2 mAP
的情況下具有88%
的召回率。盡管mAP
減小了,但召回率的增加意味著我們的模型有更大的改進(jìn)空間。
維度聚類(Dimension Clusters)。使用YOLO
時(shí),我們?cè)谑褂缅^框時(shí)遇到了兩個(gè)問題。第一個(gè)問題是框的尺寸是手動(dòng)選擇的。網(wǎng)絡(luò)可以學(xué)習(xí)適當(dāng)?shù)卣{(diào)整框的大小,但如果我們?yōu)榫W(wǎng)絡(luò)選擇更好的先驗(yàn)條件,那么可以使網(wǎng)絡(luò)更容易學(xué)習(xí)預(yù)測(cè)良好的檢測(cè)結(jié)果。
為了解決在YOLO
中手動(dòng)選擇錨框尺寸的問題,我們可以使用維度聚類。我們不再手動(dòng)選擇錨框的尺寸,而是通過在訓(xùn)練集的邊界框上運(yùn)行k-means
聚類算法來自動(dòng)找到合適的先驗(yàn)框。如果我們使用傳統(tǒng)的k-means
算法和歐氏距離,較大的框會(huì)產(chǎn)生比較小的框更多的誤差。然而,我們真正希望得到的是能夠產(chǎn)生良好IOU
分?jǐn)?shù)的先驗(yàn)框,而這與框的尺寸無關(guān)。因此,我們使用以下距離度量作為我們的指標(biāo):
d ( ?box,?centroid? ) = 1 ? IOU ? ( ?box? , ?centroid? ) d(\text { box, centroid })=1-\operatorname{IOU}(\text { box }, \text { centroid }) d(?box,?centroid?)=1?IOU(?box?,?centroid?)
我們對(duì)不同的k
值運(yùn)行k-means
聚類,并繪制最接近質(zhì)心的平均IOU
,見圖2。我們選擇k = 5
作為模型復(fù)雜度和高召回率之間的良好權(quán)衡。聚類質(zhì)心與手動(dòng)選擇的錨框明顯不同。短而寬的框較少,而高而窄的框較多。我們將聚類策略生成的平均IOU
與最接近的先驗(yàn)框和手動(dòng)選擇的錨框進(jìn)行比較,見表1。僅使用5
個(gè)先驗(yàn)框時(shí),聚類質(zhì)心的平均IOU
與9
個(gè)錨框相似,為61.0
,而錨框的平均IOU
為60.9
。如果我們使用9
個(gè)質(zhì)心,平均IOU
會(huì)更高。這表明使用k-means
生成我們的邊界框可以使模型具有更好的表示,并使任務(wù)更易于學(xué)習(xí)。
圖2:在VOC和COCO數(shù)據(jù)集上對(duì)邊界框尺寸進(jìn)行聚類。我們對(duì)邊界框的尺寸運(yùn)行k-means聚類,以獲得我們模型的良好先驗(yàn)。左圖顯示了在不同k值選擇下我們獲得的平均IOU。我們發(fā)現(xiàn)k = 5在召回率與模型復(fù)雜度之間有一個(gè)良好的權(quán)衡。右圖顯示了VOC和COCO的相對(duì)質(zhì)心。這兩組先驗(yàn)都偏向較細(xì)、較高的邊界框,而COCO的尺寸變化比VOC更大。
表1:在VOC 2007數(shù)據(jù)集上,邊界框與最接近的先驗(yàn)之間的平均IOU。使用不同的生成方法,計(jì)算VOC 2007上對(duì)象與其最接近、未修改的先驗(yàn)之間的平均IOU。聚類方法相比手動(dòng)選擇的先驗(yàn)?zāi)軌颢@得更好的結(jié)果。
直接位置預(yù)測(cè)(Direct location prediction)。在使用錨框(anchor boxes)時(shí),我們遇到了第二個(gè)問題:模型的不穩(wěn)定性,特別是在早期迭代中。大部分的不穩(wěn)定性來自于對(duì)框的 ( x , y ) (x,y) (x,y)位置的預(yù)測(cè)。在區(qū)域提議網(wǎng)絡(luò)中,網(wǎng)絡(luò)預(yù)測(cè)了值 t x t_x tx? 和 t y t_y ty?,并且通過以下方式計(jì)算 ( x , y ) (x,y) (x,y)中心坐標(biāo):
x = ( t x ? w a ) ? x a y = ( t y ? h a ) ? y a \begin{array}{l} x=\left(t_{x} * w_{a}\right)-x_{a} \\ y=\left(t_{y} * h_{a}\right)-y_{a} \end{array} x=(tx??wa?)?xa?y=(ty??ha?)?ya??
例如,如果預(yù)測(cè)的 t x = 1 t_x = 1 tx?=1,則會(huì)將框向右移動(dòng)一個(gè)錨框的寬度,如果預(yù)測(cè)的 t x = ? 1 t_x = -1 tx?=?1,則會(huì)將框向左移動(dòng)相同的距離。這種公式?jīng)]有限制,因此任何錨框都可以出現(xiàn)在圖像中的任何位置,而不管哪個(gè)位置預(yù)測(cè)了框。使用隨機(jī)初始化時(shí),模型需要很長時(shí)間才能穩(wěn)定下來,以預(yù)測(cè)合理的偏移量。為了解決這個(gè)問題,我們采用了YOLO的方法,即預(yù)測(cè)相對(duì)于網(wǎng)格單元位置的坐標(biāo)。這將限制真實(shí)值在 0 0 0 和 1 1 1 之間。我們使用邏輯激活函數(shù)將網(wǎng)絡(luò)的預(yù)測(cè)限制在這個(gè)范圍內(nèi)。網(wǎng)絡(luò)在輸出特征圖的每個(gè)單元格中預(yù)測(cè) 5 5 5 個(gè)邊界框。網(wǎng)絡(luò)為每個(gè)邊界框預(yù)測(cè) 5 5 5 個(gè)坐標(biāo), t x t_x tx?、 t y t_y ty?、 t w t_w tw?、 t h t_h th?和 t o t_o to?。如果單元格相對(duì)于圖像的左上角偏移了( c x c_x cx?, c y c_y cy?),并且邊界框先驗(yàn)具有寬度和高度 p w p_w pw?、 p h p_h ph?,則預(yù)測(cè)對(duì)應(yīng)如下:
由于我們限制了位置預(yù)測(cè),參數(shù)化更容易學(xué)習(xí),使網(wǎng)絡(luò)更加穩(wěn)定。結(jié)合使用尺寸聚類和直接預(yù)測(cè)邊界框中心位置,相比使用錨框的版本,改進(jìn)了近5%
的YOLO
性能。
這個(gè)修改后的YOLO
在一個(gè)
13
×
13
13×13
13×13 的特征圖上進(jìn)行目標(biāo)檢測(cè)。雖然對(duì)于大型對(duì)象來說這已經(jīng)足夠,但對(duì)于定位較小對(duì)象來說,使用更精細(xì)的特征可能會(huì)有所好處。Faster R-CNN
和SSD
在網(wǎng)絡(luò)中的不同特征圖上運(yùn)行它們的提議網(wǎng)絡(luò)以獲得一系列分辨率。我們采用了不同的方法,只是簡單地添加了一個(gè)經(jīng)過層,將
26
×
26
26×26
26×26 分辨率的較早層的特征帶入。經(jīng)過層通過將相鄰特征堆疊到不同通道而不是空間位置,將高分辨率特征與低分辨率特征連接起來,類似于ResNet
中的恒等映射。這將
26
×
26
×
512
26×26×512
26×26×512 的特征圖轉(zhuǎn)換為
13
×
13
×
2048
13×13×2048
13×13×2048 的特征圖,并可以與原始特征進(jìn)行連接。我們的檢測(cè)器在這個(gè)擴(kuò)展的特征圖上運(yùn)行,以便可以獲得細(xì)粒度的特征。這會(huì)帶來1%
的性能提升。
多尺度訓(xùn)練(Multi-Scale Training)。原始的YOLO
模型使用
448
×
448
448×448
448×448 的輸入分辨率。隨著錨框的引入,我們將分辨率改為
416
×
416
416×416
416×416。然而,由于我們的模型僅使用卷積和池化層,因此可以動(dòng)態(tài)調(diào)整大小。我們希望YOLOv2
能夠適應(yīng)不同大小的圖像運(yùn)行,因此我們將這一特性訓(xùn)練到模型中。與固定輸入圖像大小不同,我們每隔幾個(gè)迭代就改變網(wǎng)絡(luò)。每經(jīng)過10
個(gè)批次,我們的網(wǎng)絡(luò)會(huì)隨機(jī)選擇一個(gè)新的圖像尺寸。由于我們的模型通過32的倍數(shù)進(jìn)行下采樣,我們選擇以下32
的倍數(shù):{320, 352, ..., 608}
。因此,最小的選項(xiàng)是
320
×
320
320×320
320×320,最大的選項(xiàng)是
608
×
608
608×608
608×608。我們將網(wǎng)絡(luò)調(diào)整為該尺寸并繼續(xù)訓(xùn)練。這種方式迫使網(wǎng)絡(luò)在各種輸入尺寸下學(xué)習(xí)良好的預(yù)測(cè)。這意味著同一網(wǎng)絡(luò)可以在不同的分辨率下進(jìn)行目標(biāo)檢測(cè)。網(wǎng)絡(luò)在較小的尺寸下運(yùn)行速度更快,因此YOLOv2
在速度和準(zhǔn)確性之間提供了一種簡單的權(quán)衡。在低分辨率下,YOLOv2
作為一種廉價(jià)且相對(duì)準(zhǔn)確的檢測(cè)器。在
288
×
288
288×288
288×288 的分辨率下,它以超過90 FPS
的速度運(yùn)行,mAP
幾乎與Fast R-CNN
相當(dāng)。這使其非常適合較小的GPU
、高幀率視頻或多個(gè)視頻流。在高分辨率下,YOLOv2
是一種具有78.6 mAP
的最先進(jìn)檢測(cè)器,同時(shí)仍保持實(shí)時(shí)速度。請(qǐng)參閱表3以比較YOLOv2
與VOC 2007
上的其他框架。見圖4。
圖3:具有尺寸先驗(yàn)和位置預(yù)測(cè)的邊界框。我們使用聚類中心作為基準(zhǔn),預(yù)測(cè)邊界框的寬度和高度偏移量。我們使用Sigmoid函數(shù)預(yù)測(cè)邊界框的中心坐標(biāo)相對(duì)于濾波器應(yīng)用位置的相對(duì)位置。
圖4:在VOC 2007上的準(zhǔn)確率和速度。
進(jìn)一步的實(shí)驗(yàn)(Further Experiments)。我們?cè)?code>VOC 2012數(shù)據(jù)集上訓(xùn)練了YOLOv2
進(jìn)行目標(biāo)檢測(cè)。表4展示了YOLOv2
與其他最先進(jìn)的檢測(cè)系統(tǒng)的性能對(duì)比。YOLOv2
在達(dá)到73.4
的mAP
的同時(shí),運(yùn)行速度遠(yuǎn)遠(yuǎn)超過了競(jìng)爭(zhēng)方法。我們還在COCO
數(shù)據(jù)集上進(jìn)行訓(xùn)練,并在表5中與其他方法進(jìn)行比較。在VOC
指標(biāo)(IOU = 0.5
)上,YOLOv2
獲得了44.0
的mAP
,與SSD
和Faster R-CNN
相當(dāng)。
表3:在PASCAL VOC 2007上的檢測(cè)框架。YOLOv2比之前的檢測(cè)方法更快速和準(zhǔn)確。它還可以在不同的分辨率下運(yùn)行,以便在速度和準(zhǔn)確性之間進(jìn)行簡單的權(quán)衡。每個(gè)YOLOv2條目實(shí)際上是相同的訓(xùn)練模型,具有相同的權(quán)重,只是在不同的尺寸下進(jìn)行評(píng)估。所有的時(shí)間信息都是在一臺(tái)Geforce GTX Titan X上(原始版本,不是Pascal模型)測(cè)得的。
表4:PASCAL VOC2012測(cè)試檢測(cè)結(jié)果。YOLOv2與Faster R-CNN與ResNet和SSD512等最先進(jìn)的檢測(cè)器表現(xiàn)相當(dāng),并且速度快2至10倍。
表5:在COCO test-dev2015上的結(jié)果。表格改編自[11]。
3. Faster
我們希望檢測(cè)結(jié)果既準(zhǔn)確又快速。大多數(shù)檢測(cè)應(yīng)用,如機(jī)器人或自動(dòng)駕駛汽車,都依賴于低延遲的預(yù)測(cè)。為了最大化性能,我們從頭開始設(shè)計(jì)了快速的YOLOv2
。大多數(shù)檢測(cè)框架都依賴于VGG-16
作為基礎(chǔ)特征提取器[17]。VGG-16
是一個(gè)功能強(qiáng)大、準(zhǔn)確的分類網(wǎng)絡(luò),但它過于復(fù)雜。VGG-16
的卷積層在
224
×
224
224 × 224
224×224 分辨率下對(duì)單個(gè)圖像進(jìn)行一次處理就需要306.9
億次浮點(diǎn)運(yùn)算。YOLO
框架使用了基于Googlenet
架構(gòu)的自定義網(wǎng)絡(luò)[19]。這個(gè)網(wǎng)絡(luò)比VGG-16
更快,僅需要85.2
億次運(yùn)算來進(jìn)行前向傳遞。然而,它的準(zhǔn)確性略低于VGG-16
。在
224
×
224
224 × 224
224×224 的單一裁剪情況下,YOLO
的自定義模型在ImageNet
數(shù)據(jù)集上的前五準(zhǔn)確率為88.0%
,而VGG-16
為90.0%
。
Darknet-19. 我們提出了一個(gè)新的分類模型,作為YOLOv2
的基礎(chǔ)。我們的模型基于之前在網(wǎng)絡(luò)設(shè)計(jì)方面的研究成果以及領(lǐng)域內(nèi)的共識(shí)。與VGG模型類似,我們主要使用
3
×
3
3 × 3
3×3 的濾波器,并在每個(gè)池化步驟后將通道數(shù)翻倍[17]。在網(wǎng)絡(luò)內(nèi)網(wǎng)絡(luò)(Network in Network,NIN)的研究基礎(chǔ)上,我們使用全局平均池化進(jìn)行預(yù)測(cè),并使用
1
×
1
1 × 1
1×1 的濾波器在
3
×
3
3 × 3
3×3 卷積之間壓縮特征表示[9]。我們使用批量歸一化(batch normalization)來穩(wěn)定訓(xùn)練、加快收斂速度并對(duì)模型進(jìn)行正則化[7]。
我們的最終模型稱為Darknet-19
,它由19
個(gè)卷積層和5
個(gè)最大池化層組成。詳細(xì)描述請(qǐng)參見表6。Darknet-19
只需要5.58
億次運(yùn)算就能處理一張圖像,但在ImageNet
數(shù)據(jù)集上實(shí)現(xiàn)了72.9%
的Top-1
準(zhǔn)確率和91.2%
的Top-5
準(zhǔn)確率。
進(jìn)行分類任務(wù)時(shí)。我們使用Darknet
神經(jīng)網(wǎng)絡(luò)框架 [13],在標(biāo)準(zhǔn)的ImageNet 1000
類分類數(shù)據(jù)集上進(jìn)行訓(xùn)練,共進(jìn)行160
個(gè)epoch
。訓(xùn)練過程中使用隨機(jī)梯度下降法(stochastic gradient descent),初始學(xué)習(xí)率為0.1
,采用4
次冪的多項(xiàng)式學(xué)習(xí)率衰減,權(quán)重衰減率為0.0005
,動(dòng)量為0.9
。我們?cè)谟?xùn)練過程中使用標(biāo)準(zhǔn)的數(shù)據(jù)增強(qiáng)技巧,包括隨機(jī)裁剪、旋轉(zhuǎn)、色調(diào)、飽和度和曝光度的調(diào)整。正如上面所討論的,初始訓(xùn)練使用
224
×
224
224×224
224×224 大小的圖像,然后在更大的尺寸
448
448
448 上對(duì)網(wǎng)絡(luò)進(jìn)行微調(diào)。在微調(diào)階段,我們使用相同的參數(shù)進(jìn)行訓(xùn)練,但僅進(jìn)行10
個(gè)epoch
,并將初始學(xué)習(xí)率設(shè)為10
的負(fù)3
次方。在這種更高的分辨率下,我們的網(wǎng)絡(luò)實(shí)現(xiàn)了76.5%
的Top-1
準(zhǔn)確率和93.3%
的Top-5
準(zhǔn)確率。
進(jìn)行目標(biāo)檢測(cè)任務(wù)時(shí)。我們對(duì)該網(wǎng)絡(luò)進(jìn)行了修改。我們移除了最后一層卷積層,取而代之的是添加了三個(gè) 3 × 3 3×3 3×3 的卷積層,每個(gè)卷積層有 1024 1024 1024 個(gè)濾波器,接著是最后一個(gè) 1 × 1 1×1 1×1 的卷積層,輸出通道數(shù)根據(jù)檢測(cè)任務(wù)的需要而定。在VOC數(shù)據(jù)集上,我們預(yù)測(cè)每個(gè)框內(nèi)的 5 5 5 個(gè)邊界框,每個(gè)邊界框有 5 5 5 個(gè)坐標(biāo),以及每個(gè)框的 20 20 20 個(gè)類別,因此總共有 125 125 125 個(gè)濾波器。此外,我們還添加了一個(gè)從最后一個(gè) 3 × 3 × 512 3×3×512 3×3×512 層到倒數(shù)第二個(gè)卷積層的傳遞層,以便模型可以利用細(xì)粒度的特征。
在分類訓(xùn)練中,我們使用了初始學(xué)習(xí)率為
1
0
?
3
10^{-3}
10?3,并在第60
和90
個(gè)epoch
時(shí)將其除以10
的策略進(jìn)行了160
個(gè)epochs
的訓(xùn)練。我們采用了權(quán)重衰減0.0005
和動(dòng)量0.9
的設(shè)置。與YOLO
和SSD
類似,我們也采用了隨機(jī)裁剪、顏色變換等數(shù)據(jù)增強(qiáng)方法。我們?cè)?code>COCO和VOC
數(shù)據(jù)集上采用相同的訓(xùn)練策略。
4. Stronger
我們提出了一種在分類和檢測(cè)數(shù)據(jù)上進(jìn)行聯(lián)合訓(xùn)練的機(jī)制。我們的方法利用用于檢測(cè)的圖像標(biāo)記來學(xué)習(xí)檢測(cè)特定的信息,如邊界框坐標(biāo)預(yù)測(cè)和物體性質(zhì),以及如何對(duì)常見物體進(jìn)行分類。它還利用只具有類別標(biāo)簽的圖像來擴(kuò)展其能夠檢測(cè)的類別數(shù)量。在訓(xùn)練過程中,我們混合使用來自檢測(cè)和分類數(shù)據(jù)集的圖像。當(dāng)我們的網(wǎng)絡(luò)看到一個(gè)標(biāo)記為檢測(cè)的圖像時(shí),我們可以根據(jù)完整的YOLOv2
損失函數(shù)進(jìn)行反向傳播。當(dāng)它看到一個(gè)分類圖像時(shí),我們只從架構(gòu)的分類特定部分進(jìn)行損失的反向傳播。
這種方法存在一些挑戰(zhàn)。檢測(cè)數(shù)據(jù)集只包含常見物體和通用標(biāo)簽,比如“狗”或“船”。而分類數(shù)據(jù)集則具有更廣泛和更深入的標(biāo)簽范圍。ImageNet
擁有100
多個(gè)狗品種,包括“諾福克?!?、“約克夏梗”和“貝靈頓?!薄H绻覀兿朐谶@兩個(gè)數(shù)據(jù)集上進(jìn)行訓(xùn)練,我們需要一種合理的方法來合并這些標(biāo)簽。大多數(shù)分類方法使用softmax
層來計(jì)算最終的概率分布,將所有可能的類別都考慮在內(nèi)。使用softmax
假設(shè)類別之間是相互獨(dú)立的。這在合并數(shù)據(jù)集時(shí)會(huì)產(chǎn)生問題,例如您不希望使用這種模型來合并ImageNet
和COCO
,因?yàn)椤爸Z福克?!焙汀肮贰边@兩個(gè)類別并不是相互獨(dú)立的。相反,我們可以使用多標(biāo)簽?zāi)P蛠砗喜?shù)據(jù)集,它不假設(shè)相互獨(dú)立性。但這種方法忽略了我們對(duì)數(shù)據(jù)的了解,例如COCO
數(shù)據(jù)集中的所有類別是相互獨(dú)立的結(jié)構(gòu)。
層次分類。ImageNet
的標(biāo)簽是從WordNet
中獲取的,它是一個(gè)結(jié)構(gòu)化概念及其關(guān)系的語言數(shù)據(jù)庫。在WordNet中,“諾??斯!焙汀凹s克夏梗”都是“梗犬”的下義詞,而“梗犬”是“獵犬”的一種,而“獵犬”又是“狗”的一種,而“狗”則是“犬科動(dòng)物”等等。大多數(shù)分類方法假設(shè)標(biāo)簽之間是扁平的結(jié)構(gòu),然而在合并數(shù)據(jù)集時(shí),我們需要的恰恰是結(jié)構(gòu)化信息。WordNet
以有向圖的形式組織,而不是樹狀結(jié)構(gòu),因?yàn)檎Z言是復(fù)雜的。例如,“狗”既是“犬科動(dòng)物”的一種,也是“家養(yǎng)動(dòng)物”的一種,它們?cè)?code>WordNet中都是同義詞集合。我們簡化問題,通過從ImageNet
中的概念中構(gòu)建一個(gè)分層樹來建立這棵樹。我們檢查ImageNet
中的視覺名詞,并查看它們?cè)?code>WordNet圖中到根節(jié)點(diǎn)的路徑,這里是“物體”。許多同義詞集合只有一條路徑通過圖,因此首先將所有這些路徑添加到我們的樹中。然后,我們迭代地檢查剩下的概念,并添加能使樹生長最少的路徑。因此,如果一個(gè)概念有兩條路徑到根節(jié)點(diǎn),其中一條路徑將為我們的樹添加三條邊,而另一條路徑只添加一條邊,我們選擇較短的路徑。最終的結(jié)果是WordTree
,一個(gè)視覺概念的分層模型。使用WordTree
進(jìn)行分類,我們?cè)诿總€(gè)節(jié)點(diǎn)上預(yù)測(cè)條件概率,即給定該同義詞集合的情況下,每個(gè)下義詞的概率。例如,在“梗犬”節(jié)點(diǎn)上,我們預(yù)測(cè)的是:
如果我們想計(jì)算特定節(jié)點(diǎn)的絕對(duì)概率,我們只需沿著樹狀結(jié)構(gòu)的路徑到達(dá)根節(jié)點(diǎn),并將條件概率相乘。因此,如果我們想知道一張圖片是否是諾??斯#覀兛梢杂?jì)算:
為了分類目的,我們假設(shè)圖像中包含一個(gè)物體:
P
r
(
p
h
y
s
i
c
a
l
o
b
j
e
c
t
)
=
1
Pr(physical \quad object) = 1
Pr(physicalobject)=1。為了驗(yàn)證這種方法,我們使用1000
類的ImageNet
構(gòu)建了Darknet-19
模型的WordTree
。為了構(gòu)建WordTree1k
,我們添加了所有中間節(jié)點(diǎn),將標(biāo)簽空間從1000
擴(kuò)展到1369
。在訓(xùn)練過程中,我們將真實(shí)標(biāo)簽向上傳播到樹上,因此如果一張圖像被標(biāo)記為"Norfolk terrier"
,它也被標(biāo)記為"dog"
和"mammal"
等。為了計(jì)算條件概率,我們的模型預(yù)測(cè)一個(gè)包含1369
個(gè)值的向量,并對(duì)所有屬于同一概念的下位詞進(jìn)行softmax
計(jì)算,參見圖5。使用與之前相同的訓(xùn)練參數(shù),我們的層次化Darknet-19
實(shí)現(xiàn)了71.9%
的top-1
準(zhǔn)確率和90.4%
的top-5
準(zhǔn)確率。盡管添加了369
個(gè)額外的概念并使網(wǎng)絡(luò)預(yù)測(cè)樹結(jié)構(gòu),但我們的準(zhǔn)確率僅略有下降。以這種方式進(jìn)行分類也具有一些優(yōu)勢(shì)。對(duì)于新的或未知的物體類別,性能會(huì)平穩(wěn)下降。例如,如果網(wǎng)絡(luò)看到一張狗的圖片,但不確定是什么類型的狗,它仍會(huì)高度自信地預(yù)測(cè)"dog"
,但在下位詞中的置信度會(huì)較低。這種表述方式也適用于檢測(cè)。現(xiàn)在,不再假設(shè)每張圖像都有一個(gè)物體,而是使用YOLOv2
的物體性質(zhì)預(yù)測(cè)器來給出
P
r
(
p
h
y
s
i
c
a
l
o
b
j
e
c
t
)
Pr(physical \quad object)
Pr(physicalobject) 的值。檢測(cè)器預(yù)測(cè)一個(gè)邊界框和概率樹。我們沿著樹向下遍歷,在每個(gè)分支處選擇最高置信度的路徑,直到達(dá)到某個(gè)閾值,并預(yù)測(cè)該物體類別。
圖5:在ImageNet和WordTree上的預(yù)測(cè)。大多數(shù)ImageNet模型使用一個(gè)大的softmax來預(yù)測(cè)概率分布。而使用WordTree,我們對(duì)共同下位詞進(jìn)行多個(gè)softmax操作。
使用WordTree
可以將多個(gè)數(shù)據(jù)集以合理的方式進(jìn)行組合。我們只需將數(shù)據(jù)集中的類別映射到樹中的同義詞集。圖6展示了使用WordTree
將ImageNet
和COCO
的標(biāo)簽進(jìn)行組合的示例。WordNet
非常多樣化,因此我們可以將這種技術(shù)應(yīng)用于大多數(shù)數(shù)據(jù)集。
圖6:使用WordTree層次結(jié)構(gòu)合并數(shù)據(jù)集。利用WordNet概念圖,我們構(gòu)建了視覺概念的層次樹。然后,我們可以通過將數(shù)據(jù)集中的類別映射到樹中的同義詞集來合并數(shù)據(jù)集。這是一個(gè)簡化的WordTree視圖,用于說明目的。
現(xiàn)在我們可以使用 WordTree
將數(shù)據(jù)集進(jìn)行組合,從而在分類和檢測(cè)上訓(xùn)練我們的聯(lián)合模型。我們想要訓(xùn)練一個(gè)非常大規(guī)模的檢測(cè)器,因此我們使用了COCO
檢測(cè)數(shù)據(jù)集和來自完整ImageNet
發(fā)布的前9000
個(gè)類別來創(chuàng)建我們的組合數(shù)據(jù)集。我們還需要評(píng)估我們的方法,因此我們添加了ImageNet檢測(cè)挑戰(zhàn)中尚未包含的任何類別。該數(shù)據(jù)集對(duì)應(yīng)的WordTree
有9418
個(gè)類別。ImageNet
是一個(gè)更大的數(shù)據(jù)集,因此我們通過過采樣COCO
數(shù)據(jù)集來平衡數(shù)據(jù)集,使ImageNet的大小只比COCO
大4
倍。使用這個(gè)數(shù)據(jù)集,我們訓(xùn)練YOLO9000
。我們使用基本的YOLOv2
架構(gòu),但只使用3
個(gè)先驗(yàn)框而不是5
個(gè)以限制輸出大小。當(dāng)我們的網(wǎng)絡(luò)看到一個(gè)檢測(cè)圖像時(shí),我們按照正常方式進(jìn)行損失的反向傳播。對(duì)于分類損失,我們只在或以上的層級(jí)上進(jìn)行反向傳播損失。例如,如果標(biāo)簽是"dog"
,我們不會(huì)將任何錯(cuò)誤分配給樹中更深層次的預(yù)測(cè),比如"German Shepherd"
與"Golden Retriever"
之間的區(qū)別,因?yàn)槲覀儧]有這方面的信息。
表7:YOLO9000在ImageNet上的最佳和最差類別。這是從156個(gè)弱監(jiān)督類別中選擇出具有最高和最低平均準(zhǔn)確率的類別。YOLO9000在各種動(dòng)物類別上學(xué)習(xí)到了較好的模型,但在像服裝或設(shè)備這樣的新類別上表現(xiàn)較差。
當(dāng)模型看到一個(gè)分類圖像時(shí),我們只進(jìn)行分類損失的反向傳播。為了實(shí)現(xiàn)這一點(diǎn),我們只需找到預(yù)測(cè)該類別概率最高的邊界框,并計(jì)算其預(yù)測(cè)樹上的損失。我們還假設(shè)預(yù)測(cè)的邊界框與實(shí)際標(biāo)簽之間的重疊度(IOU
)至少為0.3
,并基于此假設(shè)進(jìn)行目標(biāo)性損失的反向傳播。通過這種聯(lián)合訓(xùn)練,YOLO9000
在COCO
的檢測(cè)數(shù)據(jù)中學(xué)會(huì)了在圖像中找到對(duì)象,并使用ImageNet
的數(shù)據(jù)學(xué)會(huì)了對(duì)各種對(duì)象進(jìn)行廣泛的分類。我們?cè)?code>ImageNet檢測(cè)任務(wù)上評(píng)估了YOLO9000
。ImageNet
的檢測(cè)任務(wù)與COCO
共享了44
個(gè)對(duì)象類別,這意味著YOLO9000只在大部分測(cè)試圖像上看到了分類數(shù)據(jù),而沒有看到檢測(cè)數(shù)據(jù)。YOLO9000
在整體上獲得了19.7
的平均精度(mAP
),其中對(duì)于它從未看到任何標(biāo)記的檢測(cè)數(shù)據(jù)的156
個(gè)不相交的對(duì)象類別,mAP
為16.0
。這個(gè)mAP
高于DPM
的結(jié)果,但YOLO9000
是在不同的數(shù)據(jù)集上進(jìn)行訓(xùn)練,只有部分監(jiān)督信息[4]。它還同時(shí)實(shí)時(shí)檢測(cè)著其他9000
個(gè)對(duì)象類別。當(dāng)我們分析YOLO9000
在ImageNet
上的表現(xiàn)時(shí),我們發(fā)現(xiàn)它能夠很好地學(xué)習(xí)新物種的動(dòng)物,但在學(xué)習(xí)服裝和設(shè)備等類別方面存在困難。新的動(dòng)物更容易學(xué)習(xí),因?yàn)閷?duì)象性預(yù)測(cè)在COCO
中的動(dòng)物上具有很好的泛化能力。相反,COCO
沒有任何類型的服裝的邊界框標(biāo)簽,只有人的標(biāo)簽,因此YOLO9000
在建模"太陽鏡"或"泳褲"等類別時(shí)會(huì)遇到困難。
5.結(jié)論
我們介紹了YOLOv2
和YOLO9000
,這是實(shí)時(shí)目標(biāo)檢測(cè)系統(tǒng)。YOLOv2
是目前最先進(jìn)的系統(tǒng),在各種目標(biāo)檢測(cè)數(shù)據(jù)集上比其他系統(tǒng)更快。此外,它可以在多種圖像尺寸上運(yùn)行,以在速度和準(zhǔn)確性之間提供平衡。YOLO9000
是一個(gè)實(shí)時(shí)的檢測(cè)框架,可以同時(shí)優(yōu)化檢測(cè)和分類,用于檢測(cè)超過9000
個(gè)物體類別。我們使用WordTree
將來自不同來源的數(shù)據(jù)進(jìn)行組合,并使用聯(lián)合優(yōu)化技術(shù)同時(shí)在ImageNet
和COCO
上進(jìn)行訓(xùn)練。YOLO9000
是在檢測(cè)和分類之間縮小數(shù)據(jù)集大小差距的重要一步。我們的許多技術(shù)在目標(biāo)檢測(cè)之外也具有普適性。我們對(duì)ImageNet
使用的WordTree
表示為圖像分類提供了更豐富、更詳細(xì)的輸出空間。使用層次分類的數(shù)據(jù)集組合方法在分類和分割領(lǐng)域中將會(huì)很有用。多尺度訓(xùn)練等訓(xùn)練技術(shù)可以在各種視覺任務(wù)中提供益處。在未來的工作中,我們希望使用類似的技術(shù)進(jìn)行弱監(jiān)督圖像分割。我們還計(jì)劃通過使用更強(qiáng)大的匹配策略來改進(jìn)檢測(cè)結(jié)果,以便在訓(xùn)練過程中為分類數(shù)據(jù)分配弱標(biāo)簽。計(jì)算機(jī)視覺擁有大量的標(biāo)注數(shù)據(jù),我們將繼續(xù)尋找將不同的數(shù)據(jù)來源和結(jié)構(gòu)融合在一起以構(gòu)建更強(qiáng)大的視覺模型的方法。文章來源:http://www.zghlxwxcb.cn/news/detail-458187.html
相關(guān)推薦
- 目標(biāo)檢測(cè)藍(lán)皮書
- YOLOv5/v7?? 改進(jìn)實(shí)戰(zhàn)
- YOLOv5/v7?? 進(jìn)階實(shí)戰(zhàn)
- YOLOv8???? 改進(jìn)實(shí)戰(zhàn)
文章來源地址http://www.zghlxwxcb.cn/news/detail-458187.html
到了這里,關(guān)于突破極限:YOLO9000 論文解讀 - 構(gòu)建更好、更快、更強(qiáng)大的實(shí)時(shí)檢測(cè)系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!