YOLO v1 《You Only Look Once: Unified, Real-Time Object Detection》

在目標(biāo)檢測(cè)算法中募壕,faster R-CNN達(dá)到了目前的最高mAP精度镰踏。雖然mAP使用的是一體化網(wǎng)絡(luò)念链,但是其訓(xùn)練過(guò)程卻沒(méi)有實(shí)現(xiàn)端到端,是通過(guò)多步訓(xùn)練的贝润,其仍然沒(méi)有能避免提取region proposal這一步绊茧。雖然faster R-CNN精度很高,但是其檢測(cè)速度卻不是很快打掘,難以達(dá)到實(shí)時(shí)檢測(cè)水平华畏,這使得它難以應(yīng)用到實(shí)際工程中。本文作者提出了一種真正的端到端網(wǎng)絡(luò)尊蚁,不僅檢測(cè)速度快亡笑,而且檢測(cè)的mAP精度高,泛化能力強(qiáng)横朋。

下面內(nèi)容主要轉(zhuǎn)載自<機(jī)器愛(ài)學(xué)習(xí)>YOLO v1深入理解

1仑乌、網(wǎng)絡(luò)結(jié)構(gòu)

YOLO使用的網(wǎng)絡(luò)基礎(chǔ)來(lái)源于GoogLeNet,只是將其中的inception module使用3x3和1x1的卷積代替了琴锭。網(wǎng)絡(luò)結(jié)構(gòu)如下:

1.1 輸入與輸出

網(wǎng)絡(luò)的輸入采用的是448x448大小的圖片晰甚。而輸出則是一個(gè)7x7*30的向量,下面對(duì)這個(gè)輸出向量進(jìn)行詳細(xì)解釋决帖。

1.1.1 7x7網(wǎng)格

7x7表示輸入圖像被分成多少個(gè)網(wǎng)格厕九,最后每一塊都會(huì)輸出一個(gè)預(yù)測(cè)結(jié)果,因此是7x7個(gè)預(yù)測(cè)結(jié)果古瓤。而每個(gè)網(wǎng)格的預(yù)測(cè)結(jié)果又包括30個(gè)值止剖。

1.1.2 30維向量

在本文中每個(gè)網(wǎng)格的預(yù)測(cè)結(jié)果包括30個(gè)值腺阳,如圖:
圖片來(lái)自https://zhuanlan.zhihu.com/p/46691043
  • 20個(gè)對(duì)象分類(lèi)概率落君。由于本文中數(shù)據(jù)集有20個(gè)不同的類(lèi)別,因此這里是20個(gè)類(lèi)別的概率亭引;
  • 2個(gè)bounding box的置信度绎速。bounding box的置信度 = 該bbox存在對(duì)象的概率 * 該bbox與該對(duì)象實(shí)際bbox的IOU,即 Confidence = Pr(Object) * IOU焙蚓;
  • 2個(gè)bounding box的位置纹冤。這里之所以是兩個(gè)bbox是因?yàn)槲闹性O(shè)置的每個(gè)網(wǎng)格中只預(yù)測(cè)兩個(gè)bounding box的輸出結(jié)果。位置信息包括bbox中心坐標(biāo)(x购公,y)和其寬高(width萌京,height)。

需要注意的是這里有兩個(gè)概率:confidence中提到的一個(gè)bbox中存在對(duì)象的概率和這個(gè)對(duì)象屬于某個(gè)類(lèi)別的概率宏浩。

因此最后輸出會(huì)有7x7 * ((bbox+confidence)*bbox_num + C)個(gè)結(jié)果知残,其中C表示類(lèi)別個(gè)數(shù)。雖然每個(gè)格子都有兩個(gè)bbox比庄,但是其實(shí)最后一個(gè)格子只輸出一個(gè)結(jié)果求妹,采用的非極大抑制選擇預(yù)測(cè)的比較好的那個(gè)乏盐。在本文中最后的輸出就是7x7 * ((4+1)* 2 + 20)

2、訓(xùn)練階段

在訓(xùn)練時(shí)先使用ImageNet 1000分類(lèi)預(yù)訓(xùn)練模型制恍,需要注意的是預(yù)訓(xùn)練時(shí)候輸入圖片的大小是224父能。而在檢測(cè)訓(xùn)練時(shí),又在模型中添加了4個(gè)卷積層和兩個(gè)全連接層净神,這幾層的權(quán)重都是隨機(jī)初始化的何吝,這樣能提高網(wǎng)絡(luò)的性能。最后的預(yù)測(cè)使用的是leaky ReLU鹃唯。

