(轉(zhuǎn)) [論文學(xué)習(xí)]YOLO9000: Better,Faster,Stronger

摘要
提出YOLO v2 :代表著目前業(yè)界最先進(jìn)物體檢測(cè)的水平,它的速度要快過(guò)其他檢測(cè)系統(tǒng)(FasterR-CNN,ResNet,SSD),使用者可以在它的速度與精確度之間進(jìn)行權(quán)衡。
提出YOLO9000 :這一網(wǎng)絡(luò)結(jié)構(gòu)可以實(shí)時(shí)地檢測(cè)超過(guò)9000種物體分類,這歸功于它使用了WordTree,通過(guò)WordTree來(lái)混合檢測(cè)數(shù)據(jù)集與識(shí)別數(shù)據(jù)集之中的數(shù)據(jù)。
提出了一種新的聯(lián)合訓(xùn)練算法( Joint Training Algorithm ),使用這種聯(lián)合訓(xùn)練技術(shù)同時(shí)在ImageNet和COCO數(shù)據(jù)集上進(jìn)行訓(xùn)練。YOLO9000進(jìn)一步縮小了監(jiān)測(cè)數(shù)據(jù)集與識(shí)別數(shù)據(jù)集之間的代溝。

簡(jiǎn)介
目前的檢測(cè)數(shù)據(jù)集(Detection Datasets)有很多限制,分類標(biāo)簽的信息太少,圖片的數(shù)量小于分類數(shù)據(jù)集(Classi?cation Datasets),而且檢測(cè)數(shù)據(jù)集的成本太高,使其無(wú)法當(dāng)作分類數(shù)據(jù)集進(jìn)行使用。而現(xiàn)在的分類數(shù)據(jù)集卻有著大量的圖片和十分豐富分類信息。 文章提出了一種新的訓(xùn)練方法–聯(lián)合訓(xùn)練算法。這種算法可以把這兩種的數(shù)據(jù)集混合到一起。使用一種分層的觀點(diǎn)對(duì)物體進(jìn)行分類,用巨量的分類數(shù)據(jù)集數(shù)據(jù)來(lái)擴(kuò)充檢測(cè)數(shù)據(jù)集,從而把兩種不同的數(shù)據(jù)集混合起來(lái)。 聯(lián)合訓(xùn)練算法的基本思路就是:同時(shí)在檢測(cè)數(shù)據(jù)集和分類數(shù)據(jù)集上訓(xùn)練物體檢測(cè)器(Object Detectors ),用監(jiān)測(cè)數(shù)據(jù)集的數(shù)據(jù)學(xué)習(xí)物體的準(zhǔn)確位置,用分類數(shù)據(jù)集的數(shù)據(jù)來(lái)增加分類的類別量、提升健壯性。 YOLO9000就是使用聯(lián)合訓(xùn)練算法訓(xùn)練出來(lái)的,他擁有9000類的分類信息,這些分類信息學(xué)習(xí)自ImageNet分類數(shù)據(jù)集,而物體位置檢測(cè)則學(xué)習(xí)自COCO檢測(cè)數(shù)據(jù)集。
All of our code and pre-trained models are available online at http://pjreddie.com/yolo9000/
BETTER
YOLO一代有很多缺點(diǎn),作者希望改進(jìn)的方向是:改善recall,提升定位的準(zhǔn)確度,同時(shí)保持分類的準(zhǔn)確度。 目前計(jì)算機(jī)視覺(jué)的趨勢(shì)是更大更深的網(wǎng)絡(luò),更好的性能表現(xiàn)通常依賴于訓(xùn)練更大的網(wǎng)絡(luò)或者把多種model綜合到一起。但是YOLO v2則著力于簡(jiǎn)化網(wǎng)絡(luò)。具體的改進(jìn)見(jiàn)下表:


Batch Normalization
使用Batch Normalization對(duì)網(wǎng)絡(luò)進(jìn)行優(yōu)化,讓網(wǎng)絡(luò)提高了收斂性,同時(shí)還消除了對(duì)其他形式的正則化(regularization)的依賴。通過(guò)對(duì)YOLO的每一個(gè)卷積層增加Batch Normalization,最終使得mAP提高了2%,同時(shí)還使model正則化。使用Batch Normalization可以從model中去掉Dropout,而不會(huì)產(chǎn)生過(guò)擬合。

