吳榮峰, 唐希源
(南京理工大學 電子工程與光電技術學院, 南京 210094)
中國海域面積遼闊,使用衛星遙感技術實時監測海面船舶對國防事業、海運貿易等都具有十分重要的意義。 為了盡可能多地獲取海面船舶信息,往往會選擇超廣角的衛星,然而在這類衛星的遙感圖像上,船舶往往表現為很小的白色點狀,難于識別,而海面復雜的環境狀況又會進一步加大識別的難度,基于這種情況,轉向識別船舶的尾跡。 船舶尾跡的目標范圍遠大于船舶,且尾跡在遙感圖像上的灰度變化和周邊的海域有著明顯的區別,大大降低了目標檢測的難度。 此外,尾跡還能提供船只的航速以及航向方向等信息。
傳統的船舶尾跡檢測算法往往依賴于人為的特征提取,耗時費力,且這類方法的魯棒性和泛化能力較差,不利于系統自動地識別目標。 近年來,深度學習技術不斷地發展和完善,逐漸被引入到遙感圖像目標檢測與識別領域,并且取得了很好的效果。基于此,本文提出了一種基于改進的Mask R-CNN算法的船舶尾跡檢測技術。
Mask R-CNN 是由Faster R-CNN 改進而來,用于實例分割的目標檢測算法,可以在一個網絡中同時做目標檢測和實例分割,其在原來Faster R-CNN的基礎上把ROI Pooling 層改為ROI Align,使得區域劃分更加精準,此外還額外引入了一個Mask 層用于實例的分割。
由于遙感衛星圖像往往圖像不清晰,噪聲很大。為了更好地實現檢測,本文在原有的Mask R-CNN算法的基礎上做出了兩點改進:
(1)在原有的特征金字塔網絡(FPN)結構上引入平衡特征金字塔(BFP)串聯結構,以增強圖像特征信息的融合,降低原圖的噪聲,增強目標的可辨識性;
(2)使用ResNet50 作為主干網絡,在主干網絡上引入GCNet,增加特征的提取能力。
實驗結果表明,經過改進之后的Mask R-CNN對于船舶尾跡的目標檢測能力明顯提升。
Mask R-CNN 是一種實例分割的深度學習神經網絡,在目標檢測領域有著十分優秀的表現,很適合遙感圖像的檢測。 主干網絡與特征金字塔網絡層(Backbone +FPN)、區域建議網絡層(RPN)、RoI Align 層、卷積層(CONV)、邊框回歸支路(class)、邊框分類支路(box),以及一條并行的Mask 支路,如圖1 所示。

圖1 Mask R-CNN 結構示意圖Fig.1 Structure diagram of Mask R-CNN
ROI Align 是Mask R-CNN 的第一個重大改進,明顯改進了量化誤差的影響。 在Faster R-CNN 當中, RoI Pooling 引入了兩次量化誤差,一次是在原始圖像映射到特征圖的過程中,圖像尺寸的浮點數取整;另一次是對特征圖進行最鄰近插值。 整個過程的兩次取整操作,會給坐標引入很大的誤差。為了解決該問題,文獻[4]提出了RoI Align 使用雙線性插值方法,利用原圖中虛擬點四周的4 個像素點的值,來共同決定目標圖中的一個像素值,這樣就可以將虛擬點對應的像素值估計出來。
Mask R-CNN 的另一個改進是在原有的損失函數中引入了Mask 預測損失函數L, 損失函數如式(1):

其中,L、L分別為類別、位置預測的損失函數。
對于支路,每個的輸出維度是,表示的大小,代表類別數。 得到預測后,對的每一個像素點求函數值,并把結果作為L的輸入。 雖然會有個,但在計算時只有對應類別的才有效,其他的不會對L造成影響。
在遙感圖像中,船舶尾跡目標的長短大小往往很不一致,并且由于分辨率低,目標的辨識度很低,圖像噪聲也很大,即使是依靠人眼也很難快速確定目標,因此需要加工處理,加強特征,提高辨識度,而平衡特征金字塔結構可以很好地滿足這一要求。
BFP 結構旨在解決特征層信息的不平衡,以更加高效地利用不同尺度各自的特征。 傳統的FPN 是一種致力于解決特征融合問題的結構,使用自下而上后再自上而下的結構,低層的特征圖包含了更多的位置細節信息,有利于小物體的目標檢測,而高層次的特征圖則是包含了更多的語義信息,更加適合做大尺度物體的識別,通過兩者的組合來進行不同尺度物體的識別。 但這種結構更多地關注于相鄰層的關系,忽略非相鄰層間的依賴關系,而非相鄰層的依賴關系在目標識別當中往往起著重要的作用。
平衡特征金字塔結構很好地解決了這一問題,同時獲取并聚合了來自不同層級的特征,使得高層語義特征和底層位置細節等信息同時匯聚到一起,并通過使用嵌入式高斯Non-Local 注意力模塊進一步精煉了特征,提高了目標的可辨識度。
BFP 的結構示意圖,如圖2 所示,包括調整大小、融合、精煉和增強4 個步驟。

