1 背景介紹
目標(biāo)檢測(cè),object detection,就是在給定的圖片中精確找到物體所在位置,并標(biāo)注出物體的類(lèi)別。
目標(biāo)檢測(cè)要解決的問(wèn)題有兩個(gè):物體在哪里,物體是什么的整個(gè)流程問(wèn)題。
目標(biāo)檢測(cè)問(wèn)題的難點(diǎn):物體的尺寸變化范圍很大;擺放物體的角度,姿態(tài)不定;而且可以出現(xiàn)在圖片的任何地方;物體還可以是多個(gè)類(lèi)別。
目前主要算法分兩類(lèi):1) 候選區(qū)域/框 + 深度學(xué)習(xí)分類(lèi);2) 基于深度學(xué)習(xí)的回歸方法
目標(biāo)檢測(cè)中有很大一部分工作是做圖像分類(lèi)。對(duì)于圖像分類(lèi),不得不提的是2012年ImageNet大規(guī)模視覺(jué)識(shí)別挑戰(zhàn)賽(ILSVRC)上,機(jī)器學(xué)習(xí)泰斗 Geoffrey Hinton 教授帶領(lǐng)學(xué)生Krizhevsky使用卷積神經(jīng)網(wǎng)絡(luò)將ILSVRC分類(lèi)任務(wù)的Top-5 error降低到了15.3%,而使用傳統(tǒng)方法的第二名 top-5 error高達(dá) 26.2%。
此后,卷積神經(jīng)網(wǎng)絡(luò)CNN占據(jù)了圖像分類(lèi)任務(wù)的絕對(duì)統(tǒng)治地位。
2 候選區(qū)域+深度學(xué)習(xí)
通過(guò)提取候選區(qū)域,并對(duì)相應(yīng)區(qū)域進(jìn)行以深度學(xué)習(xí)方法為主的分類(lèi)的方案,如:
2.1 R-CNN(Selective Search + CNN + SVM)
先找出圖中目標(biāo)可能出現(xiàn)的位置,即候選區(qū)域(Region Proposal)。
利用圖像中的紋理、邊緣、顏色等信息,可以保證在選取較少窗口(幾千甚至幾百)的情況下保持較高的召回率(Recall)。
有了候選區(qū)域,剩下的工作實(shí)際就是對(duì)候選區(qū)域進(jìn)行圖像分類(lèi)的工作(特征提取+分類(lèi))。
2014年,RBG(Ross B. Girshick)使用 Region Proposal + CNN代替?zhèn)鹘y(tǒng)目標(biāo)檢測(cè)使用的滑動(dòng)窗口+手工設(shè)計(jì)特征,設(shè)計(jì)R-CNN框架,使得目標(biāo)檢測(cè)取得巨大突破,并開(kāi)啟了基于深度學(xué)習(xí)目標(biāo)檢測(cè)的熱潮。
R-CNN的簡(jiǎn)要步驟如下
輸入測(cè)試圖像
利用選擇性搜索Selective Search算法在圖像中從下到上提取2000個(gè)左右的可能包含物體的候選區(qū)域Region Proposal
因?yàn)槿〕龅膮^(qū)域大小各自不同,所以需要將每個(gè)Region Proposal縮放(warp)成統(tǒng)一的227x227的大小并輸入到CNN,將CNN的fc7層的輸出作為特征
將每個(gè)Region Proposal提取到的CNN特征輸入到SVM進(jìn)行分類(lèi)
R-CNN 存在一個(gè)較大的問(wèn)題:R-CNN雖然不再像傳統(tǒng)方法那樣窮舉,但R-CNN流程的第一步中對(duì)原始圖片通過(guò)Selective Search提取的候選框region proposal多達(dá)2000個(gè)左右,而這2000個(gè)候選框每個(gè)框都需要進(jìn)行CNN提特征+SVM分類(lèi),計(jì)算量很大,導(dǎo)致R-CNN檢測(cè)速度很慢,一張圖都需要47s。
2.2 SPP-net(ROI Pooling)
SPP:Spatial Pyramid Pooling(空間金字塔池化)
SPP-Net是出自2015年發(fā)表在IEEE上的論文-《Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual Recognition》
2.3 Fast R-CNN(Selective Search + CNN + ROI)
Fast R-CNN 就是在R-CNN的基礎(chǔ)上采納了SPP Net方法,對(duì)R-CNN作了改進(jìn),使得性能進(jìn)一步提高。
與R-CNN框架圖對(duì)比,可以發(fā)現(xiàn)主要有兩處不同:一是最后一個(gè)卷積層后加了一個(gè)ROI pooling layer,二是損失函數(shù)使用了多任務(wù)損失函數(shù)(multi-task loss),將邊框回歸 Bounding Box Regression 直接加入到CNN網(wǎng)絡(luò)中訓(xùn)練。
Fast-RCNN 很重要的一個(gè)貢獻(xiàn)是成功的讓人們看到了 Region Proposal + CNN 這一框架實(shí)時(shí)檢測(cè)的希望,原來(lái)多類(lèi)檢測(cè)真的可以在保證準(zhǔn)確率的同時(shí)提升處理速度,也為后來(lái)的 Faster R-CNN 做下了鋪墊。
2.4 Faster R-CNN(RPN + CNN + ROI)
Fast R-CNN存在性能瓶頸:選擇性搜索,找出所有的候選框,也非常耗時(shí)。能不能找出一個(gè)更加高效的方法來(lái)求出這些候選框呢?
解決方法:加入一個(gè)提取邊緣的神經(jīng)網(wǎng)絡(luò),也就說(shuō)找到候選框的工作也交給神經(jīng)網(wǎng)絡(luò)來(lái)做。
以上四種算法都基于region proposal 的R-CNN系列,是目標(biāo)檢測(cè)技術(shù)領(lǐng)域主要的一個(gè)分支。
3 基于深度學(xué)習(xí)的回歸方法
3.1 YOLO1
YOLO,全稱(chēng):You Only Look Once
以上介紹的 R-CNN 系列很難滿足實(shí)時(shí)性的要求。YOLO 一類(lèi)的方法慢慢顯現(xiàn)出其重要性,這類(lèi)方法使用回歸的思想,利用整張圖作為網(wǎng)絡(luò)的輸入,直接在圖像的多個(gè)位置上回歸出這個(gè)位置的目標(biāo)邊框,以及目標(biāo)所屬的類(lèi)別。
YOLO將目標(biāo)檢測(cè)任務(wù)轉(zhuǎn)換成一個(gè)回歸問(wèn)題,大大加快了檢測(cè)的速度,使得 YOLO 可以每秒處理45 張圖像。而且由于每個(gè)網(wǎng)絡(luò)預(yù)測(cè)目標(biāo)窗口時(shí)使用的是全圖信息,使得false positive比例大幅降低(充分的上下文信息)。
但是YOLO也存在問(wèn)題:沒(méi)有了Region Proposal機(jī)制,只使用7*7的網(wǎng)格回歸會(huì)使得目標(biāo)不能非常精準(zhǔn)的定位,這也導(dǎo)致了YOLO的檢測(cè)精度并不是很高。
3.2 YOLO2
YOLOv2 相對(duì)v1版本,在繼續(xù)保持處理速度的基礎(chǔ)上,從預(yù)測(cè)更準(zhǔn)確(Better),速度更快(Faster),識(shí)別對(duì)象更多(Stronger)這三個(gè)方面進(jìn)行了改進(jìn)。其中識(shí)別更多對(duì)象也就是擴(kuò)展到能夠檢測(cè)9000種不同對(duì)象,稱(chēng)之為YOLO9000。
YOLO v2 代表著比較先進(jìn)的物體檢測(cè)水平,在多種監(jiān)測(cè)數(shù)據(jù)集中都要快過(guò)其他檢測(cè)系統(tǒng),并可以在速度與精確度上進(jìn)行權(quán)衡。
3.3 YOLO3
YOLO v3的模型比之前的模型復(fù)雜了不少,可以通過(guò)改變模型結(jié)構(gòu)的大小來(lái)權(quán)衡速度與精度。
速度上,YOLOv3 在實(shí)現(xiàn)相同準(zhǔn)確度下要顯著地比其它檢測(cè)方法快。
改進(jìn)之處:
1).多尺度預(yù)測(cè) (類(lèi)FPN)
2).更好的基礎(chǔ)分類(lèi)網(wǎng)絡(luò)(類(lèi)ResNet)和分類(lèi)器 darknet-53,見(jiàn)下圖。
3). 分類(lèi)器-類(lèi)別預(yù)測(cè):
YOLOv3不使用Softmax對(duì)每個(gè)框進(jìn)行分類(lèi),主要考慮因素有兩個(gè):
a. Softmax使得每個(gè)框分配一個(gè)類(lèi)別(score最大的一個(gè)),而對(duì)于Open Images這種數(shù)據(jù)集,目標(biāo)可能有重疊的類(lèi)別標(biāo)簽,因此Softmax不適用于多標(biāo)簽分類(lèi)。
b. Softmax可被獨(dú)立的多個(gè)logistic分類(lèi)器替代,且準(zhǔn)確率不會(huì)下降。
分類(lèi)損失采用 binary cross-entropy loss
多尺度預(yù)測(cè)
每種尺度預(yù)測(cè)3個(gè)box, anchor的設(shè)計(jì)方式仍然使用聚類(lèi),得到9個(gè)聚類(lèi)中心,將其按照大小均分給3中尺度.
尺度1: 在基礎(chǔ)網(wǎng)絡(luò)之后添加一些卷積層再輸出box信息.
尺度2: 從尺度1中的倒數(shù)第二層的卷積層上采樣(x2)再與最后一個(gè)16x16大小的特征圖相加,再次通過(guò)多個(gè)卷積后輸出box信息.相比尺度1變大兩倍.
尺度3: 與尺度2類(lèi)似,使用了32x32大小的特征圖.
4 總結(jié)
最后總結(jié)兩類(lèi)算法的不同:
RCNN, Fast-RCNN,F(xiàn)aster-RCNN是基于深度學(xué)習(xí)的分類(lèi)方法。
YOLO系列是基于深度學(xué)習(xí)的回歸方法。