李佳琪, 鄧玉嬌, 吳湘寧, 代 剛, 陳 苗, 王 穩, 方 恒, 涂 雨, 張 鋒
(中國地質大學(武漢) 計算機學院, 武漢 430078)
遙感影像中飛機、船只以及近海海灘和島嶼的檢測不僅在海洋軍事信息研究領域是一個重要的應用方向, 在民用工業領域也同樣發揮著重要的作用. 對于這類目標, 主要的任務需求是在海面、湖面或地面背景下對圖像中的船只、海灘、島嶼以及機場中的飛機進行位置標注和掩膜分割. 而飛機和船只圖像在尺度、分辨率上與自然圖像存在差異, 海灘和島嶼也會因為崎嶇的輪廓使得識別效果不明顯.
針對高分辨率遙感圖像中目標太小、識別掩碼不清晰、輸入影像模糊等問題, 本文提出了一種基于注意力機制和生成對抗網絡的模型Attention-GAN-Mask R-CNN 簡稱AG-Mask R-CNN, 將注意力、生成對抗網絡[1]和Mask R-CNN[2]結合起來. 本文的主要研究工作為: (1)針對數據中目標尺度不同, 開展多尺度特征融合研究. 針對多尺度的輸入, 在主干網絡中添加特征金字塔網絡 (FPN)[3]. (2)針對遙感圖像中對象占比較小, 容易被漏檢的問題, 開展注意力機制算法研究. 引入注意力機制, 嵌入在卷積層網絡中, 產生注意力感知的特征, 使得網絡關注更重要的區域, 以提升網絡檢測的精度. (3) 在Mask (掩碼)分支中引入生成對抗網絡.由于Mask 分支生成器與生成對抗網絡中的生成器定義相同, 因此利用單獨的生成對抗網絡對Mask 分支的Mask 生成網絡進行預訓練, 從而提升原始Mask 分支中生成器的精度. (4)模型的訓練與評估. 針對模型的訓練結果進行驗證分析, 并與初始Mask R-CNN 網絡等其他主流網絡進行對比來說明模型的可行性和高效性.
AG-Mask R-CNN 模型的網絡結構如圖1 所示.

圖1 AG-Mask R-CNN 網絡模型架構圖
(1)對遙感數據進行預處理作為輸入.
(2)骨干網絡采用ResNet101[4], 并且在ResNet 卷積層之間嵌入注意力模塊以及特征金字塔網絡, 以此來增強對小目標的語義提取和檢測精度. 注意力模塊如圖2 所示, 采用先加入通道域注意力再加入空間域注意力的方式, 在卷積層的每一層網絡之間都嵌入一個封裝好的注意力模塊.
(3)沿用Mask R-CNN 的模型架構, 針對Mask 分支進行改進, 對Mask 生成器進行生成對抗的生成器預訓練. 初始操作是對輸入圖像中物體的信息進行表達和融合, 這個過程中CNN[5]模塊充當特征提取網絡,對輸入圖像進行特征提取, 生成特征圖. FPN 主要是減少尺度變換誤差. 之后候選區域生成網絡 (RPN)根據預設框進行候選區域的推薦, 輸出經過篩選的正樣本回歸框和特征圖.
AG-Mask R-CNN 的注意力模塊如圖2, 采用先加入通道域注意力再加入空間域注意力的方式, 并且將CBAM[6]嵌入到ResBlock. 這樣連接的方式不僅保證了通道注意力和空間注意力的有效應用, 同時保留殘差連接, 有效加速模型的收斂, 保證訓練的效率. 注意力模塊詳細架構圖[7]如圖3, 在注意力模塊中, 感知分支通過接收特征提取器的注意圖和特征圖, 輸出每個類的最終概率. VGGNet、ResNet 等圖像分類模型的傳統頂層感知分支結構相同, 如圖3(c). 使用式(1)和式(2)兩種注意力機制中的一種將注意圖應用到特征圖中.gc(Xi)是特征提取器上的特征映射,M(Xi)是一個注意映射,g′c(Xi)是注意感知分支的輸出. 多任務學習的ABN 機理如圖3(a), {C| 1, …,C}是通道的索引.

圖2 注意力模塊示意圖[6]

圖3 注意力模塊詳細架構圖[7]

