本文主要用于介紹大神Joseph Redmon于2016年提出的YOLO目標(biāo)檢測(cè)網(wǎng)絡(luò),該網(wǎng)絡(luò)也開(kāi)辟了深度學(xué)習(xí)用于目標(biāo)檢測(cè)的另一戰(zhàn)場(chǎng)(不同于R-CNN系列)。本筆記主要為方便初學(xué)者快速入門(mén),以及自我回顧。
論文鏈接:https://arxiv.org/pdf/1506.02640.pdf
源碼地址:http://pjreddie.com/yolo/.
作者官方網(wǎng)站:https://pjreddie.com
基本目錄如下:
- 摘要
- 核心思想
- 總結(jié)
------------------第一菇 - 摘要------------------
1.1 論文摘要
本論文提出一種新的用于目標(biāo)檢測(cè)的算法,YOLO。之前的工作都是用分類(lèi)器來(lái)實(shí)現(xiàn)檢測(cè)的目的,而本文就是直接采用回歸的辦法來(lái)區(qū)分各種邊界框,并附之分類(lèi)的概率。YOLO只采用一個(gè)神經(jīng)網(wǎng)絡(luò),在一次測(cè)試過(guò)程中,就對(duì)整圖直接預(yù)測(cè)邊界框和分類(lèi)概率。因?yàn)檎麄€(gè)檢測(cè)的過(guò)程都是在一個(gè)單獨(dú)的網(wǎng)絡(luò)中完成的,后期在實(shí)現(xiàn)目標(biāo)檢測(cè)的時(shí)候就完全是端到端的(或者理解為:One-Stage)。
本文提出的整一套框架最大的特點(diǎn)就是快。我們的基礎(chǔ)YOLO模型可以實(shí)時(shí)檢測(cè)45 frames/秒,小一點(diǎn)的YOLO版本,可以在保證效果的同時(shí),達(dá)到155 frames/秒。與現(xiàn)有的目標(biāo)檢測(cè)算法相比,YOLO在定位上的誤差會(huì)更大一點(diǎn),但是很少會(huì)錯(cuò)誤預(yù)測(cè)背景為目標(biāo)。并且,我們還發(fā)現(xiàn)YOLO更容易學(xué)會(huì)目標(biāo)的整體表達(dá),在遷移能力上,要好于DPM和Fast R-CNN。
------------------第二菇 - 核心思想------------------
2.1 基本概念梳理
在深入YOLO框架細(xì)節(jié)之前,我們先提前梳理一下文中出現(xiàn)的一些目標(biāo)檢測(cè)領(lǐng)域內(nèi)的術(shù)語(yǔ),方便后面理解。
2.1.1 IOU理解
在目標(biāo)檢測(cè)領(lǐng)域,我們需要對(duì)物體實(shí)現(xiàn)定位并識(shí)別,而IOU(Intersection Over Union)就是其中一種評(píng)價(jià)定位精度的指標(biāo)。該指標(biāo)定義了倆個(gè)邊界框(bounding box)的重疊程度,如下圖,

結(jié)合上圖,IOU的具體計(jì)算公式如下,
2.1.2 NMS理解
非極大值抑制(Non-Maximum Suppression, NMS),通俗說(shuō)是抑制不是極大值的元素,也可以理解為局部最大搜索。在目標(biāo)檢測(cè)領(lǐng)域,經(jīng)常會(huì)出現(xiàn)大量的候選框,這個(gè)時(shí)候,我們就需要用NMS的方法,來(lái)剔除那些無(wú)效/冗余的候選框。
整個(gè)算法的流程其實(shí)也很簡(jiǎn)單,可以總結(jié)如下,
1)將所有框的得分(confidence)排序,選中最高得分的框。
2)遍歷其余的框,如果某個(gè)框和當(dāng)前最高得分的框的IOU大于一定閾值,則將其刪除。
3)從剩余的框中再選出得分最高的框,循環(huán)往復(fù)上述過(guò)程。
整體流程是真的很好理解,實(shí)現(xiàn)起來(lái)也很簡(jiǎn)單,只不過(guò)大神寫(xiě)的比較簡(jiǎn)潔漂亮,有興趣的同學(xué)可以讀這篇文章,里面有對(duì)代碼的分析,本文不做展開(kāi)。
2.2 YOLO架構(gòu)詳解
YOLO的架構(gòu)相比起R-CNN系列真的要簡(jiǎn)潔很多,畢竟是One-Stage!這里直接上一張,論文中的架構(gòu)描述圖,我們來(lái)分步理解。

簡(jiǎn)單來(lái)說(shuō),總共就分為3步,
1)將輸入圖片縮放至
2)用一個(gè)卷積網(wǎng)絡(luò)對(duì)縮放后的圖提取特征
3)卡模型閾值,得到最終的檢測(cè)結(jié)果
每一步都看似十分簡(jiǎn)單,但每一步又都暗含多個(gè)細(xì)節(jié),接下來(lái)我們逐個(gè)剖析。
2.2.1 理解grid cell的作用
第一步中,系統(tǒng)還將圖片均分成個(gè)網(wǎng)格(grid cell,文中為7),而這分出來(lái)的每一個(gè)網(wǎng)格,如果有目標(biāo)的中心恰好落在網(wǎng)格中,該網(wǎng)格將承擔(dān)起檢測(cè)該目標(biāo)的任務(wù)(如下圖中的紅色框)。(換一句話(huà)來(lái)理解就是,這些網(wǎng)格就相當(dāng)于R-CNN系列中第一步提出的候選區(qū)域)

