李健偉,曲長文,彭書娟,鄧 兵
(海軍航空大學,山東煙臺264001)
合成孔徑雷達(synthetic aperture radar, SAR)是一種全天時全天候提供高分辨率圖像的主動式傳感器,自面世以來,在民用遙感、測繪和軍事偵察領域得到了廣泛的應用。由于軍事應用的需要,SAR圖像中艦船目標檢測得到了大量研究[1-2]。艦船檢測可以分成3個步驟:預處理、候選區域提取和鑒別。恒虛警處理 (constant false-alarm rate,CFAR)是用于候選區域提取的常用的方法,可以對潛在的艦船區域進行提取。它首先對雜波進行統計建模,之后根據虛警率得到判定的門限值,將高于門限的像素點視為艦船像素,低于門限的視為背景。鑒別一般是采用人工設計的特征,訓練分類器進行二分類來實現??梢杂糜阼b別的特征除了簡單的長度、寬度、長寬比和散射點位置等特征外,從計算機視覺領域引進而來的特征也是常用的方法,且具有更強的魯棒性。例如,2004年Viola和Jones開創性地提出的人臉檢測器[3],被廣泛地用于各種應用場景。該檢測器包括3個步驟:積分圖像特征、AdaBoost分類器和級聯結構,這3個步驟使其檢測速度和準確率能夠達到很高。自此之后,針對該方法的改進層出不窮,主要側重要兩方面,即設計更好的特征和設計更好的分類器。在特征方面,涌現出了方向梯度直方圖(histograms of oriented gradient,HOG)、加速版的具有魯棒性的特征(speeded up robust features,SURF)、局部二值模式(local binary patterns,LBPs)等新特征[4]。在分類器設計方面,提出了Boosting,支持向量機(support vector machines,SVM)及其改進版本[5-6]。這兩種思路在過去幾十年促使著這個領域繼續前進。但是,自從2012年深度學習技術的興起[7],基于深度學習的目標檢測技術主宰了這個領域。因此,也非常有必要將基于深度學習的目標檢測技術應用到SAR圖像艦船目標檢測中。
2012年,AlexNet贏得了ImageNet大賽圖像分類的冠軍之后,神經網絡迎來了它的另一次復興[7]。之后出現的ZF-Net、VGG-Net、GoogLeNet和ResNet等一次又一次地刷新著分類比賽的記錄[8],引領人工智能的新一次浪潮。與此同時,Ross 和 Kaiming[9]將卷積神經網絡(convolutional neural network, CNN)應用到目標檢測任務。他們提出了一系列有效的目標檢測算法,也刷新著目標檢測競賽的記錄,并在自動駕駛、智能安防、偵察遙感等領域得到了快速的應用。這些算法包括R-CNN、SPP-net、Fast R-CNN和Faster R-CNN[10-12]。尤其是Faster R-CNN在各個領域均取得了非常好的檢測效果。
本文建立了一個專門用于SAR圖像艦船目標檢測的數據集(SAR ship detection dataset,SSDD),下載鏈接為https:∥pan.baidu.com/s/1dF6g3ZF。該數據集含有多種成像條件下的艦船SAR圖像,可以作為該領域研究人員用于評估其算法的一個基礎。在這個數據集的基礎上,提出了一些方法來提升檢測的準確率和速度,包括特征聚合、遷移學習和損失函數設計等,最后通過一系列對比實驗驗證了所提方法的在檢測準確性和效率的優越性。
Ross 首次將CNN用于目標檢測領域提出了R-CNN[9],該方法在目標檢測領域取得了非常好的效果,證明了深度學習用于目標檢測的有效性,如圖1(a)所示(圖中Selective search是提取候選區域的一種方法)。該方法有兩個步驟:產生與類別無關的候選框和訓練分類器對候選框進行分類。每幅圖像大概會產生2 000個候選框,每個候選框都需輸入CNN進行特征提取,導致后續計算復雜。為了解決這個問題,SPP-net[10]和 Fast R-CNN[11]先后被提出,如圖1(b)所示。這兩種方法只將整幅圖像輸入CNN一次來提取特征,然后將候選區域映射到最后的特征圖上,而不需對每個候選窗口都進行CNN處理,極大地減小了處理時間。Fast R-CNN是在SPP-net基礎上的改進,用一個空間金字塔池化(spatial pyramid pooling, SPP)層來將不同尺寸的候選窗口變成固定長度的特征,用于訓練后面的分類器,這使其可以進行端到端的訓練(CNN模型在ImageNet進行了預訓練)。Fast R-CNN另一大亮點是將分類和回歸任務放在一個損失函數里進行聯合優化,達到了非常好的效果。但是,候選區域提取模塊仍然是獨立于CNN的,這是對算法進一步提升的最大的瓶頸。
為進一步對檢測器進行加速,文獻[12]提出了Faster R-CNN,如圖1(c)所示。它包括兩個模塊,第一個是全卷積網絡產生候選窗口,稱為區域候選網絡(regional proposal network,RPN)。第二個是Fast R-CNN檢測器,它的任務是對RPN產生的候選窗口進行分類和位置微調,由于RPN和Fast R-CNN共享了卷積層,這大大減小了算法的計算量,可以達到實時檢測。R-CNN、Fast R-CNN和Faster R-CNN的算法原理以及處理效果如圖1所示。

