目標(biāo)檢測YOLO v1-v5演進(jìn)

目標(biāo)檢測介紹

目標(biāo)檢測是與計算機(jī)視覺和圖像處理相關(guān)的計算機(jī)技術(shù),用于在一張圖片中識別出些物體的種類挚币,同時要求標(biāo)出物體的位置亮蒋。目標(biāo)檢測已被廣泛應(yīng)用于人臉檢測、自動駕駛和視頻監(jiān)控等圖像領(lǐng)域妆毕。

目標(biāo)檢測中的常見方法慎玖,分為one-stage和two-stage兩類。One-stage方法首先輸入圖片笛粘,輸出Bounding box (bbox)和分類標(biāo)簽趁怔,由一個網(wǎng)絡(luò)完成湿硝,該方法以YOLO、SSD為主要代表润努。Two-stage方法則以Faster-RCNN為代表关斜,輸入圖片后,首先生成建議區(qū)域(Region Proposal)铺浇,再輸入分類器進(jìn)行分類痢畜,兩個任務(wù)由不同網(wǎng)絡(luò)完成。

其中鳍侣,YOLO目標(biāo)檢測是一種突出且優(yōu)秀的算法丁稀,其為“you only look once”的縮寫,意為只需瀏覽一次即可識別出圖中物體的類別與位置倚聚,且完美地平衡了檢測速度和精度之間的關(guān)系线衫。YOLO也由最初的YOLO v1發(fā)展到現(xiàn)在最新的YOLO v5。

原理簡介

一惑折、YOLO v1

2015年提出了第一版YOLO v1授账,YOLO借鑒GoogleNet而提出了Darknet網(wǎng)絡(luò)。Darknet是用C語言和CUDA編寫的開源神經(jīng)網(wǎng)絡(luò)框架惨驶,用1x1卷積層+3x3卷積層替代GoogleNet的Inception模塊白热。網(wǎng)絡(luò)由24 層卷積層接2層全連接組成,如圖1:


YOLO v1中的Darknet結(jié)構(gòu)

YOLO v1的框架如圖2所示:首先調(diào)整圖像大小為448×448敞咧,隨后將圖像輸入CNN棘捣,最后通過非極大值抑制(NMS)保留最終標(biāo)定框辜腺。

YOLO v1的整體框架
每個Bounding box的輸出向量

YOLO v1 的核心思想在于將目標(biāo)檢測視為回歸問題休建,其將圖片劃分成 SxS 個網(wǎng)格,如果目標(biāo)中心落入某網(wǎng)格單元评疗,則該網(wǎng)格就負(fù)責(zé)檢測該目標(biāo)测砂。每個網(wǎng)格單元預(yù)測 B個邊界框(bbox)和類別信息。此外百匆,每個bbox需要預(yù)測(x, y, w, h)和置信度共5個值砌些。因此,最終每個網(wǎng)格應(yīng)預(yù)測B個bbox和C個類別加匈,最終輸出S x S x (5*B+C)的tensor存璃。

其中,置信度得分反映了bbox包含物體的概率 Pr(Object) 以及bbox的位置準(zhǔn)確性 IOU(預(yù)測的bbox和真實(shí)的物體位置的交并比)雕拼,置信分?jǐn)?shù)由以上兩部分定義:

得到所有bbox后進(jìn)入非極大值抑制(NMS)階段纵东。對于每個bbox,按照下式衡量該框是否應(yīng)該予以保留啥寇。

上式為每個網(wǎng)格的類別置信度得分(class-specific confidence scores)偎球,這不僅包含了預(yù)測的類別信息洒扎,也包含了對 bbox 值的準(zhǔn)確度。通過設(shè)置閾值衰絮,可先行篩去類別置信度得分低的bbox袍冷,對保留的bbox進(jìn)行NMS處理,得到最終檢測結(jié)果猫牡。 損失函數(shù)包含位置誤差胡诗,置信度誤差,分類誤差這三部分淌友。
損失函數(shù)

優(yōu)點(diǎn):

  • YOLO v1的檢測速度快乃戈,在Titan X 的 GPU 上可達(dá)45 FPS;
  • 可避免背景錯誤亩进;
  • 能學(xué)到泛化特征症虑。
    缺點(diǎn):
  • YOLO v1對鄰近物體檢測效果差,每個網(wǎng)格只能識別出一個種類归薛;
  • 對少見長寬比的物體泛化能力較弱谍憔;
  • 損失函數(shù)不具體。

二主籍、YOLO v2&v3

YOLO v2在YOLO v1基礎(chǔ)上進(jìn)行了一系列的改進(jìn)习贫,在保持分類精度的同時,提高了目標(biāo)定位的精度以及召回率千元。首先苫昌,YOLO v2能夠適應(yīng)不同的輸入尺寸,并可根據(jù)需要自行權(quán)衡檢測準(zhǔn)確率和檢測速度幸海;其次祟身,根據(jù)層級分類提出了WordTree來混合檢測數(shù)據(jù)集與分類數(shù)據(jù)集;最后物独,提出了可同時在檢測和分類數(shù)據(jù)集上進(jìn)行的聯(lián)合訓(xùn)練方式袜硫,使用檢測數(shù)據(jù)集訓(xùn)練模型識別部分,使用分類數(shù)據(jù)集訓(xùn)練模型分類部分挡篓,擴(kuò)充檢測種類婉陷。

對于YOLO v1更為具體的改進(jìn)包括以下幾點(diǎn):

  1. 在每個卷積層后添加Batch Normalization層,舍棄Dropout官研。
  2. 借鑒Fast R-CNN中Anchor的思想秽澳,預(yù)測bbox與網(wǎng)格的偏移量。
  3. 提出Darknet-19戏羽,用卷積層代替將全連接層担神,應(yīng)對不同尺寸的圖像。

