高 楊,肖 迪
(南京工業(yè)大學(xué) 電氣工程與控制科學(xué)學(xué)院,江蘇 南京 211816)
目標(biāo)檢測主要可以劃分成兩個部分,一是找出圖像或視頻的中的感興趣區(qū)域,二是輸出檢測目標(biāo)和位置,總的來說就是從視頻或者圖像中找到目標(biāo)物體并且定位。
現(xiàn)在目標(biāo)檢測的算法主要有兩種,一種是基于手工特征的傳統(tǒng)目標(biāo)檢測算法,另一種是基于深度學(xué)習(xí)的目標(biāo)檢測算法。傳統(tǒng)的目標(biāo)檢測算法主要通過對目標(biāo)提取手工特征,進(jìn)行特征學(xué)習(xí)檢測來實現(xiàn)目標(biāo)檢測。尺度不變特征變換(scale invariant feature transform,SIFT)[1]、方向梯度直方圖(histogram of oriented gradient,HOG)[2]、局部二值化(local binary patterns,LBP)[3]等是人們根據(jù)自身經(jīng)驗所設(shè)計的經(jīng)典的手工特征,它們在傳統(tǒng)目標(biāo)檢測算法中有著優(yōu)秀的表現(xiàn)。但在人們的研究中,基于手工特征的傳統(tǒng)目標(biāo)檢測算法主要存在兩個問題,一個是滑動窗口的區(qū)域選擇方法會導(dǎo)致很多冗余窗口的出現(xiàn),占用很多的目標(biāo)檢測時間,同時會影響最后的檢測精度,另一個是這些手工特征大多數(shù)都是淺層特征,只能在某一方面或是特定的場景下表現(xiàn)出不錯的效果,面對通用的目標(biāo)檢測時表現(xiàn)的不盡如人意,對于目標(biāo)變化缺乏魯棒性。卷積神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)推動目標(biāo)檢測領(lǐng)域取得突破性進(jìn)展,使得目標(biāo)檢測不再局限于手工特征。深度學(xué)習(xí)在目標(biāo)檢測算法中主要衍生出兩個方向,一方面是結(jié)合region proposal和CNN分類的“兩步”式深度學(xué)習(xí)目標(biāo)檢測算法,主要代表為R-CNN[4]、FastR-CNN[5]、FasterR-CNN[6]。R-CNN算法在PASCALVOC2012測試集上的平均精度達(dá)到了53.3%,相比于傳統(tǒng)目標(biāo)檢測方法在性能上提高了30%。隨后在 R-CNN 的基礎(chǔ)上進(jìn)行不斷的改進(jìn),產(chǎn)生了FastR-CNN、FasterR-CNN等目標(biāo)檢測算法。另一方面是基于回歸的“一步”式深度學(xué)習(xí)目標(biāo)檢測算法,主要包括SSD[7]、YOLO[8]。這兩個方面的目標(biāo)檢測算法在目標(biāo)檢測上有著不同的表現(xiàn)形式,基于region proposal的“兩步”式深度學(xué)習(xí)目標(biāo)檢測算法可以有很高的檢測精度,但由于候選框的生成需要耗費許多時間,導(dǎo)致這一類算法在檢測速度上沒有很好表現(xiàn),基于回歸思想的目標(biāo)檢測算法因為舍去了候選框這一步驟,這類算法在檢測速度上有很好的表現(xiàn),能達(dá)到實時的目標(biāo)檢測的效果,但在檢測精度上表現(xiàn)的不如上一類算法。因此提升目標(biāo)檢測精度和檢測速度是現(xiàn)在目標(biāo)檢測算法研究的主要方向。
目標(biāo)檢測算法性能在深度學(xué)習(xí)的幫助下有了很大的提升,準(zhǔn)確率(precision)、召回率(recall)和平均檢測精度(mean average precision)的表現(xiàn)越來越好。但是我們發(fā)現(xiàn)這些算法在小尺度目標(biāo)上的檢測表現(xiàn)的不是太好,主要因為一些小尺度目標(biāo)分辨率低,背景復(fù)雜,通過卷積神經(jīng)網(wǎng)絡(luò)中的池化操作后,這些小目標(biāo)的特征圖會出現(xiàn)模糊和分辨率不足的情況。本文針對Faster R-CNN目標(biāo)檢測算法中小目標(biāo)檢測精度不高和定位不準(zhǔn)確的問題,提出運用特征融合的方法來豐富特征圖的信息,增強(qiáng)模型的檢測精度,尤其是提升模型對于小目標(biāo)的檢測能力。FasterR-CNN運用RPN(region proposal network)來獲得目標(biāo)候選區(qū)域,比之前R-CNN系列目標(biāo)檢測模型有更快的速度和精度。在RPN網(wǎng)絡(luò)中對于錨框進(jìn)行新的設(shè)定,在特征融合基礎(chǔ)上繼續(xù)加強(qiáng)小目標(biāo)的檢測。本文通過運用多層特征融合增強(qiáng)特征表現(xiàn)形式,重新設(shè)定錨框增加小尺度的錨框,算法檢測速度沒有受到影響的基礎(chǔ)上進(jìn)一步提高模型對目標(biāo)的檢測精度,小目標(biāo)定位不準(zhǔn)確和識別困難的問題也得到了一定的改進(jìn)。
卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)[9]是深度學(xué)習(xí)中重要的組成部分,是由人工神經(jīng)網(wǎng)絡(luò)發(fā)展而來,是一種深度前饋人工神經(jīng)網(wǎng)絡(luò)。在目標(biāo)檢測中主要用于特征提取部分,相比于手工特征不能很好地表達(dá)原始目標(biāo)的特征信息,CNN可以通過優(yōu)化算法獲得提取特征的合適參數(shù),從而獲取目標(biāo)更深層次的語義信息,有利于目標(biāo)檢測中的分類。CNN在特征提取方面那么的受歡迎,不僅僅因為CNN提取的特征具有很強(qiáng)的表征能力和魯棒性,更因為CNN本身有著自己獨特的優(yōu)勢:權(quán)值共享、局部感知野。CNN通過權(quán)值共享和局部感知野可以降低網(wǎng)絡(luò)參數(shù)的數(shù)量,網(wǎng)絡(luò)訓(xùn)練因此不會那么復(fù)雜。卷積層、激活層、池化層、全連接層等是CNN的主要內(nèi)容,卷積層和池化層主要用于目標(biāo)的特征提取,通過這兩個結(jié)構(gòu)進(jìn)行特征提取后,特征分辨率減少但也增加了模型的不變性。在特征提取方面運用的卷積神經(jīng)網(wǎng)絡(luò)是VGG16[9],VGG16主要由13層卷積層和3層全連接層組成,卷積層主要采用了3*3、1*1 的卷積核,池化層則運用了2*2的最大池化來進(jìn)行網(wǎng)絡(luò)的降維,如圖1所示。采用多個小卷積核的卷積層可以實現(xiàn)卷積核較大的卷積層的效果,還能夠在網(wǎng)絡(luò)中加入更多的非線性映射,使得網(wǎng)絡(luò)有更強(qiáng)的表達(dá)能力。
圖1 VGG16網(wǎng)絡(luò)結(jié)構(gòu)
在FasterR-CNN模型中,使用VGG16網(wǎng)絡(luò)來用于關(guān)鍵的特征提取部分,該模型運用了VGG16網(wǎng)絡(luò)的卷積層5的輸出特征。只采用卷積層5的輸出特征使得提取的特征具有豐富的語義信息,對于目標(biāo)的分類有很好的提升效果,但卷積層5的輸出特征在經(jīng)過pooling操作后導(dǎo)致輸出特征丟失了許多低層網(wǎng)絡(luò)包含的細(xì)節(jié)信息,如目標(biāo)像素信息、邊緣信息等[10],對于一些像素較小的目標(biāo)在經(jīng)過4個pooling操作后,會使得小目標(biāo)的特征圖比原目標(biāo)減少了1/16,也就是說一些像素小的目標(biāo)的特征圖的像素更小或者導(dǎo)致特征消失。因此,單單采用卷積層5的輸出特征不僅會影響模型的目標(biāo)檢測準(zhǔn)確度,而且對于小目標(biāo)的檢測準(zhǔn)確度影響更大。本文擬運用多層特征融合的方法來增強(qiáng)模型的目標(biāo)檢測準(zhǔn)確度,對于得到的多特征圖既利用了低層網(wǎng)絡(luò)的輸出特征,還擁有高層網(wǎng)絡(luò)的語義信息,使得目標(biāo)檢測的準(zhǔn)確度得到了提升。
VGG16網(wǎng)絡(luò)結(jié)構(gòu)中主要包含5個卷積段,前面兩個卷積段中每個卷積段是采用兩個卷積層組合的形式,后面3個卷積段則是采用3個卷積層組合的形式。對于多層特征融合,采用合適的卷積層的輸出特征進(jìn)行特征融合是很重要的。卷積層1的特征圖尺寸大,目標(biāo)的特征數(shù)量也很多,對目標(biāo)檢測的貢獻(xiàn)是不明顯的,對于檢測速度還會有影響,卷積層5的輸出特征包含了豐富的語義特征,對于目標(biāo)檢測的影響很明顯。因此,在進(jìn)行多層特征融合時,舍去了卷積層1的輸出特征,以卷積層5的輸出特征為主,聯(lián)合卷積層2、卷積層3、卷積層4進(jìn)行特征融合研究,選擇合適的多層卷積特征進(jìn)行融合。VGG16每個卷積層提取出的特征進(jìn)行融合的前提是需要每一層特征在融合前具有相同的分辨率,本文主要以卷積層4為基礎(chǔ),前面的卷積層需要進(jìn)行下采樣,卷積層5則利用反卷積來使得所融合的特征具有相同的維度。在進(jìn)行特征融合之前,再利用局部響應(yīng)歸一化對特征圖的輸出進(jìn)行處理,提高模型的魯棒性,增強(qiáng)目標(biāo)檢測的準(zhǔn)確度。本文設(shè)計了3種多層特征的融合方式,第一種是融合卷積層4和卷積層5,第二種是融合卷積層3、卷積層4和卷積層5,第三種是融合卷積層2、卷積層3、卷積層4、卷積層5。通過實驗來選取合適的多層特征融合方式,提高模型的檢測準(zhǔn)確度。
候選區(qū)域的提取是目標(biāo)檢測的主要內(nèi)容之一,F(xiàn)asterR-CNN的核心就是提出了RPN網(wǎng)絡(luò)結(jié)構(gòu),將候選區(qū)域的提取和提取特征圖的方法聯(lián)系到一起,將候選區(qū)域的提取融入到卷積神經(jīng)網(wǎng)絡(luò)當(dāng)中,相比于FastR-CNN,目標(biāo)檢測的速度加快了很多。本文將不采用conv5_3的輸出作為RPN網(wǎng)絡(luò)的輸入,使用多層融合的特征圖作為RPN網(wǎng)絡(luò)的輸入來提取候選區(qū)域。原RPN網(wǎng)絡(luò)中錨框的設(shè)計是在特征圖上產(chǎn)生9個錨框,這9個錨框包括3種不同的面積和3種不同的比例的預(yù)測框。錨框的設(shè)計可以根據(jù)需求改變,為了進(jìn)一步提升目標(biāo)檢測的精度以及加強(qiáng)模型對于小目標(biāo)的檢測能力,對于錨框進(jìn)行新的設(shè)定,采用了5種不同大小面積(322,642,1282,2562,5122),4種不同比例(1∶2,1∶1,2∶1,3∶1)。這樣的設(shè)定融入了很多像素較小的目標(biāo)以及增添了不同的比例,對于一些小目標(biāo)的檢測進(jìn)行了提升。在候選區(qū)域提取過程中,會產(chǎn)生較多的候選框,對于重疊的目標(biāo)檢測候選框,利用非極大值抑制(non maximum suppression,NMS)[11]算法來剔除掉,得到最好的候選框。
1.4.1 算法描述
目標(biāo)檢測,實際上可以分為兩個部分,一是找出圖像或視頻的中的感興趣區(qū)域,二是輸出檢測目標(biāo)和位置。針對Faster R-CNN目標(biāo)檢測算法中小目標(biāo)檢測精度不高和定位不準(zhǔn)確的問題,提出多層特征融合的方法來豐富特征圖的信息,提升Faster R-CNN的檢測精度以及小目標(biāo)的檢測能力。在提取候選框環(huán)節(jié),本文重新設(shè)定了錨框,設(shè)置了更多大小和比例,進(jìn)一步加強(qiáng)模型對于小目標(biāo)的檢測能力。
1.4.2 算法步驟
算法流程如圖2所示。算法具體步驟如下:
(1)輸入目標(biāo)圖像,利用深度卷積神經(jīng)網(wǎng)絡(luò)提取每一卷積層目標(biāo)特征;
(2)利用多層特征融合的方法融合不同卷積層的特征,生成融合特征圖;
(3)將融合特征圖作為RPN網(wǎng)絡(luò)的輸入進(jìn)行候選區(qū)域提取,設(shè)置新的錨框增強(qiáng)不同目標(biāo)的檢測性能,生成目標(biāo)檢測候選框;
(4)運用NMS取出重疊的檢測候選框,尋找最優(yōu)的候選框;
(5)將融合特征圖和獲得的候選框送到RoI pooling層;
(6)通過RoI pooling層之后送入后續(xù)網(wǎng)絡(luò)進(jìn)行目標(biāo)分類和判別。
圖2 基于多層特征融合的小目標(biāo)檢測算法流程
為了驗證本文算法的有效性,本文采用PASCAL VOC 2007[12]測試數(shù)據(jù)集來對設(shè)計的3種融合方式進(jìn)行實驗。VOC 2007數(shù)據(jù)集中包括20類目標(biāo),這些目標(biāo)都是我們?nèi)粘I钪谐R姷?,也具有許多生活中的實際場景,其中也有現(xiàn)在一些目標(biāo)檢測算法不容易解決的小目標(biāo),綜上考慮選擇了PASCAL VOC 2007測試數(shù)據(jù)集。本文算法所采用的運行環(huán)境為操作系統(tǒng)64位Ubuntu14.04,運用的深度學(xué)習(xí)框架為TensorFlow框架,所用編程語言是Python。在目標(biāo)檢測算法中,通常采用的評價指標(biāo)有準(zhǔn)確率(precision)、召回率(recall)、AP(average precision)、mAP(mean average precision)、FPS(frame per second)等。本文提出的算法是保證FasterR-CNN檢測速度基礎(chǔ)上提升目標(biāo)的檢測精度,因此本文采用的評價指標(biāo)為mAP和FPS。mAP是種類不一樣的目標(biāo)的AP取平均值,其定義如式(1),式(2)所示。評價指標(biāo)FPS主要代表目標(biāo)檢測模型的檢測速度
(1)
(2)
為了驗證本文所提方法的有效性,對3種不同的融合方式進(jìn)行實驗,將3種不同的融合方式與FastR-CNN和FasterR-CNN作比較。通過與優(yōu)秀的目標(biāo)檢測算法比較,驗證得出多層特征融合對于目標(biāo)檢測的準(zhǔn)確度是有所提升的,再從3種不同融合方式中選擇最適合的多層特征融合方式。不同特征融合方式的目標(biāo)檢測精度和速度實驗結(jié)果見表1。
表1 基于PASCAL VOC 2007的目標(biāo)檢測精度和速度
由表1可知,多層特征融合可以有效地提升目標(biāo)檢測的精度,不同的融合方式對于檢測精度的影響不同。卷積層4與卷積層5相融合的mAP比FastR-CNN提高了4.1%,比檢測精度已經(jīng)很高的FasterR-CNN提升了0.9%。另外兩種融合方式在檢測精度上提升的更多,卷積層2、卷積層3、卷積層4和卷積層5的融合在精度上與卷積層3、卷積層4、卷積層5相差不多,但前一種融合方式檢測速度受影響較大,卷積層3、卷積層4、卷積層5在檢測速度影響不大情況下提升了更多的檢測精度,不同層特征融合可視化如圖3所示,特征融合可視化讓我們可以更好地去了解多層特征融合,從圖中不僅可以看出特征映射的響應(yīng)強(qiáng)度,而且對于目標(biāo)的位置信息也有良好的表現(xiàn)。
圖3 特征融合可視化
通過對于每個種類的具體分析,發(fā)現(xiàn)多層特征融合在一些形態(tài)多樣、較小目標(biāo)檢測上提升了更多的檢測精度,如椅子、船只和植物等,具體見表2。
由表2可知,多層特征融合在小目標(biāo)的檢測上比原模型表現(xiàn)的優(yōu)秀的多,植物這一類別是原有優(yōu)秀算法表現(xiàn)最差的一個類別,進(jìn)行多層特征融合之后,植物這一類別的精確度提升了將近10%,多尺寸,多形態(tài)的椅子、瓶子和船只等在檢測精度上都有了很大的提升。因此多層特征融合和錨框的重新設(shè)定可以使目標(biāo)檢測有更高的精度,在一些形態(tài)多樣,尺寸多樣的小目標(biāo)上表現(xiàn)的更為突出。
表2 基于PASCAL VOC 2007中小目標(biāo)的檢測精度
通過對于實驗結(jié)果的分析,3種多層特征融合方式都可以一定程度上提升目標(biāo)檢測的精度,但第一種融合方式在精度上提升不是很明顯,第三種融合方式在精度上提升了很多,但檢測速度受到了一定的影響。本文得出卷積層3、卷積層4和卷積層5三層卷積特征相融合能夠在FasterR-CNN基礎(chǔ)上有效地提高檢測精度且不影響目標(biāo)檢測速度。因此基于FasterR-CNN改進(jìn)的目標(biāo)檢測算法在多層特征融合方面選擇卷積層3、卷積層4和卷積層5的卷積特征,錨框的設(shè)定增添了不同的面積與不同的比例。為了比較兩種算法的性能,選取了一些代表性的實驗結(jié)果,F(xiàn)asterR-CNN目標(biāo)檢測算法實驗結(jié)果如圖4所示,本文提出的改進(jìn)算法如圖5所示。對比圖4(a)和圖5(a),本文算法能夠檢測出更遠(yuǎn)處的目標(biāo)小車,相比于FasterR-CNN算法提升小目標(biāo)的檢測能力,從圖4(b)和圖5(b)可以看出對于椅子一類形態(tài)多樣的目標(biāo),本文算法有著更好的檢測效果,總體的檢測精度也有很好的提升,圖4(c)和圖5(c)則可以看出本文提出的基于特征融合的小目標(biāo)檢測算法在目標(biāo)定位上效果稍好一點。仔細(xì)分析后可以得出,基于FasterR-CNN的目標(biāo)檢測算法在運用多層特征融合的方法后,不僅目標(biāo)的檢測精度得到了提升,而且對于小目標(biāo)的召回率也有不錯的提升,錨框的新設(shè)定增強(qiáng)了目標(biāo)定位問題。通過完整的實驗,本文提出的基于改進(jìn)的 FasterR-CNN 目標(biāo)檢測算法的mAP為75.4%,相較于FasterR-CNN提高了2.2%,有效提升了FasterR-CNN的檢測精度,對于小目標(biāo)的檢測能力有著明顯的提升,目標(biāo)的定位效果也有很好的改善,在目標(biāo)檢測速度上沒有明顯的影響。因此認(rèn)為本文的改進(jìn)算法的綜合性能比原有算法有著明顯的提升。
圖4 Faster R-CNN算法
圖5 本文算法
本文針對Faster R-CNN目標(biāo)檢測算法中小目標(biāo)檢測精度不高和定位不準(zhǔn)確的問題,運用多層特征融合和錨框的重新設(shè)定來增強(qiáng)目標(biāo)檢測的精度。利用多層特征融合生成融合特征圖,使得到的特征圖具有豐富的信息,有利于目標(biāo)的檢測,對于錨框的重新設(shè)定能生成更多的候選框,有利于不同尺寸的目標(biāo)檢測。本文提出的基于多層特征融合的小目標(biāo)算法在不影響檢測速度的情況下能夠有效地提高目標(biāo)檢測精度。如何在高檢測精度基礎(chǔ)上提高目標(biāo)檢測速度將是我們之后研究的方向。