式(1)是一個簡單的點積之間的關注和特征圖譜在特定頻道的乘積. 相比之下, 式(2)可以在峰值突出特征映射的注意力圖, 而防止注意力圖上特征權值較低的區域退化為零. 可以通過在兩個分支機構使用損失進行端到端的訓練, 訓練損失函數L(Xi)=Latt(Xi)+Lper(Xi), 即注意分支和感知分支損失的簡單總和.
通道域注意力公式如式(3),AvgPool和MaxPool分別表示平均池化和最大池化,F表示輸入的特征圖,W0和W1均表示通道注意力模型的權重矩陣,Mc(F)表示生成最終的通道注意力特征. 在通道注意力模塊中,每個通道的特征代表一個特殊的檢測器, 它會更關注那些對圖像判別有意義的區域, 并幫助網絡學習這些特征.

空間域注意力公式如式(4),f7×7表示在拼接后的特征圖上做7×7 的卷積,Ms(F)表示最終生成的空間注意力特征. 圖4 為通道域注意力與空間域注意力模塊結構圖.

圖4 通道域注意力與空間域注意力

目標檢測在處理多尺度變化問題時存在一些不足之處, 如小物體本身包含的像素信息較少, 在下采樣的過程中容易丟失, 為了處理這種物體大小差異十分明顯的檢測問題, 經典方法是利用圖像金字塔的方式進行多尺度變化增強, 但這樣會帶來極大的計算量. Karras 等人[8]在現有網絡基礎上進行層之間連接的修改, 提出FPN, 在不增加原始模型計算量的情況下提高小目標檢測的性能.
FPN 的各種連接方式如圖5, 圖5(a)的連接方式會把每一個尺度的特征圖都抽取出來構建金字塔網絡,檢測速度慢. 圖5(b)為了保證檢測的速度, 犧牲一定的精度, 只對單一尺度的圖像進行金字塔構建. 圖5(c)通過卷積層特征提取后快速建立特征金字塔結構. 圖5(d)FPN 網絡結合這些構建方式的優點, 兼顧尺度變換與特征學習的速度. 特征金字塔網絡由自底向上和自頂向下兩個操作組成. 自底向上的操作是前向傳播卷積神經網絡的主要部分, 計算一個縮放步長為2 的特征層,得到每個階段的最后一層特征. 自頂向下加入了橫向連接, 對圖像進行上采樣的操作, 得到語義特征更強的圖像. FPN 在對圖像特征構建時的兩個處理過程如圖6.

圖5 FPN 各種連接方法對比圖[3]

圖6 FPN 網絡處理過程圖
生成對抗網絡是一種使用對抗競爭思想的神經網絡, 生成器[9]就是在多輪次(epoch)的訓練中學習真實的文本向量或圖像的分布規律. 網絡將這種規律和一個隨機噪聲進行特征映射, 根據學習到的特征生成一個新的圖像或文本向量. 而判別器主要是判斷輸入的向量是屬于真實的數據集還是生成器生成的噪聲向量.訓練的過程中, 兩個模型都會進行學習, 生成器會生成更真實的噪聲混合在真實的數據中送入判別器. 而競爭的過程中, 判別器鑒別真假的能力也逐步提升. AGMask R-CNN 應用Mask 分支網絡為生成器, 加入一個判別器, 來判斷Mask 是否為真, 進行對抗訓練, 以提高Mask 分支所生成掩碼的精準度.
如圖7 所示, 首先需要一個憑空捏造圖片的生成器, 還有一個判斷青蛙圖片是否為真的判別器. 生成器接受一個1 000 維的隨機生成的數組, 輸出一個64×64×3通道的圖片數據. 判別器輸入64×64×3 的圖片, 輸出數1 或者0, 代表圖片是否是青蛙. 隨后真圖與假圖進行拼接, 打上標簽, 真圖標簽是1, 假圖標簽是0, 送入訓練的網絡. 所有生成對抗網絡的核心內容就是將生成器與判別器進行連接, 而本文用于生成器強化訓練,因此要設置判別器參數不進行修改, 只在訓練時對生成器網絡的參數進行調整.

