You Only Look Once[譯]

*參考文章:
原論文地址:https://pjreddie.com/media/files/papers/yolo_1.pdf
深度學(xué)習(xí)檢測方法梳理:http://www.cnblogs.com/venus024/p/5590044.html
YOLO:實(shí)時(shí)快速目標(biāo)檢測:https://zhuanlan.zhihu.com/p/25045711
Faster-RCNN詳解:http://blog.csdn.net/u013832707/article/details/53641055

寫在前面(當(dāng)然paper中是沒有的)
在YOLO出現(xiàn)之前還有一些常用的 Object Detection網(wǎng)絡(luò):RCNN -> Fast R-CNN -> Faster R-CNN,具體不同請參考博客

RCNN解決的是,“為什么不用CNNclassification呢?”
Fast R-CNN解決的是,“為什么不一起輸出bounding box和label呢?”
Faster R-CNN解決的是,“為什么還要用selective search呢?”

Abstract

我們提出了一種新的object detection方法,先前的object detection工作使用了執(zhí)行檢測的分類器。相反,我們將object detection作為回歸問題,以在空間上分離的bounding boxes和相關(guān)的 class probabilities進(jìn)行框架化。單個(gè)神經(jīng)網(wǎng)絡(luò)在一次評估中直接從完整圖像預(yù)測邊界框和類概率。由于整個(gè)檢測流水線是單個(gè)網(wǎng)絡(luò),因此可以直接在檢測性能上進(jìn)行端對端優(yōu)化。

1. Introduction

人類只需要瞄一眼圖片就能夠知道圖片中的信息,因?yàn)槿祟惖囊曈X系統(tǒng)非常的快和準(zhǔn)確,讓我們實(shí)現(xiàn)復(fù)雜的任務(wù),例如不怎么費(fèi)力的開車。用于object detection的快速和準(zhǔn)確的算法將允許計(jì)算機(jī)無需專門的傳感器來驅(qū)動汽車,使輔助設(shè)備能夠?qū)?shí)時(shí)場景信息傳達(dá)給人類用戶。

現(xiàn)在的檢測系統(tǒng)重新使用了分類器來實(shí)現(xiàn)檢測。為了檢測一個(gè)對象,這些系統(tǒng)對該對象進(jìn)行分類,并在測試圖像中的各種位置和比例下進(jìn)行評估。諸如可變形部件模型(DPM)的系統(tǒng)使用滑動窗口方法,其中分類器在整個(gè)圖像上以均勻間隔的位置運(yùn)行.

更先進(jìn)的一點(diǎn)的方法(例如R-CNN)使用region proposal的方法在一張圖片上產(chǎn)生bounding boxes,然后在這些boxes上執(zhí)行分類。分類后,后處理用于微調(diào)bounding boxes,和消除重復(fù)檢測,并根據(jù)場景中的其他對象重新確定框。這些復(fù)雜的途徑難以優(yōu)化,因?yàn)槊總€(gè)單獨(dú)的組件必須分開訓(xùn)練。

