Yolo系列其一:Yolo_v1

介紹

當(dāng)前主流的CNN目標(biāo)檢測框架可分為兩類:包含Region proposals提取階段的兩階段目標(biāo)檢測框架如R-CNN系列像R-CNN/Fast-RCNN/Faster-FCNN/R-FCN等;端到端的單階段目標(biāo)檢測框架如Yolo系列像Yolo-v1/Yolo-v2/Yolo-v3及SSD蒜魄,和最近Facebook提出的RetinaNet等。簡單說來兩階段的檢測框架相對準(zhǔn)確率(mAP值)更高,但其速度較慢,很難滿足圖片或視頻實(shí)時性處理要求痘昌;單階段的檢測框架相對準(zhǔn)確率較低闸氮,但卻能在保證一定準(zhǔn)確率的情況下,擁有更快钥星、甚至實(shí)時的推理速度,因此在現(xiàn)實(shí)工程實(shí)踐中也獲得了較多的應(yīng)用满着。

Yolo系列模型是比較典型的端到端的單階段目標(biāo)檢測模型谦炒。憑著較快的速度及輕便的特性已經(jīng)在端側(cè)目標(biāo)檢測領(lǐng)域中得到了較大規(guī)模的應(yīng)用。本系列文章里面我們將從最早的Yolo-v1開始风喇,逐步分析下此系列模型是如何逐漸迭代發(fā)展的宁改。

Yolo概述

如前文所講,Yolo是一種端到端的目標(biāo)檢測網(wǎng)絡(luò)魂莫。它以resize過后的圖片為輸入还蹲,經(jīng)過前端的CNN特征提取網(wǎng)絡(luò)后,在生成的feature maps之上再使用CNN/Average Pool等層對特征進(jìn)一步融合耙考、整理谜喊,然后由后接的兩個fc層來直接生成圖片上每個位置節(jié)點(diǎn)所涵蓋的潛在目標(biāo)的類別、位置及置信度等信息倦始。最后再對這些潛在的目標(biāo)以其置信度信息來進(jìn)行過濾(即傳說中的極大值抵制斗遏,non-maximum suppression,NMS)鞋邑,以減少重復(fù)诵次、冗余的目標(biāo)框數(shù)目進(jìn)而加速并改良后須的loss值計(jì)算账蓉。總之它是一個由圖片輸入到圖片之上目標(biāo)輸出的端到端回歸模型逾一。下圖是Yolo目標(biāo)檢測框架的概括描述铸本。

Yolo檢測系統(tǒng)框架

Yolo詳解

  • 模型流水過程

Yolo會將輸入的圖片劃分為SxS的空間區(qū)域。然后模型會在每個空間節(jié)點(diǎn)(i,j; 0 <= i <= S, 0 <= j <= S)上檢測固定大小/分辨率的B個boxes遵堵。檢測的東西共有三樣:1)此節(jié)點(diǎn)上每個box所可能包含潛在目標(biāo)的概率大小即置信度(Pr(Object) ? IOUpredtruth)箱玷;2)此節(jié)點(diǎn)上每個box所具有的位置(即中心點(diǎn)x,y與box的h,w);3)每個節(jié)點(diǎn)上潛在目標(biāo)歸屬類別的概率分步(即Pi鄙早,0 <= i <= C汪茧,C為所有可能的類別數(shù)目)。
在部署訓(xùn)練好的模型時限番,結(jié)合網(wǎng)絡(luò)前向推理后生成的每個節(jié)點(diǎn)上的此三樣信息就能得到最終的檢測目標(biāo)。下圖可看出此一詳細(xì)流水過程呀舔。

Yolo具體模型
  • 模型網(wǎng)絡(luò)結(jié)構(gòu)