每一個(gè)網(wǎng)格都會(huì)預(yù)測(cè)個(gè)邊界框(文中為2,一般一個(gè)橫的,一個(gè)豎的),而對(duì)于每一個(gè)框來(lái)說(shuō),我們需要預(yù)測(cè)5個(gè)值,分別為
和
,其中,
-
是預(yù)測(cè)框的中心,相對(duì)于該grid的坐標(biāo)
-
則是相對(duì)于整張圖片的預(yù)測(cè)框的寬,高(0-1)
則為每一個(gè)邊界框的分?jǐn)?shù)(confidence score),該分?jǐn)?shù)反映了2件事情,
- 該框包含目標(biāo)的概率
- 該框定位預(yù)測(cè)的準(zhǔn)確率
訓(xùn)練的時(shí)候,該分?jǐn)?shù)的GT被定義為,
如果沒(méi)有目標(biāo)在該網(wǎng)格中,則分?jǐn)?shù)為0;如果有目標(biāo)在該網(wǎng)格中,則分?jǐn)?shù)應(yīng)該整合等于預(yù)測(cè)框與真實(shí)框的IOU。
除此以為,每一個(gè)網(wǎng)格(?。?!是網(wǎng)格?。。。┒歼€會(huì)預(yù)測(cè)類(lèi)別的條件概率,這個(gè)概率反映了在給定有目標(biāo)存在的情況下,該目標(biāo)為某一個(gè)類(lèi)別的概率(跟預(yù)測(cè)框無(wú)關(guān))。
因此,在測(cè)試階段,每一個(gè)框的分?jǐn)?shù)計(jì)算公式為,
因此,總結(jié)一下,每一個(gè)網(wǎng)格的輸出參數(shù)就是。這里再貼一張論文中的網(wǎng)格示意圖,用于加深大家的理解,

因此總的預(yù)測(cè)參數(shù),就是,。
2.2.2 YOLO網(wǎng)絡(luò)架構(gòu)及損失函數(shù)
整體的網(wǎng)絡(luò)架構(gòu)是由GoogLeNet衍生而來(lái)的,整個(gè)網(wǎng)絡(luò)有24層卷積緊跟2個(gè)全卷積(用于分類(lèi)和定位),有一點(diǎn)小的改進(jìn),YOLO網(wǎng)絡(luò)沒(méi)有使用inception modules,而是用1x1卷積層+3x3卷積層簡(jiǎn)單代替。上面也提到了網(wǎng)絡(luò)的最終輸出為7730,整體網(wǎng)絡(luò)架構(gòu)如下所示,

而論文中作者所用的損失函數(shù)正是傳統(tǒng)的SSE(sum-squared error),然后整體的損失函數(shù)由3部分組成,如下,

上圖應(yīng)該是把幾個(gè)細(xì)節(jié)都標(biāo)注出來(lái)了,有個(gè)符號(hào)說(shuō)明一下,
-
表示該網(wǎng)格中是否含有目標(biāo)
-
表示在網(wǎng)格
中,第
個(gè)預(yù)測(cè)框需要對(duì)預(yù)測(cè)負(fù)責(zé)
至此,整個(gè)網(wǎng)絡(luò)架構(gòu)算是講述清晰了~
至于最后一步,利用NMS最終生成預(yù)測(cè)框的過(guò)程,這里就不展開(kāi)闡述了,網(wǎng)上有一個(gè)很好的PPT,這里推薦大家去看,了解整個(gè)過(guò)程~其余的實(shí)驗(yàn)細(xì)節(jié)和結(jié)果展示,這邊就不多說(shuō)了,有興趣的同學(xué)直接看原論文即可~
2.3 YOLO架構(gòu)的優(yōu)缺點(diǎn)
YOLO主要的缺點(diǎn)十分明顯,因?yàn)橐粋€(gè)網(wǎng)格只會(huì)預(yù)測(cè)2個(gè)框,1個(gè)類(lèi)別,自然最終預(yù)測(cè)框的坐標(biāo)誤差會(huì)比較大,而且對(duì)于小/多目標(biāo)更是無(wú)能為力,并且對(duì)目標(biāo)框的大小也比較敏感~
當(dāng)然,YOLO也有很強(qiáng)勢(shì)的優(yōu)點(diǎn),Extremely Fast !?。」?,另外其泛化能力據(jù)說(shuō)更好?有待更多自己的實(shí)驗(yàn)了~
------------------第三菇 - 總結(jié)------------------
3.1 總結(jié)
到這里,整篇論文的核心思想已經(jīng)說(shuō)清楚了。本論文主要是提出了一種YOLO網(wǎng)絡(luò)用于目標(biāo)檢測(cè),其單階段單模型的配置讓其在時(shí)效性上具備了碾壓性的優(yōu)勢(shì),雖然其準(zhǔn)確率與R-CNN系還有差距,但其在工業(yè)界仍有巨大的發(fā)揮空間,作者也在文中通過(guò)一系列實(shí)驗(yàn)證明其可行性,為后續(xù)發(fā)展奠定了基礎(chǔ)。
簡(jiǎn)單總結(jié)一下本文就是先羅列了一下該論文的摘要,再具體介紹了一下本文作者的思路,也簡(jiǎn)單表述了一下,自己對(duì)YOLO網(wǎng)絡(luò)架構(gòu)的理解。希望大家讀完本文后能進(jìn)一步加深對(duì)該論文的理解。有說(shuō)的不對(duì)的地方也請(qǐng)大家指出,多多交流,大家一起進(jìn)步~??