不過YOLO v2仍然無法解決同一個網(wǎng)格內(nèi)物體重疊的問題蛛壳。YOLO v3則繼續(xù)在YOLO v2上做了些許改進(jìn):

  1. 使用殘差模型杏瞻,提出包含53個卷積層的新網(wǎng)絡(luò)Darknet-53所刀;
  2. 采用FPN(feature pyramid networks)架構(gòu)獲取三種大小的特征圖,實(shí)現(xiàn)多尺度檢測捞挥。

三浮创、最新研究之YOLO v4&v5:

2020年4月,YOLO v4重磅發(fā)布砌函。其在MS COCO數(shù)據(jù)集上的精度達(dá)到了43.5% AP斩披,速度達(dá)到65FPS,與 YOLO v3相比分別提高了 10% 和 12%讹俊。

YOLO v4首先對相關(guān)工作進(jìn)行總結(jié)垦沉,并對目標(biāo)檢測框架拆分:
Object Detection = Backbone + Neck + Head

  1. Backbone:圖像特征提取部分,可利用預(yù)訓(xùn)練網(wǎng)絡(luò)仍劈,如VGG16厕倍、ResNet-50、 Darknet53, 或輕量級網(wǎng)絡(luò)Mobilenet贩疙、ShuffleNet讹弯。
  2. Neck:特征增強(qiáng)模塊。對Backbone提取到的淺層特征進(jìn)行增強(qiáng)这溅,如SPP组民、SAM、FPN, PAN悲靴、ASFF, SFAM臭胜。
  3. Head:檢測器。輸出所要結(jié)果癞尚。

此外耸三,將所有所有的調(diào)優(yōu)手段分為兩類:“Bag of freebies”和“Bag of specials”。

  1. Bag of freebies (BOF)是指在離線訓(xùn)練階段為了提升精度而廣泛使用的調(diào)優(yōu)手段否纬,并不增加模型復(fù)雜度吕晌。包括一些數(shù)據(jù)增強(qiáng)的手段蛋褥,如Random erase临燃、CutOut、MixUp烙心、CutMix膜廊。

    數(shù)據(jù)增強(qiáng)方法

  2. BOS (Bag of specials)是指在推斷過程中增加的些許成本但能換來較大精度提升的技巧。如增大感受野類的SPP/ASPP/RFB淫茵,注意力相關(guān)的 SE/ SAM爪瓜,以及激活函數(shù)。

YOLO v4總結(jié)了以上各種調(diào)優(yōu)技巧匙瘪,從中尋找最優(yōu)組合铆铆。并在訓(xùn)練過程中蝶缀,驗(yàn)證了Bag-of-Freebies和Bag-of-Specials對于YOLO v4的影響。

最終使用的YOLO v4框架組成為:
YOLO v4框架

最后薄货,YOLOv4簡化且優(yōu)化了包括CBN翁都,PAN,SAM在內(nèi)的算法谅猾,可使YOLO v4在單GPU上完成訓(xùn)練柄慰。在MS COCO數(shù)據(jù)集上的檢測結(jié)果如下:
MS COCO數(shù)據(jù)集檢測結(jié)果

自YOLO v4發(fā)布的40余天后, Ultralytics公司開源了非官方的YOLO v5税娜,其完全基于PyTorch實(shí)現(xiàn)坐搔。值得注意的是,每個圖像的推理時間達(dá)到140 FPS敬矩,并且YOLOv5的權(quán)重文件大小僅為YOLOv4的1/9概行。YOLO v5更快,也更小巧弧岳!

此外占锯,YOLO v5還支持轉(zhuǎn)ONNX以及CoreML等,方便用戶在移動端部署缩筛。
YOLO v5

由以上YOLO的發(fā)展歷程可看出消略, YOLO系列的發(fā)展后期更重視應(yīng)用落地,沒有提出非常新穎的創(chuàng)新點(diǎn)瞎抛。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末艺演,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子桐臊,更是在濱河造成了極大的恐慌胎撤,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件断凶,死亡現(xiàn)場離奇詭異伤提,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)认烁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門肿男,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人却嗡,你說我怎么就攤上這事舶沛。” “怎么了窗价?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵如庭,是天一觀的道長。 經(jīng)常有香客問我撼港,道長坪它,這世上最難降的妖魔是什么骤竹? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮往毡,結(jié)果婚禮上瘤载,老公的妹妹穿的比我還像新娘。我一直安慰自己卖擅,他們只是感情好鸣奔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著惩阶,像睡著了一般挎狸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上断楷,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天锨匆,我揣著相機(jī)與錄音,去河邊找鬼冬筒。 笑死恐锣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的舞痰。 我是一名探鬼主播土榴,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼响牛!你這毒婦竟也來了玷禽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤呀打,失蹤者是張志新(化名)和其女友劉穎矢赁,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贬丛,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撩银,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了豺憔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片额获。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖焕阿,靈堂內(nèi)的尸體忽然破棺而出咪啡,到底是詐尸還是另有隱情,我是刑警寧澤暮屡,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站毅桃,受9級特大地震影響褒纲,放射性物質(zhì)發(fā)生泄漏准夷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一莺掠、第九天 我趴在偏房一處隱蔽的房頂上張望衫嵌。 院中可真熱鬧,春花似錦彻秆、人聲如沸楔绞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酒朵。三九已至,卻和暖如春扎附,著一層夾襖步出監(jiān)牢的瞬間蔫耽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工留夜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匙铡,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓碍粥,卻偏偏與公主長得像鳖眼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嚼摩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348