【CV論文筆記】You Only Look Once: Unified, Real-Time Object Detection(YOLO理解)

本文主要用于介紹大神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

基本目錄如下:

  1. 摘要
  2. 核心思想
  3. 總結(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)的重疊程度,如下圖,

IOU示意圖.jpg

結(jié)合上圖,IOU的具體計(jì)算公式如下,

IOU = \frac{A \cap B}{A \cup B}

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)分步理解。

YOLO框架圖.jpg

簡(jiǎn)單來(lái)說(shuō),總共就分為3步,
1)將輸入圖片縮放至448*448
2)用一個(gè)卷積網(wǎng)絡(luò)對(duì)縮放后的圖提取特征
3)卡模型閾值,得到最終的檢測(cè)結(jié)果

每一步都看似十分簡(jiǎn)單,但每一步又都暗含多個(gè)細(xì)節(jié),接下來(lái)我們逐個(gè)剖析。

2.2.1 理解grid cell的作用

第一步中,系統(tǒng)還將圖片均分成S*S個(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ū)域)

網(wǎng)格示意圖.jpg

每一個(gè)網(wǎng)格都會(huì)預(yù)測(cè)B個(gè)邊界框(文中為2,一般一個(gè)橫的,一個(gè)豎的),而對(duì)于每一個(gè)框來(lái)說(shuō),我們需要預(yù)測(cè)5個(gè)值,分別為x,y,w,hconfidence,其中,

  • (x,y) 是預(yù)測(cè)框的中心,相對(duì)于該grid的坐標(biāo)
  • w, h 則是相對(duì)于整張圖片的預(yù)測(cè)框的寬,高(0-1)

confidence 則為每一個(gè)邊界框的分?jǐn)?shù)(confidence score),該分?jǐn)?shù)反映了2件事情,

  1. 該框包含目標(biāo)的概率
  2. 該框定位預(yù)測(cè)的準(zhǔn)確率

訓(xùn)練的時(shí)候,該分?jǐn)?shù)的GT被定義為,
Pr(Object) * IOU^{truth}_{pred}

如果沒(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)別的條件概率Pr(Class_i | Object),這個(gè)概率反映了在給定有目標(biāo)存在的情況下,該目標(biāo)為某一個(gè)類(lèi)別的概率(跟預(yù)測(cè)框無(wú)關(guān))。

因此,在測(cè)試階段,每一個(gè)框的分?jǐn)?shù)計(jì)算公式為,

Pr(Class_i | Object) * Pr(Object) * IOU^{truth}_{pred} = Pr(Class_i) * IOU^{truth}_{pred}

因此,總結(jié)一下,每一個(gè)網(wǎng)格的輸出參數(shù)就是B*5 + C。這里再貼一張論文中的網(wǎng)格示意圖,用于加深大家的理解,

模型網(wǎng)格示意圖.jpg

因此總的預(yù)測(cè)參數(shù),就是,S*S*(B*5 + C)。

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)如下所示,

網(wǎng)絡(luò)架構(gòu)圖.jpg

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

損失函數(shù)解析.png

上圖應(yīng)該是把幾個(gè)細(xì)節(jié)都標(biāo)注出來(lái)了,有個(gè)符號(hào)說(shuō)明一下,

  • 1^{obj}_i表示該網(wǎng)格中是否含有目標(biāo)
  • 1^{obj}_{ij}表示在網(wǎng)格i中,第j個(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)步~??

最后編輯于
?著作權(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)容