吳金亮,王 港,梁 碩,陳金勇,高 峰
(1.中國電子科技集團公司航天信息應用技術重點實驗室,河北 石家莊 050081; 2.中國電子科技集團公司第五十四研究所,河北 石家莊 050081)
艦船作為主要的海上運輸載體和重要的軍事目標,其自動檢測具有十分重要的應用價值,無論在民用還是軍事領域都有廣闊的應用前景[1]。由于光學衛(wèi)星遙感圖像直觀易理解、特征豐富、容易解譯,在海域艦船檢測方面具有SAR衛(wèi)星遙感圖像不能比擬的優(yōu)勢[2]。因此,目前對于衛(wèi)星遙感圖像的研究重點已經從SAR衛(wèi)星遙感圖像慢慢轉向光學衛(wèi)星遙感圖像[3]。基于光學遙感衛(wèi)星圖像的艦船目標檢測方面的技術文獻也在逐漸增多,Jubelin等人[4]提出了一種多尺度中高分辨率的艦船檢測算法;龔志成等人提出基于鄰域分析的海洋遙感圖像艦船檢測方法[5];王衛(wèi)衛(wèi)等人利用結構紋理分解檢測海洋艦船目標[6]。此外,還有許多學者也研究了可見光遙感圖像艦船檢測。隨著深度學習技術的發(fā)展,其很好地應用于遙感目標檢測方面。王港等將深度學習Faster R-CNN框架針對高分一號遙感影像開展了基礎設施目標檢測,主要檢測了機場、操場等基礎設施,取得了很好的應用效果[7];胡炎等將深度學習的技術應用于多尺度SAR艦船目標檢測,也取得了很好的效果[8];牛新等采用多尺度遙感影像和深度學習的方法開展了機場檢測和飛機檢測的研究,將深度學習和遙感影像的應用結合緊密,具有很好的參考價值[9]。文獻[10-13]論述了深度神經網絡在艦船檢測方面的優(yōu)勢。
深度學習方法在艦船目標檢測上展現(xiàn)出了良好的檢測性能,但是也出現(xiàn)了問題[14]。艦船目標一般為長條狀,駐泊在港口時一般為多艘艦船緊密排列,這就給檢測識別算法帶來了困難。當前主流的目標檢測算法一般為選取候選方框,并對候選框內的目標進行分類,從而實現(xiàn)目標的檢測識別[15]。當艦船緊密排列且傾斜擺放時,某艦船目標的目標方框就會包含相鄰艦船目標的內容,一般會出現(xiàn)中間艦船無法檢測的問題。圖像語義分割技術可以將某具有特定語義的像素群分出來,這樣目標的精細邊緣曲線就可以得到[16]。Li等首先將目標分割系統(tǒng)和目標檢測系統(tǒng)相結合,形成“全卷積實例分割系統(tǒng)”[17],這個想法得到了很多學者的贊同,相關算法被大量提出。綜上,如果可以采用深度學習目標檢測框架結合像素語義分割算法,在獲得每一個目標的位置前提下,同時獲得其輪廓邊緣數(shù)據,就可以很好地解決艦船檢測中艦船緊密排列的問題。
針對遙感影像艦船目標檢測的具體問題,本文設計了基于Mask R-CNN的艦船目標檢測算法。為了建立訓練樣本庫,從谷歌地球下載數(shù)據,并應用分割標注工具進行樣本的標注;在模型構建方面,采用ResNet50作為基準網絡結構[18];通過訓練模型,實現(xiàn)了艦船目標檢測。本文算法在應對緊密排列目標的檢測時,具有較強的檢測性能,算法的準確性和實用性大大增強。
本文算法總體流程如圖1所示。
圖1 算法流程
算法的設計思路:目標定位、目標識別以及語義分割協(xié)同工作,從而達到增強目標檢測的目的。通過第一個卷積層特征提取,獲得區(qū)別于Faster R-CNN的RoIPool的RoIAlign,用于接下來的目標檢測過程。獲得的RoIAlign輸入到2個分支,第1個分支通過全連接網絡獲得區(qū)域框和目標類別,第2個分支通過卷積層的計算,獲得目標像素級實例分割結果。2個分支合并,獲得最終的目標檢測結果。實例分割的加入,將目標檢測識別的準確率進一步提高,且獲得的檢測信息更加有用。
Faster R-CNN為每個候選目標輸出一個類別標簽和一個邊框偏移量。為此,本文添加了一個輸出目標掩膜的第3條分支,Mask R-CNN算法成為了一個自然且直觀的應用算法。但新附加的掩膜輸出與類輸出和邊框輸出不同,需要提取目標更加精細的空間分布。本節(jié)將會介紹Mask R-CNN的關鍵特點,包括像素到像素的對其(RoIAlign),這是Faster R-CNN所不具備的特點。
Faster R-CNN由2級組成,第1級稱為區(qū)域建議網絡(RPN),其目的是候選目標邊框,第2級本質上是Fast R-CNN,使用RoIPool從每一個候選框中提取特征,并進行分類和邊框回歸。2級的特征可以共享使用,以便更快推理[19]。
Mask R-CNN采用相同的2級,第1級是與Faster R-CNN完全相同的,第2級在與預測(類別和邊框)并行的還有一個為每一個邊框提供的二進制掩碼,用以描述目標的像素級分割結果,包括目標邊緣和內部像素。
2.3.1 掩膜表示
掩膜編碼了輸入目標的空間布局。因此,掩膜與通過全連接層不可避免地縮成短輸出向量不同,通過卷積所提供的像素到像素的對應關系,可以很自然地提取出掩碼的空間結構。
具體地,采用FCN[20]從每一個RoI預測一個m×m的掩膜。這就允許掩膜分支的每一個卷積層都保持m×m的空間布局,而不會將其縮小到缺乏空間維度的向量表示。
2.3.2 RoIAlign
RoIPool是從每個RoI提取特征圖的標準操作。RoIPool首先將浮點數(shù)表示的RoI量化到與特征圖匹配的粒度,然后將量化后的RoI分塊,最后匯總每一個塊覆蓋的區(qū)域的特征值。量化操作對分類的影像不大,但是對精細的像素級分割影像較大。
為了解決這些問題,提出了RoIAlign層,主要消除了對RoIPool的粗糙量化,同時將提取的特征和像素精準對齊。選取每個RoI分塊中的4個常規(guī)位置,使用雙線性差值計算每個位置的精確值,并將結果進行匯總[21]。
2.3.3 網絡架構
本文深度學習網絡模型的架構主要分為3個結構:卷積層1為用于整個圖像上特征提取的主干卷積網絡;下方在獲得RoIAlign后,再對RoI區(qū)域進行卷積特征提取,形成卷積層2;區(qū)域卷積提取后,分別進行邊框識別和掩膜預測,形成2個并行結構分支,其中掩膜預測為全卷積層,邊框識別為卷積層和全連接層。
本文將主干卷積網絡(卷積層1)設計為50層的ResNet,這里主要考慮了高分辨率遙感影像中艦船目標的特征復雜度和檢測任務的難度。若進行精細識別或者多類別檢測,應該增加殘差網絡的層數(shù),提高其特征抽象能力。其卷積的網絡結構示意圖如2所示。
圖2 ResNet結構示意
本文對于超參數(shù)的設置與現(xiàn)有的Faster R-CNN框架基本一致,這些設置具備一定的魯棒性。
在訓練中,采用多任務損失函數(shù),定義為:
L=Lcls+Lbox+Lmask,
式中,分類損失函數(shù)Lcls和邊框損失函數(shù)Lbox與文獻[7,11]定義相同;掩膜損失函數(shù)Lmask對于每一個RoI的輸出維度為Km2,表示K個分辨率為m2的二進制掩膜,K表示二進制數(shù)量。本文為每一個像素值應用sigmoid函數(shù),定義Lmask為平均二進制交叉熵損失。對于真實類別為k的RoI,僅在第k個掩膜上計算Lmask。本文對Lmask的定義允許網絡在不跨類別競爭的情況下,對每一個類獨立預測掩膜;本文使用專門的分類分支預測掩膜標簽(Lcls),這樣很好地解耦了掩膜和類別的預測。
如果RoI與真實框的IoU不小于0.5,則為正樣本,否則為負樣本。掩膜損失函數(shù)僅在正樣本上定義。掩膜目標是RoI及其相關的真值掩膜之間的交集。本文采用以圖像為中心的訓練,圖像被縮放到800像素(圖像短邊),批量大小為每個GPU兩幅圖像,每一個圖像有64個RoI采樣,在原有模型中進行微調,迭代4 000次。其中,學習率為0.01,采用0.000 1的學習衰減率和0.9的動量值。
在執(zhí)行目標檢測時,區(qū)域建議的數(shù)量為300。在區(qū)域建議上進行邊框預測,然后執(zhí)行非極大值抑制,再將掩膜分支應用于邊框評分最高的100個檢測邊框。掩膜分支可以預測每個RoI的K個掩膜,其中K是分類分支的類別數(shù)。然后將m2浮點數(shù)掩碼的輸出大小調整為RoI的大小。
本文中用于訓練和測試的樣本庫,主要通過下載谷歌地球中的數(shù)據建立。其中,下載的遙感影像分辨率為0.3~0.5 m,以國家—軍港的層次進行搜集和整理。制作細樣本時,將樣本大小選定在1 000*1 000左右,每一個樣本中一般包含1~4個目標。
在樣本的標注過程中,參考Pascal VOC數(shù)據集的圖像分割數(shù)據標準和Microsoft COCO數(shù)據集圖像分割的數(shù)據標準,通過開源軟件進行樣本標注。其中,艦船樣本示例和標注的艦船樣本的示意圖如圖3和圖4所示。標注艦船樣本的時候,以密集連續(xù)的點連線,將目標的輪廓邊緣準確地標準出來。標注的數(shù)據格式如圖 5所示,按照Pascal VOC數(shù)據標注格式,主要包括了路徑、樣本文件名、標注形式、類別名以及連接點坐標。
同時,為了增加樣本,本文對樣本進行了水平翻轉,這樣使得樣本的數(shù)量提高了1倍,對于小樣本的學習訓練有很好幫助。最終獲得樣本共計750個。這些樣本用于前期模型的學習訓練和后期的測試。
圖3 艦船樣本示例
圖4 艦船樣本標注示例
圖5 標注數(shù)據格式示例
利用從Google Earth上獲取的高分辨率光學遙感圖像進行實驗,其中樣本750幅。隨機從帶有標簽的數(shù)據集中選出艦船樣本500幅作為訓練樣本,其余作為測試樣本,訓練樣本與測試樣本不重復。
本算法在Python3.5上進行編寫,采用Tensorflow深度學習開源庫作為模型構建基礎。計算機為聯(lián)想Think Station P910,至強E2620 v4(雙路),顯卡為英偉達Quadro P5000 16G。本算法訓練和測試均是在GPU加速下完成。
本文使用相同的樣本庫,在Faster R-CNN下進行了學習訓練,其結果良好,但是存在幾種檢測結果有問題的情況,主要表現(xiàn)為緊密排列的艦船出現(xiàn)漏檢情況、誤檢情況、目標檢測區(qū)域框過大無法很好貼近目標等問題。問題示例如圖 6所示。其中圖6(a),(b)主要表現(xiàn)為漏檢和分析其原因,尺寸較大的目標在候選框選取過程中,將小目標包括進去,這就造成在特征提取和目標檢測結果分析中,出現(xiàn)小目標漏檢的情況。圖6 (c)主要表現(xiàn)為誤檢,F(xiàn)aster R-CNN缺乏對目標的輪廓描述和像素描述,這就造成很多具有局部特征的非目標地物被檢測為目標。圖6 (d)主要表現(xiàn)為目標檢測區(qū)域框過大,F(xiàn)aster R-CNN候選框選取的時候,未充分考慮目標尺度的多樣化,這就造成候選框雖然框選了目標的全部部分,但是并未緊密貼近目標,為精細化識別帶來困難。
圖6 Faster R-CNN艦船檢測典型問題示例
本文使用Mask R-CNN對艦船目標進行訓練學習,然后進行檢測測試工作。在獲得的檢測識別結果中,相對于Faster R-CNN取得了較大的改善。典型艦船檢測結果如圖 7所示。圖7(a)~(d)分別顯示Mask R-CNN艦船檢測算法很好地解決了6.1節(jié)所述的艦船檢測問題。Mask R-CNN算法由于掩膜分支的加入,在目標的候選框精修、緊密排列目標檢測和抗干擾等方面具有較好的性能。
圖7 Mask R-CNN艦船檢測典型示例
同時,本文對250個樣本進行檢測測試,獲得了統(tǒng)計的準確率結果,本次統(tǒng)計不僅考慮樣本的準確率,還考慮樣本中目標實例檢測的準確率,檢測的統(tǒng)計結果如表1所示。通過樣本的檢測測試,發(fā)現(xiàn)Mask R-CNN算法由于其加入了掩膜分支并優(yōu)化了聯(lián)合損失函數(shù),在目標檢測準確率方面,獲得了較好的效果。
表1 艦船目標檢測統(tǒng)計數(shù)據
本文將Mask R-CNN算法應用于艦船目標檢測方面,相對于Faster R-CNN獲取了更加優(yōu)越的性能。但是在實驗測試過程中也發(fā)現(xiàn)了一些不足的地方。首先,計算資源消耗較大,無論顯存還是CUDA核,都會出現(xiàn)巨大消耗,較Faster R-CNN資源消耗較大;其次,訓練和檢測時間大幅增加,在超參數(shù)和硬件配置相同的情況下,Mask R-CNN比Faster R-CNN訓練時間增加30%,檢測時間增加50%;最后,依然存在檢測結果不好的情況,主要出現(xiàn)在目標密集且多尺度目標都存在的情況,出現(xiàn)問題的檢測示例如圖8所示。
圖8 Mask R-CNN艦船檢測典型問題示例
本文針對遙感艦船目標檢測中遇到的目標緊密排列的問題,采用基于Mask R-CNN的模型方法,在目標區(qū)域方框和類別預測的基礎上,增加掩膜分支,在描述艦船目標特征的同時,增加對其輪廓邊緣的限制,取得了較好的檢測效果。本文方法可以應用于更多的場景,包括其他遙感地物的目標檢測任務、目標精細識別的前期輪廓提取等。但是該方法還存在一些問題,主要為在緊密排列的多尺度目標群中進行檢測出現(xiàn)漏檢和掩膜錯誤等問題。通過基于深度學習的艦船檢測研究,本文認為改進的主要方向是:加強訓練機制的創(chuàng)新,監(jiān)控訓練參數(shù)和卷積特征的變化,使得訓練的過程更加可控可視;加強樣本多樣化,提高樣本庫的數(shù)量和質量,引入數(shù)據增廣算法,從數(shù)據方面增強學習的準確性和泛化性;改進網絡結構,針對大場景、多尺度密集目標進行改進,提出更加符合遙感目標特性的神經網絡結構。