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