High resolution classifier
目前業(yè)界標(biāo)準(zhǔn)的檢測(cè)方法,都要先把分類器(classi?er)放在ImageNet上進(jìn)行預(yù)訓(xùn)練。從Alexnet開(kāi)始,大多數(shù)的分類器都運(yùn)行在小于256256的圖片上。而現(xiàn)在YOLO從224224增加到了448448,這就意味著網(wǎng)絡(luò)需要適應(yīng)新的輸入分辨率。 為了適應(yīng)新的分辨率,YOLO v2的分類網(wǎng)絡(luò)以448448的分辨率先在ImageNet上進(jìn)行Fine Tune,F(xiàn)ine Tune10個(gè)epochs,讓網(wǎng)絡(luò)有時(shí)間調(diào)整他的濾波器(filters),好讓其能更好的運(yùn)行在新分辨率上,還需要調(diào)優(yōu)用于檢測(cè)的Resulting Network。最終通過(guò)使用高分辨率,mAP提升了4%。

Convolution with anchor boxes
YOLO一代包含有全連接層,從而能直接預(yù)測(cè)Bounding Boxes的坐標(biāo)值。 Faster R-CNN的方法只用卷積層與Region Proposal Network來(lái)預(yù)測(cè)Anchor Box的偏移值與置信度,而不是直接預(yù)測(cè)坐標(biāo)值。作者發(fā)現(xiàn)通過(guò)預(yù)測(cè)偏移量而不是坐標(biāo)值能夠簡(jiǎn)化問(wèn)題,讓神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)起來(lái)更容易。 所以最終YOLO去掉了全連接層,使用Anchor Boxes來(lái)預(yù)測(cè) Bounding Boxes。作者去掉了網(wǎng)絡(luò)中一個(gè)Pooling層,這讓卷積層的輸出能有更高的分辨率。收縮網(wǎng)絡(luò)讓其運(yùn)行在416416而不是448448。由于圖片中的物體都傾向于出現(xiàn)在圖片的中心位置,特別是那種比較大的物體,所以有一個(gè)單獨(dú)位于物體中心的位置用于預(yù)測(cè)這些物體。YOLO的卷積層采用32這個(gè)值來(lái)下采樣圖片,所以通過(guò)選擇416416用作輸入尺寸最終能輸出一個(gè)1313的Feature Map。 使用Anchor Box會(huì)讓精確度稍微下降,但用了它能讓YOLO能預(yù)測(cè)出大于一千個(gè)框,同時(shí)recall達(dá)到88%,mAP達(dá)到69.2%。

Dimension clusters
之前Anchor Box的尺寸是手動(dòng)選擇的,所以尺寸還有優(yōu)化的余地。 為了優(yōu)化,在訓(xùn)練集(training set)Bounding Boxes上跑了一下k-means聚類,來(lái)找到一個(gè)比較好的值。 如果我們用標(biāo)準(zhǔn)的歐式距離的k-means,尺寸大的框比小框產(chǎn)生更多的錯(cuò)誤。因?yàn)槲覀兊哪康氖翘岣逫OU分?jǐn)?shù),這依賴于Box的大小,所以距離度量的使用:


通過(guò)分析實(shí)驗(yàn)結(jié)果(Figure 2),左圖:在model復(fù)雜性與high recall之間權(quán)衡之后,選擇聚類分類數(shù)K=5。右圖:是聚類的中心,大多數(shù)是高瘦的Box。 Table1是說(shuō)明用K-means選擇Anchor Boxes時(shí),當(dāng)Cluster IOU選擇值為5時(shí),AVG IOU的值是61,這個(gè)值要比不用聚類的方法的60.9要高。選擇值為9的時(shí)候,AVG IOU更有顯著提高??傊褪钦f(shuō)明用聚類的方法是有效果的。


