OD_0_yolov1-v3全解析

1. Introduction

  1. yolo從v1-v2-v3做了一步步迭代饱亮,從速度兆旬、精度、強(qiáng)度都有了顯著的提高隧出。yolo的核心思想在v1中提出踏志,在v2中結(jié)合其他研究者的工作做了各方面的改進(jìn),在v3中使用了許多技巧進(jìn)一步優(yōu)化胀瞪。
  2. yolo將以往目標(biāo)檢測(cè)的two stage方法縮減成one stage针余,它將以往region proposal的過(guò)程融合到后續(xù)的分類(lèi)任務(wù)中,將目標(biāo)的定位和分類(lèi)用一個(gè)end to end的神經(jīng)網(wǎng)絡(luò)作為回歸問(wèn)題求解凄诞。
  3. 效果與其他網(wǎng)絡(luò)對(duì)比起來(lái)圆雁,很快,背景誤判率低帆谍,通用性強(qiáng)伪朽,但定位精準(zhǔn)性稍差。

2. yolov1

總體流程

yolo先將圖像切分成s*s個(gè)grid(單元格)汛蝙,讓每一個(gè)grid負(fù)責(zé)檢測(cè)中心點(diǎn)落入該格的目標(biāo)烈涮,預(yù)測(cè)出B個(gè)bounding box定位目標(biāo)并給出目標(biāo)類(lèi)別朴肺。

  • bounding box中有一個(gè)5維坐標(biāo)(x,y,w,h,C),分別代表框的位置坚洽、寬高戈稿、置信度。
  • x讶舰,y是bounding box中心位置相對(duì)于當(dāng)前格子位置的偏移值鞍盗,并且被歸一化到0-1;
  • w和h是用原圖的寬高進(jìn)行歸一化到0-1绘雁;
  • 置信度反映當(dāng)前框是否包含物體以及位置的準(zhǔn)確性橡疼,計(jì)算為C = Pr(object) * IOU^{truth}_{pred}援所,IOU也歸一化到0-1庐舟。
  • 整個(gè)模型輸入是image,輸出是S*S*(B*5+C)的張量住拭。

結(jié)構(gòu)

yolo網(wǎng)絡(luò)由24個(gè)卷積層和2個(gè)全連接層組成挪略。卷積層用于提取特征,全連接層用于定位和分類(lèi)滔岳。
它借鑒了googleNet的結(jié)構(gòu)杠娱,但是未使用inception模塊,僅用11和33卷積核簡(jiǎn)單替代谱煤,減小了模型的復(fù)雜度摊求。

Loss

它的loss很簡(jiǎn)單又很巧妙,使用誤差平方和(sum-square error)
loss=\sum_{i=0}^{s^2}(coordError^2+iouError^2+classError^2刘离。
由于定位誤差和分類(lèi)誤差對(duì)網(wǎng)絡(luò)的loss的貢獻(xiàn)值是不同的室叉,因此加上了坐標(biāo)誤差權(quán)值\lambda_{coord},給無(wú)物體的IOU誤差權(quán)值\lambda_{noobj}硫惕;
又因?yàn)閷捀咤e(cuò)誤對(duì)大物體的影響應(yīng)該小于小物體的影響茧痕,所以給寬高加上了根號(hào),但并不能完全解決這個(gè)問(wèn)題恼除。最后得到一個(gè)形式稍復(fù)雜一點(diǎn)的loss公式踪旷。

image.png

訓(xùn)練過(guò)程

  1. 預(yù)訓(xùn)練,使用前20個(gè)conv和1個(gè)ave pool和1個(gè)全連接做預(yù)訓(xùn)練豁辉。
  2. 用預(yù)訓(xùn)練得到的20層conv初始化yolo的前20層令野,為了提高精度,將輸入圖像從224*224 resize到448*448
  3. 使用了leaky ReLU徽级,dropout气破,data augmentation
  4. 調(diào)整學(xué)習(xí)率。第一個(gè)epoch從0.001到0.01灰追,然后0.01持續(xù)75epoch堵幽,0.001持續(xù)30epochs狗超,0.0001持續(xù)30epochs

缺陷:

  1. 由于輸出為全連接,所以輸入圖像分辨率大小都要一致
  2. 有很強(qiáng)的空間約束朴下,每個(gè)格子只能預(yù)測(cè)一個(gè)目標(biāo)努咐。每個(gè)格子雖然有B個(gè)bounding box,但是只選擇IOU最高的bounding box做預(yù)測(cè)殴胧,所以有B*5個(gè)坐標(biāo)值渗稍,只有C個(gè)類(lèi)別概率,輸出為(B*5+C)团滥,而不是B*(5+C)竿屹。
  3. 對(duì)小物體的預(yù)測(cè)不好
  4. 對(duì)于長(zhǎng)寬比例的適應(yīng)性不是太強(qiáng)