2.1 訓(xùn)練樣本構(gòu)造

在上面我們知道了YOLO網(wǎng)絡(luò)的輸出是什么樣子的岔霸。接下來(lái)我們看看如何準(zhǔn)備訓(xùn)練集。


圖片來(lái)自https://zhuanlan.zhihu.com/p/46691043

(1)20個(gè)對(duì)象分類(lèi)的概率
對(duì)于輸入圖像中的每個(gè)對(duì)象俯渤,先找到其中心點(diǎn)呆细。比如圖8中的自行車(chē),其中心點(diǎn)在黃色圓點(diǎn)位置八匠,中心點(diǎn)落在黃色網(wǎng)格內(nèi)絮爷,所以這個(gè)黃色網(wǎng)格對(duì)應(yīng)的30維向量中,自行車(chē)的概率是1梨树,其它對(duì)象的概率是0坑夯。所有其它48個(gè)網(wǎng)格的30維向量中,該自行車(chē)的概率都是0抡四。這就是所謂的"中心點(diǎn)所在的網(wǎng)格對(duì)預(yù)測(cè)該對(duì)象負(fù)責(zé)"柜蜈。狗和汽車(chē)的分類(lèi)概率也是同樣的方法填寫(xiě)。

(2)2個(gè)bounding box的位置
訓(xùn)練樣本的bounding box位置應(yīng)該填寫(xiě)對(duì)象實(shí)際的bounding box指巡,但一個(gè)對(duì)象對(duì)應(yīng)了2個(gè)bounding box淑履,該填哪一個(gè)呢?上面討論過(guò)藻雪,需要根據(jù)網(wǎng)絡(luò)輸出的bounding box與對(duì)象實(shí)際bounding box的IOU來(lái)選擇秘噪,所以要在訓(xùn)練過(guò)程中動(dòng)態(tài)決定到底填哪一個(gè)bounding box。參考下面第③點(diǎn)勉耀。

(3)2個(gè)bounding box的置信度

置信度公式:

上式中的IOU可以利用預(yù)測(cè)的bounding box與gt bounding box一起計(jì)算出IOU指煎。

然后看2個(gè)bounding box的IOU,哪個(gè)比較大(更接近對(duì)象實(shí)際的bounding box)便斥,就由哪個(gè)bounding box來(lái)負(fù)責(zé)預(yù)測(cè)該對(duì)象是否存在至壤,即該bounding box的Pr(Object)=1,同時(shí)對(duì)象真實(shí)bounding box的位置也就填入該bounding box枢纠。另一個(gè)不負(fù)責(zé)預(yù)測(cè)的bounding box的 Pr(Object)=0像街。

總的來(lái)說(shuō)就是,與對(duì)象實(shí)際bounding box最接近的那個(gè)bounding box,其 confidence = IOU宅广,該網(wǎng)格的其他bounding box的confidence = 0葫掉。

舉個(gè)例子,比如上圖中自行車(chē)的中心點(diǎn)位于4行3列網(wǎng)格中跟狱,所以輸出tensor中4行3列位置的30維向量如下圖所示俭厚。
圖片來(lái)自https://zhuanlan.zhihu.com/p/46691043

簡(jiǎn)單說(shuō)這張圖片的GT就是第4行第3列的網(wǎng)格處有一輛自行車(chē),它的中心點(diǎn)在這個(gè)網(wǎng)格內(nèi)驶臊,它的位置邊框是bounding box1所填寫(xiě)的自行車(chē)實(shí)際邊框挪挤。

注意,圖中將自行車(chē)的位置放在bounding box1关翎,但實(shí)際上是在訓(xùn)練過(guò)程中等網(wǎng)絡(luò)輸出以后扛门,比較兩個(gè)bounding box與自行車(chē)實(shí)際位置的IOU,自行車(chē)的位置(實(shí)際bounding box)放置在IOU比較大的那個(gè)bounding box(圖中假設(shè)是bounding box1)纵寝,且該bounding box的置信度設(shè)為1论寨。

2.2 損失函數(shù)
圖片來(lái)自https://zhuanlan.zhihu.com/p/46691043

YOLO的損失函數(shù)如下:
圖片來(lái)自https://zhuanlan.zhihu.com/p/46691043