圖2 BFP 結構示意圖Fig.2 Structure diagram of BFP
(1)調整大小。 在FPN 結構輸出的特征圖中,不同層次的特征圖大小不一,為了便于后續的整合,需要調整為同一尺寸。 比如,以C4 層作為目標,對于更大的C3 和C2,使用最大池化(Max Pooling)方法進行縮小,對于更小的C5 層,則可以使用雙線性插值的方法放大到C4 的尺寸。
(2)融合。 把幾張同尺寸特征圖相互疊加,并求平均值即可。
(3)精煉。 使用嵌入式高斯Non-Local 注意力模塊進行特征精煉,通過建立圖像上兩個有一定距離的像素之間的聯系來增強識別的效果,同時基于傳統數字圖像處理中的非局部均值理論,該方法還可以明顯降低圖像中的噪聲。 該方法有比卷積更好的穩定性,其關鍵公式如式(2)所示。

輸入信號x代表目標圖像,x是所有特征可能與x相似的圖像,兩者大小相等。 通過函數計算得到兩者的關聯系數,函數代表位置處的輸入信號,之后以函數為權重進行加權求和,() 代表歸一化系數。 相關的函數表達式如式(3) ~式(7)所示。


最后,需要把該結構插入到原有的網絡中,并且不能破壞初始信息,這里需要增加一個殘差鏈接,其表達式如式(8)所示。

Non-Local 模塊的結構示意圖,如圖3 所示。

圖3 Non-Local 模塊的結構示意圖Fig.3 Structure diagram of non-local block
(4)增強。 把已經融合的特征圖恢復到原有大小。 對精煉后的圖像使用雙線性插值操作可以恢復到C2,C3 大小,使用最大池化操作則恢復到C5 的大小,對于C4 大小的輸出則不需要操作。 恢復完成后,再把其和原始的C2、C3、C4、C5 相互疊加后輸出。
綜上所述,通過BFP 的操作實現了不同特征層的信息融合,并加強了目標的特征,增加了可辨識度,對低分辨率的遙感圖像識別十分關鍵。
傳統的卷積神經網絡通過圖像的一部分作為卷積核,在圖像上以滑窗的形式不斷進行卷積,直至整幅圖像均以該卷積核進行過卷積操作,后對特征圖進行池化。 然而這樣的操作產生了一個問題,當另外有相似或關系密切的目標距離卷積核所在位置較遠,那么該卷積核只能觀察到其卷積范圍內的部分圖像,無法提高長距離依賴的檢測能力。 引入GCNet 的目的正是提高長距離依賴特征提取能力。
GCNet 由Non-local 與SE 兩大模塊組成。
Non-local 操作是為提高長距離依賴,某一輸入信號處的響應是其他所有與其大小相等的位置特征權重和,將每一個信號與其他所有的信號相關聯,實現Non-local 的思想。 2019 年Yue Cao 等人指出,所選取的注意力x對最終的識別效果只能產生很小的影響,對于每個x均計算其注意力分布是很浪費計算資源的行為,因此,在GCNet 當中,Nonlocal 模塊被進一步簡化。
由于不再對x進行操作,因此傳統的non-local模塊中的W路被移除,不再加入該卷積模塊,以節約計算資源。 將W移至y的乘法運算之后,單獨生成一個模塊稱為Transform,雖然會犧牲一定的準確度,但是會大大節省計算的成本,提高運算的速度。
簡化的Non-local 模塊結構如圖4 所示,可以將整個簡化Non - local 模塊劃分為上下文建模(Context Modeling)、變 換(Transform) 以 及 融 合(Fusion)3 個部分。

圖4 簡化的non-local 模塊結構示意圖Fig.4 Structure diagram of simplified non-local block
其數學模型如式(9)所示。

其中,x、x表示輸入信號,W,W表示卷積因子。
在簡化的non-local 模塊的操作中,將W移至乘法運算之后,在顯著減少運算量的同時,會降低準確度,為了彌補這個問題從而引入了第二個模塊SE模塊,其結構示意圖如圖5 所示。