圖1 R-CNN、Fast R-CNN和Faster R-CNN的算法原理以及處理效果Fig.1 Principle and result of R-CNN, Fast R-CNN and Faster R-CNN
Faster R-CNN得到了極大的關注,讓自動駕駛、智能安防和遙感偵察等領域的研究人員看到了實時檢測目標的可能性。Faster R-CNN在通用目標檢測(例如光學圖像中的人、車、動物等)領域取得了很好的效果,它的RPN模塊起到了主要的作用,如圖2所示。RPN在經典CNN模型之后會有一個3×3的全卷積層。它利用不同尺度和長寬比下的矩形框(本文稱為anchor)來實現不變性(旋轉不變和尺度不變)。anchor 是指在卷積特征圖上得到的不同尺寸的矩形框。文獻[12]在特征圖的每個位置會有9個anchors,即包括3種不同的尺度和長寬比。假定卷積特征圖的尺寸是W×H,那么anchor的個數就為W×H×k個。由于RPN與Fast R-CNN共享卷積運算,所以Faster R-CNN算法可以在0.2 s檢測完一幅圖像,圖2中,CNN結構為VGG-16,RoI代表感興趣區域(region of interest,RoI)也就是候選窗口。

圖2 Faster R-CNN和RPNFig.2 Faster R-CNN and RPN
Faster R-CNN利用VGG-16模型,在通用目標檢測數據集PASCAL VOC 2007 和 2012上分別具有73.2%和70.4%的平均準確率,在TITAN X GPU上速度達到5 fps。Faster R-CNN的極大成功顯示了深度學習用于目標檢測的巨大的潛力。
盡管Faster R-CNN在上述多類目標數據集取得了很好的效果,但其在SAR圖像艦船檢測效果卻差強人意,筆者認為主要有以下幾個原因。
(1)Faster R-CNN是在PASCAL VOC等數據集取得了非常好的效果,它可以檢測到人、車、動物等目標。這些物體通常會占據圖像的大部分空間,但是在SAR圖像艦船目標檢測領域,船在圖像中包含的像元數目相對較少,而Faster R-CNN卻不擅長檢測這樣的物體。本質原因是RoI池化層僅僅從最后一個特征圖采樣得到特征,而CNN的特征圖越往后其特征越利于分類但空間信息損失嚴重,因此其難以預測小尺寸的物體類別及其邊框。
(2)由于成像原理的不同,SAR圖像與普通光學圖像差別較大。從ImageNet數據集(全是光學圖像)學習到的特征不一定適用于SAR圖像。因此,將ImageNet數據集預訓練得到的特征遷移到本領域,不見得會適用,除非只遷移CNN前幾層低級的特征,大部分特征從SSDD數據集中去學習,才會有較好的效果。
(3)由于兩類數據集的不同,Faster R-CNN很多細節需要做適應性的改變才能適應SAR艦船目標檢測領域,例如anchor的個數等。
針對以上問題,下文在第3節對Faster R-CNN進行適應性改進,使其能夠克服上述3個問題。
深度學習目標檢測最基本的要求是要用一個規模較大的數據集。因此,建立了SSDD,其可以用于訓練深度學習模型,用于研究人員在這個統一的數據集去評價他們算法的性能,據筆者所知這是本領域第一個公開的數據集。對于每條船,檢測算法會預測目標的邊框以及是艦船目標的可能性。筆者模仿PASCAL VOC[13]數據集構造了SSDD,按照7∶2∶1的比例將數據及分成訓練集、測試集和驗證集,SSDD盡量包含了多種成像條件,例如不同分辨了、尺寸、海況和傳感器類型等。數據集樣本的多樣性使訓練出來的檢測器具有更好的魯棒性。
圖3是SSDD中每幅圖像艦船個數的統計結果,NoS (number of ships)表示船的個數,NoI(number of images)表示圖像個數。

