你肯定很少見到這樣的論文,全文像閑聊一樣,不愧是YOLO的發(fā)明者。物體檢測(cè)領(lǐng)域的經(jīng)典論文YOLO(You Only Look Once)的兩位作者,華盛頓大學(xué)的Joseph Redmon和Ali Farhadi最新提出了YOLO的第三版改進(jìn)YOLO v3,一系列設(shè)計(jì)改進(jìn),使得新模型性能更好,速度更快。達(dá)到相似的性能時(shí),相比SSD,速度提高3倍;相比RetinaNet,速度提高3.8倍。
我今年沒怎么做研究。我花了很多時(shí)間玩Twitter。玩了一下GAN。我去年留下了一些工作[10] [1]; 我設(shè)法對(duì)YOLO進(jìn)行了一些改進(jìn)。但是,說實(shí)話,不是什么超級(jí)有趣的工作,只是做了一系列更新,使它變得更好。我也有幫其他人做了一些研究。
沒有錯(cuò),你看的確實(shí)是一篇論文的開頭。
今天,為你帶來一篇不走尋常路的工作,計(jì)算機(jī)視覺經(jīng)典模型YOLO作者的更新。
不只是開頭,整片文章到處都嵌入詼諧,在結(jié)尾處還不忘告訴讀者,不要@他。
放心,大多數(shù)研究計(jì)算機(jī)視覺的人都只是做點(diǎn)令人愉快的、好的事情,比如計(jì)算國(guó)家公園里斑馬的數(shù)量[11],或者追蹤溜進(jìn)他們?cè)鹤訒r(shí)的貓[17]。但是計(jì)算機(jī)視覺已經(jīng)被用于被質(zhì)疑的使用,作為研究人員,我們有責(zé)任至少思考一下我們的工作可能造成的損害,并思考如何減輕這種損害。我們非常珍惜這個(gè)世界。
那么,在作者沉浸Twitter的一年里,他們對(duì)YOLO做了哪些更新呢?
我們對(duì)YOLO進(jìn)行了一些更新!我們做了一些小設(shè)計(jì),使它的表現(xiàn)更好。我們還對(duì)這個(gè)新網(wǎng)絡(luò)進(jìn)行了訓(xùn)練。更新版的YOLO網(wǎng)絡(luò)比上一版本稍大,但更準(zhǔn)確。它的速度也還是很快,這點(diǎn)不用擔(dān)心。在320 × 320下,YOLOv3以22.2 mAP在22 ms運(yùn)行完成,達(dá)到與SSD一樣的精確度,但速度提高了3倍。與上個(gè)版本的 0.5 IOU mAP檢測(cè)指標(biāo)相比,YOLOv3的性能是相當(dāng)不錯(cuò)的。在Titan X上,它在51 ms內(nèi)達(dá)到57.9 AP50,而RetinaNet達(dá)到57.5 AP50需要198 ms,性能相似,但速度提升3.8倍。
我今年沒怎么做研究。我花了很多時(shí)間玩Twitter。玩了一下GAN。我去年留下了一些工作[10] [1]; 我設(shè)法對(duì)YOLO進(jìn)行了一些改進(jìn)。但是,說實(shí)話,不是什么超級(jí)有趣的工作,只是做了一系列更新,使它變得更好。我也有幫其他人做了一些研究。
這篇文章接下來將介紹YOLOv3,然后我會(huì)告訴你我們是怎么做的。我還會(huì)寫一下我們嘗試過但失敗了的操作。最后,我們將思考這一切意味著什么。
YOLOv3
關(guān)于YOLOv3:我們主要是從其他人那里獲得好點(diǎn)子。我們還訓(xùn)練了一個(gè)更好的新的分類網(wǎng)絡(luò)。本文將從頭開始介紹整個(gè)系統(tǒng),以便大家理解。
圖1:這張圖是從Focal Loss論文[7]拿來并修改的。 YOLOv3的運(yùn)行速度明顯快于其他性能相似的檢測(cè)方法。運(yùn)行時(shí)間來自M40或Titan X,基本上用的是相同的GPU。
邊界框預(yù)測(cè)
在YOLO9000之后,我們的系統(tǒng)使用維度聚類(dimension cluster)作為anchor box來預(yù)測(cè)邊界框[13]。網(wǎng)絡(luò)為每個(gè)邊界框預(yù)測(cè)4個(gè)坐標(biāo),如果單元格從圖像的左上角偏移了,并且之前的邊界框具有寬度和高度,則預(yù)測(cè)對(duì)應(yīng)以下等式:
在訓(xùn)練期間,我們使用平方誤差損失的和。如果一些坐標(biāo)預(yù)測(cè)的ground truth是,梯度就是ground truth值(從ground truth box計(jì)算出來)減去預(yù)測(cè),即:?。 通過翻轉(zhuǎn)上面的方程可以很容易地計(jì)算出這個(gè)ground truth值。
YOLOv3使用邏輯回歸來預(yù)測(cè)每個(gè)邊界框的 objectness score。如果邊界框比之前的任何其他邊界框都要與ground truth的對(duì)象重疊,則該值應(yīng)該為1。如果先前的邊界框不是最好的,但確實(shí)與ground truth對(duì)象重疊超過某個(gè)閾值,我們會(huì)忽略該預(yù)測(cè),如Faster R-CNN一樣[15]。我們使用.5作為閾值。 但與[15]不同的是,我們的系統(tǒng)只為每個(gè)ground truth對(duì)象分配一個(gè)邊界框。如果先前的邊界框未分配給一個(gè)ground truth對(duì)象,則不會(huì)對(duì)坐標(biāo)或類別預(yù)測(cè)造成損失,只會(huì)導(dǎo)致objectness。
圖2: 具有dimension priors和location prediction的邊界框。我們預(yù)測(cè)了框的寬度和高度,作為cluster centroids的偏移量。我們使用sigmoid函數(shù)預(yù)測(cè)相對(duì)于濾波器應(yīng)用位置的邊界框的中心坐標(biāo)。這個(gè)圖是從YOLO9000論文[13]拿來的。
類別預(yù)測(cè)
每個(gè)框使用多標(biāo)簽分類來預(yù)測(cè)邊界框可能包含的類。我們不使用softmax,因?yàn)槲覀儼l(fā)現(xiàn)它對(duì)于性能沒有影響,而是只是使用獨(dú)立的邏輯分類器。在訓(xùn)練過程中,我們使用二元交叉熵?fù)p失來進(jìn)行類別預(yù)測(cè)。
這個(gè)公式有助于我們轉(zhuǎn)向更復(fù)雜的領(lǐng)域,如Open Images數(shù)據(jù)集[5]。在這個(gè)數(shù)據(jù)集中有許多重疊的標(biāo)簽(例如,Woman和Person)??梢允褂胹oftmax強(qiáng)加一個(gè)假設(shè),即每個(gè)box只包含一個(gè)類別,但通常情況并非如此。多標(biāo)簽方法可以更好地模擬數(shù)據(jù)。
不同尺度的預(yù)測(cè)
YOLOv3可以預(yù)測(cè)3種不同尺度的box。我們的系統(tǒng)使用一個(gè)特征金字塔網(wǎng)絡(luò)[6]來提取這些尺度的特征。在基本特征提取器中,我們添加了幾個(gè)卷積層。其中最后一層預(yù)測(cè)三維tensor編碼的邊界框,objectness 和類別預(yù)測(cè)。我們?cè)贑OCO[8]數(shù)據(jù)集的實(shí)驗(yàn)中,每個(gè)尺度預(yù)測(cè)3個(gè)box,因此tensor為N×N×[3 *(4 + 1 + 80)],4個(gè)邊界框offset,1 objectness預(yù)測(cè),以及80個(gè)類別預(yù)測(cè)。
接下來,我們從之前的2個(gè)層中取得特征圖,并對(duì)其進(jìn)行2倍上采樣。我們還從網(wǎng)絡(luò)獲取特征圖,并使用 element-wise 添加將其與我們的上采樣特征進(jìn)行合并。這種方法使我們能夠從上采樣的特征和早期特征映射的細(xì)粒度信息中獲得更有意義的語義信息。然后,我們?cè)偬砑訋讉€(gè)卷積層來處理這個(gè)組合的特征圖,并最終預(yù)測(cè)出一個(gè)相似的Tensor,雖然現(xiàn)在它的大小已經(jīng)增大兩倍。
我們?cè)俅螆?zhí)行相同的設(shè)計(jì)來對(duì)最終的scale預(yù)測(cè)box。因此,我們對(duì)第3個(gè)scale的預(yù)測(cè)將從所有之前的計(jì)算中獲益,并從早期的網(wǎng)絡(luò)中獲得精細(xì)的特征。
我們?nèi)匀皇褂胟-means聚類來確定bounding box priors。我們只是選擇了9個(gè)clusters和3個(gè)scales,然后在整個(gè)scales上均勻分割clusters。在COCO數(shù)據(jù)集上,9個(gè)cluster分別為(10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90) ,(156×198),(373×326)。
特征提取器
我們使用一個(gè)新的網(wǎng)絡(luò)來執(zhí)行特征提取。該新網(wǎng)絡(luò)是用于YOLOv2,Darknet-19的網(wǎng)絡(luò)和更新的殘差網(wǎng)絡(luò)的混合方法。我們的網(wǎng)絡(luò)使用連續(xù)的3×3和1×1卷積層,但現(xiàn)在也有一些shortcut連接,并且網(wǎng)絡(luò)的大小顯著更大。它有53個(gè)卷積層,所以我們稱之為......Darknet-53!
這個(gè)新網(wǎng)絡(luò)比Darknet19強(qiáng)大得多,而且比ResNet-101或ResNet-152更高效。以下是在ImageNet上的結(jié)果:
表2:網(wǎng)絡(luò)的比較。各網(wǎng)絡(luò)的準(zhǔn)確性、Bn Ops、每秒浮點(diǎn)運(yùn)算次數(shù),以及FPS。
每個(gè)網(wǎng)絡(luò)都使用相同的設(shè)置進(jìn)行訓(xùn)練,并在256×256的單精度進(jìn)行測(cè)試。Runtime是在Titan X上以256×256進(jìn)行測(cè)量的??梢钥吹剑珼arknet-53可與最先進(jìn)的分類器相媲美,但浮點(diǎn)運(yùn)算更少,速度更快。Darknet-53比ResNet-101性能更好,而且速度快1.5倍。Darknet-53與ResNet-152具有相似的性能,速度提高2倍。
Darknet-53也可以實(shí)現(xiàn)每秒最高的測(cè)量浮點(diǎn)運(yùn)算。這意味著網(wǎng)絡(luò)結(jié)構(gòu)可以更好地利用GPU,從而使其評(píng)估效率更高,速度更快。這主要是因?yàn)镽esNets的層數(shù)太多,效率不高。
訓(xùn)練
我們?nèi)匀挥猛暾膱D像進(jìn)行訓(xùn)練。我們使用不同scale進(jìn)行訓(xùn)練,使用大量的數(shù)據(jù)增強(qiáng),批規(guī)范化,等等。我們使用Darknet神經(jīng)網(wǎng)絡(luò)框架進(jìn)行訓(xùn)練和測(cè)試[12]。
具體做法和結(jié)果
YOLOv3的表現(xiàn)非常好!請(qǐng)參見表3。就COCO奇怪的平均mean AP指標(biāo)而言,它與SSD的變體性能相當(dāng),但速度提高了3倍。不過,它仍比RetinaNet模型差一些。
當(dāng)時(shí),以mAP的“舊”檢測(cè)指標(biāo)比較時(shí),當(dāng)IOU = 0.5(或表中的AP50)時(shí),YOLOv3非常強(qiáng)大。它的性能幾乎與RetinaNet相當(dāng),并且遠(yuǎn)高于SSD的變體。這表明YOLOv3是一個(gè)非常強(qiáng)大的對(duì)象檢測(cè)網(wǎng)絡(luò)。不過,隨著IOU閾值增大,YOLOv3的性能下降,使邊界框與物體完美對(duì)齊的效果不那么好。
過去,YOLO不擅長(zhǎng)檢測(cè)較小的物體。但是,現(xiàn)在我們看到了這種情況已經(jīng)改變。由于新的多尺度預(yù)測(cè)方法,我們看到Y(jié)OLOv3具有相對(duì)較高的APS性能。但是,它在中等尺寸和更大尺寸的物體上的表現(xiàn)相對(duì)較差。
當(dāng)用AP50指標(biāo)表示精確度和速度時(shí)(見圖3),可以看到Y(jié)OLOv3與其他檢測(cè)系統(tǒng)相比具有顯著的優(yōu)勢(shì)。也就是說,YOLOv3更快、而且更好。
圖3
一些試了沒用的方法
我們?cè)谘芯縔OLOv3時(shí)嘗試了很多方法。很多都不起作用。這些可以了解一下。
Anchor box x,y 偏移量預(yù)測(cè)。我們嘗試使用常規(guī)的anchor box預(yù)測(cè)機(jī)制,可以使用線性激活將x,y的偏移預(yù)測(cè)為box的寬度或高度的倍數(shù)。我們發(fā)現(xiàn)這種方法降低了模型的穩(wěn)定性,并且效果不佳。
線性x,y預(yù)測(cè),而不是邏輯預(yù)測(cè)。我們嘗試使用線性激活來直接預(yù)測(cè)x,y的偏移,而不是用邏輯激活。這導(dǎo)致了MAP的下降。
Focal loss。我們嘗試使用Focal loss。這一方法使mAP降低了2點(diǎn)左右。YOLOv3對(duì)Focal loss解決的問題可能已經(jīng)很強(qiáng)健,因?yàn)樗哂袉为?dú)的對(duì)象預(yù)測(cè)和條件類別預(yù)測(cè)。因此,對(duì)于大多數(shù)例子來說,類別預(yù)測(cè)沒有損失?或者其他原因?這點(diǎn)還不完全確定。
表3:再次,這張圖來自論文[7],稍作了調(diào)整。這里顯示的速度/準(zhǔn)確度在mAP上以0.5 IOU度量進(jìn)行折衷。你可以看到,YOLOv3很厲害,因?yàn)樗浅8?,而且離左軸遠(yuǎn)。
雙IOU閾值和truth分配。 Faster RCNN在訓(xùn)練期間使用兩個(gè)IOU閾值。如果一個(gè)預(yù)測(cè)與.7的 ground truth 重疊,它就是一個(gè)正面的例子,[.3-.7]它被忽略。如果對(duì)于所有g(shù)round truth對(duì)象,它都小于.3,這就是一個(gè)負(fù)面的例子。我們嘗試了類似的策略,但無法取得好的結(jié)果。
這一切意味著什么
YOLOv3是一個(gè)很好的檢測(cè)器。速度很快,而且很準(zhǔn)確。在COCO上,平均AP介于0.5和0.95 IOU時(shí),準(zhǔn)確度不是很好。但是,對(duì)于0.5 IOU這個(gè)指標(biāo)來說,YOLOv3非常好。
為什么我們要改變指標(biāo)?原始的COCO論文上只有這樣一句含糊不清的句子:“一旦評(píng)估服務(wù)器完成,我們會(huì)添加不同評(píng)估指標(biāo)的完整討論”。Russakovsky等人在論文中說,人類很難區(qū)分0.3與0.5的IOU。“人們目測(cè)檢查一個(gè)IOU值為0.3的邊界框,并將它與IOU 0.5的區(qū)分開來,這是非常困難的事情?!盵16]如果人類都很難區(qū)分這種差異,那么它就沒有那么重要。
也許更值得思考的問題是:“現(xiàn)在我們有了這些檢測(cè)器,我們拿它們來做什么?”很多做這類研究的人都在Google或Facebook工作。我想至少我們已經(jīng)知道這項(xiàng)技術(shù)已經(jīng)被掌握得很好了,絕對(duì)不會(huì)用來收集你的個(gè)人信息并將其出售給....等等,你說這正是它的目的用途?Oh.
放心,大多數(shù)研究計(jì)算機(jī)視覺的人都只是做點(diǎn)令人愉快的、好的事情,比如計(jì)算國(guó)家公園里斑馬的數(shù)量[11],或者追蹤溜進(jìn)他們?cè)鹤訒r(shí)的貓[17]。但是計(jì)算機(jī)視覺已經(jīng)被用于被質(zhì)疑的使用,作為研究人員,我們有責(zé)任至少思考一下我們的工作可能造成的損害,并思考如何減輕這種損害。我們非常珍惜這個(gè)世界。
-
計(jì)算機(jī)視覺
+關(guān)注
關(guān)注
8文章
1694瀏覽量
45905 -
K-means
+關(guān)注
關(guān)注
0文章
28瀏覽量
11282
原文標(biāo)題:【史上最有趣論文】物體檢測(cè)經(jīng)典模型YOLO新升級(jí),就看一眼,速度提升 3 倍!
文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論