宋建輝, 王思宇, 劉硯菊, 于 洋, 池 云
(1.沈陽理工大學自動化與電氣工程學院,沈陽 110000; 2.中共遼寧省委黨校,沈陽 110000)
近年來,隨著人工智能的爆炸式發(fā)展,無人機發(fā)展的領域也日益擴大,特別是無人機對地面目標的檢測領域[1]。之前該領域大部分采用的是傳統(tǒng)檢測算法,當無人機在高空對地面拍攝實時畫面時,極易受到外界環(huán)境的影響,導致傳統(tǒng)檢測算法采集到的目標特征點不太顯著,所以采用傳統(tǒng)的目標檢測算法進行檢測時,檢測速度較慢且精度較低,容易出現(xiàn)誤檢和漏檢。采用深度學習對目標進行識別,相較于傳統(tǒng)的目標檢測算法,在檢測精度和速度方面都有極大提升,在無人機對地面目標檢測的發(fā)展過程中也發(fā)揮了重要的作用[2]。
現(xiàn)在,基于深度學習的目標檢測大體上分為兩類:一類為單階段檢測網(wǎng)絡,以YOLO[3],SSD[4]為主要代表;另一類為兩階段檢測網(wǎng)絡,以Fast R-CNN,F(xiàn)aster R-CNN為主要代表。但這兩類檢測網(wǎng)絡都存在小目標檢測難的問題,阻礙了當前階段目標檢測的進展,越來越多的學者也針對該問題開展了多項研究。KRISHNA等[5]在目標檢測模型中提出了超分辨率網(wǎng)絡,改善了特征的提取效果,但鑒于目標較小,包含的信息也不完整,檢測的效果也沒有很大的提升;針對該問題,文獻[6]提出了感知生成對抗網(wǎng)絡(Perceptual GAN),將小目標的特征轉換成與中、大目標大致相似的特征,從而提高了小目標的檢測效果,但對特征級超分辨率模型的監(jiān)督是間接進行的,且訓練因素不穩(wěn)定,降低了超分辨率的特征,會對生成效果帶來一定的影響。在遙感圖像中,文獻[7]在對小目標進行檢測時,重新設置了適當?shù)腻^框,改進了RPN算法,并結合上下文語義信息進一步提高了模型性能,有利于對小目標進行檢測,但這種方法對訓練的樣本有限制,對場景中的遙感目標的檢測效果仍然不是十分理想;SINGH等[8]提出了基于多尺度的訓練方法,該方法對圖像金字塔的尺度進行了歸一化,訓練數(shù)據(jù)都被高效利用,大大增強了小目標的檢測效果,但該方法檢測的速度較慢[9];文獻[10]提出了一種基于特征金字塔的小目標檢測方法,將多特征融合與Focal Loss損失函數(shù)相結合,改進了尺度適應性,解決了正負樣本不平衡的問題,實現(xiàn)了對小目標的有效檢測,但該方法對于尺寸和形狀不一的目標檢測效果依舊不是很好。
本文根據(jù)無人機航拍影像中的車輛檢測特點,提出基于改進FPN和Faster R-CNN的小目標檢測技術。將FPN(Feature Pyramld Network)網(wǎng)絡融入到Faster R-CNN網(wǎng)絡中,構成基礎網(wǎng)絡模型——FFRCNN,提取特征的主干網(wǎng)絡使用ResNet-50卷積神經(jīng)網(wǎng)絡代替原始的VGG-16網(wǎng)絡,加強網(wǎng)絡對特征的提取能力。在改進網(wǎng)絡的基礎上,利用空洞卷積進一步抽象融合多尺度的空間特征,擴展特征圖的感受野,更詳細地收集圖像的上下文信息。為了提高網(wǎng)絡識別小目標困難樣本的精度,改進網(wǎng)絡結構并優(yōu)化損失函數(shù),實現(xiàn)對車輛等小目標的精確檢測。
Faster R-CNN是2017年GIRSJICK在Fast R-CNN的基礎上提出的改進版[11]。Faster R-CNN與Fast R-CNN相比最大的不同在于提出了RPN網(wǎng)絡,該網(wǎng)絡是一種全卷積網(wǎng)絡,能完成端對端的訓練,對推薦候選區(qū)域有著極大的幫助,最終目的是為了生成依賴于Anchor的BBox(Bounding Box)。Faster R-CNN算法總體框架如圖1所示,F(xiàn)aster R-CNN由卷積神經(jīng)網(wǎng)絡、區(qū)域建議網(wǎng)絡、池化層以及分類和回歸4部分構成。
圖1 Faster R-CNN算法總體框架Fig.1 Overall framework of Faster R-CNN algorithm
常規(guī)的Faster R-CNN在正向傳播過程中,特征圖經(jīng)過卷積運算后會變得越來越小。而針對檢測圖像尺度不一的情況,文獻[12]提出的FPN在保持原有模型計算量的前提下,對小目標的檢測更加精確。所以,本文將FPN融合到Faster R-CNN模型中作為基礎網(wǎng)絡模型——FFRCNN,同時用ResNet-50模型代替原始Faster R-CNN模型中的VGG-16模型,對網(wǎng)絡的特征提取性能起到了一定的加強效果。
FFRCNN對原始網(wǎng)絡進行重新構建,把得到的特征層依次送至后面的RPN(Region Proposal Network)網(wǎng)絡中,在RPN網(wǎng)絡中進行特征提取,最后將提取到的特征進行合并,一起送入到檢測的區(qū)域進行回歸和分類。圖2為FFRCNN網(wǎng)絡模型圖。
圖2 FFRCNN網(wǎng)絡模型圖Fig.2 FFRCNN network model
FFRCNN可以對多個特征圖進行檢測,并且能將高層特征與底層特征相結合,但其計算量比Faster R-CNN模型大,所以針對不同尺度的特征圖,將長寬比分別設置成0.5,1.0,2.0。FFRCNN在P5,P4,P3,P2分別對應的anchor基礎尺度為256,128,64,32,步長分別采用32,16,8,4,最后每個特征層將形成3種先驗框,總共12種。FFRCNN模型相較于Faster R-CNN,在實現(xiàn)對目標多尺度預測的同時提出了更多的先驗框,加強了對小目標的檢測,與此同時,網(wǎng)絡因為使用了ResNet-50模型,并沒有產(chǎn)生退化現(xiàn)象。
在實際測試環(huán)境中,識別的目標不僅尺寸各式各樣,而且測試的角度也各不相同,甚至會出現(xiàn)目標遮擋等現(xiàn)象,盡管單一的尺度過濾器通過預測多尺度的方式緩解了小目標像素特征少的問題,但對于全部目標的尺寸特征還是沒有很好地滿足。根據(jù)文獻[13]研究的結果可知,當網(wǎng)絡對圖像進行檢測時,必須要考慮到圖像中既含有大目標信息,也含有小目標信息的情況,以達到提高網(wǎng)絡魯棒性的目的。針對圖像中包含的目標尺寸不一的情況,本文參考Inception[14]模型,將多個特征進行融合,在RPN模塊處,分別新增一個1×1和5×5的卷積核,與原始的3×3卷積核進行并聯(lián)操作,對輸出的特征層依次進行檢測,擴展網(wǎng)絡的感受野區(qū)域,最終可以改善對多尺寸目標的識別效果。
在FFRCNN模型中,對尺寸不一的目標進行多尺度檢測,依據(jù)像素與感受野的大小成反比的特點,改善模型對小目標檢測效果不良的問題。但由于進行多尺度檢測時會使正、負樣本數(shù)量不平衡的問題惡化,在進行目標檢測時,目標在檢測框中所占的比重非常小,尤其在小目標的檢測中更為明顯,所以在訓練時,候選框常常被歸類為負樣本,致使正、負樣本的數(shù)量相差較為懸殊,網(wǎng)絡獲取到的信息不準確,從而使模型檢測的精度降低,所以本文在FFRCNN模型的基礎上引入Focal Loss函數(shù)。
模型中負樣本的置信度損失值計算原本采用傳統(tǒng)的交叉熵損失函數(shù),傳統(tǒng)的交叉熵損失函數(shù)的算式為[15]
(1)
式中:y為實際的值;1表示檢測的樣本為正樣本,0表示負樣本;y′為檢測的值,取值區(qū)域在0~1之間。正樣本的檢測概率和得到的損失值是成反比的關系,而負樣本的檢測概率和得到的損失值是成正比的關系。所以在進行迭代訓練時,若存在大量的負樣本,模型就沒有辦法達到想要的效果。
為了解決Faster R-CNN中正樣本和負樣本分布嚴重不均衡的問題,對原始的交叉熵損失函數(shù)進行改進。改進后的Focal Loss損失函數(shù)算式為
(2)
式(2)在原始損失函數(shù)的基礎上增加了一個調制因子γ。當γ=0時,F(xiàn)ocal Loss是傳統(tǒng)的交叉熵損失函數(shù);當γ>0時,損失函數(shù)會減少對簡單樣本的計算,進而加強對難例樣本的計算。除此之外,引入了平衡因子,可以調整正樣本和負樣本分布不均衡的問題。經(jīng)過實驗對比發(fā)現(xiàn),只對樣本中的車輛進行識別時,取α=1,γ=2時效果較好。
2.3.1 空洞卷積的原理
空洞卷積又被稱作擴張卷積,最早是為了解決語義分割問題而被提出的??斩淳矸e與普通卷積操作的不同之處主要是在卷積核之間增添零來擴大卷積核的感受野[16]。在進行降采樣操作時,神經(jīng)網(wǎng)絡雖然擴大了感受野,但降低了空間分辨率。采用空洞卷積既可以擴大感受野,還可以保證不丟失分辨率,使得卷積輸出的信息量增多,很好地解決了分辨率降低的問題[17]??斩淳矸e的結構如圖3所示。
圖3 空洞卷積對于感受野影響的二維情形Fig.3 2D plot of the effect of atrous convolution on receptive field
圖3中,3幅圖像的卷積操作是互不相關的,大框代表的是輸入進來的圖像,黑色的圓點為3×3的卷積核,陰影為卷積后的感受野,r表示空洞率。圖3(a)表示卷積核為3×3的標準卷積;圖3(b)為空洞率為2、卷積核為3×3的卷積操作,表示整個區(qū)域只有9個點發(fā)生了卷積操作且權重不為零,此時,卷積的感受野相對于標準卷積已經(jīng)從3×3增大到了7×7;同理可以得到圖3(c)的感受野增大到了15×15。在沒有增加參數(shù)量的前提下,同樣是3×3的卷積,卻可以得到7×7,15×15卷積的效果,由此可以看出,空洞卷積可以增大感受野。
2.3.2 空洞卷積的ResNet-50網(wǎng)絡
本文在設計的FFRCNN網(wǎng)絡模型的基礎上,在特征提取階段,將空洞卷積網(wǎng)絡融入到主干網(wǎng)絡ResNet-50中。特征圖在ResNet-50主干網(wǎng)絡中進行前向傳播,會輸出5層特征圖,但在輸出的特征圖中,第1層占用的內存空間過多不方便計算,所以選取2~5層的輸出特征圖進行設計,將這幾層的最后一個殘差單元輸出的特征圖表示成{C2,C3,C4,C5},并對這幾層進行橫縱向處理,在C5層進行1×1的卷積操作得到P5,對P5層進行上采樣操作得到P4′,讓P4′和C4維度一樣,再選取1×1的卷積核對C4層進行降維操作后得到C4′,然后把對應的部分相結合得到P4。P3和P2層也通過類似操作獲得,再對這幾層的特征圖依次進行3×3的空洞卷積,進一步對提取特征的圖像進行抽象化處理,本文根據(jù)采用的模型決定使用空洞率為1,3,5,7的空洞卷積,可以得到更大的感受野區(qū)域,減少提取特征圖信息丟失的情況,可以有效地提高網(wǎng)絡的檢測精度。
本文引入空洞卷積后的FFRCNN模型的整體結構,如圖4所示。特征提取時,在FFRCNN模型的基礎上,引入空洞卷積,生成特征圖并輸入到后續(xù)改進的RPN網(wǎng)絡中,在RPN模塊中對輸入的圖像進行候選區(qū)域提取,然后再將得到的結果輸入到 ROI pooling層中,生成最后的候選區(qū)域特征圖,最后將結果傳入到全連接層,進行分類和回歸。
圖4 改進后的FFRCNN模型結構Fig.4 Structure of improved FFRCNN model
將某區(qū)域的停靠車輛作為研究對象,采用無人機進行信息采集。為了更好地提升模型對網(wǎng)絡的適應能力,采集了各種角度以及不同飛行高度下的圖像,并通過改變光照、增加噪聲干擾等方法來擴充樣本數(shù)量,將無人機實地拍攝的圖像與其他航拍數(shù)據(jù)集中的車輛圖像相結合,最終得到實驗的數(shù)據(jù)集,該數(shù)據(jù)集大概有9000多幅圖像,目標像素大小約(24×24)~(150×150),每個目標都是占整體像素約0.08%~0.4%的小目標,只有車輛目標這一類對象。
操作系統(tǒng)為64位Ubuntu16.04系統(tǒng),安裝有Tensorflow1.12和Python 3.7 (64-bit),以Tensorflow框架作為運行環(huán)境,以ResNet-50為卷積子網(wǎng)絡訓練本文的網(wǎng)絡模型,GPU為NVIDIA GeForce RTX 2060,顯存6 GiB+GDDR6。
3.2.1 網(wǎng)絡性能實驗對比
在實驗構建的數(shù)據(jù)集中分別對FFRCNN模型以及改進后的FFRCNN進行訓練,計算目標的mAP以及召回率。mAP和召回率是很常見的用來大體上判斷模型性能好壞的指標。mAP和召回率的算式分別為
(3)
(4)
式中:AAPC是每個類別的平均準確率;NClasses是測試數(shù)據(jù)集中的類別數(shù);R是召回率;TTP是被正確分類的正樣本數(shù);FFN是被錯誤分類的負樣本數(shù)。
本文對改進的網(wǎng)絡分別進行測試,改進方法的前后結果對比如表1所示,其中,F(xiàn)FRCNN表示融合FPN的Faster RCNN算法,M+FFRCNN表示進行多特征融合的FFRCNN算法,F(xiàn)L+FFRCNN表示使用Focal Loss的FFRCNN算法,HDC+M+FL+FFRCNN表示使用了空洞卷積的本文改進FFRCNN算法。
表1 改進算法前后效果對比Table 1 Comparison of effects before and after improvement %
從表1中可以看到,融合FPN的Faster R-CNN框架的檢測效果并不是很理想;進行多特征融合后的FFRCNN模型相較于原始網(wǎng)絡模型mAP提升了17.0%,召回率提高了7.3%;在FFRCNN模型中引入Focal Loss損失函數(shù)并進行參數(shù)設計,增強了原始算法對于小目標的檢測精度,mAP值提升了18.1%,召回率提高了8.7%;在改進多特征融合和損失函數(shù)的前提下,采用空洞卷積的ResNet-50網(wǎng)絡擴大了特征提取的感受野范圍,mAP值達到了93.8%,召回率達到了98.0%。由此結果可以得出,相較于原始FFRCNN算法,本文改進的FFRCNN模型檢測的精度和召回率都得到了提升,對小目標車輛檢測的精度提高了19.2%,召回率提高了9.9%,有效地降低了小目標的漏檢率。
3.2.2 不同算法實驗對比
將本文改進的算法和SSD,YOLOv2和YOLOv3算法在同樣的參數(shù)設置上進行檢測,效果對比如表2所示。
表2 不同算法的效果比較Table 2 Comparison of different algorithms %
根據(jù)實驗結果可以看到,幾種不同的算法在對本文構建的數(shù)據(jù)集進行測試時,改進后算法的mAP值要高于改進的SSD算法、YOLOv2以及YOLOv3算法,其在對小目標的識別效果上有了不小的提升。在單階段檢測網(wǎng)絡中,YOLO系列的檢測算法相較于改進后的SSD檢測算法具有一定的優(yōu)勢,但在對小尺度目標進行檢測時,檢測效果仍不是很理想,檢測的mAP值分別只有90.14%和92.25%。Faster R-CNN作為兩階段檢測網(wǎng)絡,在檢測精度上存在一定的優(yōu)勢,而且本文利用空洞卷積擴展了網(wǎng)絡的感受野區(qū)域,加強了對多尺度目標的信息提取,極大地增強了網(wǎng)絡的檢測效果。
3.2.3 結果與分析
本文將某區(qū)域的車輛作為檢測目標,采用無人機在高空對該區(qū)域的車輛進行拍攝,篩選了67幅圖像對模型效果進行測試。圖像在各個改進模型中的部分檢測效果如圖5所示。
圖5 各模型的檢測圖像Fig.5 Detection images of each model
從圖5(a)中可以看到,待檢測圖像中的車輛存在因打開車門而出現(xiàn)目標形狀不規(guī)整的情況(如圖中紅色框圈出的位置所示),且存在被樹木遮擋的情況(如圖中綠色框圈出的位置所示);圖5(b)為原始FFRCNN模型的檢測結果,盡管該模型融合了FPN,但對有遮擋的目標并沒有很好地進行檢測,且存在大量漏檢的問題;而進行多特征融合的模型以及改進損失函數(shù)的模型對遮擋的目標可以很好地進行識別,對大量漏檢的情況也有所改善,但針對目標不規(guī)整的情況還是不能很好地進行檢測,如圖5(c)、圖5(d)所示;圖5(e)為本文引入空洞卷積的改進FFRCNN模型,從檢測結果可以看到,該模型對形狀不規(guī)則以及被遮擋的目標都可以很好地進行檢測,且沒有漏檢的車輛,檢測效果最好。
根據(jù)以上分析,原始FFRCNN模型、進行多特征融合以及改進損失函數(shù)的FFRCNN模型都存在漏檢目標的情況,而本文所提出的改進FFRCNN模型算法不僅能有效地檢測出遺漏的車輛,而且在檢測小目標車輛時具有良好的抗遮擋能力。
本文提出了基于改進FFRCNN模型的無人機地物車輛小目標檢測算法,該算法把FPN加入到Faster R-CNN網(wǎng)絡中作為基礎網(wǎng)絡模型,主干網(wǎng)絡選取ResNet-50卷積神經(jīng)網(wǎng)絡代替了原始的VGG-16網(wǎng)絡,挖掘并利用不同層次的特征,對增強小目標的檢測效果有所幫助。在FPN網(wǎng)絡結構的基礎上,采用空洞卷積融合多個特征圖,擴展了感受野,更好地對多尺度信息進行獲取。采用多特征融合以及用Focal Loss函數(shù)代替了傳統(tǒng)的交叉熵損失函數(shù),提高了網(wǎng)絡的精度。通過在構建的數(shù)據(jù)集上進行測試,證明了本文設計的改進FFRCNN模型相較于原始的網(wǎng)絡模型,有著更好的識別效果,檢測的精度得到了提升。