圖3 SSDD中NoS 和 NoI相應的關系Fig.3 Relationship between NoS and NoI in SSDD
在SSDD數據集中,一共有1 160幅圖像和2 456艘艦船,平均每幅圖像有2.12艘船。后續根據任務需要會增加樣本個數,擴充數據集。相比于有9 000多幅圖像、20類目標的PASCAL VOC數據集,SSDD足夠大到可以對艦船這一類目標進行訓練檢測器。圖4是SSDD中艦船的多樣性,從左到右,從上到下依次是1 m分辨率的靠近碼頭的船、開闊海域的7艘船、靠近碼頭的艦船、 15 m分辨率的開闊海域的八艘船、靠近岸邊的兩條船、1 m分辨率開闊海域船。

圖4 SSDD的部分樣本Fig.4 Samples of SSDD
由于一些小船在低分辨率下只有極少量的像素個數,有時很難通過人眼確定是不是船。因此,將像素個數大于3個的視作船的像素,并對其做標注。標注所用的是開源軟件“labelimg”,該軟件很容易就能對船做標簽(x,y,h,w),其中,(x,y)是艦船所在矩形框左上角的坐標,h是矩形框的高度,w是矩形框的寬度。
相比于PASCAL VOC數據集,SAR圖像中艦船目標的尺寸普遍較小,且尺度變化較大,標準的Faster R-CNN算法無法較好地適應這些目標,尤其是容易漏掉小尺寸的目標。這是由于后幾層的感受較大的原因,會忽略掉一些重要的特征導致漏檢小目標的現象[14]。圖5為本文所提出的檢測方法的結構圖:通過聚合不同層的特征,可以檢測到不同尺寸的目標,這里將第3個卷積層和第5個卷積層的特征進行聚合。
在標準的Faster R-CNN中,5個卷積層后面會接修正線性單元(rectified linear unit, ReLU), 局部響應歸一化 (local response normalization,LRN)和最大池化層。但是在我們的結構中最后的卷積層后只有一個ReLU激活層,因為RoI池化層具有了最大池化的功能。

圖5 特征聚合示意圖Fig.5 Feature concatenation
特征聚合包括標準化和1×1卷積,對每一個RoI池化之后的向量進行標準化,可以減小不同層之間的尺度差異,防止大特征主宰了小特征,這個改變使系統更加穩定,進一步增加準確率。L2標準化是針對池化之后的特征圖的每個像素進行的,標準化之后對每個特征向量進行尺度變換:
(1)
(2)

