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

目標(biāo)檢測(cè)介紹

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

目標(biāo)檢測(cè)中的常見(jiàn)方法,分為one-stage和two-stage兩類(lèi)。One-stage方法首先輸入圖片,輸出Bounding box (bbox)和分類(lèi)標(biāo)簽,由一個(gè)網(wǎng)絡(luò)完成,該方法以YOLO、SSD為主要代表。Two-stage方法則以Faster-RCNN為代表,輸入圖片后,首先生成建議區(qū)域(Region Proposal),再輸入分類(lèi)器進(jìn)行分類(lèi),兩個(gè)任務(wù)由不同網(wǎng)絡(luò)完成。

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

原理簡(jiǎn)介

一、YOLO v1

2015年提出了第一版YOLO v1,YOLO借鑒GoogleNet而提出了Darknet網(wǎng)絡(luò)。Darknet是用C語(yǔ)言和CUDA編寫(xiě)的開(kāi)源神經(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,最后通過(guò)非極大值抑制(NMS)保留最終標(biāo)定框。

YOLO v1的整體框架
每個(gè)Bounding box的輸出向量

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

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

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

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

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

  • YOLO v1的檢測(cè)速度快,在Titan X 的 GPU 上可達(dá)45 FPS;
  • 可避免背景錯(cuò)誤;
  • 能學(xué)到泛化特征。
    缺點(diǎn):
  • YOLO v1對(duì)鄰近物體檢測(cè)效果差,每個(gè)網(wǎng)格只能識(shí)別出一個(gè)種類(lèi);
  • 對(duì)少見(jiàn)長(zhǎng)寬比的物體泛化能力較弱;
  • 損失函數(shù)不具體。

二、YOLO v2&v3

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

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

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

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

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

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

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

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

  1. Backbone:圖像特征提取部分,可利用預(yù)訓(xùn)練網(wǎng)絡(luò),如VGG16、ResNet-50、 Darknet53, 或輕量級(jí)網(wǎng)絡(luò)Mobilenet、ShuffleNet。
  2. Neck:特征增強(qiáng)模塊。對(duì)Backbone提取到的淺層特征進(jìn)行增強(qiáng),如SPP、SAM、FPN, PAN、ASFF, SFAM。
  3. Head:檢測(cè)器。輸出所要結(jié)果。

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

  1. Bag of freebies (BOF)是指在離線(xiàn)訓(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)是指在推斷過(guò)程中增加的些許成本但能換來(lái)較大精度提升的技巧。如增大感受野類(lèi)的SPP/ASPP/RFB,注意力相關(guān)的 SE/ SAM,以及激活函數(shù)。

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

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

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

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

此外,YOLO v5還支持轉(zhuǎn)ONNX以及CoreML等,方便用戶(hù)在移動(dòng)端部署。
YOLO v5

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容