YOLOv3论文翻译讲解
YOLOv3: An Incremental Improvement
論文地址;代碼地址
摘要
作者對(duì)YOLO進(jìn)行了進(jìn)一步的更新,做了一些小設(shè)計(jì)更改讓其表現(xiàn)更好。YOLOv3比YOLOv2相較大了一些,但是檢測(cè)更加準(zhǔn)確,而且檢測(cè)速度依然很快。320×320 YOLOv3模型能在28.2mAP的精度下運(yùn)行速度達(dá)到了22ms,和SSD的準(zhǔn)確度相同但是速度快了3倍。在使用之前的0.5 IOU mAP 檢測(cè)指標(biāo)時(shí),YOLOv3表現(xiàn)相當(dāng)棒。 在Titan X上,它在51毫秒內(nèi)可達(dá)到57.9 AP50,而RetinaNet在198毫秒內(nèi)才可達(dá)到57.5 AP50,性能相似,但速度快3.8倍。 與往常一樣,所有代碼都可以在https://pjreddie.com/yolo/在線獲得。
1、簡(jiǎn)介
這里基本都是作者的一些心里感受,與論文無(wú)關(guān);就是作者懶得寫論文了;
有時(shí)候,一年的時(shí)間會(huì)因?yàn)橐恍艾嵤隆倍拇M,你有這種感受吧?所以,去年我沒做什么研究,而是花了不少時(shí)間Twitter上,也玩了一把GANs。然后利用去年僅存的一點(diǎn)精力,我對(duì)YOLO做了點(diǎn)改進(jìn)。但是,老實(shí)說(shuō),這并不是什么大手筆,這只是一些可以讓YOLO變得更好小更新,另外,我還幫別人做了一點(diǎn)研究。
事實(shí)上,那是我們來(lái)這里的原因。我們的文章快交稿了,文中引用了我在YOLO中做出的某些更新的內(nèi)容,但這樣的引用來(lái)源還不存在,所以就先寫個(gè)技術(shù)報(bào)告吧!
技術(shù)報(bào)告有個(gè)好處,就是它不需要長(zhǎng)長(zhǎng) “引言”,我想此時(shí),你們都知道我們?yōu)槭裁匆獙戇@個(gè)。讀到引言的結(jié)尾,我相信你們會(huì)對(duì)文章的結(jié)構(gòu)有所了解。首先我們會(huì)向你介紹YOLOv3的更新情況,然后我們會(huì)向你們展示我們做的怎么樣,然后我們會(huì)告訴你們一些失敗的嘗試,最后我們要說(shuō)說(shuō)這次更新到底意味著什么。
2.想法
YOLOv3中的想法:我們大多從別人那里吸取了好想法。 我們還訓(xùn)練了一個(gè)新的分類器網(wǎng)絡(luò),該網(wǎng)絡(luò)要比其他分類器更好。 我們將帶您從頭開始學(xué)習(xí)整個(gè)系統(tǒng),以便您可以全部了解。
2.1 邊界框預(yù)測(cè)
遵循YOLO9000,我們的系統(tǒng)使用尺寸簇作為錨定框來(lái)預(yù)測(cè)邊界框。 網(wǎng)絡(luò)為每個(gè)預(yù)測(cè)邊界框預(yù)測(cè)4個(gè)坐標(biāo)(tx,ty,tw,th)。 如果此cell從圖像的左上角偏移了(cx,cy)并且先驗(yàn)邊界框的寬度和高度為pw,ph,則預(yù)測(cè)對(duì)應(yīng)于:
在訓(xùn)練的時(shí)候采用均方誤差損失和(sum of squared error loss)。 如果某個(gè)坐標(biāo)預(yù)測(cè)的ground truth(真實(shí)標(biāo)簽)是 t?*,則相應(yīng)的梯度就是ground truth(從ground truth box計(jì)算得出)減去該坐標(biāo)的預(yù)測(cè)值:
t?*- t* 。通過(guò)反轉(zhuǎn)上述公式,可以很容易地計(jì)算出groud truth。
YOLOv3使用邏輯回歸預(yù)測(cè)每個(gè)邊界框的對(duì)象得分(objectness score)。如果先驗(yàn)邊界框(bounding box prior)與ground truth object的重疊量大于任何其他的先驗(yàn)邊界框,則其得分應(yīng)為1。如果先驗(yàn)邊界框不是最佳的,但是與ground truth object重疊的閾值超過(guò)了某個(gè)閾值,則忽略后續(xù)預(yù)測(cè),作者使用的閾值為.5。我們的系統(tǒng)只為每個(gè) ground truth 對(duì)象分配一個(gè)邊界框。如果一個(gè)先驗(yàn)邊界框沒有分配給ground truth object,則不會(huì)對(duì)坐標(biāo)或者類別預(yù)測(cè)造成損失,僅會(huì)對(duì)對(duì)象造成損失。
2.2 類別預(yù)測(cè)
每個(gè)邊界框使用多標(biāo)簽分類來(lái)預(yù)測(cè)邊界框中可能包含的類。我們不使用 softmax,而是使用單獨(dú)的邏輯分類器,因?yàn)槲覀儼l(fā)現(xiàn)前者在對(duì)于神經(jīng)網(wǎng)絡(luò)高性能沒有什么必要。 在訓(xùn)練過(guò)程中,我們使用二元交叉熵?fù)p失來(lái)進(jìn)行類別預(yù)測(cè)。
這個(gè)選擇有助于我們把 YOLOv3 用于更復(fù)雜的領(lǐng)域,如公開圖像數(shù)據(jù)集。這個(gè)數(shù)據(jù)集包含了大量重疊的標(biāo)簽(如女性和人)。如果我們用 softmax,它會(huì)強(qiáng)加一個(gè)假設(shè),使每個(gè)框只包含一個(gè)類別,但通常情況并非如此。多標(biāo)簽的分類方法能夠更好地模擬數(shù)據(jù)。
2.3 跨尺度的預(yù)測(cè)
YOLOv3預(yù)測(cè)3種不同比例的預(yù)測(cè)框。我們的系統(tǒng)使用相似的概念從那些比例尺中提取特征以構(gòu)建金字塔網(wǎng)絡(luò)。從基本特征提取器中,我們添加了幾個(gè)卷積層。并用最后的卷積層預(yù)測(cè)一個(gè)三維張量編碼:邊界框、框中目標(biāo)和分類預(yù)測(cè)。在COCO數(shù)據(jù)集上進(jìn)行的實(shí)驗(yàn)中,我們預(yù)測(cè)每個(gè)尺度上有3個(gè)預(yù)測(cè)框,因此對(duì)于4個(gè)邊界框偏移量,1個(gè)對(duì)象預(yù)測(cè)和80個(gè)類預(yù)測(cè),張量為 N×N×[3 *(4 + 1 + 80)]。
接下來(lái),我們從先前的2層中獲取特征圖,并將其上采樣2倍。我們還從網(wǎng)絡(luò)中較早的地方獲取了一個(gè)特征圖,并使用串聯(lián)將其與我們的上采樣特征合并。這種方法使我們能夠從早期特征映射中的上采樣特征和更細(xì)粒度的信息中獲得更有意義的語(yǔ)義信息。然后,我們?cè)偬砑右恍┚矸e層來(lái)處理此組合特征圖,并最終預(yù)測(cè)出一個(gè)相似的、大小是原先兩倍的張量。
我們用同樣的網(wǎng)絡(luò)設(shè)計(jì)來(lái)預(yù)測(cè)邊界框的最終尺寸,其實(shí)這個(gè)過(guò)程有助于我們對(duì)第三種尺寸的預(yù)測(cè),因?yàn)槲覀兛梢詮脑缙诰W(wǎng)絡(luò)中獲得細(xì)粒度的特征。
和上個(gè)版一樣,我們?nèi)匀皇褂?k-means 聚類來(lái)確定邊界框的先驗(yàn)。在實(shí)驗(yàn)中,我們選擇了 9 個(gè)聚類和 3 個(gè)尺寸,然后在不同尺寸的邊界框上均勻分割聚類。在 COCO 數(shù)據(jù)集上,這 9 個(gè)聚類分別是:(10×13)、(16×30)、(33×23)、(30×61)、(62×45)、(59×119)、(116×90)、(156×198)、(373×326) 。
2.4 特征提取器
我們使用一個(gè)新的網(wǎng)絡(luò)來(lái)執(zhí)行特征提取。 我們的新網(wǎng)絡(luò)是YOLOv2,Darknet-19中使用的網(wǎng)絡(luò)與新的殘留網(wǎng)絡(luò)內(nèi)容之間的一種混合方法。 我們的網(wǎng)絡(luò)使用了連續(xù)的3×3和1×1卷積層,但現(xiàn)在也有了一些快捷連接,并且規(guī)模更大。 它有53個(gè)卷積層,所以我們稱它為 Darknet-53!
這個(gè)新網(wǎng)絡(luò)比Darknet-19強(qiáng)大得多,效率比ResNet-101或ResNet-152高。 這是一些ImageNet結(jié)果:
每個(gè)網(wǎng)絡(luò)都使用相同的設(shè)置進(jìn)行訓(xùn)練,輸入 256 × 256 的圖片,并進(jìn)行單精度測(cè)試。運(yùn)行環(huán)境為 Titan X。我們得出的結(jié)論是 Darknet-53 在精度上可以與最先進(jìn)的分類器相媲美,同時(shí)它的浮點(diǎn)運(yùn)算更少,速度也更快。和 ResNet-101 相比,Darknet-53 的速度是前者的 1.5 倍;而 ResNet-152 和它性能相似,但用時(shí)卻是它的 2 倍以上。
Darknet-53 也可以實(shí)現(xiàn)每秒最高的測(cè)量浮點(diǎn)運(yùn)算。這意味著網(wǎng)絡(luò)結(jié)構(gòu)可以更好地利用 GPU,使其預(yù)測(cè)效率更高,速度更快。這主要是因?yàn)?ResNets 的層數(shù)太多,效率不高。
2.5 訓(xùn)練
我們只是輸入完整的圖像,并沒有做其他處理。實(shí)驗(yàn)過(guò)程中涉及的多尺寸訓(xùn)練、大量數(shù)據(jù)增強(qiáng)和批量標(biāo)準(zhǔn)化等操作均符合標(biāo)準(zhǔn)。模型訓(xùn)練和測(cè)試的框架是 Darknet 神經(jīng)網(wǎng)絡(luò)。
3.我們做的如何
YOLOv3很好!參見表3。就COCO而言,mAP度量標(biāo)準(zhǔn)很奇怪,與SSD變體相當(dāng),但速度提高了3倍。不過(guò),在此指標(biāo)上,它仍然比其他模型(例如RetinaNet)要落后很多。
但是,當(dāng)我們用以前的評(píng)價(jià)指標(biāo),IOU=0.5 時(shí)的 mAP(表中的 AP50)來(lái)評(píng)價(jià) YOLOv3 時(shí),我們發(fā)現(xiàn)它真的很強(qiáng)。它幾乎與 RetinaNet 媲美,且遠(yuǎn)遠(yuǎn)高于 SSD。這表明它是一個(gè)非常強(qiáng)大的檢測(cè)器,擅長(zhǎng)為檢測(cè)目標(biāo)生成合適的邊界框。但是,隨著 IOU 閾值的增加,YOLOv3 性能顯著下降,這時(shí)候 YOLOv3 預(yù)測(cè)的邊界框就不能做到完美對(duì)齊了。
在過(guò)去,YOLO 一直被用于小型對(duì)象檢測(cè)。但現(xiàn)在我們可以看到其中的演變趨勢(shì),隨著多尺寸預(yù)測(cè)功能的上線,YOLOv3 將具備更高 APS 性能。但它目前在中等尺寸或大尺寸物體上的檢測(cè)表現(xiàn)還相對(duì)較差,仍需進(jìn)一步的完善。
當(dāng)我們?cè)贏P50度量標(biāo)準(zhǔn)上繪制精度與速度的關(guān)系時(shí)(參見圖5),我們看到Y(jié)OLOv3比其他檢測(cè)系統(tǒng)具有明顯的優(yōu)勢(shì)。即更快,更好。
4. 失敗的嘗試
我們?cè)谘芯?YOLOv3 的時(shí)候嘗試了很多東西,以下是我們記得的一些失敗案例。
Anchor box 坐標(biāo)的偏移預(yù)測(cè)。我們嘗試了常規(guī)的 Anchor box 預(yù)測(cè)方法,比如使用線性激活來(lái)將坐標(biāo) x,y 的偏移預(yù)測(cè)為邊界框?qū)挾然蚋叨鹊谋稊?shù)。但我們發(fā)現(xiàn),這種做法降低了模型的穩(wěn)定性而且效果不佳。
用線性方法預(yù)測(cè) x,y,而不是使用邏輯方法預(yù)測(cè)。我們嘗試使用線性激活來(lái)直接預(yù)測(cè) x,y 的偏移,而不是使用邏輯激活,這降低了 mAP 成績(jī)。
Focal loss。我們嘗試使用 focal loss,但它使我們的 mAP 大概降低了 2 個(gè)點(diǎn)。這可能是因?yàn)樗哂袉为?dú)的對(duì)象預(yù)測(cè)和條件類別預(yù)測(cè),YOLOv3 對(duì)于 focal loss 函數(shù)試圖解決的問(wèn)題已經(jīng)具有相當(dāng)?shù)聂敯粜浴R虼?#xff0c;對(duì)于大多數(shù)例子而言,類別預(yù)測(cè)沒有損失?或者其他什么原因?我們并不完全確定。
雙 IOU 閾值和真值分配。在訓(xùn)練期間,Faster RCNN 用了兩個(gè) IOU 閾值,如果預(yù)測(cè)的邊框與標(biāo)注邊框的重合度不低于 0.7 ,那判定它為正樣本;如果在 [0.3~0.7] 之間,則忽略;如果低于 0.3 ,就判定它為負(fù)樣本。我們也嘗試了這種方法,但是效果并不好。
我們對(duì)現(xiàn)在的模型很滿意,至少是目前的最佳狀態(tài)。上述的有些技術(shù)可能會(huì)使我們的額模型更好,但我們可能還需要對(duì)它們做一些調(diào)整。
5. 更新的意義
YOLOv3 是一個(gè)非常棒的檢測(cè)器,它又準(zhǔn)又快。雖然它在 COCO 數(shù)據(jù)集上,0.3 和 0.95 的新指標(biāo)上的成績(jī)并不好,但對(duì)于舊的檢測(cè)指標(biāo) 0.5 IOU,它還是非常不錯(cuò)的。
所以,為什么我們要改變指標(biāo)呢?最初的 COCO 論文中只有這樣的一句含糊其辭的話:評(píng)估完成,就會(huì)生成評(píng)估指標(biāo)結(jié)果。但是 Russakovsky 等人曾經(jīng)有份報(bào)告,說(shuō)人類很難區(qū)分 0.3 和 0.5 的 IOU:“訓(xùn)練人們用肉眼區(qū)別 IOU 值為 0.3 和 0.5 的邊界框是一件非常困難的事”。既然人類都難以區(qū)分,那這個(gè)指標(biāo)還重要嗎?
也許有個(gè)更好的問(wèn)題值得我們?nèi)ヌ接?#xff1a;“我們用它來(lái)做什么”,很多從事這方面研究的人都受雇于 Google 和 Facebook,我想至少我們知道如果這項(xiàng)技術(shù)發(fā)展的完善,那他們絕對(duì)不會(huì)把它用來(lái)收集你的個(gè)人信息然后賣給…等一下,你把事實(shí)說(shuō)出來(lái)了!!哦哦。
另外軍方在計(jì)算機(jī)視覺領(lǐng)域投入了大量資金,他們從來(lái)沒有做過(guò)任何可怕的事情,比如用新技術(shù)殺死很多人…哦哦。
我有很多希望!我希望大多數(shù)人會(huì)把計(jì)算機(jī)視覺技術(shù)用于快樂、幸福的事情上,比如就統(tǒng)計(jì)國(guó)家公園里斑馬的數(shù)量,或者追蹤他們小區(qū)附近有多少只貓。但是計(jì)算機(jī)視覺技術(shù)的應(yīng)用已經(jīng)步入歧途了,作為研究人員,我們有責(zé)任思考自己的工作可能帶給社會(huì)的危害,并考慮怎么減輕這種危害。我們非常珍惜這個(gè)世界。
最后,不要在 Twitter 上 @ 我,我已經(jīng)不玩了。
總結(jié)
以上是生活随笔為你收集整理的YOLOv3论文翻译讲解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2020车工(中级)考试软件及车工(中级
- 下一篇: 中山大学软件工程专硕考研经验(双非跨考)