(3)
在訓練過程中,尺度因子γ的更新和輸入x通過后向傳播和鏈式法則計算,即
·γ
(4)
(5)
(6)
式中,y=[y1,y2,…,yd]T。
自然圖像訓練的深度神經網絡都有一個現象:前幾層學習得到的底層特征類似于Gabor濾波器,這些特征不是某個數據集或者任務獨有的,而后幾層學習到的高層特征會根據數據集或者任務的不同而不同[15]。實際上,大部分研究人員都不會從頭訓練卷積神經網絡,他們在ImageNet預訓練之后的模型進行微調,將預訓練之后的模型視為初始化或者特征提取器。
ZF-Net[16]是Krizhevsky的AlexNet變體,它將第一個濾波器的尺寸從11×11 減到 7×7,將stride減到2,ZF-Net有5個卷積層和3個全連接層,基于以上分析,固定前3層,在SSDD數據集上精調后2層。利用的ZF-Net的結構如圖6所示。

圖6 基于ZF-Net的遷移學習Fig.6 Transfer learning based on ZF-Net
為了訓練這個網絡,把以下兩種RoI看做兩種正樣本:第一種是與目標真實邊框(也稱為ground-truth)有最高的交并比 (intersection over-union,IoU);第二種是與ground-truth的重疊高于0.7。把IoU低于0.3的視為負樣本,其他的RoI不參與訓練。基于以上分析,優化多任務損失函數[12]如下:
L({pi},{ti})=

(7)

tx=(x-xa)/wa,ty=(y-ya)/ha
tw=lg(w/wa),th=lg(h/ha)


式中,x,y,w,h分別代表邊框中心的坐標、寬度、高度。
采用非極大值抑制(non-maximum supression,NMS)來抑制那些冗余的框, 抑制的過程是一個迭代-遍歷-消除的過程。首先,將所有框的得分降序排列,選中最高分及其對應的框;其次,遍歷其余的框,如果和當前最高分框的重疊面積(intersection of union,IOU)大于一定閾值,就將框刪除;最后,從未處理的框中繼續選一個得分最高的,重復上述過程。
為了防止過擬合,將dropout比率從0.5改到0.6。dropout是指在深度學習網絡的訓練過程中,對于神經網絡單元,按照一定的概率將其暫時從網絡中丟棄,dropout是CNN中防止過擬合的較好的方法[17]。對于anchor,利用面積為1282和 2562像素2種尺度,2種長寬比, 1∶2和2∶1(由于艦船目標沒有正方形,所以去掉了1∶1的anchor)。由于SAR圖像中的船是稀疏的,因此將每個特征點產生的anchor個數從9減到4個,這會加速本文算法而不會降低準確率;其他RPN超參數如文獻[12]所示。利用精調之后的RPN,采用門限為0.7的NMS對候選區域進行濾除,去掉得分小于最大的那些。
難樣本挖掘是指從RoI中選擇容易檢測錯的樣本,而不是簡單的采樣。在進行前向傳播時,全部的RoI通過網絡,根據損失值排序,后向傳播時根據排序,選擇前幾個損失值最大的樣本(容易出錯的難例樣本)來后向傳播更新模型的權重[18]。難樣本挖掘是提升檢測器性能的有效的方法,需要做到就是收集那些難樣本,將它們再一次送入網絡訓練。在訓練過程中,將難樣本的RoI進一步精調模型,提升結果會在下一部分進一步說明。
圖7為幾個典型的難樣本,圖7(a)是SSDD中第757個樣本,高分辨率大尺寸,圖7(b)是SSDD中第59個樣本,低分辨率小尺寸。