圖5 SE 模塊的結構示意圖Fig.5 Structure diagram of SE block
SE 模塊的上支路會先將輸入的圖像做一次全局 平 均 池 化( Global Average Pooling), 后 接bottleneck 結構,即先使用卷積降低維度,之后做一次ReLU 非線性激活,再做一次卷積恢復維度,最后通過產生歸一化權重。 上支路最后和恒等映射進行乘積操作,形成SE 模塊的輸出。 SE 模塊的顯著特點便是通過bottleneck 結構減小參數量,這是GCNet 引入SE 的重要原因。
融合簡化后的Non-local 模塊以及SE 模塊,最終的GCNet 模塊結構如圖6 所示。 層標準化(Layer Normalization,LayerNorm)的作用是改善bottleneck結構難以優化的問題,提高模型泛化能力,同時可以彌補傳統神經網絡不斷以相同函數堆疊導致提取的特征缺少多樣性的問題。

圖6 Gcnet 模塊結構示意圖Fig.6 Structure diagram of GCnet block
GCNet 的數學表達如式(10)所示:

其中,即ReLU 非線性激活函數,即層標準化。
在原來的簡化的non-local 模塊的變換部分,融合了SE 模塊中bottleneck 結構,并使用層標準化運算解決優化問題,而上下文建模部分保留了簡化的Non-local 模塊的結構,這樣即能夠得到Non-local適應特征之間長距離的依賴的性能,又能像SE 模塊一般減少計算量,解決提取特征多樣性的丟失問題,提高了檢測的準確率。
融合BFP+GCNet 的Mask R-CNN 網絡整體結構如圖7 所示。 在主干網絡(Backbone)部分選用Resnet50,并在其中引入了GCNet 結構,以加強特征的提取能力;在FPN 和RPN 之間增加了串聯的BFP結構,用于提高特征的融合,增加目標的可辨識性。

圖7 融合BFP+GCNet 的Mask R-CNN 網絡整體結構Fig.7 The overall structure of Mask R-CNN network integrated with BFP+GCNet
硬件環境:配有兩塊NVIDIA RTX 2080 Ti 顯卡的計算機;
軟件環境:Ubuntu 18 操作系統,Python 語言編程實現算法網絡, 使用 PyTorch 學習框架,mmdetection 框架;
訓練集:64 張圖片進行mosaic 混合,大圖裁剪拼接,以提高背景與場景特征多樣性,提升數據質量與數據集泛化性,每輪訓練取所有圖片的80%,重復十次,共計十二輪訓練;
測試集:64 張圖片,大小均為1 400×1 000。
識別對象分別為船只和尾跡,根據測試程序返回的指標,選取各檢測對象“框選”和“分割”的平均準確度進行評價,評價的對照組為傳統Mask RCNN,實驗組為僅融合BFP 的Mask R-CNN、僅融合GCNet 的Mask R-CNN、融合BFP+GCNet 的Mask R-CNN,測試結果見表1。

表1 測試集輸出的模型準確度測試結果Tab.1 Accuracy on test dataset
由表1 可以看出,相較于傳統的Mask R-CNN,不論是僅采取一個改進措施或是將兩項改進結合,本文所述的改進措施具有顯著效果。 同時,對尾跡的標定準確度比船只都高,說明針對尾跡對船只的位置進行勘測是可行的。
本文采用的數據集來自于landsat8 遙感影像,實際檢測效果如圖8 所示。 由于目標物較為模糊,且圖像的噪聲大,對需要檢測的目標存在較大干擾,需要通過對已有的衛星影像進行裁剪,放大小目標的精度,并進行mosaic 融合,以提升檢測數據的質量,并擴充數據集。 圖片經過預處理后,進入神經網絡中的數據質量得到提升,從而使得識別結果較為清晰,基本能夠正確地標注出船只與尾跡所在的位置。

圖8 檢測效果Fig.8 Detection effects
本文討論了一種改進的Mask R-CNN 的結構,該結構做出了兩個改進:一在骨干網絡Resnet50 中加入GCNet 全局注意力模塊;二在FPN 特征提取網絡中引入BFP 串聯結構。 首先,從理論上證明這樣的改進結構能夠使Mask R-CNN 的檢測準確率得以提升;利用實驗分別測試融合了BFP/GCNet/BFP +GCnet 改進的Mask R-CNN 以及對照組(傳統Mask R-CNN)的檢測準確率,最終證明BFP+GCNet 的改進結構明顯比其他模型的檢測能力更好,對于尾跡的檢測比對于船只的檢測準確率更高,說明了融合BFP+GCNet 的Mask R-CNN 能夠更好地適應船舶尾跡的檢測任務。