3. yolov2

yolov2提高了精度、速度灸姊、廣泛度拱燃。

精度的提高主要表現(xiàn)在對(duì)recall的提高。做了以下的修改力惯。

  1. 加上BN碗誉,并去除了其他正則化方法如dropout,保證不過(guò)擬合父晶。

  2. 使用高分辨率的圖像分類(lèi)器哮缺,將預(yù)訓(xùn)練的圖像從224*224直接轉(zhuǎn)為448*448。
    [圖片上傳中...(image.png-1ced27-1555252428685-0)]

  3. 加上了anchor機(jī)制

    • 移除了最后的全連接(使用conv和GAP替代)和一個(gè)池化層(為了使分辨率不減小一半)甲喝,使recall從81%加到了88%尝苇。將圖像從448改成416,因?yàn)樵摼W(wǎng)絡(luò)最后是將圖像縮小了32倍埠胖,416除32會(huì)得到一個(gè)奇數(shù)13糠溜,這樣可以使每個(gè)grid有一個(gè)唯一的中心點(diǎn)而不是像偶數(shù)有4個(gè)。

    • 由于傳統(tǒng)anchor的大小比例是手動(dòng)設(shè)置為(8,16,32)*(1:2,1:1,2:1)共9個(gè)押袍,而如果能直接使用更好的anchor肯定會(huì)對(duì)網(wǎng)絡(luò)效果有利诵冒。這里使用了一種改進(jìn)的k-means算法來(lái)自動(dòng)產(chǎn)生prior anchor(先驗(yàn)框)。在選擇kmeans的距離時(shí)發(fā)現(xiàn)谊惭,L2距離在這個(gè)任務(wù)中不太適用汽馋。因?yàn)閎ox尺寸大時(shí)其誤差也會(huì)變大,而我們希望和尺寸關(guān)系較小圈盔,而和是否吻合ground truth較大豹芯,所以將距離函數(shù)設(shè)置為 d=1-IOU。在k定為5時(shí)驱敲,就取得了傳統(tǒng)的9個(gè)anchor的效果铁蹈;k=9時(shí)則遠(yuǎn)超傳統(tǒng)anchor。


      image.png

      image.png
    • 引入了anchor后众眨,訓(xùn)練變得不穩(wěn)定握牧。改進(jìn)了anchor的坐標(biāo)公式容诬,之前r-cnn中是全局的偏移,這里改成預(yù)測(cè)相對(duì)于grid的偏移沿腰。使用坐標(biāo)公式:xy=該grid左上角相對(duì)于圖片的偏移cxcy+預(yù)測(cè)的xy览徒。wh=先驗(yàn)框的寬高*e^twth


      image.png

      image.png
  4. 為了得到細(xì)粒度特征,類(lèi)似resnet的shortcut引入了passthrough層颂龙,直接將高像素特征和低像素特征concatenate习蓬,使多級(jí)別的特征在最后的預(yù)測(cè)中都起到效果,提高了小物體的正確率措嵌。

  5. 采用多尺度圖片訓(xùn)練躲叼。把原先固定輸入圖片大小改成了動(dòng)態(tài)調(diào)整輸入圖像大小,每10個(gè)batch就在range(320,608,32)中隨機(jī)選出一個(gè)大小訓(xùn)練企巢。這個(gè)操作強(qiáng)制讓網(wǎng)絡(luò)學(xué)習(xí)多個(gè)分辨率的圖像枫慷,提高了適應(yīng)性。

速度上包斑,

提出了darknet19模型流礁,19*卷積層+5max pooling+1GAP(global average pooling)涕俗,取得了很快的速度罗丰。

image.png

廣泛度

主要體現(xiàn)在yolo9000可以對(duì)超過(guò)9000個(gè)類(lèi)別的目標(biāo)進(jìn)行檢測(cè)。引入了分層預(yù)測(cè)的機(jī)制再姑,把類(lèi)別標(biāo)簽從imagenet的橫向改成了wordnet的圖式構(gòu)造萌抵。在預(yù)測(cè)一個(gè)物體時(shí),逐層預(yù)測(cè)元镀,使用條件概率绍填,增加準(zhǔn)確性。


image.png

4. yolov3

yolov3是增量式改動(dòng)栖疑,也借鑒了他人的諸多工作讨永,提出了darknet53模型。幾個(gè)重點(diǎn)是:
1遇革、多分類(lèi)卿闹;2、多尺度萝快;3锻霎、引入resnet。