Direct location prediction
用Anchor Box的方法,會(huì)讓model變得不穩(wěn)定,尤其是在最開(kāi)始的幾次迭代的時(shí)候。大多數(shù)不穩(wěn)定因素產(chǎn)生自預(yù)測(cè)Box的(x,y)位置的時(shí)候。按照之前YOLO的方法,網(wǎng)絡(luò)不會(huì)預(yù)測(cè)偏移量,而是根據(jù)YOLO中的網(wǎng)格單元的位置來(lái)預(yù)測(cè)坐標(biāo),這就讓Ground Truth的值介于0到1之間。而為了讓網(wǎng)絡(luò)的結(jié)果能落在這一范圍內(nèi),網(wǎng)絡(luò)使用一個(gè) Logistic Activation來(lái)對(duì)于網(wǎng)絡(luò)預(yù)測(cè)結(jié)果進(jìn)行限制,讓結(jié)果介于0到1之間。 網(wǎng)絡(luò)在每一個(gè)網(wǎng)格單元中預(yù)測(cè)出5個(gè)Bounding Boxes,每個(gè)Bounding Boxes有五個(gè)坐標(biāo)值tx,ty,tw,th,t0,他們的關(guān)系見(jiàn)下圖(Figure3)。假設(shè)一個(gè)網(wǎng)格單元對(duì)于圖片左上角的偏移量是cx,cy,Bounding Boxes Prior的寬度和高度是pw,ph,那么預(yù)測(cè)的結(jié)果見(jiàn)下圖右面的公式:

因?yàn)槭褂昧讼拗谱寯?shù)值變得參數(shù)化,也讓網(wǎng)絡(luò)更容易學(xué)習(xí)、更穩(wěn)定。 Dimension clusters和Direct location prediction,improves YOLO by almost 5% over the version with anchor boxes.

Fine-Grained Features
YOLO修改后的Feature Map大小為1313,這個(gè)尺寸對(duì)檢測(cè)圖片中尺寸大物體來(lái)說(shuō)足夠了,同時(shí)使用這種細(xì)粒度的特征對(duì)定位小物體的位置可能也有好處。Faster F-CNN、SSD都使用不同尺寸的Feature Map來(lái)取得不同范圍的分辨率,而YOLO采取了不同的方法,YOLO加上了一個(gè)Passthrough Layer來(lái)取得之前的某個(gè)2626分辨率的層的特征。這個(gè)Passthrough layer能夠把高分辨率特征與低分辨率特征聯(lián)系在一起,聯(lián)系起來(lái)的方法是把相鄰的特征堆積在不同的Channel之中,這一方法類似與Resnet的Identity Mapping,從而把2626512變成13132048。YOLO中的檢測(cè)器位于擴(kuò)展后(expanded )的Feature Map的上方,所以他能取得細(xì)粒度的特征信息,這提升了YOLO 1%的性能。

Multi-ScaleTraining
作者希望YOLO v2能健壯的運(yùn)行于不同尺寸的圖片之上,所以把這一想法用于訓(xùn)練model中。 區(qū)別于之前的補(bǔ)全圖片的尺寸的方法,YOLO v2每迭代幾次都會(huì)改變網(wǎng)絡(luò)參數(shù)。每10個(gè)Batch,網(wǎng)絡(luò)會(huì)隨機(jī)地選擇一個(gè)新的圖片尺寸,由于使用了下采樣參數(shù)是32,所以不同的尺寸大小也選擇為32的倍數(shù){320,352…..608},最小320320,最大608608,網(wǎng)絡(luò)會(huì)自動(dòng)改變尺寸,并繼續(xù)訓(xùn)練的過(guò)程。 這一政策讓網(wǎng)絡(luò)在不同的輸入尺寸上都能達(dá)到一個(gè)很好的預(yù)測(cè)效果,同一網(wǎng)絡(luò)能在不同分辨率上進(jìn)行檢測(cè)。當(dāng)輸入圖片尺寸比較小的時(shí)候跑的比較快,輸入圖片尺寸比較大的時(shí)候精度高,所以你可以在YOLO v2的速度和精度上進(jìn)行權(quán)衡。 Figure4,Table 3:在voc2007上的速度與精度