圖7 生成對抗網絡生成假圖
所用數據集為從DIOR, DOTA, NWPU 數據集中挑選出的飛機、船只、島嶼、海岸線圖片作為自己的原始數據集, 其中船舶7 000 張, 飛機7 000 張, 島嶼4 000 張、海灘3 700 張. 均以256×256 的像素大小作為標準的網絡輸入.
圖8 為用于網絡訓練的數據集樣本的部分圖片, 不包含標注文件, 直接選取圖片用labelme 進行標注. 而且原圖存在像素不一、目標區域所占比例不同等問題,需要進行初始裁剪去除多余的背景區域, 并將含有目標的區域切割成符合網絡輸入的256×256 大小的圖片.

圖8 用于網絡訓練的數據集樣本
遙感圖像背景環境復雜, 加上圖像本身存在的一些無意義噪聲, 斑點白化等瑕疵, 直接進行預測效果勢必很差. 因此需要對已經標注的數據集進行平滑、去噪、濾波等降噪處理. 除此以外, 遙感圖像中的目標與一般目標檢測中的汽車、船的方向和尺度有很大差別, 因此需要對遙感圖像做拉伸, 旋轉, 高斯變換, 亮度提升, 去云等數據增強的操作, 一方面擴大數據集, 另一方面豐富多角度目標信息. 由于輸入數據中有相當一部分數據存在尺度分配不平衡的情況, 需要對圖像上的大小目標進行分析,對小目標進行過采樣和復制等操作, 提高其檢測效率.
考慮到數據增強的工作量和效率問題, 選擇了imageaug 數據增強庫, 為了更符合實際的訓練場景, 只對數據集中的部分數據進行隨機的角度變換和仿射變換, 并隨機組合高斯模糊、均值模糊、中值模糊. 其中隨機的比例維持在45%, 可以確保數據集中超過90%的數據被再處理. 圖9 為數據集中數據增強的結果.

圖9 訓練數據集增強后的圖片
圖10 為AG-Mask R-CNN 訓練流程圖. 模型訓練流程如下.

圖10 AG-Mask R-CNN 模型訓練流程圖
(1)輸入訓練樣本數據集, 對數據集進行預處理與數據增強操作.
(2)將增強后的數據集送入骨干網絡進行訓練, 調整每一層神經元節點對應的權重參數, 以及獲得最終輸出的特征圖.
(3)對步驟(2)中獲得的特征圖做區域推薦操作,將結果傳入區域推薦網絡中進行正負樣本的分類以及邊界框的回歸. 過濾掉一些不符合條件的候選框.
(4) 對步驟(3) 中得到的候選區域執行雙線性插值, 即RoI Align 操作.
(5)對步驟(4)中得到的候選區域做目標分類、邊界框回歸以及遙感目標的掩碼生成, 其中Mask 分支添加生成對抗網絡結構, 在Mask 生成器中添加一層判別器以提升Mask 生成的精確度.
模型參數設置如表1 所示: STEPS_PER_EPOCH表示AG-Mask R-CNN 每一輪迭代的步數. 更大的VALIDATION_STEPS 可以提高驗證統計數據的準確性. BACKBONE 是骨干網體系結構, 支持的值為ResNet50、ResNet101. RPN_ANCHOR_SCALES 表示正方形錨邊的長度. RPN_ANCHOR_RATIOS 表示的是每個單元的錨固比, 值為1 表示方形錨定, 值為0.5表示寬錨定. RPN_NMS_THRESHOLD 是過濾RPN 建議的非最大抑制閾值. RPN_TRAIN_ANCHORS_PER_IMAGE 表示每個圖像有多少錨用于RPN 訓練.DETECTION_MIN_CONFIDENCE 是檢測置信度.LEARNING_RATE 表示學習率.