我們把object detection視作一個(gè)單獨(dú)的回歸問題,直接從圖像像素到bounding boxes坐標(biāo)和類概率。使用我們的系統(tǒng),您只需要看一眼就知道圖片上有什么并且在哪里。(作者豪情萬丈_

*YOLO示意圖*

YOLO是非常簡單的:如上圖。一個(gè)單個(gè)卷積神經(jīng)網(wǎng)絡(luò)能夠同時(shí)預(yù)測多個(gè)bounding boxes以及他們的概率。YOLO在完整的圖像上訓(xùn)練,能夠直接優(yōu)化檢測性能。這種統(tǒng)一的模型比傳統(tǒng)的object detection方法有幾個(gè)好處。

  1. 快,非常快。我們的基礎(chǔ)版在Titan X GPU上可以達(dá)到45幀/s; 快速版可以達(dá)到150幀/s。因此,YOLO可以實(shí)現(xiàn)實(shí)時(shí)檢測。
  2. YOLO采用全圖信息來進(jìn)行預(yù)測。與滑動窗口方法和region proposal-based方法不同,YOLO在訓(xùn)練和預(yù)測過程中可以利用全圖信息。Fast R-CNN檢測方法會錯(cuò)誤的將背景中的斑塊檢測為目標(biāo),原因在于Fast R-CNN在檢測中無法看到全局圖像。相對于Fast R-CNN,YOLO背景預(yù)測錯(cuò)誤率低一半。
    訓(xùn)練YOLO,然后采用藝術(shù)圖像來預(yù)測。YOLO比其它目標(biāo)檢測方法(DPMR-CNN)準(zhǔn)確率高很多。
     但是,YOLO的準(zhǔn)確率沒有最好的檢測系統(tǒng)準(zhǔn)確率高。YOLO可以快速識別圖像中的目標(biāo),但是準(zhǔn)確定位目標(biāo)(特別是小目標(biāo))有點(diǎn)困難,我們將在實(shí)驗(yàn)中進(jìn)行權(quán)衡。

2. Unified Detection(統(tǒng)一檢測)

我們將object detection的單獨(dú)組件統(tǒng)一為單個(gè)神經(jīng)網(wǎng)絡(luò).我們的網(wǎng)絡(luò)使用整個(gè)圖像的特征來預(yù)測每個(gè)bounding boxes。他同時(shí)還可以預(yù)測所有的類的bounding boxes。YOLO的設(shè)計(jì)可實(shí)現(xiàn)端到端訓(xùn)練和實(shí)時(shí)檢測,同時(shí)保持較高的平均精度。


重點(diǎn)來了


系統(tǒng)將輸入的圖片劃分為S X S個(gè)小格子,如果物體的中心( 這里說的物體的中點(diǎn)應(yīng)該是指ground truth box中的物體的中心 )落入到某一個(gè)小格中,則對應(yīng)的小格負(fù)責(zé)檢測這個(gè)物體。

每個(gè)小格子預(yù)測B個(gè)bounding boxes以及對應(yīng)的置信度(confidence scores),這些置信度反映了box包含物體的信心以及準(zhǔn)確度(自己體會)。我們定義置信度為Pr(Object) ? IOUtruthpred.如果box中不存在物體,那么confidence scores0即意味著Pr(Object) =0),否則,我們希望預(yù)測的置信值和ground truth的intersection over union (IOU)相同(即意味著Pr(Object) =1)。
 每個(gè)bounding box由五個(gè)預(yù)測值組成:x,y,w,hconfidence(x,y)坐標(biāo)表示相對于網(wǎng)格單元邊界的框的中心。(w,h)為與全圖信息相關(guān)的box的寬和高。confidence代表了predicted box和任何 ground truth box的IOU。
  每個(gè)網(wǎng)格單元還預(yù)測 C 條件類概率Pr(Classi|Object),這些概率適用于包含對象的網(wǎng)格單元格,概率值C代表了格子包含一個(gè)目標(biāo)的概率,每個(gè)小格子只預(yù)測一組類概率,而不考慮框B的數(shù)量。在測試時(shí),每個(gè)box通過類別概率和box置信度相乘來得到特定類別置信度:

*特定類別的置信度*

這個(gè)分?jǐn)?shù)代表該類別出現(xiàn)在box中的概率和box和目標(biāo)的合適度

For evaluating YOLO on PASCAL VOC, we use S = 7, B = 2. PASCAL VOC has 20 labelled classes so C = 20.

2.1 Network Design(網(wǎng)絡(luò)結(jié)構(gòu))

模型采用卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。開始的卷積層提取圖像特征,全連接層預(yù)測輸出概率。模型結(jié)構(gòu)類似于GoogleNet,如下圖所示。我們還訓(xùn)練了YOLO的快速版本(fast YOLO)。Fast YOLO模型卷積層和filter更少。最終輸出為7×7×30的tensor。

*YOLO架構(gòu)圖*

每個(gè)grid有30維,這30維中,8維是回歸box的坐標(biāo),2維是box的confidence,還有20維是類別。 其中坐標(biāo)的x,y用對應(yīng)網(wǎng)格的offset歸一化到0-1之間,w,h用圖像的width和height歸一化到0-1之間。

圖片來自[知乎專欄](https://zhuanlan.zhihu.com/p/24916786)

2.2 Training

  • 采用ImageNet 1000-class 數(shù)據(jù)集來預(yù)訓(xùn)練卷積層。預(yù)訓(xùn)練階段,采用圖2-2網(wǎng)絡(luò)中的前20卷積層,外加average pooling層和全連接層。模型訓(xùn)練了一周,獲得了top-5 accuracy為0.88(ImageNet2012 validation set),與GoogleNet模型準(zhǔn)確率相當(dāng)。

  • 將模型轉(zhuǎn)換為檢測模型。作者向預(yù)訓(xùn)練模型中加入了4個(gè)卷積層和兩層全連接層,提高了模型輸入分辨率(224×224-->448×448)

  • 最終層預(yù)測類概率和bounding boxes坐標(biāo)。 通過圖像寬度和高度將邊界框?qū)挾群透叨葰w一化,使得它們落在0和1之間。我們將邊界框x和y坐標(biāo)參數(shù)化為特定網(wǎng)格單元位置的偏移,使得它們也在0和1之間 。

  • 頂層采用linear activation,其它層使用 leaky rectified linear。

