目標(biāo)檢測-YOLOv3

傳統(tǒng)的目標(biāo)檢測算法適用的場景有限临燃,而且維護成本很大。深度學(xué)習(xí)方法應(yīng)用于目標(biāo)檢測蒜田,不僅算法適應(yīng)性好稿械,還可以進行遷移學(xué)習(xí),降低成本冲粤。

1. 基礎(chǔ)概念

深度學(xué)習(xí)目標(biāo)檢測算法中美莫,基于錨框(Anchor)的方法主要分為一階段方法和兩階段方法。

兩階段方法先對感興趣的區(qū)域進行選擇梯捕,然后進一步對候選框內(nèi)做分類和回歸厢呵,最終輸出選擇的框以及對應(yīng)的分類。兩階段的模型有R-CNN系列傀顾,比如R-CNN襟铭,F(xiàn)ast-RCNN,F(xiàn)aster-RCNN等短曾。兩階段模型的優(yōu)點是精度高寒砖,但是速度及較慢。

一階段方法直接對anchor進行回歸和分類嫉拐,得到最終目標(biāo)框和類別哩都,算法有YOLOv2,v3婉徘,SSD漠嵌,RetinaNet等。一階段模型的推理速度較快盖呼,但是相對的精度會下降一些儒鹿。

此外還有一些anchor-free的方法,包括基于關(guān)鍵點的檢測算法以及基于中心檢測算法等塌计。

下面是一些基礎(chǔ)概念和縮寫:
BBox:Bounding Box 邊界框
Anchor:錨框
RoI: Region of Interest 特定的感興趣區(qū)域
Region Proposal: 候選區(qū)域
RPN: Region proposal network 提取候選區(qū)域的網(wǎng)絡(luò)
IoU: Intersaction over Union (Area of Overlap/ Area of Union) 交并比,預(yù)測框的質(zhì)量
mAP:mean average precision
NMS:non-maximum suppression 非極大值抑制

2. YOLO

YOLO系列的模型在保有一定精度的基礎(chǔ)上擁有很快的推理速度挺身,在下面圖中YOLOv3的推理速度遠(yuǎn)超其他模型,因此在實時監(jiān)測領(lǐng)域中有很好的應(yīng)用锌仅。


推理速度比較

2.1 YOLOv1

YOLO的名字來源于you only look once章钾,從名字上就道出了YOLO的精髓。

YOLOv1將圖像劃分為S*S個網(wǎng)絡(luò)热芹,物體真實框的中心落在哪個網(wǎng)格上贱傀,哪個網(wǎng)格對應(yīng)的錨框就負(fù)責(zé)檢測物體。
每個網(wǎng)格會預(yù)測一個邊界框以及對應(yīng)的置信度伊脓,這里的置信度反映的是模型認(rèn)為這個框里包含著物體的把握以及它預(yù)測到這個物體的精確程度府寒。所以置信度就等于Pr(Object)*IOU^{true}_{pred}魁衙。如果物體不存在,那么置信度應(yīng)該等于零株搔。
每個邊界框會預(yù)測5個值(x,y,w,h,confidence)剖淀。(x,y)坐標(biāo)表示框相對于網(wǎng)格單元邊界的中心纤房。 w,y是相對于整個圖像預(yù)測寬度和高度纵隔。 最后,置信度預(yù)測表示預(yù)測框與任何真實框之間的IOU炮姨。

YOLOv1 Model

模型的檢測網(wǎng)絡(luò)如下圖捌刮,包括24個卷積層和2個全連接層,最終輸出的應(yīng)該是一個S\times S \times (B*5+C)舒岸,在圖里是7 \times 7 \times (2*5+20)绅作。
在全連接層輸出預(yù)測中,邊界框的寬度和高度進行了歸一化蛾派,落在0和1之間俄认。邊界框的x和y坐標(biāo)參數(shù)化為特定網(wǎng)格單元位置的偏移量,因此它們也被限制在0和1之間 碍脏。
最終層使用線性激活函數(shù)梭依,所有其他層均使用了leaky ReLU。
YOLOv1對于輸出的平方和誤差進行了優(yōu)化典尾,原因是平方和比較好優(yōu)化役拴。
YOLOv1模型結(jié)構(gòu)