表1 AG-Mask R-CNN 模型參數表
AG-Mask R-CNN 在訓練過程中會存在一定的波動性, 其結果不會因為使用相同的訓練參數而相同, 因此為了使實驗結果更具備說服力, 以及考慮到整個實驗過程對GPU 算力資源的要求, 實驗方法中會用到遷移學習來訓練深度神經網絡. 實現步驟主要是在訓練遙感檢測數據集之前先加載預訓練的COCO 權重, 以此來加速模型的收斂, 同時也可以一定程度上避免過擬合.
AG-Mask R-CNN 的頭部網絡訓練需要30 個輪次, 訓練初始階段采用隨機初始化, 其優勢在于可以打破一些預訓練的特征, 因此在頭部網絡訓練時, 需要凍結網絡其他的層. 頭部網絡訓練完成后, 需要微調除了頭部網絡之外其他網絡層的參數. 遙感檢測數據集在輸入網絡中進行訓練時, 剛開始需要將學習率設置得盡量小, 以免凍結層的卷積核發生較大的變化. 通過實驗發現, 將學習率設置成0.001 時損失函數曲線收斂更快.
全連接層訓練完成后, 接下來再做微調訓練, 規則是每過10 個輪次, 學習率會減少一半. 通過觀察, 模型會在第35 個輪次過擬合, 而第32 個輪次損失還在下降, 因此訓練輪次被設定為30 輪. AG-Mask R-CNN 在訓練過程中會凍結一部分層及其對應的參數, 防止網絡出現嚴重的過擬合線性.
圖11 為AG-Mask R-CNN 損失函數曲線圖, 圖中共有5 種損失, 分別是rpn_bbox_loss、rpn_class_loss、mrcnn_class_loss、mrcnn_bbox_loss、mrcnn_mask_loss.loss 是總的損失函數曲線, 橫坐標為訓練的輪次. 從圖中可以看出, 損失函數最終是收斂狀態, 說明模型訓練是成功的. 但訓練過程中會出現一些波動的情況, 原因可能在于處理時批次大小設置過小, 但是不影響模型整體收斂.

圖11 AG-Mask R-CNN 網絡損失圖
圖12 為添加了注意力機制后注意力在圖片上的可視化熱力圖, 顏色越深表示該區域在網絡中占的權值更大, 也就意味著對該區域的學習超過其他區域. 從圖中可看出, 注意力模塊對于數據集中目標的關注多于背景, 一定程度上對局部區域的關注可以增加網絡的學習效率, 進而對最后的檢測結果有一定的提升.

圖12 AG-Mask R-CNN 注意力通道可視化圖層
圖13 為AG-Mask R-CNN 網絡中64 個通道的可視化圖, 第1 行從左到右分別是原圖, 第一通道Tensor(張量)轉換的可視化圖以及第二通道Tensor 轉換的可視化圖, 在卷積神經網絡中, 均以張量為計算輸入的標準; 第2 行為最大池化層的可視化圖, 池層保留了樣本的主要特征, 可以減少參數的個數和過擬合; 第3 行是卷積層的可視化. 卷積過程中所有的參數是共享的. 從圖中可以清楚地看出, 卷積核能夠在不同位置保留相同的特征.

圖13 AG-Mask R-CNN 卷積通道可視化圖
圖14 為部分生成對抗網絡的訓練集圖片, 圖15為對Mask 分支網絡作為生成器單獨訓練時, 生成器生成的飛機掩碼, 原始的訓練集就是標注過的Mask 數據. 這里以飛機掩碼生成為例, 共訓練10000 個輪次,直到判別器將生成器生成的掩碼判別為真. 由圖可得,生成對抗網絡結構中空間收斂具有強烈的不穩定性,初始的生成幾乎看不出掩碼的輪廓形狀, 經過大規模的訓練后, 基本形狀可以生成, 但是空間的不平衡很容易導致生成對抗網絡崩潰. 在實驗過程中分別對生成器和判別器的學習參數進行了True 和False 的設置,有兩次訓練過程中, 網絡崩潰, 特征未收斂, 這也有可能是導致后續將Mask 分支加入主干網絡后, 對掩碼的生成準確度并沒有質的提升的原因.

圖14 AG-Mask R-CNN 生成對抗網絡訓練Mask 數據

圖15 AG-Mask R-CNN 生成對抗網絡結構生成掩碼可視化
圖16 為測試集部分圖片的檢測結果, 從檢測結果來看, 船只的檢測效果最好, 錨框大小很符合船只目標,掩碼形狀也基本與目標重合. 對于島嶼和海灘這類目標而言, 由于本身在樣本中占圖片比例很大, 邊緣特征也更易于學習, 檢測效果也相對較好, 以上均為置信度為0.9 以上的檢測框. 而飛機圖片目標的檢測效果并不理想, 檢測框有的時候會覆蓋整張圖片, 并且由于加入了負樣本, 除了有一定的邊角目標漏檢, 還會在不含有目標的負樣本中進行錯誤識別. 圖中的結果顯示掩碼在飛機目標圖片的生成上也不能完全覆蓋目標形狀.推測是目標輪廓過于復雜, 且飛機圖片中目標所占比例很小, 這使得尺度小并且輪廓復雜目標的特征不易被網絡學習, 從而也會影響到后續Mask 的生成. 為了解決飛機目標檢測效果差的問題, 重新標注了一部分飛機數據集(300 張), 這次的方式是對飛機進行矩形框標注, 而不是采用一開始的精確輪廓標注. 在將數據集進行10 倍增強后放入網絡, 測試效果提升不明顯, 雖然在檢測框上精度有所提高, 但Mask 的生成依然存在和之前一樣的問題.