上面公式中1可以理解成指示函數(shù){0,1}:

  • 1iobj意思是網(wǎng)格i中存在對(duì)象;
  • 1ijobj意思是網(wǎng)格i的第j個(gè)bounding box中存在對(duì)象;
  • 1ijnoobj意思是網(wǎng)格i的第j個(gè)bounding box中不存在對(duì)象爽茴。

總的來(lái)說(shuō)葬凳,就是用網(wǎng)絡(luò)輸出與樣本標(biāo)簽的各項(xiàng)內(nèi)容的誤差平方和作為一個(gè)樣本的整體誤差。 損失函數(shù)中的幾個(gè)項(xiàng)是與輸出的30維向量中的內(nèi)容相對(duì)應(yīng)的室奏。

(1)分類(lèi)誤差
公式第5行火焰, 1iobj值為1即存在對(duì)象時(shí)才計(jì)算誤差。

(2)bounding box的位置誤差
公式第1行和第2行胧沫。
a) 都帶有1ijobj意味著只有"負(fù)責(zé)"(IOU比較大)預(yù)測(cè)的那個(gè)bounding box的數(shù)據(jù)才會(huì)計(jì)入誤差昌简。

b)第2行寬度和高度先取了平方根,因?yàn)槿绻苯尤〔钪档脑捜拊梗蟮膶?duì)象對(duì)差值的敏感度較低纯赎,小的對(duì)象對(duì)差值的敏感度較高,所以取平方根可以降低這種敏感度的差異窖逗,使得較大的對(duì)象和較小的對(duì)象在尺寸誤差上有相似的權(quán)重址否。

c)乘以λcoord調(diào)節(jié)bounding box位置誤差的權(quán)重(相對(duì)分類(lèi)誤差和置信度誤差)餐蔬。YOLO設(shè)置 λcoord=5碎紊,即調(diào)高位置誤差的權(quán)重。

(3)bounding box置信度誤差
公式第3行和第4行樊诺。

a)第3行是存在對(duì)象的bounding box的置信度誤差仗考。帶有1ijobj意味著只有"負(fù)責(zé)"(IOU比較大)預(yù)測(cè)的那個(gè)bounding box的置信度才會(huì)計(jì)入誤差。

b)第4行是不存在對(duì)象的bounding box的置信度誤差词爬。因?yàn)椴淮嬖趯?duì)象的bounding box應(yīng)該老老實(shí)實(shí)的說(shuō)"我這里沒(méi)有對(duì)象"秃嗜,也就是輸出盡量低的置信度。如果它不恰當(dāng)?shù)妮敵鲚^高的置信度,會(huì)與真正"負(fù)責(zé)"該對(duì)象預(yù)測(cè)的那個(gè)bounding box產(chǎn)生混淆锅锨。其實(shí)就像對(duì)象分類(lèi)一樣叽赊,正確的對(duì)象概率最好是1,所有其它對(duì)象的概率最好是0必搞。

c)第4行會(huì)乘以 λnoobj調(diào)節(jié)不存在對(duì)象的bounding box的置信度的權(quán)重(相對(duì)其它誤差)必指。YOLO設(shè)置λnoobj=0.5,即調(diào)低不存在對(duì)象的bounding box的置信度誤差的權(quán)重恕洲。

3塔橡、預(yù)測(cè)

訓(xùn)練好的YOLO網(wǎng)絡(luò),輸入一張圖片霜第,將輸出一個(gè) 7730 的張量(tensor)來(lái)表示圖片中所有網(wǎng)格包含的對(duì)象(概率)以及該對(duì)象可能的2個(gè)位置(bounding box)和可信程度(置信度)葛家。 為了從中提取出最有可能的那些對(duì)象和位置,YOLO采用NMS(Non-maximal suppression泌类,非極大值抑制)算法癞谒。

3.1 NMS(非極大值抑制)

NMS方法并不復(fù)雜,其核心思想是:選擇得分最高的作為輸出刃榨,與該輸出重疊的去掉扯俱,不斷重復(fù)這一過(guò)程直到所有備選處理完。

YOLO的NMS計(jì)算方法如下:
網(wǎng)絡(luò)輸出的7*7*30的張量喇澡,在每一個(gè)網(wǎng)格中迅栅,對(duì)象Ci位于第j個(gè)bounding box的得分:


它代表著某個(gè)對(duì)象 Ci存在于第j個(gè)bounding box的可能性。

每個(gè)網(wǎng)格有:20個(gè)對(duì)象的概率*2個(gè)bounding box的置信度晴玖,共40個(gè)得分(候選對(duì)象)读存。49個(gè)網(wǎng)格共1960個(gè)得分。Andrew Ng建議每種對(duì)象分別進(jìn)行NMS呕屎,那么每種對(duì)象有 1960/20=98 個(gè)得分让簿。