在訓(xùn)練過程中,網(wǎng)格上的每個格子只會輸出一個預(yù)測框钾埂,在這里選取與真實框IoU最大的那個框河闰,一個預(yù)測框只會預(yù)測一個類別。
因此這也限制了YOLO能預(yù)測的物體的數(shù)量褥紫。對于尺寸小數(shù)量多的物體姜性,預(yù)測效果也不是很好。

2.2 YOLOv2,v3

YOLOv2在v1的基礎(chǔ)上進行了優(yōu)化髓考,骨干網(wǎng)絡(luò)使用了DarkNet19部念,并且將輸入圖片給尺寸從224增大到448,并且將網(wǎng)絡(luò)結(jié)構(gòu)設(shè)為全卷積網(wǎng)絡(luò)結(jié)構(gòu)加上Batch Norm氨菇,使用了Kmeans聚類方法來計算anchor儡炼,引入了多尺度訓(xùn)練,使網(wǎng)絡(luò)在訓(xùn)練過程中學(xué)習(xí)不同尺度的圖像查蓉。不過待改進的地方有在小目標(biāo)上召回率不高乌询,靠近的群體目標(biāo)檢測效果不好,檢測精度還有優(yōu)化空間豌研。

YOLOv3使用了更加深的骨干網(wǎng)絡(luò)DarkNet53妹田,同時加入了多尺度預(yù)測唬党,在COCO數(shù)據(jù)集上聚類; 9中不同尺度的anchor鬼佣,在分類上使用sigmoid激活函數(shù)驶拱,支持了目標(biāo)的多分類。YOLOv3的優(yōu)點是推理速度快沮趣,性價比高屯烦,通用性強;缺點是召回率較低房铭,定位精度較差,對于靠近或者遮擋的群體温眉、小物體的檢測能力相對較弱缸匪。

YOLOv3在v1的基礎(chǔ)上做了很多改動。

邊界框預(yù)測
YOLOv3使用聚類預(yù)測到的邊界框作為錨框类溢。網(wǎng)絡(luò)為邊界框預(yù)測4個坐標(biāo)值(t_x,y_y,t_w,t_h)凌蔬,如果單元格從圖像的左上角偏移了(c_x, c_y),并且先驗邊界框的寬度和高度為p_w,p_h闯冷,則預(yù)測如下圖:

有維度先驗和位置預(yù)測的邊界框

將上圖公式里的反一下砂心,就能通過真實框的坐標(biāo)得到監(jiān)督信息t_x^*,t_y^*,t_w^*,t_h^*

YOLOv3給每個邊界框用邏輯回歸預(yù)測一個objectness score蛇耀,如果某個邊界框和真實框重合度比其他都高辩诞,那么它的objectness score應(yīng)該是1。而其他框雖然也與真實框有重疊纺涤,會被忽略掉译暂。

類別預(yù)測
使用的是sigmoid函數(shù),沒有用softmax因為沒必要撩炊。

不同尺度的預(yù)測
YOLOv3使用k-means聚類來確定bounding box priors外永,選擇了9個clusters和3個scales,然后在整個scales上均勻分割clusters拧咳。在COCO數(shù)據(jù)集上伯顶,9個cluster分別為(10×13),(16×30)骆膝,(33×23)祭衩,(30×61),(62×45)谭网,(59×119)汪厨,(116×90) ,(156×198)愉择,(373×326)劫乱。

特征提取
YOLOv3使用了Darknet-53织中,特點是加入了殘差,比之前的網(wǎng)絡(luò)更深了(有53層卷積層所以叫Darknet-53)衷戈。

Darknet-53

借一張圖看一下YOLOv3的整個流程:

yolov3結(jié)構(gòu)[4]

輸入圖像(N,416,416,3)狭吼,通過DarkNet53進行特征提取,網(wǎng)絡(luò)會經(jīng)過5個階段殖妇,每個階段經(jīng)行一個倍數(shù)為2的下采樣刁笙,也就是說5次的下采樣是2^5=32倍的下采樣。這個32倍的下采樣(N,13,13,85)通過特征提取后得到一個輸出網(wǎng)格谦趣,同時也會經(jīng)過一個上采樣之后疲吸,與16倍的下采樣之后的特征圖(N,26,26,85)進行堆疊,然后進一步進行特征提取得到第二個網(wǎng)格前鹅。32倍與16倍下采樣堆疊得到的特征圖摘悴,再一次通過上采樣,與8倍下采樣的結(jié)果(N,52,52,85)進行堆疊舰绘,得到了第三個網(wǎng)格蹂喻。

