張 莉,孫克雷
(安徽理工大學計算機科學與工程學院,安徽淮南 232001)
在對物體和場景的識別中,多尺度目標檢測是指準確定位出圖像中用戶感興趣的目標(該目標具有尺度不一的特性),并能準確判斷出每個目標的類別、邊界框的位置和大小[1]。由于目標檢測任務中的目標存在較大的尺度變化,所以算法能精確框選出大小不一的目標框的問題亟待解決。區(qū)域卷積網(wǎng)絡[2](Region-Convolutional Neural Networks,R-CNN)、金字塔池化網(wǎng)絡[3](Spatial Pyramid Pooling Netwoks,SPPNet)、你只看一次網(wǎng)絡[4](You Look Only Once,YOLO)、單次檢測器[5](Single Shot MultiBox Detector,SSD)和基于區(qū)域的快速CNN[8](Faster Region-Convolutional Neural Networks,F(xiàn)aster R-CNN)等算法相繼被提出。2015年,R Girshickj提出Fast R-CNN,利用感興趣區(qū)域(Regions of Interest,RoI)提高目標檢測質(zhì)量,減少目標檢測的運行時間[2]。2014年,K He等提出更新金字塔網(wǎng)絡層(Spatial Pyramid Pooling,SSP),SSP層之前的卷積層和檢測器無法共享卷積特征,從而限制了檢測精度的提升[3]。2016年,J Redmon提出的YOLO運行速度可達每秒155幀圖像,目標檢測平均準確度均值mAP較高[4],但是YOLO的單元格僅預測兩個邊界框,且屬于同一類別,故對于小目標的檢測YOLO的檢測精度下降。2016年,W Liu提出單次檢測器SSD算法,它以犧牲檢測精度為代價來提高檢測速度[5],但在識別被放大的小物體時檢測精度明顯下降。綜上所述,當下流行的目標檢測算法在小尺度物體的目標檢測場景有較好的檢測效果;對于多尺度目標檢測,受候選區(qū)域推薦和區(qū)域分類方法的影響,在檢測極大或極小的目標物體時檢測效果差強人意。
針對多尺度輸入的圖像既要檢測精度高又要檢測速度快,本文提出在Faster R-CNN的基礎上對多尺度目標檢測算法進行改進。針對目標檢測速度慢的問題,提出基于改進的區(qū)域生成網(wǎng)絡(Region Proposal Network,RPN),用候選區(qū)域網(wǎng)絡RPNS和RPNB得到帶有對象得分的矩形目標推薦;針對存在小目標檢測精度低的不足,設置多尺度和多高寬比的錨點框計算并提取每個推薦的局部特征,用DOL設置閾值進行分類和回歸。
目標檢測算法的主要思想是從圖像中檢測并定位多個特定目標。R-CNN 采用端到端的方式訓練CNN,其檢測過程包含區(qū)域推薦、特征提取和區(qū)域分類[6]。R-CNN的成功在于兩點:利用了卷積神經(jīng)網(wǎng)絡良好的特征提取性能;利用了有監(jiān)督預訓練、領域相關微調(diào)和目標類別分類3個有效訓練步驟[7]。但計算量大、標注數(shù)據(jù)稀少,這導致了R-CNN檢測速度很慢。基于R-CNN的目標檢測過程如圖1所示,首先輸入一幅圖像,然后自底向上提取推薦區(qū)域,并變化為固定大小的推薦區(qū)域,再用卷積神經(jīng)網(wǎng)絡計算每個推薦區(qū)域的特征,最后用支持向量機對推薦區(qū)域進行分類。
圖1 R-CNN的目標檢測過程
針對訓練過程中R-CNN標注數(shù)據(jù)稀少,研究人員提出在輸入圖像之后加入感興趣區(qū)域RoI。RoI在Fast R-CNN結(jié)構(gòu)中指卷積特征圖中的一個矩形窗口,包含參數(shù):左上角坐標(r,c)、高度和寬度(h,w),把這些參數(shù)放在一起定義一個四元數(shù)組(r,c,h,w)。RoI池化是利用最大池化把所有的RoI都轉(zhuǎn)變成具有固定大小空間H×W的特征圖,其中H、W是指層超參數(shù),獨立于任何特定的RoI。RoI最大池化的具體實現(xiàn)過程:先將h×w大小的RoI窗口劃分成H×W個大小約(h/H)×(w/W)的子窗口,再把每個窗口的數(shù)字最大池化到相應的輸出單元。預訓練Fast R-CNN 會使用一個訓練過的深層卷積神經(jīng)網(wǎng)絡來初始化。Fast R-CNN的目標檢測過程如圖2所示。由于每個RoI均有softmax概率和邊框回歸偏移兩個輸出向量,解決了R-CNN在訓練過程中存在的標注數(shù)據(jù)稀少的問題,縮減了時空費用,并且提升了算法的檢測精度。但是,F(xiàn)ast R-CNN因依賴耗時的RPN,多尺度目標檢測效果不佳。
圖2 Fast R-CNN的目標檢測過程
為了克服區(qū)域推薦算法的局限,需要對Fast R-CNN算法進一步改進[8-10]。眾所周知,F(xiàn)ast R-CNN算法的缺陷在于對目標位置的假設不準確[11-14],故首當其沖要解決的就是區(qū)域推薦算法RPN,用微調(diào)RPN的策略來解決算法產(chǎn)生的時空代價,從而解緩Fast R-CNN在目標檢測過程中因使用耗時的區(qū)域推薦算法而產(chǎn)生檢測速度慢和目標檢測精度不高的問題。通過區(qū)域推薦算法,F(xiàn)aster R-CNN在面向多尺度、多目標的圖像進行目標檢測時檢測精度相對高。實驗中使用基于RoI的檢測器模塊,加入候選框重疊度DOL,該公式的核心是分別計算出大目標與小目標候選框的重疊面積和單獨一個小目標的候選框面積,若前者超過后者的θ倍,就把相應的小目標候選框刪除,從而達到減少目標檢測時間和提升算法對不同尺度目標的檢測效果。
傳統(tǒng)的Faster R-CNN 算法在目標檢測時,首先將要進行目標檢測的圖片輸入到網(wǎng)絡中,通過卷積層的卷積操作,產(chǎn)生不同尺度的特征圖(Feature map),特征圖一部分直接送到分類器進行分類,另一部分經(jīng)過區(qū)域推薦網(wǎng)絡RPN,生成多個推薦對象,分類器對推薦對象按照一定的分類標準進行分類。在此過程中,需對所有可能的候選框進行判別,這與依賴區(qū)域推薦網(wǎng)絡來提供目標的精確位置有關,且為了提高準確率,需位置精修,最終的候選框相對稀疏,導致基于Faster R-CNN的目標檢測算法在速度上不能滿足實時性的要求。Faster RCNN的目標檢測過程如圖3所示。
圖3 Faster R-CNN的目標檢測過程
針對多尺度問題,設計兩個具有不同錨點的區(qū)域生成網(wǎng)絡RPNS和RPNB。相比傳統(tǒng)的網(wǎng)絡用Selective Search 來提取候選框,用RPNS和RPNB來提取候選框一方面節(jié)約了時間成本,另一方面可作為卷積網(wǎng)絡的一部分融入到網(wǎng)絡結(jié)構(gòu)中。區(qū)域推薦網(wǎng)絡的運作機制:輸入由卷積層得到的共享特征圖,通過滑動窗口(Sliding Window)得到不同通道的特征圖,實驗中將滑動窗口設置為3×3。RPNS通過3×3的滑動窗口得到一個通道為256的特征圖,RPNB通過3×3的滑動窗口得到一個通道為512的特征圖。區(qū)域推薦網(wǎng)絡后,做兩次全連接(Full Connection)操作,一個全連接操作得到2個分數(shù),另一個全連接得到4個坐標。2個分數(shù)對應目標圖像的物體分數(shù)和背景分數(shù),4個坐標是相對原圖坐標的偏移量。最后,結(jié)合不同規(guī)格的錨點,得到用戶需要的候選框。
本文的網(wǎng)絡結(jié)構(gòu)參考了MSO Faster R-CNN[1]網(wǎng)絡結(jié)構(gòu),針對小尺度目標,在Convolutional5后,得到小尺寸特征圖(Small Feature Map,Small FM),采用3×3 的滑動窗口選取對象,RPNS在此負責預測被放大的小物體,經(jīng)過2次全連接操作得到維數(shù)為256的低維特征向量。與文獻[1]不同的是,經(jīng)過滑動窗口后,得到2 k個分數(shù)和4 k個坐標。Small FM通過RoI Pooling和3次全連接操作轉(zhuǎn)化為維度一致的特征向量進行回歸(Regression,REG)、分類(Classification,CLS),錨點尺寸分別設置為22×22、32×32、45×45和64×64。針對大尺度目標,方法相同,不同的是錨點尺寸分別設置為128×128、256×256 和512×512。RPNB負責預測被縮小的大物體,這樣真實的物體尺度分布在較小的區(qū)間內(nèi),避免了極大或者極小的物體。改進的MSO Faster R-CNN的網(wǎng)絡結(jié)構(gòu)如圖4所示。
圖4 改進的MSO Faster R-CNN的網(wǎng)絡結(jié)構(gòu)
對于一個錨點的情況,分類損失函數(shù)Lcls和回歸損失函數(shù)Lreg的定義分別為:
其中i是一個錨點索引,被用來定位錨點的位置,pi錨點i被預測為目標的概率值,向量ti=(ti,x,ti,y,ti,w,ti,h)表示預測邊框坐標,向量表示正錨點真實邊框坐標[14]。ti和的各分量還滿足
其中,參數(shù)x、y、w和h分別代表邊框的橫坐標、縱坐標、寬和高。變量x、x*和xa分別代表預測邊框、真實邊框和錨點邊框的相應坐標值(變量y、w、h的情況類似)。對于多個錨點的情況,分類層cls和回歸層輸出分別由{pi}和{ti}組成,將歸一化分類損失函數(shù)LNCLS、歸一化回歸損失函數(shù)LNREG和總體加權(quán)損失函數(shù)L分別定義為:
其中,Ncls和Nreg分別用來歸一化分類損失和回歸損失,Ncls=256,Nreg=2 400。參數(shù)λ用來在LNCLS和LNREG之間加權(quán)平衡。默認λ=10,可使LNCLS和LNREG之間的平衡保持在比較合理的水平。
本文采用Softmax分類器加候選框重疊度進行篩選,刪除超過候選框重疊度給定閾值的小目標候選框,候選框重疊度
其中a(·)為目標候選框面積,b(·)為目標候選框位置,l和s分別為大、小目標候選框。分子表示的是大目標與小目標候選框的重疊面積,分母表示的是小目標候選框面積。若a(b(l)∩b(s))超過a(b(s))的θ倍,就把符合公式要求的小目標候選框刪除。
實驗采用Intel(R)Core(TM)i5-8250U CPU@1.6GHz、8GB內(nèi)存和NVIDIA GeForce GTX 1050 with Max-Q Design 的硬件環(huán)境,框架是TensorFlow,開發(fā)語言是python。實驗圖片采用開源數(shù)據(jù)集Pascal VOC2012,訓練集和測試集的選取比例設置為8∶2,圖片類別按相應比例隨機分配。實驗采用主干網(wǎng)絡VGG-16,訓練方法首先用ImageNet預訓練去初始化RPN,對RPN端到端的區(qū)域推薦任務微調(diào),利用上一步預訓練的RPN 生成的候選框建議滑動窗口(Sliding window)、感興趣區(qū)域RoI 池化、Full Connection、CLS和REG,再利用Improved Faster R-CNN檢測網(wǎng)絡初始化RPN訓練,微調(diào)RPN的獨有層,這里的RPN包括RPNS和RPNB,最后保持共享卷積層不變,微調(diào)Improved Faster R-CNN的獨有層。
實驗對比參照了R-CNN、SPPNet、YOLO和SSD等經(jīng)典且應用廣泛的目標檢測算法,實驗評價指標采用檢測速度、平均精度(Average Precision,AP)和平均準確度均值(mean Average Precision,mAP)3 個指標。各算法在VOC2012 上檢測速度比較如表1所示。
由表1可以看出,Improved Faster R-CNN檢測速度高于R-CNN、SPPNet和Faster R-CNN等,檢測速度達4.6幀·s-1。區(qū)域卷積網(wǎng)絡R-CNN的檢測速度較低的原因是在推薦候選框的時候運行在CPU 上,而不是GPU。Improved Faster R-CNN 低于YOLO 的原因是候選框的選擇是根據(jù)圖像的不同尺度分別訓練了RPNS和RPNB,故檢測速度慢于YOLO。YOLO速度達25.1FPS幀·s-1,優(yōu)勢是在訓練過程中簡化候選框的生成過程,以犧牲檢測精度來提高檢測速度。mAP 是預測目標位置以及類別的性能度量標準。各算法在VOC2012上mAP值比較如表1所示。
從表1可以看出Improved Faster R-CNN的平均精度均值優(yōu)于其他算法,與R-CNN相比提高了18.1%,與SPPNet 相比提高了12.0%,與Fast R-CNN 相比提高了6.9%,與Faster R-CNN 相比提高了10.1%,與YOLO相比提高了30.4%,與SSD 相比提高了29.6%。YOLO的平均準確度均值比較低的原因在于它的網(wǎng)絡結(jié)構(gòu)在大尺度圖像上的目標檢測性能表現(xiàn)較好,對于小尺度圖像上的目標檢測表現(xiàn)效果不佳。
表1 各算法的檢測速度、mAP比較
不同算法在VOC2012 上平均精度AP的比較如圖5所示。
圖5 不同算法在VOC2012上平均精度AP的比較
由圖5可以看出,Improved Faster R-CNN的單一目標類別的AP值優(yōu)于R-CNN和Faster R-CNN,原因是該算法針對大小尺度不同的目標設置了不同的共享卷積的感興趣區(qū)域RPNS和RPNB,并且在特征提取模塊,為了更好地提取不同尺度目標的特征圖,設置不同規(guī)格的錨點,使用歸一化損失函數(shù)和歸一化分類函數(shù)進行區(qū)域分類。R-CNN和Fast R-CNN算法的Bottle類和Plant類的平均精度AP低于40%是因為對較小尺度的目標檢測精度較低,F(xiàn)aster R-CNN的目標檢測效果較R-CNN和Fast R-CNN略好,但對于檢測Plant、Bottle和Chair等小類別目標時,其平均精度AP也在50%以下。Improved Faster R-CNN在相同訓練下,該算法不僅關注了尺度較大目標的檢測,也關注到了小尺度目標的檢測,在多尺度目標的檢測上有較好的表現(xiàn)力。
針對當前目標檢測算法存在檢測速度慢和面向多尺度目標時檢測精度低的不足,提出了一種基于改進區(qū)域推薦網(wǎng)絡的多尺度目標檢測算法,并在Pascal VOC2012數(shù)據(jù)集上進行了相關實驗,實驗在特征提取模塊設置了不同規(guī)格的錨點,對于大目標的特征提取采用較少的錨點,對小尺度目標的特征提取采用較多的錨點來確定預測框的坐標、高度和寬度值,這樣可以在圖像目標檢測過程中,有選擇的對輸入圖像進行大小尺度的目標選擇相應的感興趣區(qū)域選取網(wǎng)絡,提高算法精度的同時還能提升算法速度。簡言之,針對Faster R-CNN依賴耗時的推薦算法,本文提出在卷積層之后分別針對大尺度目標候選區(qū)域選擇的RPNB和針對小目標候選區(qū)域選擇的RPNS,利用DOL將需要剔除的小目標候選框刪除。在Pascal VOC2012 數(shù)據(jù)集上的實驗表明,Improved Faster R-CNN 在檢測速度和檢測精度上表現(xiàn)了較好的性能,在目標被遮擋或特征殘缺的情況下,目標檢測性和目標檢測速度仍有很大的進步空間,收斂性和算法的泛化能力還需加強。