吳 雪,宋曉茹,高 嵩,陳超波
(西安工業(yè)大學(xué) 電子信息工程學(xué)院,陜西 西安 710021)
隨著計算機技術(shù)快速發(fā)展,圖像的分類[1]和檢測[2]成為計算機視覺[3]領(lǐng)域非?;钴S的兩個研究方向,已被廣泛應(yīng)用于國家安防、人機交互[4]和信息安全等方面。與目標(biāo)分類不同,目標(biāo)檢測的任務(wù)包括目標(biāo)分類與目標(biāo)定位兩部分,除了判斷是否包含目標(biāo)物體,目標(biāo)檢測算法還要負(fù)責(zé)找出感興趣的區(qū)域的位置并用外接矩形框出。
根據(jù)目標(biāo)檢測算法中是否需要手動提取特征,可以將目標(biāo)檢測算法分為傳統(tǒng)方法和基于深度學(xué)習(xí)[5]的目標(biāo)檢測算法。傳統(tǒng)的目標(biāo)檢測算法由不同尺度和寬度的區(qū)域選擇、特征提取[6]和目標(biāo)分類3個部分組成。區(qū)域選擇多是采用基于滑動窗口的物體檢測[7]方法,特征提取主要采用手動選擇的方式,如顏色特征、紋理特征、尺度不變特征變換(scale invariant feature transform,SIFT)特征[8]和HOG[9]特征,分類器常用的是支持向量機(support vector machine,SVM)[10]和AdaBoost[11]。由于滑動窗口的無針對性和需要手動提取特征,導(dǎo)致檢測算法時間復(fù)雜度高,魯棒性低、準(zhǔn)確度和實時性差的缺點。
基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù)解決了傳統(tǒng)目標(biāo)檢測滑動窗口選擇和手動提取特征的缺點,通過引入卷積神經(jīng)網(wǎng)絡(luò)(CNN)[12]自學(xué)習(xí)目標(biāo)特征來代替?zhèn)鹘y(tǒng)手動選擇和提取特征的過程,引入?yún)^(qū)域候選框或直接回歸方法使目標(biāo)檢測準(zhǔn)確度和實時性大幅度提升。
本文介紹了深度學(xué)習(xí)中CNN的發(fā)展,對目前基于深度學(xué)習(xí)的主流的兩階段目標(biāo)檢測算法和單階段目標(biāo)檢測算法進(jìn)行了綜述,最后針對目標(biāo)檢測領(lǐng)域現(xiàn)存的問題做出了總結(jié)和展望。
CNN是深度神經(jīng)網(wǎng)絡(luò)模型的一種,由輸入層、卷積層、池化層和全連接層組成,在深度學(xué)習(xí)領(lǐng)域表現(xiàn)出色,成為目前的研究熱點。1998年,Lecun Y L教授[13]將LeNet5 CNN應(yīng)用到圖像的二維卷積,開創(chuàng)了現(xiàn)代CNN的先河。
2012年,Krizhevsky A[14]提出Alex-Net 網(wǎng)絡(luò),該網(wǎng)絡(luò)由5個卷積層和3個全連接層組成,在2個GPU上加速計算,首次引入Relu非線性激活函數(shù)、最大池化、Dropout過擬合方法和標(biāo)準(zhǔn)化層等新技術(shù),獲得了Image net比賽的冠軍,證明了通過更深層的網(wǎng)絡(luò)可以提取圖像更魯棒的信息,標(biāo)志著深度學(xué)習(xí)革命的開始。
2013年,Zeiler M D[15]在Alex-Net基礎(chǔ)上進(jìn)行細(xì)節(jié)調(diào)整,將第一層卷積核大小變?yōu)?×7,設(shè)置卷積參數(shù)步長為2,加入更多的卷積核數(shù)目,通過更小的卷積核和步長提取更多的信息。從可視化角度出發(fā),解釋CNN特征分層次體系結(jié)構(gòu),深層特征更魯棒等性能的原因,并取得2013年ILSVRC的冠軍。
2014年,Simonyan K[16]提出VGG模型,該網(wǎng)絡(luò)提出的目的是為了探究在大規(guī)模圖像識別任務(wù)中,卷積網(wǎng)絡(luò)深度對模型精確度的影響。相比之前CNN,VGG模型將一個大的卷積核分解為連續(xù)多個小卷積核,在每次池化后通道數(shù)量增加1倍,網(wǎng)絡(luò)層數(shù)達(dá)到19層,參數(shù)在140 M左右。VGG模型的優(yōu)點是結(jié)構(gòu)簡潔有效,泛化性能好,容易修改和遷移到其他任務(wù)中去。但缺點是更深的網(wǎng)絡(luò)模型產(chǎn)生巨量參數(shù),在小樣本時容易產(chǎn)生過擬合。
GoogLe-Net是2014年ImageNet比賽的冠軍,該網(wǎng)絡(luò)取消了全連接層和引入輔助分類器,不僅強調(diào)網(wǎng)絡(luò)的深度,也會考慮網(wǎng)絡(luò)的寬度,通過增加CNN的寬度來增加對多尺度的適應(yīng)性,巧妙地利用1×1的卷積核來進(jìn)行通道降維,減少計算量,網(wǎng)絡(luò)深度達(dá)到22層。GoogLe-Net卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)點是預(yù)先給網(wǎng)絡(luò)添加所有可能值,讓網(wǎng)絡(luò)自行學(xué)習(xí)其需要什么參數(shù),不需要人為確定使用哪個過濾器;但缺點是該網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,遷移能力弱。
2015年,微軟研究院He K M等人提出Res-Net殘差網(wǎng)絡(luò)[17],獲得ILSVRC比賽的冠軍。該網(wǎng)絡(luò)全部采用相同大小的卷積核,使用卷積步長取代池化,平均池化層代替全連接層減少參數(shù)量,通過引入跳遠(yuǎn)連接來解決梯度消失的問題,使網(wǎng)絡(luò)深度達(dá)到152層。ResNet的提出使得更深層次的模型可以被訓(xùn)練,后續(xù)2016年到2017年提出的ResNeXt[18],Densenet[19]網(wǎng)絡(luò)對ResNet網(wǎng)絡(luò)結(jié)構(gòu)做出優(yōu)化,大大加快了人工智能的發(fā)展。
為了CNN模型能夠在移動端和嵌入式平臺運行,CNN朝著輕量型化[20]發(fā)展,SqueezeNet[21]使用1×1卷積核和不同尺寸的卷積核進(jìn)行特征提取,使用壓縮技術(shù)實現(xiàn)模型的減小。MobileNet[22]使用深度可分離卷積方法代替?zhèn)鹘y(tǒng)卷積方式,達(dá)到減少網(wǎng)絡(luò)權(quán)值參數(shù)的目的。
圖像的目標(biāo)檢測任務(wù)主要是找到圖像中的目標(biāo)位置并對其進(jìn)行分類。基于深度學(xué)習(xí)的目標(biāo)檢測算法利用CNN代替?zhèn)鹘y(tǒng)的手動選取特征,主要可以分為兩階段的目標(biāo)檢測算法和單階段的目標(biāo)檢測算法。兩階段檢測算法將物體檢測按分類問題對待,首先生成包含物體的區(qū)域,然后對候選區(qū)域進(jìn)行分類和校準(zhǔn),得到最終的檢測結(jié)果。單階段檢測算法直接給出最終的檢測結(jié)果,沒有顯式的生成候選框步驟。
2.1.1 R-CNN模型
Girshick R等人提出的R-CNN[23]模型使目標(biāo)檢測取得巨大突破,成為后續(xù)R-CNN系列兩階段目標(biāo)檢測的開山之作。R-CNN的框架流程如圖1所示,首先使用SS (selective search) 算法提取大約2 000個候選框;然后將提取到的候選框做預(yù)處理固定到相同尺寸,送入Alex-Net網(wǎng)絡(luò)進(jìn)行區(qū)域特征提??;最后對CNN提取的區(qū)域特征使用SVM進(jìn)行分類與邊框校準(zhǔn)。R-CNN算法的性能較傳統(tǒng)算法有很大的提升,但還存在SS算法產(chǎn)生候選框耗時嚴(yán)重,裁剪會導(dǎo)致信息丟失或引入過多背景,卷積特征重復(fù)計算量大和網(wǎng)絡(luò)訓(xùn)練需要分步驟進(jìn)行的缺點。
圖1 R-CNN模型
2.1.2 SPP-Net模型
為了任意大小的圖像能夠輸入網(wǎng)絡(luò),何凱明等人提出SPP-Net[24]目標(biāo)檢測模型,如圖2所示。
圖2 SPP-Net目標(biāo)檢測框架
通過在最后一個卷積層與全連接層間加入金字塔池化層,結(jié)構(gòu)如圖3所示,將SS算法生成的不同大小的候選框歸一化到固定尺寸的全連接層上,完成對整張圖像只需進(jìn)行一次卷積特征提取的操作,避免了R-CNN對2 000個區(qū)域都會計算CNN特征的過程。SPP-Net目標(biāo)檢測算法能夠適應(yīng)不同尺寸,實現(xiàn)了卷積特征的共享計算,大大減少了計算量。但缺點除了繼承R-CNN需要存儲大量特征和多階段訓(xùn)練等剩余問題,而且由于金字塔池化層的多尺度,增加了在金字塔池化層之前的所有卷積層不能微調(diào)的新問題。
圖3 金字塔池化層
2.1.3 Fast R-CNN模型
2015年Ross G等人[25]提出Fast R-CNN目標(biāo)檢測算法,該模型的流程結(jié)構(gòu)如圖4所示。通過結(jié)合SPP-Net改進(jìn)R-CNN,使用VGG16代替Alex-Net網(wǎng)絡(luò),簡化SPP算法中的金字塔池化層為單尺度使得所有層參數(shù)可以微調(diào),將SVM分類器改為SoftMax分類器,通過引入多任務(wù)學(xué)習(xí)模式,同時解決分類和位置回歸的問題。相比于R-CNN和SPP-Net,Fast R-CNN將多個步驟整合到一個模型中,訓(xùn)練過程不再分步進(jìn)行,減少了磁盤空間的占用,在提升網(wǎng)絡(luò)性能的同時加快了訓(xùn)練速度。但Fast R-CNN的不足仍是需要專門的生成候選框算法。
圖4 Fast R-CNN 流程圖
2.1.4 Faster R-CNN模型
使用SPP-Net與Fast R-CNN進(jìn)行檢測的耗時性主要集中在使用專門的候選框生成算法,為了解決此問題,Ren S 等人[26]又提出Faster R-CNN目標(biāo)檢測框架,過程如圖5所示。
圖5 Faster R-CNN框架
該算法引入RPN(region proposal networks),代替專門的生成候選窗口算法,通過對特征圖上的每個點進(jìn)行滑窗操作,將不同尺寸的錨點框映射到原始圖片,得到候選區(qū)域,完成前景背景的粗分類和粗定位。RPN的使用,使Faster R-CNN能夠?qū)⒕W(wǎng)絡(luò)中區(qū)域建議、特征提取、分類及定位多個步驟整合到一起,真正成為端到端的訓(xùn)練。但由于Faster R-CNN特征圖上的一個錨點框?qū)?yīng)于原圖中一塊較大區(qū)域,因此,Faster R-CNN對小目標(biāo)檢測效果不是很好。
2.1.5 后續(xù)兩階段目標(biāo)檢測器的改進(jìn)
Faster R-CNN已經(jīng)形成了具體的兩階段檢測框架,后續(xù)也有從更好的CNN特征,更完善的ROI分類,更精準(zhǔn)的RPN和樣本后處理等方面對Faster R-CNN算法的改進(jìn)。R-FCN[27]提出全卷積化設(shè)計,引入變換敏感分值圖和位置敏感池化,將VGG16主干網(wǎng)絡(luò)替換為ResNet,進(jìn)一步實現(xiàn)更多計算的共享。Hyper Net[28]是2016年由清華大學(xué)提出的Faster R-CNN變種,該網(wǎng)絡(luò)對高層特征采用Pooling方式進(jìn)行下采樣,低層次特征采用反卷積方式進(jìn)行上采樣,然后將不同尺度的特征融合輸入到RPN網(wǎng)絡(luò)中,相比Faster R-CNN,能夠?qū)π∥矬w檢測有比較好的效果。但由于引入了新的卷積、池化和反卷積操作,帶來了時間上的消耗。
2.2.1 YOLO v1算法
兩階段目標(biāo)檢測算法雖然在檢測任務(wù)上取得了很大的進(jìn)步,但由于模型復(fù)雜,仍存在訓(xùn)練參數(shù)多,訓(xùn)練時間長的缺點?;诨貧w的YOLO v1[29]算法直接使用一個CNN同時完成分類和回歸任務(wù),模型如圖6所示。
圖6 YOLO流程框架
該算法剔除了生成候選框的操作,將圖像劃分為網(wǎng)格,使用一個神經(jīng)網(wǎng)絡(luò),直接在每個網(wǎng)格中預(yù)測物體邊框和類別,大大提升了檢測速度。且由于每個物體邊框的預(yù)測都以整張圖的特征作為輸入,因此,YOLO v1算法預(yù)測出來的邊框都是綜合了整張圖的信息,包含了充足的上下文信息。但由于YOLO v1算法以每個格子作為中心點,因此存在準(zhǔn)確率低,對小尺度物體、密集排布的物體檢測精度低的問題。
2.2.2 YOLO v1 系列優(yōu)化算法及擴展
為了克服YOLO v1檢測速度快,但檢測精度低的問題,YOLO v2[30]算法引入BN(batch normalization)、多尺度訓(xùn)練、錨框機制和細(xì)粒度特征等方法對YOLO v1算法進(jìn)行改進(jìn),YOLO v3[31]算法在YOLO v2的基礎(chǔ)上,采用更好的主干網(wǎng)絡(luò)、多尺度預(yù)測和9個錨框進(jìn)行檢測,使得檢測算法在保證實時性的同時,精度提高。
2.2.3 SSD算法
2016年,SSD[32](single shot multibox detector)算法被提出。該算法結(jié)合了YOLO算法和Faster R-CNN中的錨框設(shè)計機制,在結(jié)構(gòu)上采用VGG16的卷積層作為主干網(wǎng)絡(luò),并在VGG基礎(chǔ)上新增加了6個卷積層來獲得更多的特征圖。通過新增加多尺度檢測和設(shè)置多個先驗框,利用大尺度特征圖檢測小物體,小尺度特征圖檢測大物體來識別不同大小同一類別的物體。相比Faster R-CNN和YOLO算法,SSD算法的優(yōu)點是將不同層次的特征圖進(jìn)行融合,提升了速度和檢測精度。但缺點仍是對小目標(biāo)不具有魯棒性。
2.2.4 SSD系列優(yōu)化算法及擴展
SSD算法對小目標(biāo)不夠魯棒性的主要原因是特征圖表征能力不夠強,2017年提出的DSSD[33]算法使用更好的ResNet CNN作為主干網(wǎng)絡(luò),將經(jīng)過反卷積得到的深層次特征和淺層次特征相融合,為小目標(biāo)增加更多的上下文信息,使用更復(fù)雜的帶跨層連接的預(yù)測模塊預(yù)測類別和邊框。DSSD相比SSD,提取到了更加魯棒性的特征,使得精度有所提高。Retina Net[34]使用對樣本給予不同權(quán)重的方法解決樣本不平衡導(dǎo)致精度不高的問題,大幅度提升了單階段檢測器的精度。
兩階段目標(biāo)檢測算法和單階段目標(biāo)檢測算法是目前基于深度學(xué)習(xí)目標(biāo)檢測的主流框架。兩階段目標(biāo)檢測算法相比單階段目標(biāo)檢測算法,優(yōu)點是在定位和檢出率方面精度高,使用錨框機制考慮不同尺度的區(qū)域提升目標(biāo)檢測性能。但缺點是速度慢,訓(xùn)練時間長。單階段目標(biāo)檢測算法相比兩階段目標(biāo)檢測算法,優(yōu)點是速度快,能夠?qū)W習(xí)到物體的泛化特征,但缺點是在定位和檢出率方面精度低,對小物體檢測效果不好?;谏疃葘W(xué)習(xí)的目標(biāo)檢測算法相比傳統(tǒng)檢測算法在精度和實時性上獲得了較大的提升,但由于現(xiàn)實場景的復(fù)雜多變性,依然面臨有許多問題。如何減小背景復(fù)雜對目標(biāo)檢測的影響以及如何降低因目標(biāo)尺度和形狀變化引起的精度下降問題成為目標(biāo)檢測領(lǐng)域研究的熱點。