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