在Yolo模型中弥虐,作者采用了自己創(chuàng)造的Darknet作為其圖片特征處理主干網(wǎng)絡(luò)。它的思想有些借鑒Googlenet媚赖,即通過使用1x1的Conv層來減少filters數(shù)目并整合各個輸出channels的特征霜瘪。下圖為它的基本框架。此基本框架中共包含24個Conv層惧磺,其后又連接了兩個FC層來生成上文所提到的基本信息颖对。作者有試著減少Conv層的數(shù)目為9,并同時減少Conv層中所具有的filters的數(shù)目磨隘,最終生成了一個準(zhǔn)度稍降但速度更快的fast-Yolo模型缤底。

Darknet網(wǎng)絡(luò)結(jié)構(gòu)

論文中作者使用了S=7,B=2番捂,而PASCAL VOC數(shù)據(jù)集共有20類个唧,所以最終預(yù)測的模型輸出為(7x7x(2x5 + 20)的Tensor。

  • 模型訓(xùn)練

訓(xùn)練與推理的最大區(qū)別设预,在于我們需要提出一個合理的loss徙歼,才能讓模型得以按照我們的想法去進(jìn)行迭代優(yōu)化。如下為Yolo的loss計(jì)算公式鳖枕。

Yolo的loss函數(shù)公式

跟R-CNN一樣魄梯,它主要由兩部分組成即反映類別信息的Classification loss及反映目標(biāo)檢測框位置信息的localization loss。不過此外它還包含了反映目標(biāo)框置信度信息的loss(此部分loss與RPN網(wǎng)絡(luò)的confidential loss相似宾符,其的作用也大致相同)酿秸。為了抵制過多的background目標(biāo)框會使得那些真正有意義的、包含有明確物體的目標(biāo)框信息被湮沒吸奴,作者使用了外在的系數(shù)λcoord = 5 和 λnoobj = 0.5來人為對之做出糾正允扇。這確實(shí)是它非常丑的地方缠局,畢竟每一個需要手動調(diào)節(jié)的超參的加入都會直接導(dǎo)致一個模型的使用難度加大。

  • 模型推理

Yolo這種單階段目標(biāo)檢測模型的推理異常簡單考润,只需要對train好的模型作一次前向推理即能得到輸入圖片之上的目標(biāo)類別及其位置狭园。

在VOC數(shù)據(jù)集上,一次前向推理每張圖片可得到98個目標(biāo)檢測框及它們所對應(yīng)的類別概率分布糊治。在模型輸出的最后一般我們會對生成的多個boxes進(jìn)行NMS處理以減少重復(fù)唱矛、冗余的目標(biāo)框數(shù)目。此方法在R-CNN系列模型中亦得到過檢驗(yàn)井辜,可以有效地提升模型性能及準(zhǔn)確度绎谦。

  • Yolo的缺陷

由于Yolo通過直接在image level上劃分grid區(qū)域,然后每個區(qū)域指定固定數(shù)目的boxes粥脚,再對這些boxes作回歸檢測窃肠、分析,這可能會導(dǎo)致它不大能處理不同scales的目標(biāo)刷允。實(shí)驗(yàn)表明它在處理很小的群體目標(biāo)時性能極差冤留。同時它對那些固定數(shù)目boxes之外的其它新的分辨率模型檢測效果也不好。顯然加大每個Grid上不同size/aspect ratio的boxes數(shù)目可以比較有效地解決此一問題树灶,但如此以來又會導(dǎo)致其引以為傲的速度性能大打折扣纤怒。

此外因?yàn)樗鼉H使用最后一層的抽象CNN特征來得到目標(biāo)框的位置、類別等信息天通,因此生成出的目標(biāo)框不夠細(xì)化泊窘。

最后它的training loss計(jì)算中對不同大小的目標(biāo)框一視同仁,不加區(qū)分像寒。這導(dǎo)致它不能較好的對待小尺度的目標(biāo)框烘豹。實(shí)驗(yàn)表明localization error較大是它精度相對于Faster-FCNN模型不高的主要因素。

Yolo與其它檢測模型的比較