Further Experiments

Faster
YOLO使用的是Googlelent[架構(gòu)],比VGG-16快,YOLO完成一次前向過(guò)程只用8.52 billion 運(yùn)算,而VGG-16要30.69billion,但是YOLO精度稍低于VGG-16。
Draknet19
YOLO v2基于一個(gè)新的分類model,有點(diǎn)類似與VGG。YOLO v2使用3*3filter,每次Pooling之后都增加一倍Channels的數(shù)量。YOLO v2使用全局平均Pooling,使用Batch Normilazation來(lái)讓訓(xùn)練更穩(wěn)定,加速收斂,使model規(guī)范化。 最終的model–Darknet19,有19個(gè)卷積層和5個(gè)maxpooling層,處理一張圖片只需要5.58 billion次運(yùn)算,在ImageNet上達(dá)到72.9%top-1精確度,91.2%top-5精確度。

Training for classi?cation
網(wǎng)絡(luò)訓(xùn)練在 ImageNet 1000類分類數(shù)據(jù)集,訓(xùn)練了160epochs,使用隨機(jī)梯度下降,初始學(xué)習(xí)率為0.1, polynomial rate decay with a power of 4, weight decay of 0.0005 and momentum of 0.9 。訓(xùn)練期間使用標(biāo)準(zhǔn)的數(shù)據(jù)擴(kuò)大方法:隨機(jī)裁剪、旋轉(zhuǎn)、變換顏色(hue)、變換飽和度(saturation), 變換曝光度(exposure shifts)。 在訓(xùn)練時(shí),把整個(gè)網(wǎng)絡(luò)在更大的448*448分辨率上Fine Turnning 10個(gè) epoches,初始學(xué)習(xí)率設(shè)置為0.001,這種網(wǎng)絡(luò)達(dá)到達(dá)到76.5%top-1精確度,93.3%top-5精確度。

Training for detection
網(wǎng)絡(luò)去掉了最后一個(gè)卷積層,而加上了三個(gè)33卷積層,每個(gè)卷積層有1024個(gè)Filters,每個(gè)卷積層緊接著一個(gè)11卷積層, with the number of outputs we need for detection。 對(duì)于VOC數(shù)據(jù),網(wǎng)絡(luò)預(yù)測(cè)出每個(gè)網(wǎng)格單元預(yù)測(cè)五個(gè)Bounding Boxes,每個(gè)Bounding Boxes預(yù)測(cè)5個(gè)坐標(biāo)和20類,所以一共125個(gè)Filters,增加了Passthough層來(lái)獲取前面層的細(xì)粒度信息,網(wǎng)絡(luò)訓(xùn)練了160epoches,初始學(xué)習(xí)率0.001,dividing it by 10 at 60 and 90 epochs,a weight decay of 0.0005 and momentum of 0.9,數(shù)據(jù)擴(kuò)大方法相同,對(duì)COCO與VOC數(shù)據(jù)集的訓(xùn)練對(duì)策相同。