*Leaky rectified linear activation*
  • 使用sum-squared error,因?yàn)楹苋菀變?yōu)化,但它不完全符合我們的最大化平均精度的目標(biāo)。預(yù)測概率的維數(shù)比預(yù)測bounding box的維數(shù)要高,把他們同等對待是不理想的。此外,在每個(gè)圖像中,許多網(wǎng)格單元不包含任何對象。 這將這些網(wǎng)格單元的“置信度”為零,通常壓倒包含對象的網(wǎng)格的梯度。 這可能導(dǎo)致模型不穩(wěn)定,導(dǎo)致訓(xùn)練早期發(fā)散。為了彌補(bǔ)這一點(diǎn),采用一個(gè)辦法就是加權(quán),賦予不同的權(quán)值,對于Pr(object)=0的格子令 λ_noobj = 0.5,對于Pr(object)=1的格子令 λ_coord = 5.
  • 對不同大小的bounding box預(yù)測中,相比于大box預(yù)測偏一點(diǎn),小box預(yù)測偏一點(diǎn)肯定更不能被忍受的。而sum-square error loss中對同樣的偏移loss是一樣。因此預(yù)測邊界框?qū)挾群透叨鹊钠椒礁皇菍挾群透叨龋?em>因?yàn)槠椒礁瘮?shù)的圖像隨著x的增大會變得平緩).
圖片來自[知乎專欄](https://zhuanlan.zhihu.com/p/24916786)
  • loss function
*The Loss Function*

loss function由五部分組成:(其中1iobji表示如果對象出現(xiàn)在單元格 i 中,表示如果對象出現(xiàn)在單元格i中,1iobjij表示網(wǎng)絡(luò)單元格 i 中的第 j 個(gè) bounding box預(yù)測器對于該預(yù)測的
objectresponsible
)

*Part 1 `(x,y)`的 `loss`*
*Part 2 `(w,h)`的 `loss`*
*Part 3 含預(yù)測的 `object`每個(gè) `bounding box`的 `confindence`的 `loss`*
*Part 4 不含預(yù)測的 `object`每個(gè) `bounding box`的 `confindence`的 `loss`*
*Part 5 `class probability`的 `loss`,是對每個(gè) `grid`而言,而不是 `bounding box`*

![圖片來自知乎專欄

Note

  • 只有當(dāng)某個(gè)網(wǎng)格中有object的時(shí)候才對classification error進(jìn)行懲罰。
  • 只有當(dāng)某個(gè)box predictor對某個(gè)ground truth box負(fù)責(zé)的時(shí)候,才會對box的coordinate error進(jìn)行懲罰,而對哪個(gè)ground truth box負(fù)責(zé)就看其預(yù)測值和ground truth box的IoU是不是在那個(gè)cell的所有box中最大。

2.3 Inference

對于PASCAL VOC數(shù)據(jù)集,模型需要對每張圖片預(yù)測98個(gè)bounding box和對應(yīng)的類別。對于大部分目標(biāo)只包含一個(gè)box;其它有些面積大的目標(biāo)包含了多個(gè)boxes,采用了Non-maximal suppression(非最大值抑制)來提高準(zhǔn)確率。

2.4 Limitations

  1. YOLO的每一個(gè)網(wǎng)格只預(yù)測兩個(gè)boxes,一種類別。這導(dǎo)致模型對相鄰目標(biāo)預(yù)測準(zhǔn)確率下降。因此,YOLO對成隊(duì)列的目標(biāo)(如 一群鳥)識別準(zhǔn)確率較低。
  2. YOLO是從數(shù)據(jù)中學(xué)習(xí)預(yù)測bounding boxes,因此,對新的或者不常見角度的目標(biāo)無法識別。
  3. YOLO的loss函數(shù)對small bounding boxeslarge bounding boxeserror平等對待,影響了模型識別準(zhǔn)確率。因?yàn)閷τ谛〉?code>bounding boxes,small error影響更大。

3. Comparison to Other Detection Systems && Experiments

挖個(gè)坑以后補(bǔ)上 _


使用訓(xùn)練好的模型進(jìn)行object detection(基于linux)

  • 安裝Darknet
git clone https://github.com/pjreddie/darknet.git  
cd darknet
make
  • 下載所需的權(quán)重文件
cd darknet/
wget http://pjreddie.com/media/files/yolo.weights
  • 測試,可以是data文件夾下的圖,也可以是自己的圖
./darknet detect cfg/yolo.cfg yolo.weights data/test.jpg
測試圖
效果圖,棒棒噠

才發(fā)現(xiàn)有一個(gè)ppt:強(qiáng)烈推薦
未明白的問題:歡迎各位解答或者批評指正

  1. 通過圖像寬度和高度將邊界框?qū)挾群透叨葰w一化,使得它們落在0和1之間。
    但是是怎么將邊界框x和y坐標(biāo)歸一化呢,在好像并沒有具體的解釋或者沒太懂作者的解釋。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,656評論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內(nèi)容