定位上使用logistic regression

對(duì)anchor包圍的部分進(jìn)行評(píng)分揪漩,判定該位置是目標(biāo)的可能性有多大旋恼。這一步是在predict之前進(jìn)行的,可以去掉不必要anchor奄容,可以減少計(jì)算量冰更。
logistic回歸就是用曲線對(duì)prior相對(duì)于 objectness score映射關(guān)系的線性建模产徊。如果先驗(yàn)邊界框與真實(shí)框的重疊度比之前的任何其他邊界框都要好,則該值應(yīng)該為1蜀细。 如果先驗(yàn)邊界框不是最好的囚痴,但確實(shí)與真實(shí)對(duì)象的重疊超過(guò)某個(gè)閾值(這里是0.5),那么就忽略這次預(yù)測(cè)审葬。YOLOv3只為每個(gè)真實(shí)對(duì)象分配一個(gè)邊界框深滚,如果先驗(yàn)邊界框與真實(shí)對(duì)象不吻合,則不會(huì)產(chǎn)生坐標(biāo)或類(lèi)別預(yù)測(cè)損失涣觉,只會(huì)產(chǎn)生物體預(yù)測(cè)損失痴荐。

分類(lèi)上不使用softmax,而采用logistic

支持多標(biāo)簽的預(yù)測(cè)官册,而非單標(biāo)簽生兆。當(dāng)一張圖像經(jīng)過(guò)特征提取后的某一類(lèi)輸出經(jīng)過(guò)sigmoid函數(shù)約束后如果大于0.5,就表示屬于該類(lèi)膝宁。在loss函數(shù)中使用了二分類(lèi)交叉熵鸦难。

多尺度預(yù)測(cè)(FPN)

將高維的特征和低維的特征連接,得到3層特征员淫,對(duì)這三層特征分別做預(yù)測(cè)合蔽。每一個(gè)scale都輸出S*S*B*(5+C)替代了之前的S*S*(B*5+C),將v2中提到的k-means的k改成了9介返。

基于yolov2的結(jié)構(gòu)拴事,提出了darknet53

使用了residual block。用了更少的浮點(diǎn)運(yùn)算圣蝎,并且每秒浮點(diǎn)運(yùn)算更高刃宵。
整個(gè)v3中,取消了池化層徘公,圖像縮小是通過(guò)改變卷積核步長(zhǎng)實(shí)現(xiàn)的牲证,想縮小一半邊長(zhǎng),就設(shè)stride=2关面。在最后的輸出層坦袍,借鑒了FPN(feature pyramid networks)采用多尺度對(duì)不同size的目標(biāo)進(jìn)行檢測(cè)。


image.png

5. 參考

  1. YOLO系列之yolo v2
  2. YOLO v2算法詳解
  3. yolo系列之yolo v3【深度解析】(無(wú)圖無(wú)真相)
  4. YOLO v3算法筆記(該抓的重點(diǎn)都抓到了)
  5. 目標(biāo)檢測(cè)網(wǎng)絡(luò)之 YOLOv3(v1-v3合集)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缭裆,一起剝皮案震驚了整個(gè)濱河市键闺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌澈驼,老刑警劉巖辛燥,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡挎塌,警方通過(guò)查閱死者的電腦和手機(jī)徘六,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)榴都,“玉大人待锈,你說(shuō)我怎么就攤上這事∽旄撸” “怎么了竿音?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)拴驮。 經(jīng)常有香客問(wèn)我春瞬,道長(zhǎng),這世上最難降的妖魔是什么套啤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任宽气,我火速辦了婚禮,結(jié)果婚禮上潜沦,老公的妹妹穿的比我還像新娘萄涯。我一直安慰自己,他們只是感情好唆鸡,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布涝影。 她就那樣靜靜地躺著,像睡著了一般喇闸。 火紅的嫁衣襯著肌膚如雪袄琳。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天燃乍,我揣著相機(jī)與錄音,去河邊找鬼宛琅。 笑死刻蟹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嘿辟。 我是一名探鬼主播舆瘪,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼红伦!你這毒婦竟也來(lái)了英古?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤昙读,失蹤者是張志新(化名)和其女友劉穎召调,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唠叛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年只嚣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艺沼。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡册舞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出障般,到底是詐尸還是另有隱情调鲸,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布挽荡,位于F島的核電站线得,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏徐伐。R本人自食惡果不足惜贯钩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望办素。 院中可真熱鬧角雷,春花似錦、人聲如沸性穿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)需曾。三九已至吗坚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間呆万,已是汗流浹背商源。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谋减,地道東北人牡彻。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像出爹,于是被迫代替她去往敵國(guó)和親庄吼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350