李廣帥,蘇娟,李義紅
(火箭軍工程大學 核工程學院,西安710025)
合成孔徑雷達(Synthetic Aperture Radar,SAR)與光學和紅外等被動式傳感器相比,具有全天時、全天候、高分辨率的獨特優勢,在戰場態勢感知、典型目標識別和精確制導等軍事領域具有突出的戰略意義。飛機作為一種典型的人造目標,軍事價值極其重要,高效、準確獲取機場、空域等位置的飛機目標信息,對實時獲取戰場軍事情報、制定作戰計劃具有重要意義。
恒虛警率(Constant False Alarm Rate,CFAR)檢測器是傳統SAR圖像目標檢測最常用的檢測算法[1],基于像素級水平進行檢測,并衍生出多種改進算法,如平均CFAR算法[2]、雙參數CFAR算法[3]等。文獻[4]提出一種基于級聯CFAR的檢測算法,可快速實現對SAR目標的檢測,以滿足實時要求。文獻[5]提出了一種基于可變窗的CFAR算法,采用多尺度局部對比度和可變窗以實現對SAR目標的精確檢測。此外,還有基于注意模型的檢測算法等。文獻[6]提出了一種基于視覺注意和學習策略的SAR圖像目標檢測算法,文獻[7]提出了一種基于多尺度顯著性特征的SAR目標檢測算法。傳統的檢測算法能夠自適應閾值,為飛機檢測提供了較好的思路,缺點是僅利用像素級對比度進行檢測,難以適應復雜背景下檢測要求,容易造成虛警,影響檢測結果。
深度學習具有強大的視覺目標檢測能力,基于卷積神經網絡(CNN)的目標檢測算法成為了當前主流算法[8]。典型檢測算法有單階段檢測算法SSD[9](Single ShotmultiBox Detector)、YOLO[10](You Only Look Once)、YOLOv2[11]、YOLOv3[12]等,以及雙階段檢測算法R-CNN[13](Region-Convolutional Neural Network)、Fast R-CNN[14]、Faster RCNN[15]等。目前,基于深度學習進行飛機目標檢測的算法大多應用于可見光圖像。文獻[16]提出了一種基于Faster R-CNN模型的遙感圖像飛機目標檢測,采用遷移學習方法進行訓練,使得查全率達到95%以上,但對于一些小而聚集、輪廓相似目標易出現漏警、虛警現象。文獻[17]提出了一種級聯卷積神經網絡應用于遙感影像飛機目標檢測,先利用小尺度淺層全卷積神經網絡快速獲取飛機興趣區域,再利用深層的卷積神經網絡對目標進行更精確的檢測,但該算法對于部分小目標仍然無法有效檢測。文獻[18]提出了一種基于卷積神經網絡的高分辨率SAR圖像飛機目標檢測算法,利用改進的顯著性預檢測快速粗定位飛機目標,基于LeNet-5[19]網絡對目標進行精確檢測,利用數據增強擴大數據集,最終取得了96.36%的檢測正確率。由于數據增強采用有監督方法,難以適應不同任務的差異性,并且LeNet-5網絡較淺,對于SAR圖像深層次語義特征表征不夠。本文將深度學習檢測算法引入SAR圖像飛機檢測,直接遷移應用Faster R-CNN算法進行檢測時發現,對于機場周圍小像素飛機目標易出現漏警,對車輛、建筑物等人造目標易出現虛警。針對該問題及SAR圖像飛機目標的特點,本文對Faster R-CNN算法進行適應性改進,主要包括淺層特征增強結構、上下文信息融合、重設預設錨點框和引入RoI Align單元。此外,本文針對SAR圖像飛機目標數據匱乏問題,構建了一個用于SAR圖像飛機目標檢測的數據集(SAR Aircraft Dataset,SAD),對算法進行驗證。
Ren等[15]在2015年提出了Faster R-CNN算法,最大的創新是提出了區域建議網絡(Region Proposal Network,RPN),通過共享卷積層將RPN網絡和Fast R-CNN統一至一個網絡中,解決了RCNN、Fast R-CNN算法中候選框生成耗時問題,極大地提高了雙階段檢測算法的效率。
R-CNN的基本網絡框架如圖1所示,主要由卷積層單元、RPN單元、RoI池化單元及分類和回歸單元4部分組成。
1)卷積層單元。利用一系列的卷積、激活和池化層基礎組合,提取圖像特征圖(Feature Map),RPN層和Fast R-CNN模塊共享該單元生成的權值參數。
2)RPN單元。通過在特征圖上滑動窗口產生候選框,設置尺寸為8、16、32,比例為1∶2、1∶1、2∶1,共組合為9種錨點框(Anchor Boxes),錨點框示意圖如圖2所示,為特征圖上每個像素提供基礎候選框,通過對候選框和真實標注框回歸得到目標候選框。設置IOU閾值篩選標定正例、負例錨點框,采用非極大值抑制(Non-Maximum Suppression,NMS)及Top-N分析法篩選出N個目標候選框。
圖1 Faster R-CNN檢測流程Fig.1 Faster R-CNN detection flowchart
圖2 錨點框示意圖Fig.2 Schematic diagram of anchor box
3)RoI池化單元。將每個候選框均勻分成m×n塊,對每塊進行最大值池化(Max Pooling),將不同大小的輸入映射到一個固定尺度的特征向量,使得輸入圖片不要求固定尺寸。
4)分類和回歸單元。用于判斷目標候選框的類別并預測其準確位置。
Faster R-CNN網絡采用多任務損失,對一個圖像的損失函數定義為
式中:λ為損失權重因子;L為總損失函數;Lcls表示分類損失函數,即目標或者非目標的對數損失;Ncls為分類損失歸一化權值;Lreg為回歸損失函數;Nreg為回歸損失歸一化權值;pi表示第i個邊框是前景的概率;為1或0(邊框為正樣本時=1,為負樣本時=0);ti和分別表示預測框和真實框的坐標;R為smoothL1(x)函數。
Faster R-CNN算法在VOC數據集上檢測效果較好,達到78.8%的檢測率。經實驗驗證,直接將Faster R-CNN算法應用于SAR圖像飛機目標檢測中,效果不佳,原因在于:①Faster R-CNN算法僅使用最深層特征圖提取特征進行檢測,而SAR圖像成像原理與可見光不同,SAR圖像飛機目標背景相對簡單,深層特征表達的語義信息沒有可見光豐富,使得檢測效果不佳;②SAR圖像飛機目標多樣化,飛機目標尺寸與VOC數據有所差異,使得錨點框設定難以適應飛機目標,造成漏檢問題;③SAR圖像中,機場周圍存在車輛、建筑物等人造目標,表現為強散射,對飛機目標檢測容易造成誤檢,飛機目標成像效果較差時,易造成漏檢問題;④RoI池化單元2次進行池化量化時,將浮點數取整,造成特征圖像素映射偏差,影響后面的回歸定位效果。針對以上問題,本文采取以下方法進行改進:①引用殘差網絡ResNet101作為特征提取網絡,搭建更深網絡層增強特征提取能力,同時在檢測中引用多層(Layer2、Layer5)特征信息;②利用改進k-means算法對數據集中SAR圖像飛機目標進行聚類分析,重新設計錨點框尺寸,以更好地適應SAR圖像飛機尺寸;③利用多支路、多卷積核尺寸對淺層(Layer2)進行增強,同時對Layer5信息進行上采樣,以擴大感受野,融合更多上下文信息,增強對小目標的檢測效果;④使用RoIAlign單元,利用插值方法保留浮點數以提高檢測精度。
與傳統的監督式機器學習算法相比,深度卷積神經網絡計算資源耗費大,從頭開始訓練是最理想的網絡訓練方式,但是由于SAR圖像數據集難以獲取且數量較小,從頭開始訓練容易造成過擬合,陷入局部最優解,并且耗時、計算成本高。本文應用遷移學習的方法,引用ImageNet上訓練好的殘差網絡ResNet101來替代VGG16網絡作為特征提取網絡,去除Layer5后面的全連接(FC)層和分類層。網絡結構如圖3所示。
相比于VGG16網絡,ResNet101采用bottleneck結構搭建更深的網絡層,bottleneck結構示意圖如圖4所示。增強學習能力,同時利用1×1的卷積減少通道數以降低計算量,采用恒等快捷連接(Identity Shortcut Connection)實現跳層連接,加快收斂速度,使得網絡模型更容易優化。
圖3 VGG16、ResNet101結構示意圖Fig.3 Schematic diagram of VGG16 and ResNet101 structure
圖4 bottleneck結構示意圖Fig.4 Schematic diagram of bottleneck structure
此外,ResNet101在卷積層后會添加一個BN[20]層,對每層輸入先做歸一化處理(歸一化至均值為0、方差為1的正態分布),使得分布均勻,可以加快收斂,以提高訓練階段的效率。歸一化公式如下。
每層d維輸入:
歸一化每一維:
式中:E[*]為期望運算;Var[*]為方差運算。
Faster R-CNN算法直接應用于SAR圖像飛機目標檢測,檢測效果不佳,特別是對SAR圖像中像素占比小的飛機目標,經4次下采樣后,原圖16×16的區域范圍在特征圖中僅映射為1×1像素點,漏檢問題較嚴重。SAR圖像中,飛機目標不像車輛、艦船、坦克等人造目標,外形輪廓較為簡單、規律,飛機目標種類繁多且外形輪廓較為復雜,姿態敏感性較高,再加上背景復雜且其他人造目標的干擾,導致誤檢問題突出。Faster R-CNN算法為了節省運算量、提高檢測效率,僅利用最深層特征圖進行檢測。最深層特征圖語義信息較為豐富,能更好地反映圖像全局化的特征,但是空間分辨率低;而低層的特征圖,能更好地表達淺層特征,如輪廓、邊緣等,且空間分辨率高,所包含的位置信息更為豐富,利于對小目標的定位與檢測。通過上述分析,本文提出一種基于Faster R-CNN的淺層特征增強與上下文信息融合的檢測算法,為兼顧檢測速度,采用單尺度檢測,檢測框架流程如圖5所示。
ResNet101網絡通過增加網絡層深以挖掘圖像深層語義特征,同時利用殘差塊以減少層深帶來的計算量負擔。與可見光圖像相比,SAR圖像背景相對簡單,深層信息不如可見光圖像豐富,通過增加網絡層深帶來的收益不大。為此,本文借鑒inception模塊思想,引入淺層特征增強結構,通過拓展網絡寬度,利用多路不同尺度卷積核(1×1、3×3、5×5)對Layer2輸出進行卷積,以獲取不同感受野,增強對弱小飛機目標的特征表達,利用1×1卷積將多路特征進行聚合,同時引入BN處理,使數據規范到N(0,1)的正態分布,能夠加快訓練速度并提高網絡的泛化能力。Layer4輸出相比Layer2要多經過27×(4+23)層殘差塊,會挖掘更深層次的語義信息,但會丟失更多的低層特征和位置信息,Layer2經過卷積層數減少,可以保留更多的位置信息,并經過淺層特征增強模塊,利用2個3×3卷積核,設置滑動步長stride=2以實現下采樣,輸出特征圖大小為38×57。下采樣后經過3×3卷積,以消除混疊效應,得到特征圖F4。
Layer5中有4個殘差塊,并下采樣2倍,輸出的特征圖為原始圖像的1/32,相比于Layer4的輸出F1,有著更大的感受野。感受野越大,映射到原圖的視野越廣,可以引入更豐富的上下文信息。利用雙線性插值法進行上采樣得到特征圖F2,其大小恢復至57×38,以實現與Layer4的輸出F1進行特征融合,并經過3×3卷積,以消除混疊效應得到特征圖F3。將F3和F4進行融合,得到最終的特征圖,輸入至RPN網絡和RoIA lign單元中,實現后續的分類與回歸任務。
圖5 改進的Faster R-CNN結構Fig.5 Structure of improved Faster R-CNN
此外,Faster R-CNN網絡對輸入圖片的要求為:限制最小邊大于600像素,最大邊小于1 000像素,即
式中:w和h分別為圖像的寬度和高度。本文網絡輸入圖像的尺寸為900×600。
VOC數據集中,目標尺寸較大且種類豐富,Faster R-CNN算法采用3種尺度(8,16,32)和3種長寬比(1∶2,1∶1,2∶1)共9種錨點框。SAD數據集中飛機目標尺寸相比較小,且長寬比近似為1∶1,直接遷移應用原始預設錨點框,覆蓋飛機目標的效果不佳,且人工設計預設錨點框,需要進行大量實驗進行驗證,并且設計不合理對檢測結果會造成一定影響。
本文采用改進k-means算法,以交并比為距離度量對數據集中飛機目標聚類,根據聚類結果重新設定anchor,以改進預設錨點框大小,使之更適應飛機目標尺寸。距離度量公式如下:
式中:D(b,c)為預測框b和聚類中心c之間的距離;bp為預測框;bg為實際框。使用D(b,c)=1-IOU(b,c)作為度量,保證預設錨點框到聚類中心的距離越小,且IOU值越大。
針對SAR圖像飛機目標形狀特點,聚類中心設置為9,通過15次聚類分析,取得平均聚類結果為:{(42,36),(48,54),(63,72),(70,48),(96,75),(101,102),(129,120),(168,141),(228,210)}。2種預設錨點框示意圖如圖6所示。對比圖6(a)和圖6(b)可知,聚類得到的預設錨點框更能適應飛機目標尺寸。此外,該方法去除人工設計預設錨點框的復雜環節,一定程度上減輕了人工設計不合理對檢測結果造成的影響。
圖6 預設錨點框范圍示例Fig.6 Example range of preset anchor box
Faster R-CNN中使用RoI池化層使得生成的候選框映射產生固定尺寸的特征圖,故Faster RCNN對輸入圖像不再要求是固定尺寸。使用VGG16網絡進行特征提取時,會進行4次最大值池化,使得特征圖尺寸縮小16倍,在特征圖上進行平均值池化,輸出尺寸均為7×7。RoI池化層經過2次浮點數取整量化,會使得特征圖上映射的區域建議框產生偏差,引起的“不匹配問題”會造成精度損失,這種像素偏差會使得后續回歸定位的準確性下降。
針對上述問題,本文采用Mask R-CNN[21]算法中提出的思想,引入RoI Align方法進行池化,改進RoI池化層帶來的量化偏差,利用雙線性插值法進行插值,保留浮點數,避免取整帶來的精度損失,以提高空間對稱性(Alignment),故取名為“RoIAlign”。RoI池化、RoI Align結構示意圖如圖7所示,兩者具體實現過程如下:
1)第1次量化。假設SAR圖像中目標尺寸為300×280,經過特征提取網絡后,區域建議框變為原圖的1/16,大小為18.75×17.5。ROI Align第1次量化(保留浮點數)后,區域建議框尺寸變為18.75×17.5,而RoI池化第1次量化(取整)后尺寸變為18×17。
2)第2次量化。區域建議框經過池化固定為7×7尺寸,將區域建議框劃分為49(7×7)個等子區域,RoIAlign第2次量化(保留浮點數)每個子區域取2.68×2.5(18.75/7=2.68、17.5/7=2.5);RoI池化第2次量化(取整)子區域取2×2(18/7=2.57≈2、17/7=2.43≈2)。
圖7 RoI池化、RoIAlign示意圖Fig.7 Schematic diagram of RoIPooling and RoIAlign
3)最大值池化。每個子區域取最大值作為該區域的“代表”值,輸出的49個值組成7×7大小的特征圖。
由上可知,RoI池化經過2次取整量化,原本在特征圖上映射的18×17大小的區域建議框,偏差為14×14大小,產生的像素偏差對后續的回歸定位會產生影響。RoI池化利用插值法保留浮點數,有效解決了像素映射偏差帶來的定位誤差問題。
實驗使用的操作系統:Ubuntu 16.04 LTS,使用CUDA8.0和cuDNN5.0加速訓練;使用的GPU:NVIDIA TITAN Xp GPU(12 GB顯存);使用的編程語言:Python語言和C語言;使用的網絡開發框架:Pytorch;使用的處理器:inter?CoreTM7-6850K CPU@3.60GHz×12;Faster R-CNN框架鏈接:https://github.com/jwyang/faster-rcnn.pytorch。
本文按照VOC數據集格式制作了一個用于SAR圖像飛機目標檢測的數據集SAD,數據集中共647幅圖片,包含多類型、多尺寸的飛機目標2 294個。SAR圖像數據來源為高分三號衛星、TerraSAR-X衛星、機載SAR 等,圖像分辨率從0.5m到3m不等。
VOC數據集中含圖像9 963幅,共20類目標,各類目標包含圖像數如圖8所示。VOC數據集中20類目標中有15類目標圖像數量小于647幅,因此只有一類目標的SAD數據集滿足SAR飛機目標檢測算法性能的檢測要求。
圖8 VOC數據集中各目標圖像數量Fig.8 Number of various target images of VOC dataset
SAD數據集中飛機目標信息統計直方圖如圖9所示。每幅圖像所含飛機數量的統計直方圖如圖9(a)所示,各飛機與全圖像素占比的統計直方圖如圖9(b)所示。每幅圖像平均包含3.5架飛機目標,且飛機像素占比大多數在0.05以下,飛機目標較小,一定程度上增加檢測任務的難度。SAD數據集中飛機目標寬度、高度、標注框面積及其占比的統計參數如表1所示。
圖9 飛機目標信息統計直方圖Fig.9 Statistical histogram of aircraft target information
表1 飛機目標統計參數Table 1 Statistical param eters of aircraft target
圖10 SAD數據集中部分SAR飛機圖像Fig.10 Some SAR aircraft images in SAD dataset
圖10為SAD數據集中幾種典型場景的飛機目標,包含密集型飛機目標與稀疏型飛機目標,且飛機類型不一、尺寸和朝向多樣。每幅圖片裁成900×600的尺寸,并使用開源軟件“LabelImg”對飛機目標進行標注,采用“留出法”將SAD數據集劃分為互斥的訓練集S和測試集T,并按照8∶2的比例劃分訓練集和測試集。
訓練參數設置:使用在ImageNet數據集上預先訓練好的ResNet101模型,訓練的batch_size取1,初始學習率(Lnitial Learning Rate)取0.001,權重衰減系數(Weight Decay)取0.000 5,訓練代數epoch取300,參數更新方法采用梯度下降法(Stochastic Gradient Descent,SGD),動量因子(Momentum)設為0.9,利用平移、旋轉、縮放方法將訓練樣本擴充至1 169幅。
使用平均檢測精度(AP)、每秒處理圖像的幀數即檢測速度、準確率-召回率(Precision-Recall,PR)曲線作為評價指標。平均檢測精度的定義為
式中:AP為平均檢測精度;R為召回率;P為準確率。
召回率和準確率的定義如下:
式中:TP代表預測為正的正樣本;FN代表預測為負的正樣本;FP代表預測為正的負樣本。
利用構建的SAD數據集,驗證本文提出的改進Faster R-CNN算法對SAR圖像飛機目標的檢測性能。從表2可以看出,本文算法的平均檢測精度相比于前3種算法,本文算法的平均檢測精度最高,達到了88.5%,召回率由78.1%提升至89.5%,準確率由77.0%提升至85.9%,檢測速度相比于其他算法有所降低,主要原因是本文算法在殘差網絡Layer2后添加了多支路特征增強結構,并增加了上下文信息的利用,導致計算量增加。
表2 實驗結果對比Table 2 Com parison of experim ental results
由圖11可知,本文算法的P-R曲線位置最高,且下降最為緩慢,相比于另外3種算法,在保持相同召回率的同時,能夠保持較高的檢測精度,表明淺層特征增強模塊和上下文信息融合對提高檢測精度有積極作用。本文算法的P-R曲線與兩坐標軸包圍的面積更大,證明了算法對SAR圖像飛機目標的檢測性能更好。
圖11 不同算法P-R曲線比較Fig.11 P-R curves comparison among different algorithms
圖12為SAD數據集部分檢測結果對比。為方便對比檢測結果,用不同顏色框進行區分:綠色和黃色框為算法檢測結果,黃色為虛警框,藍色為漏警框。
圖12中,(1)為飛機目標成像效果較差的情形,飛機區域亮度顯示微弱,容易造成漏檢。圖12(b)的(1)中,右側2架飛機誤檢測為1架飛機,圖12(c)的(1)、圖12(d)的(1)中,對中間的飛機均造成了漏檢,本文算法實現了對3架飛機的檢測。(2)為單一建筑物干擾情形,建筑頂部材料形成強散射,對飛機目標的檢測造成干擾,前3種算法對2架飛機均造成了漏檢,本文算法對淺層特征進行增強,實現了較好的檢測。(3)為復雜建筑物干擾情形。在圖12(b)的(3)中,以VGG16為特征提取網絡,層深較淺,特征挖掘不足,對最上方和最下方飛機目標造成漏檢(藍色框),并出現一處誤檢(黃色框);圖12(c)的(3)中,采用ResNet101網絡提取特征,更深的網絡有利于提出圖像深層次語義信息,故將5架飛機全部檢測出,但造成了4處誤檢(黃色框);圖12(d)的(3)中,通過聚類分析訓練集中飛機目標的尺寸后,對預設錨點框進行設置,很好地降低了誤檢,但只檢測出4架飛機,造成1處漏檢(藍色框);本文算法對5架飛機全部檢測出,并未造成誤檢。(4)中存在多處小型人造目標干擾,圖像中表現為“十”字型亮斑,容易引起誤檢,前3種算法均存在不同程度的誤檢與漏檢,本文算法利用k-means聚類設定錨點框和融合上下文信息,可以很好地解決對“十”字型亮斑的誤檢,同時Layer2后搭建淺層特征增強結構,消除了對右下角飛機的漏檢,實現了對飛機的全部檢測。從實驗結果來看,本文算法提高了對SAR圖像飛機目標的檢測能力,達到了預期的檢測效果。
圖12 檢測結果對比Fig.12 Comparison of detection results
原始Faster R-CNN算法直接應用于SAR圖像飛機檢測效果不佳,為此本文提出了一種改進的Faster R-CNN算法。主要改進如下:
1)遷移模型的應用,以更好地提取圖像特征和節省計算成本。
2)錨點框的重新設定和RoI Align的引入,使算法更適應于SAR圖像飛機目標形狀特點,減少定位誤差。
3)改進特征提取網絡,進一步提升了檢測效果。
在SAD數據集中,改進的算法有效降低了對干擾目標的誤檢和對弱小飛機目標的漏檢,使得平均檢測精度提高了7.4%。由于改進的算法復雜度有所增加,導致檢測速度略有下降,降低了約4 fps,在接受范圍內。本文實驗證明了應用于可見光數據集的Faster R-CNN目標檢測算法遷移至SAR圖像數據集的可行性,并針對SAR圖像飛機目標進行適應性改進,提高了算法的檢測精度,對后續的SAR圖像飛機目標檢測研究具有重要意義。