Stronger
在訓(xùn)練的過(guò)程中,當(dāng)網(wǎng)絡(luò)遇到一個(gè)來(lái)自檢測(cè)數(shù)據(jù)集的圖片與標(biāo)記信息,那么就把這些數(shù)據(jù)用完整的YOLO v2 loss功能反向傳播這個(gè)圖片。當(dāng)網(wǎng)絡(luò)遇到一個(gè)來(lái)自分類數(shù)據(jù)集的圖片和分類標(biāo)記信息,只用整個(gè)結(jié)構(gòu)中分類部分的loss功能反向傳播這個(gè)圖片。 但是檢測(cè)數(shù)據(jù)集只有粗粒度的標(biāo)記信息,像“貓“、“ 狗”之類,而分類數(shù)據(jù)集的標(biāo)簽信息則更細(xì)粒度,更豐富。比如狗這一類就包括”哈士奇“”牛頭梗“”金毛狗“等等。所以如果想同時(shí)在監(jiān)測(cè)數(shù)據(jù)集與分類數(shù)據(jù)集上進(jìn)行訓(xùn)練,那么就要用一種一致性的方法融合這些標(biāo)簽信息。 再者,用于分類的方法,大多是用softmax layer方法,softmax意味著分類的類別之間要互相獨(dú)立的。而盲目地混合數(shù)據(jù)集訓(xùn)練,就會(huì)出現(xiàn)比如:檢測(cè)數(shù)據(jù)集的分類信息中”狗“這一分類,在分類數(shù)據(jù)集合中,就會(huì)有的不同種類的狗”哈士奇“”牛頭?!啊苯鹈斑@些分類,這兩種數(shù)據(jù)集之間的分類信息不相互獨(dú)立。所以使用一種多標(biāo)簽的model來(lái)混合數(shù)據(jù)集,假設(shè)一個(gè)圖片可以有多個(gè)分類信息,并假定分類信息必須是相互獨(dú)立的規(guī)則可以被忽略。
Hierarchical classification
WordNet的結(jié)構(gòu)是一個(gè)直接圖表(directed graph),而不是樹(shù)型結(jié)構(gòu)。因?yàn)檎Z(yǔ)言是復(fù)雜的,狗這個(gè)詞既屬于‘犬科’又屬于‘家畜’兩類,而‘犬科’和‘家畜’兩類在wordnet中則是同義詞,所以不能用樹(shù)形結(jié)構(gòu)。 作者希望根據(jù)ImageNet中包含的概念來(lái)建立一個(gè)分層樹(shù),為了建立這個(gè)分層樹(shù),首先檢查ImagenNet中出現(xiàn)的名詞,再在WordNet中找到這些名詞,再找到這些名詞到達(dá)他們根節(jié)點(diǎn)的路徑(在這里設(shè)為所有的根節(jié)點(diǎn)為實(shí)體對(duì)象(physical object))。在WordNet中,大多數(shù)同義詞只有一個(gè)路徑,所以首先把這條路徑中的詞全部都加到分層樹(shù)中。接著迭代地檢查剩下的名詞,并盡可能少的把他們添加到分層樹(shù)上,添加的原則是取最短路徑加入到樹(shù)中。 為了計(jì)算某一結(jié)點(diǎn)的絕對(duì)概率,只需要對(duì)這一結(jié)點(diǎn)到根節(jié)點(diǎn)的整條路徑的所有概率進(jìn)行相乘。所以比如你想知道一個(gè)圖片是否是Norfolk terrier的概率,則進(jìn)行如下計(jì)算:


為了驗(yàn)證這一個(gè)方法,在WordTree上訓(xùn)練Darknet19的model,使用1000類的ImageNet進(jìn)行訓(xùn)練,為了建立WordtTree 1K,把所有中間詞匯加入到WordTree上,把標(biāo)簽空間從1000擴(kuò)大到了1369。在訓(xùn)練過(guò)程中,如果有一個(gè)圖片的標(biāo)簽是”Norfolk terrier“,那么這個(gè)圖片還會(huì)獲得”狗“(dog)以及“哺乳動(dòng)物”(mammal)等標(biāo)簽。總之現(xiàn)在一張圖片是多標(biāo)記的,標(biāo)記之間不需要相互獨(dú)立。 如Figure5所示,之前的ImageNet分類是使用一個(gè)大softmax進(jìn)行分類。而現(xiàn)在,WordTree只需要對(duì)同一概念下的同義詞進(jìn)行softmax分類。 使用相同的訓(xùn)練參數(shù),這種分層結(jié)構(gòu)的Darknet19達(dá)到71.9%top-1精度和90.4%top-5精確度,精度只有微小的下降。 這種方法的好處:在對(duì)未知或者新的物體進(jìn)行分類時(shí),性能降低的很優(yōu)雅(gracefully)。比如看到一個(gè)狗的照片,但不知道是哪種種類的狗,那么就高置信度(confidence)預(yù)測(cè)是”狗“,而其他狗的種類的同義詞如”哈士奇“”牛頭?!啊苯鹈暗冗@些則低置信度。

