摘要
我們引入了YOLO9000,一個(gè)可以檢測超過9000種類別的先進(jìn)的實(shí)時(shí)目標(biāo)檢測系統(tǒng)。首先我們提出了多種yolo檢測方法的提升方式,既新穎又參考了 之前的工作。改進(jìn)后的模型,YOLOV2在標(biāo)準(zhǔn)檢測任務(wù)例如PASCAL VO 和COCO 上都取得了領(lǐng)先。使用一個(gè)新穎的多尺度的訓(xùn)練方法,同一個(gè)YOLOV2模型可以在不同尺寸下行,提供了一種速度和準(zhǔn)確率之間的簡單的平衡。在67fps下,yolov2在VOC2007上取得了78.6的mAP,在40fps下,yolov2取得了78.6的mAP,在超越現(xiàn)有的最先進(jìn)的方法例如使用了ResNet的Faster R-CNN和SSD的同時(shí)運(yùn)行速度顯著的快。最后我們提出了一個(gè)方法來共同訓(xùn)練目標(biāo)檢測和分類。使用這種方法我們同時(shí)在COCO目標(biāo)檢測數(shù)據(jù)集和ImageNet分類數(shù)據(jù)集上訓(xùn)練YOLO9000。我們的聯(lián)合訓(xùn)練允許YOLO9000預(yù)測沒有檢測標(biāo)簽的對象類別的檢測。我們在ImageNet檢測任務(wù)上驗(yàn)證了我們的方法。在ImageNet檢測驗(yàn)證集上yolo9000得到了19.7的mAP,盡管只有200個(gè)類中的44個(gè)類的檢測數(shù)據(jù)。在不在coco中的156個(gè)類中,yolo9000得到了16.0的mAP。但是yolo可以檢測超過200個(gè)類別,它可以預(yù)測超過9000個(gè)類別的檢測。而且依然是實(shí)時(shí)運(yùn)行的。
1.引言
通用的目標(biāo)檢測應(yīng)該是快速準(zhǔn)確同時(shí)可以識(shí)別多樣的目標(biāo)。自從神經(jīng)網(wǎng)絡(luò)的引入,檢測框架變得越來越快和準(zhǔn)確。然而,大多數(shù)目標(biāo)檢測方法現(xiàn)在仍舊將目標(biāo)約束為一個(gè)小的目標(biāo)集。
當(dāng)前的目標(biāo)檢測數(shù)據(jù)集相比于分類和標(biāo)記等其他任務(wù)是受限的。最常見的檢測數(shù)據(jù)集包含數(shù)千到數(shù)十萬個(gè)圖像和數(shù)十到數(shù)百個(gè)標(biāo)簽。分類數(shù)據(jù)集包含數(shù)以百萬計(jì)的圖像,其中包含數(shù)萬或數(shù)十萬個(gè)類別。
我們希望檢測擴(kuò)展到目標(biāo)分類的程度。然而,為圖片打檢測標(biāo)簽比打分類標(biāo)簽或tag要貴的多。因此我們不可能在不久的將來看到與分類數(shù)據(jù)集相同規(guī)模的檢測數(shù)據(jù)集。
我們提出了一個(gè)新的方法來利用我們已有的大量的分類數(shù)據(jù)同時(shí)用其來擴(kuò)大目前目標(biāo)檢測系統(tǒng)的范圍。我們的方法使用了目標(biāo)分類的層次視圖允許我們將不同的數(shù)據(jù)集結(jié)合在一起。
我們也提出了一個(gè)聯(lián)合訓(xùn)練算法允許我們在目標(biāo)檢測和分類數(shù)據(jù)集上訓(xùn)練目標(biāo)檢測器。我們的方法充分利用有標(biāo)簽的檢測圖片來學(xué)習(xí)如何區(qū)精準(zhǔn)的定位目標(biāo)同時(shí)使用分類圖像來提高器詞匯量和魯棒性。
使用這種方法,我們訓(xùn)練了YOLO9000,一個(gè)實(shí)時(shí)對象檢測器,可以檢測9000多種不同的對象類別。首先,我們改進(jìn)了基礎(chǔ)的YOLO檢測系統(tǒng),提出了YOLOv2,一種最先進(jìn)的實(shí)時(shí)探測器。然后我們使用我們的數(shù)據(jù)集組合方法和聯(lián)合訓(xùn)練算法,在ImageNet的9000多個(gè)類別以及來自COCO的檢測數(shù)據(jù)上訓(xùn)練模型。
我們所有的代碼和預(yù)訓(xùn)練模型都可在線獲取,http://pjreddie.com/yolo9000/。
2.更好
相對于最先進(jìn)的檢測系統(tǒng),YOLO有很多缺點(diǎn)。YOLO與Fast R-CNN的誤差分析表明,YOLO會(huì)產(chǎn)生大量的定位誤差。此外,與基于區(qū)域提議的方法相比,YOLO的召回率相對較低。因此,我們主要關(guān)注在保持分類準(zhǔn)確性的同時(shí)提高召回率和定位正確性。
計(jì)算機(jī)視覺通常趨向于更大、更深的網(wǎng)絡(luò)。更好的性能通常取決于訓(xùn)練更大的網(wǎng)絡(luò)或?qū)⒍鄠€(gè)模型集成在一起。然而,對于YOLOv2,我們想要一個(gè)更準(zhǔn)確的探測器同時(shí)仍然很快。我們沒有擴(kuò)大網(wǎng)絡(luò),而是簡化了網(wǎng)絡(luò),然后使表示更容易學(xué)習(xí)。我們將過去工作中的各種想法與我們自己的新想法結(jié)合起來,以提高YOLO的性能。表2是對結(jié)果的總結(jié)。
批量歸一化批量歸一化可以顯著提高收斂性,同時(shí)消除對其他形式的正則化的需要。通過在YOLO的所有卷積層上添加批量歸一化,mAP的改進(jìn)幅度超過2%。批量歸一化也有助于模型的規(guī)范化。通過批處理歸一化,我們可以在不過度擬合的情況下從模型中去除dropout。
高分辨率分類器所有最先進(jìn)的檢測方法都使用在ImageNet上預(yù)訓(xùn)練的分類器。從AlexNet開始,大多數(shù)分類器對小于256 × 256的輸入圖像進(jìn)行操作。原始的YOLO以224 × 224的分辨率訓(xùn)練分類器網(wǎng)絡(luò),并將檢測分辨率提高到448。這意味著網(wǎng)絡(luò)必須同時(shí)切換到學(xué)習(xí)目標(biāo)檢測并調(diào)整以適應(yīng)新的輸入分辨率。
對于YOLOv2,我們首先在ImageNet上以完整的448 × 448分辨率對分類網(wǎng)絡(luò)進(jìn)行10次微調(diào)。這使得網(wǎng)絡(luò)有時(shí)間調(diào)整其過濾器,以便在更高分辨率的輸入上更好地工作。然后我們繼續(xù)對所得網(wǎng)絡(luò)進(jìn)行微調(diào),以用于檢測。這種高分辨率分類網(wǎng)絡(luò)使我們的mAP增加了近4%。
帶有錨框的卷積YOLO直接使用卷積特征提取器的全連接層來預(yù)測邊界框的坐標(biāo)。不直接預(yù)測坐標(biāo),F(xiàn)aster R-CNN使用手工挑選的先驗(yàn)預(yù)測邊界框。僅使用卷積層的區(qū)域候選網(wǎng)絡(luò)(RPN)在Faster R-CNN中預(yù)測錨框的偏移量和置信度。由于預(yù)測層是卷積的,RPN在特征映射的每個(gè)位置預(yù)測這些偏移量。預(yù)測偏移量而不是坐標(biāo)簡化了問題,使網(wǎng)絡(luò)更容易學(xué)習(xí)。
我們從YOLO中移除完全連接的層,并使用錨框來預(yù)測邊界框。首先,我們消除一個(gè)池化層,使網(wǎng)絡(luò)的卷積層的輸出具有更高的分辨率。我們還縮小了網(wǎng)絡(luò)以在416大小的輸入圖像上運(yùn)行,而不是448×448。我們這樣做是因?yàn)槲覀兿朐谖覀兊奶卣饔成渲杏衅鏀?shù)個(gè)位置,這樣就有一個(gè)中心單元格。物體,尤其是大的物體,往往會(huì)占據(jù)圖像的中心,所以最好在中心有一個(gè)位置來預(yù)測這些物體,而不是附近的四個(gè)位置。YOLO的卷積層將圖像下采樣了32倍,所以通過使用416大小的輸入圖像,我們得到了13 × 13的輸出特征圖。
當(dāng)我們轉(zhuǎn)而使用錨框時(shí),我們也將類預(yù)測機(jī)制與空間位置解耦,轉(zhuǎn)而預(yù)測每個(gè)錨框的類和對象。和YOLO一樣,對象預(yù)測仍然預(yù)測了真值和候選框的IOU,類別的預(yù)測則預(yù)測在存在一個(gè)對象的情況下,該類別的條件概率。
通過使用錨框,我們的精度略有下降。YOLO每張圖像只預(yù)測98個(gè)框,但使用錨框,我們的模型可以預(yù)測超過1000個(gè)框。沒有錨框,我們的中間模型得到69.5 mAP,召回率為81%。使用錨框后,我們的模型得到69.2 mAP,召回率為88%。盡管mAP降低了,但召回率的增加意味著我們的模型還有更多的改進(jìn)空間。
大小聚類將錨框在YOLO中使用時(shí),我們遇到了兩個(gè)問題。首先,錨框的尺寸是手工選定的。網(wǎng)絡(luò)可以學(xué)習(xí)適當(dāng)?shù)卣{(diào)整盒子,但是如果我們?yōu)榫W(wǎng)絡(luò)選擇更好的先驗(yàn),可以讓網(wǎng)絡(luò)更容易地學(xué)到如何預(yù)測。
我們在訓(xùn)練集的邊界框上運(yùn)行kmeans聚類來自動(dòng)地找尋找的更優(yōu)的先驗(yàn)框,而不是手動(dòng)選擇。如果我們使用歐幾里得距離下的標(biāo)準(zhǔn)kmeans,會(huì)使得大的錨框比小的錨框的距離更大也就是說聚類的結(jié)果會(huì)和框的大小相關(guān)。但是,我們真正想要的是可以獲得更好的IOU的先驗(yàn),而這和錨框的大小是無關(guān)的。因此,我們自定義了Kmeans的距離度量如下:
d ( b o x , c e n t r o i d ) = 1 ? I O U ( b o x , c e n t r o i d ) d(box,centroid)=1-IOU(box,centroid) d(box,centroid)=1?IOU(box,centroid)
然后,我們用不同的k值運(yùn)行k-means,并繪制最接近質(zhì)心的平均IOU,如圖2所示。
我們最終選擇k = 5,因?yàn)槠湓谀P蛷?fù)雜性和高召回率之間取得了一個(gè)很好的平衡。使用聚類與手動(dòng)挑選的錨框明顯的不同。短而寬的盒子更少,而高而窄的盒子更多。
我們用聚類和手動(dòng)選擇錨框兩種策略,對其平均IOU進(jìn)行了比較。k=5的聚類策略的表現(xiàn)與手動(dòng)選擇9個(gè)錨框類似,平均IOU分別為61.0和60.9。如果k=9,那么可以得到更高的平均IOU。這表明使用kmeans來生成邊界框可以使模型具有更好的表示,并且使得任務(wù)更容易學(xué)習(xí)。
直接位置預(yù)測在YOLO中使用錨框時(shí),我們遇到了第二個(gè)問題:模型不穩(wěn)定性,特別是在早期迭代期間。大多數(shù)不穩(wěn)定性來自于對邊界框
(
x
,
y
)
(x, y)
(x,y)坐標(biāo)的預(yù)測。在區(qū)域候選網(wǎng)絡(luò)中,網(wǎng)絡(luò)預(yù)測
t
x
t_x
tx?和
t
y
t_y
ty?,其中中心坐標(biāo)
(
x
,
y
)
(x, y)
(x,y)用如下公式計(jì)算:
x
=
(
t
x
?
w
a
)
?
x
a
x=(t_x*w_a)-x_a
x=(tx??wa?)?xa?
y
=
(
t
y
?
h
a
)
?
y
a
y=(t_y*h_a)-y_a
y=(ty??ha?)?ya?
例如,
t
x
=
1
t_x = 1
tx?=1將使框向右移動(dòng)一個(gè)錨框的寬度,tx = - 1將使其向左移動(dòng)相同的寬度。這個(gè)公式是不受約束的,所以任何錨框都可以在圖像中的任何一點(diǎn)結(jié)束,而不管錨框的位置是什么。在隨機(jī)初始化的情況下,模型需要較長的穩(wěn)定時(shí)間才能預(yù)測出合理的偏移量。我們采用了YOLO的方法,預(yù)測相對于網(wǎng)格單元位置的位置坐標(biāo),而不是預(yù)測偏移。這將真值限定在0和1之間。我們使用邏輯激活來約束網(wǎng)絡(luò)的預(yù)測值落在這個(gè)范圍內(nèi)。
該網(wǎng)絡(luò)在輸出特征圖的每個(gè)單元上預(yù)測5個(gè)邊界框。網(wǎng)絡(luò)為每個(gè)邊界框預(yù)測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?。如果單元格與圖像左上角的偏移量為
(
c
x
,
c
y
)
(c_x, c_y)
(cx?,cy?),并且先驗(yàn)的邊界框的寬度和高度為
p
w
p_w
pw?,
p
h
p_h
ph?,則預(yù)測對應(yīng)于:
b
x
=
σ
(
t
x
)
+
c
x
b_x=\sigma(t_x)+c_x
bx?=σ(tx?)+cx?
b
y
=
σ
(
t
y
)
+
c
y
b_y=\sigma(t_y)+c_y
by?=σ(ty?)+cy?
b
w
=
p
w
e
t
w
b_w=p_we^{t_w}
bw?=pw?etw?
b
h
=
p
h
e
t
h
b_h=p_he^{t_h}
bh?=ph?eth?
P
r
(
o
b
j
e
c
t
)
?
I
O
U
(
b
,
o
b
j
e
c
t
)
=
σ
(
t
o
)
Pr(object)*IOU(b,object)=\sigma(t_o)
Pr(object)?IOU(b,object)=σ(to?)
由于我們約束了位置預(yù)測,因此參數(shù)更容易學(xué)習(xí),使得網(wǎng)絡(luò)更穩(wěn)定。使用大小聚類和直接預(yù)測邊界框的中心位置可以提高精度與使用錨框的版本相比,YOLO提高了近5%。
細(xì)粒度特征改進(jìn)的YOLO在13 × 13的特征映射上預(yù)測檢測。雖然這對于大型目標(biāo)來說已經(jīng)足夠了,但是對于定位較小的目標(biāo),更細(xì)的粒度可能對其更有效。Faster R-CNN和SSD都在網(wǎng)絡(luò)中的各層特征映射上運(yùn)行它們的候選網(wǎng)絡(luò),來獲得一系列分辨率。我們采用了一種不同的方法,簡單地添加一個(gè)passthrough層,從26 × 26分辨率的早期層中提取特征。
passthrough層通過將相鄰的特征疊加到不同的通道而不是空間位置來連接高分辨率特征和低分辨率特征,類似于ResNet中的身份映射。將26x26x512的特征圖轉(zhuǎn)變?yōu)橐粋€(gè)13x13x2048的特征圖,這就可以和初始的特征相連接。我們的檢測器運(yùn)行在這個(gè)擴(kuò)展的特征映射之上,這樣它就可以訪問細(xì)粒度的特征。這將帶來1%的性能提升。
多尺度的訓(xùn)練原始的YOLO使用448 × 448的輸入分辨率。添加錨框后,我們將分辨率更改為416×416。然而,由于我們的模型只使用卷積層和池化層,所以它可以動(dòng)態(tài)調(diào)整大小。我們希望YOLOv2對不同大小的圖像具有魯棒性,因此我們將其訓(xùn)練到模型中。
我們每隔幾個(gè)迭代就改變網(wǎng)絡(luò),而不是固定輸入圖像的大小。每10批,我們的網(wǎng)絡(luò)會(huì)隨機(jī)選擇一個(gè)新的圖像尺寸。由于我們的模型的降采樣倍率為32,因此我們從以下32的倍數(shù)中提取尺寸:{320,352,…608}。因此最小的選項(xiàng)是320 × 320,最大的選項(xiàng)是608 × 608。我們將網(wǎng)絡(luò)調(diào)整到那個(gè)尺寸并繼續(xù)訓(xùn)練。
這種機(jī)制迫使神經(jīng)網(wǎng)絡(luò)學(xué)會(huì)在各種輸入維度上進(jìn)行良好的預(yù)測。這意味著相同的網(wǎng)絡(luò)可以預(yù)測不同分辨率的檢測結(jié)果。該網(wǎng)絡(luò)在較小的尺寸下運(yùn)行速度更快,因此YOLOv2在速度和準(zhǔn)確性之間提供了一個(gè)簡單的平衡。
在低分辨率下,YOLOv2作為一種便宜、相當(dāng)精確的檢測器運(yùn)行。在288 × 288分辨率下,它以超過90幀/秒的速度運(yùn)行,并且mAP幾乎和Fast R-CNN一樣好。這使得它非常適合較小的gpu,高幀率視頻或多個(gè)視頻流。
在高分辨率下,YOLOv2是一款最先進(jìn)的檢測器,在VOC 2007上具有78.6 mAP,同時(shí)仍然可以以超過實(shí)時(shí)的速度運(yùn)行。在表3和圖4中可以看到Y(jié)OLOV2和其他框架在VOC 2007上的對比。
進(jìn)一步的實(shí)驗(yàn)我們在VOC 2012上訓(xùn)練了YOLOv2。表4顯示了YOLOv2與其他先進(jìn)檢測系統(tǒng)的性能比較。YOLOv2在運(yùn)行速度遠(yuǎn)快于競爭對手的情況下達(dá)到73.4 mAP。我們還在COCO上進(jìn)行了訓(xùn)練,并在表5中與其他方法進(jìn)行了比較。在VOC度量(IOU =0.5)下, YOLOv2獲得44.0 mAP,與SSD和Faster R-CNN相當(dāng)。
3.更快
我們希望檢測準(zhǔn)確,但也希望快速。大多數(shù)檢測應(yīng)用,如機(jī)器人或自動(dòng)駕駛汽車,都依賴于低延遲預(yù)測。為了使得性能最佳我們,我們一開始就設(shè)計(jì)的YOLOV2速度很快。
大多數(shù)檢測框架都依賴于VGG-16作為基本特征提取器。VGG-16是一個(gè)功能強(qiáng)大,準(zhǔn)確的分類網(wǎng)絡(luò),但它有些過于復(fù)雜。VGG-16的卷積層需要306.9億次浮點(diǎn)運(yùn)算才能通過一張224 × 224分辨率的圖像。
YOLO框架使用基于Googlenet架構(gòu)的自定義網(wǎng)絡(luò)。這個(gè)網(wǎng)絡(luò)比VGG-16快,只用了85.2億次操作。然而,它的精度略低于VGG-16. 在單次裁剪和224 × 224分辨率條件下, YOLO的自定義模型在ImageNet上取得了88.0%的top-5準(zhǔn)確率,而VGG-16為90.0%。
Darknet-19我們提出了一個(gè)新的分類模型作為YOLOv2的基礎(chǔ)。我們的模型建立在之前的網(wǎng)絡(luò)設(shè)計(jì)工作以及該領(lǐng)域的共同知識(shí)之上。類似于我們常用的VGG模型我們主要使用了3 × 3的卷積核,并在每個(gè)池化步驟后增加一倍的通道數(shù)量。參考這項(xiàng)工作,網(wǎng)絡(luò)上的后續(xù)網(wǎng)絡(luò)(NIN),我們使用全局平均池化來進(jìn)行預(yù)測,以及1 × 1卷積來壓縮3 × 3個(gè)卷積之間的特征表示。我們使用批量歸一化來穩(wěn)定訓(xùn)練,加速收斂,并正則化模型。
我們的最終模型,稱為Darknet-19,有19個(gè)卷積層和5個(gè)maxpooling層。完整的描述見表6所示。Darknet-19只需要55.8億次操作來處理圖像,卻達(dá)到了72.9%的頂級(jí)精度,在ImageNet上準(zhǔn)確率為91.2%。
分類訓(xùn)練我們在標(biāo)準(zhǔn)的ImageNet 1000類分類數(shù)據(jù)集上訓(xùn)練網(wǎng)絡(luò),共160個(gè)epoch,使用隨機(jī)梯度下降,初始學(xué)習(xí)率為0.1,學(xué)習(xí)率衰減策略采用多項(xiàng)式速率衰減,參數(shù)設(shè)置為冪4、權(quán)重衰減參數(shù)為0.0005和動(dòng)量設(shè)置為0.9并使用Darknet神經(jīng)網(wǎng)絡(luò)框架。在訓(xùn)練過程中,我們使用標(biāo)準(zhǔn)的數(shù)據(jù)增強(qiáng)技巧,包括隨機(jī)裁剪、旋轉(zhuǎn)、色調(diào)、飽和度和曝光位移。
如上所述,在對224 × 224的圖像進(jìn)行初始訓(xùn)練后,我們將網(wǎng)絡(luò)調(diào)整為更大的尺寸,448。對于這種微調(diào),我們使用上述參數(shù)進(jìn)行訓(xùn)練,但只有10個(gè)epoch,并且以
1
0
?
3
10^{?3}
10?3的學(xué)習(xí)率開始。在這個(gè)更高的分辨率下,我們的網(wǎng)絡(luò)達(dá)到了76.5%的top-1精度和93.3%的top-5精度。
檢測訓(xùn)練為了檢測,我們修改了這個(gè)網(wǎng)絡(luò),刪除了最后一個(gè)卷積層,增加了三個(gè)3 × 3的卷積層,每個(gè)卷積層有1024個(gè)濾波器,最后一個(gè)1 × 1的卷積層檢測所需的輸出數(shù)量。對于VOC,我們預(yù)測5個(gè)框,每個(gè)框有5個(gè)坐標(biāo),20個(gè)類別,所以需要125個(gè)過濾器。我們還從最后的3 × 3 × 512層添加了一個(gè)passthrough層到倒數(shù)第二個(gè)卷積層,以便我們的模型可以使用細(xì)粒度特征。
我們以
1
0
?
3
10^{?3}
10?3的起始學(xué)習(xí)率訓(xùn)練網(wǎng)絡(luò)160次,在第60次和第90次時(shí)學(xué)習(xí)率除以10。我們使用0.0005的權(quán)重衰減和0.9的動(dòng)量。使用與YOLO和SSD類似的數(shù)據(jù)增強(qiáng)方法,包括隨機(jī)裁剪、顏色移動(dòng)等。在COCO和VOC數(shù)據(jù)集上,采用相同的訓(xùn)練策略。
4.更強(qiáng)
我們提出了一種分類和檢測數(shù)據(jù)聯(lián)合訓(xùn)練的機(jī)制。該方法使用有檢測標(biāo)簽的圖像來學(xué)習(xí)特定的檢測信息,如邊界框的坐標(biāo)預(yù)測和是否有目標(biāo),以及如何對常見物體進(jìn)行分類。它使用僅帶有分類標(biāo)簽的圖像來擴(kuò)展它可以檢測的類別的數(shù)量。
在訓(xùn)練過程中,我們混合了來自檢測和分類數(shù)據(jù)集的圖像。當(dāng)我們的網(wǎng)絡(luò)看到有檢測標(biāo)簽的圖像時(shí),我們可以基于完整的YOLOv2損失函數(shù)進(jìn)行反向傳播。當(dāng)它看到分類圖像時(shí),我們只在架構(gòu)特定的分類部分進(jìn)行損失的反向傳播。
這種方法存在一些挑戰(zhàn)。檢測數(shù)據(jù)集只有常見的對象和一般的標(biāo)簽,比如“狗”或“船”。而分類數(shù)據(jù)集具有更廣泛和更細(xì)節(jié)的標(biāo)簽。ImageNet上有一百多個(gè)品種的狗,包括“諾??斯!?、“約克郡?!焙汀柏惖铝诸D?!?。如果我們想在兩個(gè)數(shù)據(jù)集上進(jìn)行訓(xùn)練,我們需要一個(gè)連貫的方法來合并這些標(biāo)簽。
大多數(shù)分類方法在所有可能的類別中使用softmax層來計(jì)算最終的概率分布。使用softmax假定了類是互斥的。這就給組合數(shù)據(jù)集帶來了問題,比如,你不希望使用這個(gè)模型組合ImageNet和COCO,因?yàn)椤癗orfolk terrier”和“dog”類不是互斥的。
相反,我們可以使用多標(biāo)簽?zāi)P蛠斫M合數(shù)據(jù)集,而不假設(shè)互斥。這種方法忽略了我們所知道的關(guān)于數(shù)據(jù)的所有結(jié)構(gòu),例如,所有的COCO類都是互斥的。
層次分類 ImageNet標(biāo)簽是從WordNet中提取的,WordNet是一個(gè)語言數(shù)據(jù)庫,用于構(gòu)建概念以及它們之間的關(guān)系。在WordNet中,“諾??斯!焙汀癥orkshire terrier”都是“terrier”的下位詞,“terrier”是“獵犬”的一種,而“獵犬”是“狗”的一種,“狗”是“犬科動(dòng)物”的一種,等等。大多數(shù)分類方法都假設(shè)標(biāo)簽的結(jié)構(gòu)是扁平的,但是對于組合數(shù)據(jù)集來說,層次正是我們所需要的。
WordNet的結(jié)構(gòu)是一個(gè)有向圖,而不是樹,因?yàn)檎Z言是復(fù)雜的。例如,“dog”既是“canine”的一種,也是“domestic animal”的一種,兩者都是WordNet中的同義詞集。我們沒有使用完整的圖結(jié)構(gòu),而是利用ImageNet中的概念構(gòu)建層次樹來簡化問題。
為了構(gòu)建這棵樹,我們檢查ImageNet中的視覺名詞,并查看它們通過WordNet圖到根節(jié)點(diǎn)的路徑,在本例中是“物理對象”。許多語法集在圖中只有一條路徑,所以首先我們將所有這些路徑添加到樹中。然后我們迭代地檢查我們剩下的概念,并添加盡可能少地使樹增長的路徑。如果一個(gè)概念有兩條到根結(jié)點(diǎn)的路徑其中一條會(huì)給樹增加三條邊而另一條只會(huì)增加一條邊,我們會(huì)選擇更短的路徑。
最終的結(jié)果是WordTree,一個(gè)視覺概念的分層模型。為了使用WordTree進(jìn)行分類,我們在每個(gè)節(jié)點(diǎn)上預(yù)測給定該同義詞集的每個(gè)下義詞的概率的條件概率。例如,在“terrier”節(jié)點(diǎn),我們預(yù)測:
P
r
(
N
o
r
f
o
l
k
t
e
r
r
i
e
r
∣
t
e
r
r
i
e
r
)
P_r(Norfolk terrier|terrier)
Pr?(Norfolkterrier∣terrier)
P
r
(
Y
o
r
k
s
h
i
r
e
t
e
r
r
i
e
r
∣
t
e
r
r
i
e
r
)
P_r(Yorkshire terrier|terrier)
Pr?(Yorkshireterrier∣terrier)
P
r
(
B
e
d
l
i
n
g
t
o
n
t
e
r
r
i
e
r
∣
t
e
r
r
i
e
r
)
P_r(Bedlington terrier|terrier)
Pr?(Bedlingtonterrier∣terrier)
…
如果我們想計(jì)算一個(gè)特定節(jié)點(diǎn)的絕對概率,我們只需沿著樹的路徑到達(dá)根節(jié)點(diǎn),然后乘以條件概率。因此,如果我們想知道一張圖片是否是諾??斯?,我們計(jì)算:
P
r
(
N
o
r
f
o
l
k
t
e
r
r
i
e
r
)
=
P
r
(
N
o
r
f
o
l
k
t
e
r
r
i
e
r
∣
t
e
r
r
i
e
r
)
?
P
r
(
t
e
r
r
i
e
r
∣
h
u
n
t
i
n
g
d
o
g
)
.
.
.
?
P
r
(
m
a
m
m
a
l
∣
a
n
i
m
a
l
)
?
P
r
(
a
n
i
m
a
l
∣
p
h
y
s
i
c
a
l
o
b
j
e
c
t
)
P_r(Norfolk terrier)=P_r(Norfolk terrier|terrier) *P_r(terrier|hunting dog) ... *P_r(mammal|animal) *P_r(animal|physical object)
Pr?(Norfolkterrier)=Pr?(Norfolkterrier∣terrier)?Pr?(terrier∣huntingdog)...?Pr?(mammal∣animal)?Pr?(animal∣physicalobject)
為了便于分類,我們假設(shè)圖像包含一個(gè)對象,即
P
r
(
p
h
y
s
i
c
a
l
o
b
j
e
c
t
)
=
1
P_r(physical object)= 1
Pr?(physicalobject)=1。
為了驗(yàn)證這種方法,我們在使用1000類的ImageNet構(gòu)建的WordTree上訓(xùn)練Darknet-19模型。為了構(gòu)建WordTree1k我們加入所有中間節(jié)點(diǎn),將標(biāo)簽空間從1000擴(kuò)展到1369。在訓(xùn)練期間,我們將真實(shí)標(biāo)簽傳播到樹中,以便如果圖像被標(biāo)記為“諾福克?!?,它也被標(biāo)記為“狗”和“哺乳動(dòng)物”等。為了計(jì)算條件概率,我們的模型預(yù)測了一個(gè)包含1369個(gè)值的向量,我們計(jì)算了作為同一概念的下位詞的所有同義詞集合的softmax,參見圖5。
使用與之前相同的訓(xùn)練參數(shù),我們的分層Darknet-19達(dá)到了71.9%的top-1準(zhǔn)確率和90.4%的top-5準(zhǔn)確率。盡管增加了369個(gè)額外的概念,并讓我們的網(wǎng)絡(luò)預(yù)測樹形結(jié)構(gòu),但我們的準(zhǔn)確性只會(huì)略微下降。以這種方式執(zhí)行分類也有一些好處。對于新的或未知的對象類別,性能會(huì)優(yōu)雅地下降。例如,如果網(wǎng)絡(luò)看到一張狗的照片,但不確定它是什么類型的狗,它仍然會(huì)以高置信度預(yù)測“狗”,但在下位詞中的置信度較低。
這個(gè)方法也適用于檢測。現(xiàn)在,我們不再假設(shè)每個(gè)圖像都有一個(gè)對象,而是使用YOLOv2的目標(biāo)預(yù)測器給出
P
r
(
p
h
y
s
i
c
a
l
o
b
j
e
c
t
)
P_r(physical object)
Pr?(physicalobject)的值.檢測器預(yù)測邊界框和概率樹。我們向下遍歷樹,在每個(gè)分叉處取最高置信度的路徑,直到到達(dá)某個(gè)閾值,然后我們預(yù)測該對象類。
利用WordTree實(shí)現(xiàn)數(shù)據(jù)集的組合我們可以使用WordTree以一種合理的方式將多個(gè)數(shù)據(jù)集組合在一起。我們只需將數(shù)據(jù)集中的類別映射到樹中的同義詞集。圖6顯示了一個(gè)使用WordTree來組合ImageNet和COCO標(biāo)簽的示例。WordNet非常多樣化,因此我們可以將此技術(shù)用于大多數(shù)數(shù)據(jù)集。
聯(lián)合分類與檢測現(xiàn)在我們可以使用WordTree組合數(shù)據(jù)集,在分類和檢測上訓(xùn)練我們的聯(lián)合模型。我們想要訓(xùn)練一個(gè)超大規(guī)模的檢測器,所以我們使用COCO檢測數(shù)據(jù)集和完整的ImageNet的前9000個(gè)類創(chuàng)建了我們的組合數(shù)據(jù)集。我們還需要評(píng)估我們的方法,所以我們添加了ImageNet檢測挑戰(zhàn)中尚未包含的任何類。此數(shù)據(jù)集對應(yīng)的WordTree有9418類。ImageNet是一個(gè)大得多的數(shù)據(jù)集,所以我們通過對COCO進(jìn)行過采樣來平衡數(shù)據(jù)集,這樣ImageNet只大了4倍。
使用這個(gè)數(shù)據(jù)集我們訓(xùn)練YOLO9000。我們用基礎(chǔ)的YOLOv2架構(gòu),但只有3個(gè)先驗(yàn)框,而不是5個(gè),以限制輸出大小。當(dāng)網(wǎng)絡(luò)看到檢測圖像時(shí),損失將正常的反向傳播。對于分類損失,我們只反向傳播標(biāo)簽對應(yīng)級(jí)別或更高級(jí)別的損失。例如,如果標(biāo)簽是“狗”,我們會(huì)將任何錯(cuò)誤分配給樹中更低的預(yù)測,“德語牧羊犬"和"金毛獵犬"因?yàn)槲覀儧]有這方面的信息。
當(dāng)它看到分類圖像時(shí),我們只反向傳播分類損失。要做到這一點(diǎn),我們只需找到預(yù)測該類概率最高的邊界框,然后計(jì)算其預(yù)測樹上的損失。我們還假設(shè)預(yù)測框與真值標(biāo)簽重疊至少0.3個(gè)IOU,并基于此假設(shè)反向傳播目標(biāo)損失。
通過這種聯(lián)合訓(xùn)練,YOLO9000學(xué)習(xí)使用COCO中的檢測數(shù)據(jù)在圖像中查找對象,并使用來自ImageNet的數(shù)據(jù)學(xué)習(xí)對各種各樣的這些對象進(jìn)行分類。
我們在ImageNet檢測任務(wù)上評(píng)估了YOLO9000。ImageNet的檢測任務(wù)與COCO共享44個(gè)對象類別,這意味著YOLO9000只看到了大多數(shù)測試圖像的分類數(shù)據(jù),而沒有看到檢測數(shù)據(jù)。YOLO9000在它從未見過任何標(biāo)記檢測數(shù)據(jù)的156個(gè)不相交對象類上獲得19.7 mAP和16.0 mAP。這個(gè)mAP高于DPM取得的結(jié)果,但YOLO9000是在只有部分監(jiān)督的不同數(shù)據(jù)集上訓(xùn)練的。它還可以實(shí)時(shí)檢測9000個(gè)其他對象類別。
當(dāng)我們分析YOLO9000在ImageNet上的表現(xiàn)時(shí),我們看到它能很好地學(xué)習(xí)新的動(dòng)物物種,但在學(xué)習(xí)服裝和設(shè)備等類別時(shí)卻遇到了困難。新的動(dòng)物更容易學(xué)習(xí),因?yàn)閷ο笮灶A(yù)測很好地從COCO中的動(dòng)物中泛化。相反,COCO沒有任何類型的服裝的邊界框標(biāo)簽,只有人,所以YOLO9000努力建?!疤栫R”或“泳褲”等類別。文章來源:http://www.zghlxwxcb.cn/news/detail-784017.html
5.總結(jié)
我們引入了YOLOv2和YOLO9000實(shí)時(shí)檢測系統(tǒng)。其中YOLOv2是最先進(jìn)的,比其他檢測系統(tǒng)在各種檢測數(shù)據(jù)集上都更快。此外,它可以在各種圖像尺寸下運(yùn)行,以提供速度和精度之間的平滑權(quán)衡。
YOLO9000是一個(gè)實(shí)時(shí)檢測框架,通過對檢測和分類的共同優(yōu)化,可以檢測9000多種目標(biāo)類別。我們使用WordTree結(jié)合各種來源的數(shù)據(jù)和我們的聯(lián)合優(yōu)化技術(shù)在ImageNet和COCO上同時(shí)訓(xùn)練。YOLO9000是縮小檢測和分類之間數(shù)據(jù)集大小差距的有力一步。
我們的許多技術(shù)推廣到目標(biāo)檢測之外。我們的ImageNet的WordTree表示為圖像分類提供了更豐富、更詳細(xì)的輸出空間。使用層次分類的數(shù)據(jù)集組合在分類和分割領(lǐng)域是有用的。像多尺度訓(xùn)練這樣的訓(xùn)練技術(shù)可以在各種視覺任務(wù)中提供好處。
對于未來的工作,我們希望使用類似的技術(shù)進(jìn)行弱監(jiān)督圖像分割。我們還計(jì)劃使用更強(qiáng)大的匹配策略來改進(jìn)檢測結(jié)果,以便在訓(xùn)練期間為分類數(shù)據(jù)分配弱標(biāo)簽。計(jì)算機(jī)視覺擁有大量的標(biāo)記數(shù)據(jù)。我們將繼續(xù)尋找將不同來源和數(shù)據(jù)結(jié)構(gòu)結(jié)合在一起的方法,以構(gòu)建更強(qiáng)大的視覺世界模型。文章來源地址http://www.zghlxwxcb.cn/news/detail-784017.html
到了這里,關(guān)于[論文閱讀]YOLO9000:Better,F(xiàn)aster,Stronger的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!