圖16 AG-Mask R-CNN 部分檢測效果圖
圖17 為初始Mask R-CNN 模型在用同樣的數據集訓練后在測試集上的檢測效果圖, 可以直觀地看出初始模型在特定任務上的檢測效果并不理想, 對于一些比較明顯的目標不僅沒有辦法正確檢測, 檢測出來的目標框也并不接近目標大小, 掩碼方面也不能完整地勾畫. 而AG-Mask R-CNN 無論在目標檢測的位置、目標框的大小, 還是在掩碼的精度上都明顯強于Mask R-CNN.

圖17 Mask R-CNN 部分檢測效果圖
表2 是模型在準確率、召回率等方面與Mask RCNN、Faster R-CNN 等基準模型的對比. Precision 代表準確率, Recall 代表召回率,F2 指數為Recall 占比2,mAP 為所有類別AP 的平均值(以VOC mAP 計算方式為準). 通過表2可知, 基準模型YOLOv4 與SSD 在該任務上表現略差, 原因在于兩者都是一階段檢測器,更加注重檢測的性能, 所以在查全率和查準率上表現略微差于二階段檢測器. 傳統的二階段檢測器如Faster R-CNN 在該任務上表現一般, 略差于Mask R-CNN.Mask R-CNN 在使用ResNet101 作為骨干網絡的前提下, 無論在Precision 還是Recall 上都優于使用ResNet50,模型檢測的Precision 與Recall 分別為90.34 與87.88,原因在于ResNet101 的網絡結構更加復雜, 在該類任務上對于特征的提取能力強于ResNet50.

表2 基準模型對比(%)
為了分析注意力模塊與生成對抗網絡對模型產生的影響, 將這兩種機制分別加入到基準模型并進行了對比實驗. 表3 的實驗結果表明, 在骨干網絡相同的情況下, 模型在單獨加入注意力模塊與單獨加入生成對抗網絡時, 檢測精度均存在一定的提升. 前者的加入給模型帶來了1%左右的mAP 提升, 后者的加入給模型帶來了小幅度的AP 提升. 最后一組是AG-Mask R-CNN實驗結果, 由于使用ResNet101 作為骨干網絡, 并同時嵌入注意力機制與生成對抗網絡, 因此在同類任務上表現最優, 達到了92.22%的檢測精度.

表3 AG-Mask R-CNN 與基準模型加不同模塊對比(%)
通過對比實驗可見, 本模型在加入生成對抗網絡結構后, 效果并沒有非常顯著的提升, 可能原因是, 生成對抗網絡結構想生成一個判別器判斷為真的目標掩碼圖片時, 可能需要上千輪次訓練, 而本文因設備限制只訓練了100 輪, 也沒有在空間上進行收斂, 還有就是在RoI 階段的錨框定位也會影響后續mask 的生成, 因此mask 分支的改進對模型精度的提高效果并不明顯,這也是模型今后可以改進的方向.
基于注意力及生成對抗網絡的遙感影像目標檢測模型AG-Mask R-CNN, 在目標檢測框架Mask R-CNN的基礎上引入注意力機制和生成對抗網絡. 提出用于檢測小目標的注意力機制方案, 將注意力模塊添加到骨干網絡ResNet101 中, 給整個算法模型帶來一部分性能上的提升. 采用特征金字塔來對各個尺寸大小的目標進行特征提取, 在模型中加入了生成對抗網絡結構預訓練Mask 分支. 實驗結果表明, 生成對抗網絡的加入對模型檢測精度的提升帶來正面的提升. 在經過數據增強的遙感圖像數據集上的對比實驗表明, AGMask R-CNN 模型對航空遙感目標影像的檢測識別具有更好的表現.