每個輸出分支上對應(yīng)著三個尺寸的先驗框(總共33=9種尺度)。經(jīng)過32倍下采樣的網(wǎng)格捂寿,每一個網(wǎng)格對應(yīng)著輸入圖像上3232的區(qū)域口四,適合檢測尺寸較大的目標(biāo),而8倍下采樣的網(wǎng)格適合檢測尺寸小的目標(biāo)秦陋。

輸出特征的高度H和寬度W蔓彩,相當(dāng)于將圖像劃分為H*W個網(wǎng)格,而不是直接在圖像上畫網(wǎng)格踱侣。也就是說32倍下采樣之后得到的(N,13,13,85)粪小,相當(dāng)于在輸入圖像上劃一個32 \times 32的網(wǎng)格,每一個網(wǎng)格對應(yīng)著輸出特征圖上的一個點抡句。

特征圖的C通道上表示預(yù)測框的信息探膊,包括坐標(biāo)信息t_x,t_y,t_w,t_h,目標(biāo)置信度待榔,分類逞壁。
C=B*(1+4+class_num),B為特征圖上分配的錨框個數(shù)锐锣。

損失函數(shù)有三個腌闯,分類損失,定位損失和objectness損失雕憔。分類使用sigmoid激活函數(shù)姿骏,loss是sigmoid cross entropy。定位損失在x,y上使用sigmoid函數(shù)和sigmoid cross entropy損失斤彼,在w,h上使用L1損失分瘦。objectness損失用的是sigmoid激活函數(shù)和sigmoid cross entropy損失蘸泻。

對于與真實框重疊的框,三種損失都要計算 (t_x,t_y,t_w,t_h)->(t_x^*,t_y^*,t_w^*,t_h^*), objectness->1, predition->true label)
對于沒有真實框重疊的框嘲玫,只計算objectness(0)悦施;對于與真實框重疊但不是最匹配的框,忽略它們去团。

參考資料:
[1]YOLOv1 paper:You Only Look Once: Unified, Real-Time Object Detection
[2]Yolo三部曲解讀——Yolov1
[3]YOLOv3論文解析: An Incremental Improvement
[4]yolo v3 的keras 版本(轉(zhuǎn)載)
[5]YOLOv3 paper:YOLOv3: An Incremental Improvement

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抡诞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子土陪,更是在濱河造成了極大的恐慌昼汗,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旺坠,死亡現(xiàn)場離奇詭異乔遮,居然都是意外死亡,警方通過查閱死者的電腦和手機取刃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來出刷,“玉大人璧疗,你說我怎么就攤上這事∧俟辏” “怎么了崩侠?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長坷檩。 經(jīng)常有香客問我却音,道長,這世上最難降的妖魔是什么矢炼? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任系瓢,我火速辦了婚禮,結(jié)果婚禮上句灌,老公的妹妹穿的比我還像新娘夷陋。我一直安慰自己,他們只是感情好胰锌,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布骗绕。 她就那樣靜靜地躺著,像睡著了一般资昧。 火紅的嫁衣襯著肌膚如雪酬土。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天格带,我揣著相機與錄音撤缴,去河邊找鬼刹枉。 笑死,一個胖子當(dāng)著我的面吹牛腹泌,可吹牛的內(nèi)容都是我干的嘶卧。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼凉袱,長吁一口氣:“原來是場噩夢啊……” “哼芥吟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起专甩,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤钟鸵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后涤躲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棺耍,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年种樱,在試婚紗的時候發(fā)現(xiàn)自己被綠了蒙袍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡嫩挤,死狀恐怖害幅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情岂昭,我是刑警寧澤以现,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站约啊,受9級特大地震影響邑遏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜恰矩,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一记盒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧枢里,春花似錦孽鸡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至奥洼,卻和暖如春巷疼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工嚼沿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留估盘,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓骡尽,卻偏偏與公主長得像遣妥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子攀细,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348