Datasets combination with wordtree
用WordTree 把數(shù)據(jù)集合中的類別映射到分層樹(shù)中的同義詞上,例如上圖Figure 6,WordTree混合ImageNet與COCO。

Joint classification and detection
作者的目的是:訓(xùn)練一個(gè)Extremely Large Scale檢測(cè)器。所以訓(xùn)練的時(shí)候使用WordTree混合了COCO檢測(cè)數(shù)據(jù)集與ImageNet中的Top9000類,混合后的數(shù)據(jù)集對(duì)應(yīng)的WordTree有9418個(gè)類。另一方面,由于ImageNet數(shù)據(jù)集太大了,作者為了平衡一下兩個(gè)數(shù)據(jù)集之間的數(shù)據(jù)量,通過(guò)過(guò)采樣(oversampling)COCO數(shù)據(jù)集中的數(shù)據(jù),使COCO數(shù)據(jù)集與ImageNet數(shù)據(jù)集之間的數(shù)據(jù)量比例達(dá)到1:4。 YOLO9000的訓(xùn)練基于YOLO v2的構(gòu)架,但是使用3priors而不是5來(lái)限制輸出的大小。當(dāng)網(wǎng)絡(luò)遇到檢測(cè)數(shù)據(jù)集中的圖片時(shí)則正常地反方向傳播,當(dāng)遇到分類數(shù)據(jù)集圖片的時(shí)候,只使用分類的loss功能進(jìn)行反向傳播。同時(shí)作者假設(shè)IOU最少為 .3。最后根據(jù)這些假設(shè)進(jìn)行反向傳播。
使用聯(lián)合訓(xùn)練法,YOLO9000使用COCO檢測(cè)數(shù)據(jù)集學(xué)習(xí)檢測(cè)圖片中的物體的位置,使用ImageNet分類數(shù)據(jù)集學(xué)習(xí)如何從大量的類別中進(jìn)行分類。 為了評(píng)估這一方法,使用ImageNet Detection Task對(duì)訓(xùn)練結(jié)果進(jìn)行評(píng)估。 評(píng)估結(jié)果: YOLO9000取得19.7mAP。 在未學(xué)習(xí)過(guò)的156個(gè)分類數(shù)據(jù)上進(jìn)行測(cè)試,mAP達(dá)到16.0。 YOLO9000的mAP比DPM高,而且YOLO有更多先進(jìn)的特征,YOLO9000是用部分監(jiān)督的方式在不同訓(xùn)練集上進(jìn)行訓(xùn)練,同時(shí)還能檢測(cè)9000個(gè)物體類別,并保證實(shí)時(shí)運(yùn)行。

雖然YOLO9000對(duì)動(dòng)物的識(shí)別性能很好,但是對(duì)類別為”sungalsses“或者”swimming trunks“這些衣服或者裝備的類別,它的識(shí)別性能不是很好,見(jiàn)table 7。這跟數(shù)據(jù)集的數(shù)據(jù)組成有很大關(guān)系。


總結(jié)
YOLO v2 代表著目前最先進(jìn)物體檢測(cè)的水平,在多種監(jiān)測(cè)數(shù)據(jù)集中都要快過(guò)其他檢測(cè)系統(tǒng),并可以在速度與精確度上進(jìn)行權(quán)衡。
YOLO 9000 的網(wǎng)絡(luò)結(jié)構(gòu)允許實(shí)時(shí)地檢測(cè)超過(guò)9000種物體分類,這歸功于它能同時(shí)優(yōu)化檢測(cè)與分類功能。使用WordTree來(lái)混合來(lái)自不同的資源的訓(xùn)練數(shù)據(jù),并使用聯(lián)合優(yōu)化技術(shù)同時(shí)在ImageNet和COCO數(shù)據(jù)集上進(jìn)行訓(xùn)練,YOLO9000進(jìn)一步縮小了監(jiān)測(cè)數(shù)據(jù)集與識(shí)別數(shù)據(jù)集之間的大小代溝。
文章還提出了WordTree,數(shù)據(jù)集混合訓(xùn)練,多尺寸訓(xùn)練等全新的訓(xùn)練方法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容