李章維,胡安順,王曉飛
浙江工業(yè)大學(xué) 信息工程學(xué)院,杭州310023
目標(biāo)檢測(cè)是計(jì)算機(jī)視覺(jué)的重要內(nèi)容,是眾多計(jì)算機(jī)視覺(jué)任務(wù)的基礎(chǔ)。其應(yīng)用范圍非常廣泛,如人臉檢測(cè)、無(wú)人駕駛、目標(biāo)跟蹤、智能交通等。近年來(lái),隨著大數(shù)據(jù)的出現(xiàn)以及計(jì)算機(jī)處理能力的提升,出現(xiàn)了一系列以卷積網(wǎng)絡(luò)為核心的檢測(cè)算法,目標(biāo)檢測(cè)精度與檢測(cè)速度得到大幅提升,拓寬了計(jì)算機(jī)視覺(jué)應(yīng)用范圍,帶來(lái)了更多應(yīng)用價(jià)值。卷積神經(jīng)網(wǎng)絡(luò)是目前檢測(cè)算法的主要研究路線。
目標(biāo)檢測(cè)可分為基于手工特征(Feature-Based)和基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)兩種方法。本文介紹了三種手工特征和三種機(jī)器學(xué)習(xí)方法,分析了Feature-Based方法檢測(cè)效果差的原因,詳細(xì)描述了基于CNN 的多種目標(biāo)檢測(cè)方法,梳理了每種方法的改進(jìn)和不足之處,介紹了該方法的檢測(cè)效果,為了解、學(xué)習(xí)以及進(jìn)一步發(fā)展目標(biāo)檢測(cè)提供一些參考。
2012 年以前,目標(biāo)檢測(cè)主要利用Haar、HOG(梯度直方圖)、LBP(局部二值模式)等手工特征和AdaBoost、SVM(Support Vector Machine)、DPM(Deformable Part Model)等機(jī)器學(xué)習(xí)方法(稱(chēng)為Feature-Based 方法)。2012 年,Krizhevsky 等 對(duì)CNN(Convolutional Neural Networks)網(wǎng)絡(luò)做出改進(jìn),在CNN 的基礎(chǔ)上訓(xùn)練了一個(gè)大的神經(jīng)網(wǎng)絡(luò)DCNN(Deep Convolutional Neural Networks)。DCNN 以錯(cuò)誤率比第二名低10%的巨大優(yōu)勢(shì)獲得ILSVRC-2012 比賽冠軍,CNN 網(wǎng)絡(luò)得以再次被重視。同年,Uijlings 等用選擇性搜索(Selective Search),從整幅圖像中選出有用區(qū)域并提取特征進(jìn)行檢測(cè),為后續(xù)CNN衍生出的TWO-STATE方法奠定基礎(chǔ)。此后,目標(biāo)檢測(cè)的速度和精度大幅提升,基于CNN 的檢測(cè)方法成為主流。
目標(biāo)檢測(cè)效果受多種因素影響,例如光照條件、遮擋情況、應(yīng)用場(chǎng)景、物體尺寸等,F(xiàn)eature-Based方法受手工特征設(shè)計(jì)質(zhì)量高低和機(jī)器學(xué)習(xí)方法自身存在的缺陷影響,檢測(cè)效果差,在實(shí)際運(yùn)用中受到多種限制。基于CNN 方法通過(guò)提取更深層次特征,大幅提升檢測(cè)速度與檢測(cè)精度,增強(qiáng)了目標(biāo)檢測(cè)在實(shí)際應(yīng)用中的效果。但是,基于CNN 方法仍有不足之處,例如,使用基于CNN方法時(shí)仍需要在檢測(cè)精度與檢測(cè)速度之間進(jìn)行權(quán)衡。
圖1給出了三種手工特征模板。LBP特征(局部二值模式)如圖1(a)所示,模板中心周?chē)南袼刂稻c模板中心像素值比較,大于中心像素值為1,小于中心像素值為0。從模板左上角開(kāi)始,順時(shí)針旋轉(zhuǎn)組成的二進(jìn)制數(shù)對(duì)應(yīng)的十進(jìn)制數(shù)即為中心點(diǎn)像素值。Ojala 等人[1]對(duì)LBP特征做出改進(jìn),提出了具有灰度不變性和旋轉(zhuǎn)不變性LBP特征。LBP特征對(duì)光照具有很強(qiáng)的魯棒性,針對(duì)的是物體的紋理特征,當(dāng)物體紋理與背景紋理相似時(shí),會(huì)降低檢測(cè)效果。HOG 特征如圖1(b)所示,Block 在Window 內(nèi)滑動(dòng),內(nèi)部包含多個(gè)Cell。Block 內(nèi)所有Cell的梯度直方圖串聯(lián)即為Block 的梯度直方圖(Block 的HOG 特征描述),為了獲得光照不變性和陰影不變性,需要對(duì)比度歸一化Window 內(nèi)重疊的Block。Window內(nèi)所有Block 的梯度直方圖串聯(lián)即為Window 的HOG特征描述,通過(guò)滑動(dòng)窗口,收集整幅圖片的HOG 特征[2]。HOG特征提取的是物體邊緣特征,對(duì)圖像中的噪聲敏感;圖1(c)所示是四種基本Haar特征,每種特征特征值等于白色區(qū)域的像素和減去黑色區(qū)域的像素和。Haar特征利用灰度圖中物體表面明暗變化提取特征,因此Haar特征對(duì)光照魯棒性很差。
圖1 三種特征模板
AdaBoost[3]通過(guò)選取多個(gè)最優(yōu)弱分類(lèi)器組成強(qiáng)分類(lèi)器,多個(gè)強(qiáng)分類(lèi)器級(jí)聯(lián)成最終分類(lèi)器。AdaBoost 算法,訓(xùn)練前期,選取最優(yōu)弱分類(lèi)器比較快速,后期最優(yōu)弱分類(lèi)器的選取越來(lái)越困難,需要大量的訓(xùn)練樣本,訓(xùn)練時(shí)間越來(lái)越長(zhǎng),而且容易出現(xiàn)過(guò)擬合。
SVM(Support Vector Machine)引入核函數(shù)的概念,在低維度計(jì)算高維數(shù)據(jù)。SVM 的分類(lèi)效果與核函數(shù)選取以及核函數(shù)參數(shù)有關(guān),核函數(shù)的參數(shù)是不定的(訓(xùn)練得到),參數(shù)的選取與訓(xùn)練過(guò)程中模型收斂速度和過(guò)擬合情況有關(guān)。
2008 年,F(xiàn)elzenszwalb 等人[4]提出DPM(Deformable Part Model)算法,利用圖像金字塔,提取同一圖像不同尺度的特征。DPM 使用的特征,本質(zhì)是一種改進(jìn)的HOG 特征,取消了HOG 特征的block,改變了Cell 梯度直方圖的歸一化方式,通過(guò)對(duì)圖像金字塔采集特征得到HOG 特征金字塔,特征金字塔頂部是粗略HOG 特征,底部是精細(xì)HOG 特征。DPM 設(shè)計(jì)了根濾波器(root filter)以及部件濾波器(parts filter),root filter匹配目標(biāo)粗略HOG 特征,得到目標(biāo)整體輪廓并得到匹配分?jǐn)?shù),parts filter 匹配目標(biāo)精細(xì)HOG 特征,得到目標(biāo)部分細(xì)節(jié)并得到匹配分?jǐn)?shù),最后綜合兩種濾波器匹配得分,確定檢測(cè)結(jié)果。DPM 連續(xù)三年獲得CVPR VOC 挑戰(zhàn)賽冠軍,設(shè)計(jì)者本人Felzenszwalb,在2010 年被VOC 授予“終身成就獎(jiǎng)”,可見(jiàn)DPM的成功之處。DPM只對(duì)剛性物體和高度可變物體檢測(cè)效果好,其模型復(fù)雜,在模型訓(xùn)練過(guò)程中,正樣本選取復(fù)雜,root filter 和parts filter的位置作為潛在變量(latent values)進(jìn)行訓(xùn)練,訓(xùn)練難度大,檢測(cè)精度低。
Uijlings 等[5]提出選擇性搜索(Selective Search),通過(guò)先對(duì)圖像做分割,再對(duì)分割區(qū)域做相似性融合,得到整幅圖像中目標(biāo)可能存在區(qū)域,提取可能區(qū)域HOG 特征,利用SVMs 分類(lèi),得到檢測(cè)結(jié)果。Selective Search結(jié)合了分割和枚舉搜索的優(yōu)點(diǎn),通過(guò)對(duì)可能區(qū)域提取HOG 特征,判斷可能區(qū)域是否有目標(biāo),不用對(duì)整張圖片提取特征再進(jìn)行判斷,檢測(cè)精度有所提升。由于Selective Search 對(duì)剛性物體和非剛性物體都可以較好地提出可能區(qū)域,Selective Search成為提取目標(biāo)可能存在區(qū)域的常用方法。
近年來(lái),F(xiàn)eature-Based方法得到改進(jìn),馮等[6]利用增加新的Haar特征結(jié)合AdaBoost算法提升了人臉檢測(cè)的精度,但是訓(xùn)練時(shí)間更長(zhǎng),抗干擾能力差,檢測(cè)速度慢;汪等[7]以及歐陽(yáng)等[8]改進(jìn)了AdaBoost選取最優(yōu)弱分類(lèi)器時(shí)權(quán)值更新的方法,降低過(guò)擬合對(duì)檢測(cè)結(jié)果的影響,提升了系統(tǒng)的檢測(cè)速度與檢測(cè)精度,但是仍未擺脫手工特征抗干擾能力差的束縛;呂等[9]將HOG特征與LBP結(jié)合用于藥材識(shí)別,通過(guò)檢測(cè)圖像紋理和邊緣特征,提升了藥材識(shí)別率,但是其抗干擾能力差,泛化能力弱;閆等[10]將AdaBoost 中的弱分類(lèi)器與SVM 級(jí)聯(lián)構(gòu)成最終的分類(lèi)器用于車(chē)標(biāo)識(shí)別;楊等[11]結(jié)合AdaBoost和SVM用于識(shí)別棉葉螨危害等級(jí),比單獨(dú)使用AdaBoost 和SVM 取得更高識(shí)別正確率,其模型復(fù)雜,訓(xùn)練困難,抗干擾能力差。
4.1.1 DCNN
Krizhevsky 等[12]在CNN 網(wǎng)絡(luò)基礎(chǔ)上設(shè)計(jì)了dropout層,用于減少卷積網(wǎng)絡(luò)訓(xùn)練中學(xué)習(xí)到的參數(shù),減少網(wǎng)絡(luò)訓(xùn)練過(guò)程中的過(guò)擬合情況,并設(shè)計(jì)新的激活函數(shù)ReLUs(Rectified Linear Units)作為神經(jīng)元的激活,加快網(wǎng)絡(luò)收斂速度。Krizhevsky用120萬(wàn)張圖片訓(xùn)練一個(gè)大的神經(jīng)網(wǎng)絡(luò)DCNN(Deep Convolutional Neural Networks),在ILSVRC-2012比賽中DCNN的top-5錯(cuò)誤率比第二名減少了10%。圖2 是DCNN 的網(wǎng)絡(luò)結(jié)構(gòu),圖片輸入DCNN網(wǎng)絡(luò)經(jīng)過(guò)多次卷積、池化以及全連接最后輸出一個(gè)1 000 維的向量,對(duì)應(yīng)可以檢測(cè)出1 000 個(gè)類(lèi)別。DCNN檢測(cè)速度慢,檢測(cè)精度較低,訓(xùn)練速度慢。
4.1.2 R-CNN
Girshick等人[13]提出R-CNN方法,先從圖片中選出候選區(qū)域(Region proposal),再利用CNN 網(wǎng)絡(luò)(Convolutional Neural Networks)進(jìn)行檢測(cè),得到候選區(qū)域的檢測(cè)結(jié)果,如圖3。R-CNN檢測(cè)步驟如下:
(1)用Selective Search 從圖片中提取約2 000 個(gè)候選區(qū)域(Region proposals)。
(2)將每個(gè)候選區(qū)域縮放(wrap)成固定尺寸(227×227)輸入到CNN網(wǎng)絡(luò),得到一個(gè)4 096維的特征向量。
(3)用特定類(lèi)別的SVM對(duì)特征向量打分。
(4)非極大值抑制確定類(lèi)別。
R-CNN在PASCAL VOC 2010數(shù)據(jù)集上的類(lèi)別平均檢測(cè)精度mAP(mean Average Precision)為53.7%,在VOC 2012數(shù)據(jù)集上的mAP為53.3%,比之前最好的檢測(cè)結(jié)果提高30%。精度的大幅度提高與R-CNN網(wǎng)絡(luò)訓(xùn)練方式有關(guān)。R-CNN模型首先在ILSVRC 2012數(shù)據(jù)集上預(yù)訓(xùn)練(pre-training),然后從VOC數(shù)據(jù)集中Selective Search 出大量候選區(qū)域,wrap 成固定大?。?27×227)作為訓(xùn)練樣本進(jìn)行微調(diào)(fine-tuning),Girshick指出微調(diào)的過(guò)程提升8%的mAP。R-CNN也存在很多缺點(diǎn):
(1)步驟繁瑣:Region proposals+wrap+pre-training+fine-tuning+訓(xùn)練SVMs(每個(gè)類(lèi)別都需要訓(xùn)練出一個(gè)SVM)。
(2)模型訓(xùn)練時(shí)間長(zhǎng)。
(3)檢測(cè)速度慢,只是計(jì)算一張圖片的候選區(qū)域以及計(jì)算候選區(qū)域的特征,在GPU上用時(shí)13 s,在CPU上用時(shí)53 s。
(4)R-CNN的輸入圖片需要進(jìn)行wrap操作,破壞原始圖像的信息,影響檢測(cè)精度。
4.1.3 SPP-net
2015年,He等[14]提出空間金字塔池化(SPP-net),取消了R-CNN將輸入圖片wrap成固定尺寸造成信息損失的約束。SPP-net檢測(cè)步驟如下:
圖2 DCNN網(wǎng)絡(luò)結(jié)構(gòu)
圖3 R-CNN網(wǎng)絡(luò)結(jié)構(gòu)
(1)在輸入圖片上select search出2 000個(gè)候選區(qū)域。
(2)resize 整個(gè)圖片大小,對(duì)圖片最小邊做變換:min(w,h)=s,s ∈S={480,576,688,864,1 200}。
(3)提取圖片resize 后的特征圖(feature maps,與S對(duì)應(yīng),5張?zhí)卣鲌D)。
(4)每個(gè)候選區(qū)域最小邊做變換:min(w,h)=s,s ∈S={480,576,688,864,1 200},候選區(qū)域選取s 原則是使候選區(qū)域的像素值最接近224×224,找到候選區(qū)域的s 后在s 對(duì)應(yīng)的特征圖(feature map)上找到候選窗口的位置,用SPP-net提取特征。
(5)提取的特征通過(guò)全連接層,輸入SVMs 得到檢測(cè)結(jié)果。
與R-CNN 相比,SPP-net 不用對(duì)每個(gè)候選區(qū)域(Region proposal)都進(jìn)行卷積操作,候選區(qū)域最小邊變換后,直接映射到對(duì)應(yīng)的feature map 上得到候選區(qū)域特征,檢測(cè)速度是R-CNN 的24~102 倍。SPP-net 訓(xùn)練時(shí),輸入圖片是可變尺寸,增強(qiáng)了網(wǎng)絡(luò)的尺度不變性,降低網(wǎng)絡(luò)訓(xùn)練時(shí),過(guò)擬合的可能性。SPP-net 的輸出采用SVMs作為分類(lèi)器,模型訓(xùn)練復(fù)雜,耗費(fèi)時(shí)間長(zhǎng)。
如圖4 所示是SPP-net 網(wǎng)絡(luò)結(jié)構(gòu),window 是Region proposal在特征圖上的映射位置,對(duì)window做空間金字塔,最大值池化(Max pooling)圖4 中每一個(gè)網(wǎng)格,每個(gè)網(wǎng)格均得到一個(gè)1×256 的向量(256 是最后一層卷積層的filter 數(shù)量),所有網(wǎng)格的向量拼接即為window 的特征向量,得到的特征向量經(jīng)過(guò)全連接層,再送入SVMs得出分類(lèi)結(jié)果。
4.1.4 Fast R-CNN
2015 年,Girshick 等提出Fast R-CNN[15],用ROI(Region Of Interest)池化層代替SPP-net 的空間金字塔池化,沒(méi)有采用SVMs 作為分類(lèi)器,在全連接層(FC)后面增加兩個(gè)輸出層分別用于檢測(cè)類(lèi)別和位置。Fast R-CNN檢測(cè)過(guò)程如下:
(1)從輸入圖片獲取感興趣區(qū)域(ROIs),對(duì)輸入圖片進(jìn)行一系列卷積、池化得到feature map。
(2)ROIs映射到feature map上,得到每個(gè)ROI的特征圖。
(3)對(duì)ROI 特征圖做ROI 池化,得到固定長(zhǎng)度的特征向量。
圖4 SPP-net網(wǎng)絡(luò)結(jié)構(gòu)
(4)特征向量經(jīng)過(guò)FC 層,由輸出層,得到分類(lèi)結(jié)果和目標(biāo)位置。感興趣區(qū)域ROIs是從輸入圖像上選擇性搜索出的多個(gè)目標(biāo)區(qū)域(object proposals)。
如圖5 所示是ROI 池化層結(jié)構(gòu)。 w×h 的ROI 區(qū)域,被拆分成W×H 個(gè)網(wǎng)格,每個(gè)網(wǎng)格的大小為w/W×h/H ,池化每個(gè)網(wǎng)格,均得到一個(gè)向量,所得向量拼接即為ROI區(qū)域的特征向量。ROI池化是SPP-net的一種特殊情況,只用金字塔的一層圖像。
圖5 ROI池化
Fast R-CNN 利用端到端的思想,用兩層輸出層代替SPP-net 的SVMs 分類(lèi)器,不用為每個(gè)類(lèi)別分別訓(xùn)練出一個(gè)SVM,簡(jiǎn)化訓(xùn)練步驟。但是ROIs區(qū)域是在圖片輸入到CNN 網(wǎng)絡(luò)前獲得,因此,F(xiàn)ast R-CNN 并不是真正意義上的端到端。不包括ROIs的獲取時(shí)間,F(xiàn)ast R-CNN網(wǎng)絡(luò)檢測(cè)一張圖片耗時(shí)0.3 s。ROIs 的獲取限制了Fast R-CNN的檢測(cè)速度,導(dǎo)致其不能滿足實(shí)時(shí)檢測(cè)要求。
4.1.5 Faster R-CNN
針對(duì)Fast R-CNN 在CNN 網(wǎng)絡(luò)外獲取ROIs 的不足,Ren等[16]提出Faster R-CNN方法,在Fast R-CNN網(wǎng)絡(luò)的基礎(chǔ)上設(shè)計(jì)了RPN(Region Proposal Networks)網(wǎng)絡(luò),在整個(gè)網(wǎng)絡(luò)內(nèi)部獲取Region proposals,實(shí)現(xiàn)真正意義上的端到端。圖6是RPN網(wǎng)絡(luò)的結(jié)構(gòu)。proposal的提取耗時(shí)10 ms)。
圖6 RPN網(wǎng)絡(luò)結(jié)構(gòu)
圖7是Faster R-CNN的檢測(cè)過(guò)程。檢測(cè)步驟如下:
(1)圖片經(jīng)過(guò)卷積網(wǎng)絡(luò)得到Feature maps。
(2)RPN網(wǎng)絡(luò)從Feature maps獲取Region proposals。
(3)proposals 和Feature maps 分別進(jìn)行ROI 池化得到各自特征向量。
(4)根據(jù)proposals特征向量檢測(cè)其類(lèi)別、位置。
(5)根據(jù)Feature maps的特征向量對(duì)結(jié)果進(jìn)行調(diào)整。
Faster R-CNN 是端到端的模型,為減少整個(gè)網(wǎng)絡(luò)的計(jì)算時(shí)間,RPN網(wǎng)絡(luò)與Fast R-CNN網(wǎng)絡(luò)共享卷積層,整個(gè)網(wǎng)絡(luò)處理一張圖片耗時(shí)198 ms,接近實(shí)時(shí)檢測(cè)的速度,仍不能實(shí)現(xiàn)實(shí)時(shí)檢測(cè)。
圖7 Faster R-CNN檢測(cè)過(guò)程
圖6 中的Feature map 是RPN 網(wǎng)絡(luò)和CNN 網(wǎng)絡(luò)共享的最后一個(gè)卷積層特征圖。Feature map上設(shè)置一個(gè)中心設(shè)置錨點(diǎn)(anchor)的n×n 滑動(dòng)窗口,每個(gè)錨點(diǎn)代表k 個(gè)錨盒,k 決定每個(gè)窗口得到的候選區(qū)域(Region proposal)數(shù)目。Ren 令n=3,設(shè)置3 種不同尺度、不同縱橫比的錨盒(anchor box),每個(gè)滑動(dòng)窗口提取9 個(gè)Region proposal。利用RPN 提取的Region proposals不僅包含的有用信息多,提取速度也快(每張圖片Region
4.2.1 YOLO
2016 年,Redmon 等[17]提出YOLO(You Only Look Once)算法,將目標(biāo)檢測(cè)視為包含類(lèi)別信息的空間位置回歸問(wèn)題,開(kāi)辟了目標(biāo)檢測(cè)新思路。YOLO是端到端的設(shè)計(jì),和Faster R-CNN 相比YOLO 只包含一個(gè)卷積網(wǎng)絡(luò),結(jié)構(gòu)更簡(jiǎn)單。YOLO的網(wǎng)絡(luò)結(jié)構(gòu)如圖8所示。經(jīng)過(guò)多次卷積、池化以及全連接后,YOLO輸出一個(gè)7×7×30的張量。
圖8 YOLO網(wǎng)絡(luò)結(jié)構(gòu)
圖9為YOLO的檢測(cè)過(guò)程示意,檢測(cè)過(guò)程如下:
(1)整張圖片劃分為S×S(Redmon 設(shè)計(jì)為7×7)的網(wǎng)格。
(2)圖片輸入CNN網(wǎng)絡(luò),輸出一個(gè)7×7×30的張量。
(3)非極大值抑制得到檢測(cè)結(jié)果。
由檢測(cè)過(guò)程可知每個(gè)網(wǎng)格會(huì)得到一個(gè)1×1×30的張量,目標(biāo)檢測(cè)的結(jié)果由每個(gè)網(wǎng)格的張量信息確定,圖10表示每個(gè)網(wǎng)格的張量信息。
圖9 YOLO檢測(cè)過(guò)程
圖10 單個(gè)網(wǎng)格信息
YOLO只包含一個(gè)卷積網(wǎng)絡(luò),直接對(duì)整幅圖片做卷積,利用圖片全局信息,一次預(yù)測(cè)出圖像中所有目標(biāo)位置及類(lèi)別。YOLO結(jié)構(gòu)簡(jiǎn)單,泛化能力強(qiáng)、檢測(cè)速度快,在GPU 上為45 f/s(Frame Per Second),可用于實(shí)時(shí)檢測(cè)。YOLO網(wǎng)絡(luò)訓(xùn)練使用224×224像素的圖片,檢測(cè)時(shí)使用448×448 像素的圖片,其檢測(cè)精度比Fast R-CNN和Faster R-CNN低,目標(biāo)位置定位不準(zhǔn)確,對(duì)小目標(biāo)檢測(cè)效果差。即使在理想情況下,YOLO一次最多檢測(cè)49個(gè)目標(biāo)。
4.2.2 YOLO9000
Redmon 等[18]對(duì)YOLO 進(jìn)行改進(jìn),提出YOLO9000(YOLOv2)。其步驟復(fù)雜,實(shí)現(xiàn)難度大。
(1)結(jié)構(gòu)改進(jìn):YOLOv2 在YOLO 結(jié)構(gòu)基礎(chǔ)上對(duì)每個(gè)卷積層都進(jìn)行批歸一化處理(batch normalization),提升了2%的mAP。批歸一化使得模型不用考慮過(guò)擬合問(wèn)題,因此YOLOv2移除YOLO網(wǎng)絡(luò)中dropout層,加快了模型收斂速度[17]。YOLOv2 采用錨盒(anchor boxes)預(yù)測(cè)包圍盒(bounding boxes),取消了YOLO 網(wǎng)絡(luò)中全連接層,考慮到錨盒尺寸對(duì)檢測(cè)精度影響,Redmon等采用K-MEANS 算法,利用訓(xùn)練集的包圍盒,得到較好的先驗(yàn)尺寸。
(2)訓(xùn)練數(shù)據(jù)改進(jìn):因?yàn)閅OLOv2 網(wǎng)絡(luò)中沒(méi)有全連接層,所以輸入網(wǎng)絡(luò)的圖片可以是任意大小,Redmon對(duì)訓(xùn)練數(shù)據(jù)32 倍下采樣,實(shí)現(xiàn)同一個(gè)網(wǎng)絡(luò)對(duì)不同分辨率圖像檢測(cè);在訓(xùn)練時(shí)將檢測(cè)數(shù)據(jù)集和分類(lèi)數(shù)據(jù)集混合訓(xùn)練,可以檢測(cè)更多類(lèi)別。
(3)模型訓(xùn)練方法改進(jìn):采用TWO-STATE 模型的訓(xùn)練思想,先用224×224 分辨率樣本預(yù)訓(xùn)練,再用448×448的高分辨率樣本微調(diào),提升檢測(cè)精度。
4.2.3 SSD
在YOLO 的影響下Liu 等[19],在VGG-16 模型的基礎(chǔ)上,取消全連接層,增加多個(gè)卷積層(Liu 稱(chēng)其為卷積特征層,convolutional feature layers)提取特征,SSD 結(jié)構(gòu)如圖11。Covn4_3和卷積特征層輸出的特征圖中,每個(gè)位置均設(shè)置尺度不同、縱橫比不同的默認(rèn)盒(default boxes),同一張?zhí)卣鲌D中,每個(gè)位置default boxes 相同,default boxes尺度隨特征圖尺度變化,特征圖隨卷積深入尺寸越來(lái)越小,最后為一個(gè)1×1×256 的張量。Liu 在Classifier1 對(duì)應(yīng)的特征圖中每個(gè)位置設(shè)置4 個(gè)default boxes,Classifier2 對(duì)應(yīng)的特征圖中每個(gè)位置設(shè)置6 個(gè)default boxes。每個(gè)default box中包含對(duì)應(yīng)位置的類(lèi)別信息和位置信息,根據(jù)所有的default boxes信息最后利用非極大值,得到最終檢測(cè)結(jié)果。Classifier1為Covn:3×3×(4×(Classes+4)),Classifier2為Covn:3×3×(6×(Classes+4))。
表1 是SSD 結(jié)構(gòu)中獲得每個(gè)卷積特征圖的卷積操作。
SSD是一種端到端模型,利用YOLO的回歸思想和Faster R-CNN 中的anchor 機(jī)制,檢測(cè)速度比YOLO 快,檢測(cè)精度可以達(dá)到Faster R-CNN水平。SSD對(duì)中小目標(biāo)檢測(cè)效果差,陳等[20]利用多尺度卷積的特點(diǎn)對(duì)SSD做出改進(jìn),實(shí)現(xiàn)對(duì)中小目標(biāo)也有較好的檢測(cè)效果:對(duì)小占比目標(biāo),利用反卷積和區(qū)域映射,在高分辨率特征圖上提取小占比目標(biāo)的特征;對(duì)中等目標(biāo),增加網(wǎng)絡(luò)深度提取更抽象的語(yǔ)義信息;該方法在提升檢測(cè)精度的同時(shí)增加了網(wǎng)絡(luò)的復(fù)雜度,降低了檢測(cè)速度。
圖11 SSD網(wǎng)絡(luò)結(jié)構(gòu)
表1 獲取每個(gè)卷積特征圖的操作
常用的數(shù)據(jù)庫(kù)有PASCALVOC、ImageNet、MS-COCO等。表2 為CNN 方法檢測(cè)PASCAL VOC2007 數(shù)據(jù)集(20個(gè)類(lèi)別),得到的所有類(lèi)別平均精度mAP(mean Average Precision)。方法名后面的數(shù)字為輸入圖片的像素值(如YOLOv2 228 表示輸入的圖片像素值為228×228),V16表示用VGG16模型,RN表示用ResNet模型,*Faster R-CNN 表示此種方法的RPN 網(wǎng)絡(luò)沒(méi)有和卷積網(wǎng)絡(luò)共享卷積層。
表2 不同算法在VOC2007測(cè)試集上的mAP
表3為FAST R-CNN結(jié)合不同Region proposals方法,檢測(cè)VOC2007 測(cè)試集的mAP 比較,F(xiàn)AST R-CNN的訓(xùn)練集為VOC2007。
表3 三種Region proposals結(jié)合Fast R-CNN的mAP
表4 為CNN 方法檢測(cè)PASCAL VOC2012 數(shù)據(jù)集(20 個(gè)類(lèi)別),得到的所有類(lèi)別平均精度mAP。方法名后面的數(shù)字為輸入圖片的像素值(如YOLOv2 544 表示輸入的圖片像素值為544×544),V16 表示用VGG16模型。
表4 不同算法在VOC2012測(cè)試集上的mAP
表5為不同方法提取候選區(qū)域(Region proposals),召回率和提取速度對(duì)比信息。
表5 不同方法獲取Region proposals的比較
表6 為CNN 方法檢測(cè)速度比較,其中Fast R-CNN的檢測(cè)時(shí)間不包括感興趣區(qū)域ROIs(Regions Of Interest)獲取時(shí)間,SPP-net*表示不包括候選區(qū)域(Region proposal)獲取時(shí)間。
表6 CNN方法的檢測(cè)的速度
(1)Feature-Based檢測(cè)方法,應(yīng)用局限性大,檢測(cè)效果與手工設(shè)計(jì)特征質(zhì)量高低有關(guān),手工設(shè)計(jì)特征往往具有針對(duì)性,對(duì)背景、光照、噪聲等魯棒性很差,泛化能力也弱。Feature-Based檢測(cè)效果可以通過(guò)融合多種特征,以及結(jié)合多種機(jī)器學(xué)習(xí)方法得到提升,也可以通過(guò)設(shè)計(jì)新的手工特征以及根據(jù)目的,選擇合適的機(jī)器學(xué)習(xí)方法得到提升[27-30]。
(2)TWO-STATE 和ONE-STATE 檢測(cè)方法,是后續(xù)目標(biāo)檢測(cè)方法研究的基礎(chǔ),TWO-STATE 方法檢測(cè)精度高、魯棒性好,但是檢測(cè)速度較慢。ONE-STATE方法與TWO-STATE方法相比,結(jié)構(gòu)簡(jiǎn)單、檢測(cè)速度快,但是檢測(cè)精度較低,抗干擾能力差?;贑NN 的檢測(cè)方法抗干擾能力比Feature-Based 方法強(qiáng),如慕[31]利用HOG 特征結(jié)合SVM 的方法,改善了HAAR 特征結(jié)合AdaBoost算法檢測(cè)人臉時(shí),對(duì)側(cè)臉不敏感的問(wèn)題,Yang 等[32]利用CNN網(wǎng)絡(luò)檢測(cè)人體五官并根據(jù)五官的位置結(jié)構(gòu)確定人臉,對(duì)光照影響下的人臉、側(cè)臉以及部分臉都有很好的檢測(cè)效果。
目前,目標(biāo)檢測(cè)仍然是計(jì)算機(jī)視覺(jué)中的重點(diǎn),人們對(duì)檢測(cè)精度與檢測(cè)速度有更高期望。隨著CNN網(wǎng)絡(luò)以及大數(shù)據(jù)的發(fā)展,用于檢測(cè)的數(shù)據(jù)集會(huì)越來(lái)越豐富,幾種典型CNN 框架可以進(jìn)一步被優(yōu)化,或者可以相互結(jié)合使用?;贑NN 的檢測(cè)方法有很強(qiáng)的數(shù)據(jù)依賴(lài)性,訓(xùn)練網(wǎng)絡(luò)需要大量樣本,耗費(fèi)大量計(jì)算資源,模型訓(xùn)練時(shí)間代價(jià)大。如何利用較少的樣本,讓網(wǎng)絡(luò)學(xué)習(xí)到好的檢測(cè)特征,加快網(wǎng)絡(luò)學(xué)習(xí)速度,值得進(jìn)一步研究。
基于CNN的檢測(cè)方法,錨盒(anchor box)是其中的一個(gè)重要部分,錨盒方法需要手動(dòng)設(shè)定大量的錨盒,確保目標(biāo)真實(shí)包圍框能被錨盒覆蓋,只有與目標(biāo)真實(shí)包圍框有重疊的錨盒,用于確定目標(biāo)位置,錨盒利用率不高,阻礙訓(xùn)練速度。在擺脫錨盒方法的基礎(chǔ)上,確定目標(biāo)位置,值得進(jìn)一步研究,例如,Law 等[33]提出的角點(diǎn)網(wǎng)絡(luò)(CornerNet),通過(guò)檢測(cè)目標(biāo)左上角和右下角確定目標(biāo)位置,得到了較好的檢測(cè)結(jié)果。CornerNet在MS COCO測(cè)試集上平均檢測(cè)精度為42.2%,比目前的ONE-STATE方法檢測(cè)精度都高,網(wǎng)絡(luò)結(jié)構(gòu)更簡(jiǎn)單。CornerNet 的檢測(cè)瓶頸是角點(diǎn)檢測(cè),提升角點(diǎn)檢測(cè)正確率,網(wǎng)絡(luò)檢測(cè)精度會(huì)大幅度提高。
CNN 網(wǎng)絡(luò)的框架是以人的先驗(yàn)知識(shí)為基礎(chǔ)搭建的,網(wǎng)絡(luò)中的參數(shù)均是人為設(shè)定的,人為設(shè)定的參數(shù)不見(jiàn)得為最優(yōu),每一層的網(wǎng)絡(luò)參數(shù)(如步長(zhǎng)、卷積核數(shù)目),可以通過(guò)學(xué)習(xí)數(shù)據(jù)集,得到最優(yōu)值,這種方法需要很強(qiáng)的計(jì)算能力支持,利用較少的計(jì)算,得到網(wǎng)絡(luò)參數(shù)的最優(yōu)值是重要的研究方向。通過(guò)學(xué)習(xí)數(shù)據(jù)集,網(wǎng)絡(luò)自行選擇或者搭建檢測(cè)效果更好的框架也有很重要的研究意義。
端到端的模式仍然是后續(xù)研究重點(diǎn)。相對(duì)而言TWOSTATE方法,結(jié)構(gòu)復(fù)雜,優(yōu)化困難,因此,ONE-STATE方法是后續(xù)研究的重要內(nèi)容。