NMS步驟如下:

  • 1)設(shè)置一個(gè)Score的閾值,低于該閾值的候選對(duì)象排除掉(將該Score設(shè)為0)秀睛;
  • 2)遍歷每一個(gè)對(duì)象類(lèi)別尔当;
  • 2.1)遍歷該對(duì)象的98個(gè)得分;
    2.1.1)找到Score最大的那個(gè)對(duì)象及其bounding box蹂安,添加到輸出列表椭迎;
    2.1.2)對(duì)每個(gè)Score不為0的候選對(duì)象,計(jì)算其與上面2.1.1輸出對(duì)象的bounding box的IOU田盈;
    2.1.3)根據(jù)預(yù)先設(shè)置的IOU閾值畜号,所有高于該閾值(重疊度較高)的候選對(duì)象排除掉(將Score設(shè)為0);
    2.1.4)如果所有bounding box要么在輸出列表中允瞧,要么Score=0简软,則該對(duì)象類(lèi)別的NMS完成蛮拔,返回步驟2處理下一種對(duì)象;
    3)輸出列表即為預(yù)測(cè)的對(duì)象痹升。

小結(jié)

YOLO以速度見(jiàn)長(zhǎng)建炫,處理速度可以達(dá)到45fps,其快速版本(網(wǎng)絡(luò)較刑鄱辍)甚至可以達(dá)到155fps踱卵。這得益于其識(shí)別和定位合二為一的網(wǎng)絡(luò)設(shè)計(jì),而且這種統(tǒng)一的設(shè)計(jì)也使得訓(xùn)練和預(yù)測(cè)可以端到端的進(jìn)行据过,非常簡(jiǎn)便惋砂。

不足之處是(1)小對(duì)象檢測(cè)效果不太好(尤其是一些聚集在一起的小對(duì)象),(2)對(duì)邊框的預(yù)測(cè)準(zhǔn)確度不是很高绳锅,總體預(yù)測(cè)精度略低于Fast RCNN西饵。主要是因?yàn)榫W(wǎng)格設(shè)置比較稀疏,而且每個(gè)網(wǎng)格只預(yù)測(cè)兩個(gè)邊框鳞芙,另外Pooling層會(huì)丟失一些細(xì)節(jié)信息眷柔,對(duì)定位存在影響。 (3)模型的loss函數(shù)對(duì)待小bounding box和大bounding box是一樣的原朝,而實(shí)際上小bounding box的IOU error的影響是要遠(yuǎn)大于大bounding box 的IOU error影響的驯嘱。

參考:
You Only Look Once: Unified, Real-Time Object Detection.
<機(jī)器愛(ài)學(xué)習(xí)>YOLO v1深入理解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市喳坠,隨后出現(xiàn)的幾起案子鞠评,更是在濱河造成了極大的恐慌,老刑警劉巖壕鹉,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剃幌,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡晾浴,警方通過(guò)查閱死者的電腦和手機(jī)负乡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)脊凰,“玉大人抖棘,你說(shuō)我怎么就攤上這事±暧浚” “怎么了切省?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)杈抢。 經(jīng)常有香客問(wèn)我数尿,道長(zhǎng),這世上最難降的妖魔是什么惶楼? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上歼捐,老公的妹妹穿的比我還像新娘何陆。我一直安慰自己,他們只是感情好豹储,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布贷盲。 她就那樣靜靜地躺著,像睡著了一般剥扣。 火紅的嫁衣襯著肌膚如雪巩剖。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,488評(píng)論 1 302
  • 那天钠怯,我揣著相機(jī)與錄音佳魔,去河邊找鬼。 笑死晦炊,一個(gè)胖子當(dāng)著我的面吹牛鞠鲜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播断国,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼贤姆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了稳衬?” 一聲冷哼從身側(cè)響起霞捡,我...
    開(kāi)封第一講書(shū)人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎薄疚,沒(méi)想到半個(gè)月后弄砍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡输涕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年音婶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莱坎。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡衣式,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出檐什,到底是詐尸還是另有隱情碴卧,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布乃正,位于F島的核電站住册,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏瓮具。R本人自食惡果不足惜荧飞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一凡人、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧叹阔,春花似錦挠轴、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至睛藻,卻和暖如春启上,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背店印。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工冈在, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吱窝。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓讥邻,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親院峡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子兴使,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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