與Faster-RCNN等兩階段檢測框架相比萝映,Yolo檢測性能不如吴叶,但勝在速度較快,可滿足實(shí)時性要求序臂。與其它的號稱實(shí)時檢測框架如DPM等相比蚌卤,Yolo在速度不落下風(fēng)的同時,性能又可保持較高奥秆。下表為Yolo與其它檢測模型的實(shí)驗(yàn)結(jié)果比較逊彭。

Yolo與其它檢測模型的實(shí)驗(yàn)結(jié)果比較

代碼分析

在cfg/yovov1.cfg里面作者定義了darknet及yovov1 network head的結(jié)構(gòu)。若我們只關(guān)注模型本身构订,那么只看此配置文件即可侮叮,沒必要去費(fèi)精力了解darknet是如何解析其配置文件的。

如下為darknet在訓(xùn)練與推理時分別具有的輸入配置及其它超參數(shù)悼瘾。

[net]
# Testing
batch=1
subdivisions=1
# Training
# batch=64
# subdivisions=8
height=448
width=448
channels=3
momentum=0.9
decay=0.0005
saturation=1.5
exposure=1.5
hue=.1

learning_rate=0.0005
policy=steps
steps=200,400,600,20000,30000
scales=2.5,2,2,.1,.1
max_batches = 40000

以下為darknet特征提取網(wǎng)絡(luò)中間的若干conv層囊榜。审胸。可看出3x3與1x1網(wǎng)絡(luò)相互穿插的結(jié)構(gòu)特點(diǎn)卸勺。此外較為特殊的是它的activation函數(shù)用的都是leaky ReLu砂沛。另外1x1的conv也會使用pad(為1)。

[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1

darknet主干網(wǎng)絡(luò)的最后又添加了幾個Conv層曙求,用于特征細(xì)化碍庵,這對于pre-trained后的網(wǎng)絡(luò)進(jìn)行遷移學(xué)習(xí)非常有必要。

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky

[convolutional]
batch_normalize=1
size=3
stride=2
pad=1
filters=1024
activation=leaky

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky

[local]
size=3
stride=1
pad=1
filters=256
activation=leaky

最后就是最終的fc層及后須的位置悟狱、類別静浴、置信度等信息提取。

[dropout]
probability=.5

[connected]
output= 1715
activation=linear

[detection]
classes=20
coords=4
rescore=1
side=7
num=3
softmax=0
sqrt=1
jitter=.2

object_scale=1
noobject_scale=.5
class_scale=1
coord_scale=5

參考文獻(xiàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挤渐,一起剝皮案震驚了整個濱河市苹享,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挣菲,老刑警劉巖富稻,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異白胀,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)抚岗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門或杠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宣蔚,你說我怎么就攤上這事向抢。” “怎么了胚委?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵挟鸠,是天一觀的道長。 經(jīng)常有香客問我亩冬,道長艘希,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任硅急,我火速辦了婚禮覆享,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘营袜。我一直安慰自己撒顿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布荚板。 她就那樣靜靜地躺著凤壁,像睡著了一般吩屹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拧抖,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天煤搜,我揣著相機(jī)與錄音,去河邊找鬼徙鱼。 笑死宅楞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的袱吆。 我是一名探鬼主播厌衙,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼绞绒!你這毒婦竟也來了婶希?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蓬衡,失蹤者是張志新(化名)和其女友劉穎喻杈,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狰晚,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡筒饰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了壁晒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓷们。...
    茶點(diǎn)故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖秒咐,靈堂內(nèi)的尸體忽然破棺而出谬晕,到底是詐尸還是另有隱情,我是刑警寧澤携取,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布攒钳,位于F島的核電站,受9級特大地震影響雷滋,放射性物質(zhì)發(fā)生泄漏不撑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一惊豺、第九天 我趴在偏房一處隱蔽的房頂上張望燎孟。 院中可真熱鬧,春花似錦尸昧、人聲如沸揩页。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爆侣。三九已至萍程,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間兔仰,已是汗流浹背茫负。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留乎赴,地道東北人忍法。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像榕吼,于是被迫代替她去往敵國和親饿序。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評論 2 359

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