圖7 典型難樣本Fig.7 Typical hard negative examples
利用Caffe[19]框架在SSDD上去訓練檢測器,ZF-Net是基本架構,已在ImageNet進行了預訓練,計算環境是64位Ubuntu 14.04操作系統,計算機CPU Intel(R) Core(TM) i7-6770K @ 4.00GHz×8 and NVIDIA GTX1080 GPU(8G 內存),用CUDA8.0和cuDNN5.0加速。
算法的衡量指標是平均準確率(average precision, AP)和平均處理時間。從表1可以看到,標準的Faster R-CNN在AP和平均處理時間上都有很大的優勢。文中所提的方法將AP從70.1% 提高到了 78.8%,同時具有更少的時間開銷。AP提高了是因為對特征的利用更加充分而了,處理速度更快了,是因為降低了anchor的個數。

表1 算法對比分析
隨機選擇一些不同情況下的檢測結果進行分析,如圖8所示。從圖8中可以看出,本文方法不僅能對大片海域的艦船目標檢測,同時也能夠適應港口和近岸區域的艦船目標。且不需要傳統方法的海陸分割、預處理、雜波建模和參數估計等過程,是完全端到端的,即輸入圖像直接通過模型輸出檢測結果。

圖8 數據集SSDD部分樣本檢測結果Fig.8 Result of some samples in SSDD
為了進一步評估所提方法的性能,繼續進行了一些實驗,目的是驗證第3節中不同策略的有效性。
表2中第4行顯示了特征聚合對性能提升的效果,通過第3.1節中的特征聚合,本模型可以檢測到不同尺寸的艦船,平均準確率從70.1% 提升到了76.4%,同時檢測時間增加的非常小(15 ms)。表2中第5行進一步評估了遷移學習策略的性能,由于SSDD是一個關于艦船SAR圖像的較小的數據集,它與通用目標數據集有較大的差別。如果將整個卷積層遷移過來,平均準確率為70.1%,如果將前3層卷積遷移過來,在SSDD數據集上微調后幾層,平均準確率增加到74.3%,而檢測時間幾乎不變。難樣本挖掘同樣也使檢測性能得到了提升,平均準確率從70.1%增加到了75.6%,同時,由于沒有對模型進行改變,只改變了訓練樣本分別,所以只增加了訓練時間,而檢測時間未增加。對anchor和候選窗口個數的影響進一步做了實驗,標準Faster R-CNN用的是9個anchors,我們去掉512×512尺寸和1∶1長寬比的anchor,實驗結果可以發現,這降低了檢測時間,但是平均準確率下降的很小。NMS稍微增加了平均檢測準確率,測試時間沒變。將dropout比率從0.5變到0.6,平均準確率增加了1.5%,但是如果增加到0.7性能會下降,這意味著所選的比率能有效地避免過擬合。最后結合上述所有的策略,本文所提的方法將檢測準確率提升到了78.8%,如表2中第3行所示。

表2 進一步實驗的結果
本文建立了用于艦船檢測的SAR圖像數據集SSDD,SSDD是目前為止我們所知的SAR艦船檢測領域第一個公開的數據集,可以使研究人員在一個統一的條件下對比各自算法的性能,更具有可比性。在此數據集上,提出了檢測SAR圖像中艦船目標的方法,該方法以標準的Faster R-CNN作為基本結構,并在特征聚合、模型遷移、損失函數以及其他應用細節上進行了創新,在SSDD上的實驗證明了所提算法具有更高的檢測準確率和更少的耗時,檢測準確率從標準Faster R-CNN的70.1%提升到78.8%,每幅圖像處理時間從198 ms降低到183 ms。
本文方法使用的前提條件是需要收集大量的SAR圖像艦船目標訓練樣本,且制作相應的標簽用于模型訓練,需要消耗較大的人力和物力。同時,本文所采用的基于深度學習的目標檢測方法具有適應性和擴展性強的特點。適應性強是指不需像傳統檢測方法那樣進行海陸分割、預處理等多個步驟,而是進行完全端到端的進行訓練;擴展性強是指,通過收集新的樣本可以完成對新樣本的檢測,不需要專門設計檢測算法。筆者相信基于深度學習的目標檢測方法會成為SAR圖像艦船目標檢測的主流方法。