目標(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的框架如圖2所示:首先調(diào)整圖像大小為448×448敞咧,隨后將圖像輸入CNN棘捣,最后通過非極大值抑制(NMS)保留最終標(biāo)定框辜腺。
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ù)由以上兩部分定義:優(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):
- 在每個卷積層后添加Batch Normalization層,舍棄Dropout官研。
- 借鑒Fast R-CNN中Anchor的思想秽澳,預(yù)測bbox與網(wǎng)格的偏移量。
- 提出Darknet-19戏羽,用卷積層代替將全連接層担神,應(yīng)對不同尺寸的圖像。
不過YOLO v2仍然無法解決同一個網(wǎng)格內(nèi)物體重疊的問題蛛壳。YOLO v3則繼續(xù)在YOLO v2上做了些許改進(jìn):
- 使用殘差模型杏瞻,提出包含53個卷積層的新網(wǎng)絡(luò)Darknet-53所刀;
- 采用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
- Backbone:圖像特征提取部分,可利用預(yù)訓(xùn)練網(wǎng)絡(luò)仍劈,如VGG16厕倍、ResNet-50、 Darknet53, 或輕量級網(wǎng)絡(luò)Mobilenet贩疙、ShuffleNet讹弯。
- Neck:特征增強(qiáng)模塊。對Backbone提取到的淺層特征進(jìn)行增強(qiáng)这溅,如SPP组民、SAM、FPN, PAN悲靴、ASFF, SFAM臭胜。
- Head:檢測器。輸出所要結(jié)果癞尚。
此外耸三,將所有所有的調(diào)優(yōu)手段分為兩類:“Bag of freebies”和“Bag of specials”。
-
Bag of freebies (BOF)是指在離線訓(xùn)練階段為了提升精度而廣泛使用的調(diào)優(yōu)手段否纬,并不增加模型復(fù)雜度吕晌。包括一些數(shù)據(jù)增強(qiáng)的手段蛋褥,如Random erase临燃、CutOut、MixUp烙心、CutMix膜廊。
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發(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的發(fā)展歷程可看出消略, YOLO系列的發(fā)展后期更重視應(yīng)用落地,沒有提出非常新穎的創(chuàng)新點(diǎn)瞎抛。