孫雨鑫,蘇麗,2,陳禹升,苑守正,孟浩,2
(1. 哈爾濱工程大學 智能科學與工程學院, 黑龍江 哈爾濱 150001; 2. 哈爾濱工程大學 船舶裝備智能化技術與應用教育部重點實驗室, 黑龍江 哈爾濱 150001)
近年來,芯片的生產能力以及計算機技術不斷提升,包括計算機視覺在內的多個人工智能領域蓬勃發展,人類已步入數字化、智能化時代。隨著船舶數量、載運量不斷增加,船舶交通日益稠密,人們對高性能的船舶智能監控設備的需求越來越高。船舶實例分割作為智能監控的重要基礎,直接影響了監控的質量,因此尋求穩定且高效的船舶實例分割算法顯得尤為重要。
然而目前多數船舶檢測和分割算法大都基于合成孔徑雷達(synthetic aperture radar, SAR)圖像[1-3]以及紅外圖像[4],較少有文獻研究可見光船舶圖像的實例分割任務。此外,紅外圖像存在背景和目標的對比度較低、信噪比較低以及細節特征不全等問題。而SAR 圖像含有大量伽瑪分布的斑點噪聲,且存在圖像對比度較低、目標細微邊緣不易區分[5]等問題。若將SAR 圖像、紅外圖像應用到船舶實例分割任務,往往還需要圖像降噪等預處理操作,難以直接應用。而談到可見光圖像,其在信噪比、圖像對比度以及圖像細節特征上均優于紅外和SAR 圖像,它具有豐富的顏色、紋理信息和較高的分辨率,便于檢查和觀測。除此之外,可見光圖像易于獲取,使得基于可見光圖像的船舶實例分割算法擁有廣泛的應用空間。同時相較于SAR 和紅外圖像的遠景實例分割任務,可見光的實例分割可以有效應對近距離大目標,從而彌補對海上環境感知精度靈敏度較低的缺陷[6]。基于可見光圖像的實例分割,在通用物體分割領域已經涌現了許多優秀的算法[7-19]并且在多分類的復雜任務中取得了卓越的性能。兩階段算法掩碼分割網絡[7]在通用分割領域性能優越,常被應用到諸如汽車、鳥類實例分割等其他特定領域。兩階段算法的優勢是其采用先檢測后分割的范式來處理圖像中的目標,具有一定的魯棒性,不易被圖像中過多的背景信息所干擾。而近期許多以速度見長的單階段實例分割算法也不斷涌現,其中性能和速度名列前茅的SOLOv2算法[20]具有巨大的應用價值。然而,在使用自建的船舶實例分割數據集對SOLOv2 算法進行訓練及測試時發現,對于普通海天背景下SOLOv2 算法具有可觀的性能,但在船舶密集、背景復雜的場景下,由于背景干擾較多,SOLOv2 難以對船舶目標進行精確有效地分割。
本文根據上述問題,采用空間注意力機制來建模分類特征中的相互關系,并將其融合到分割特征中輔助船舶圖像的分割,有效提高了復雜海上背景下的船舶實例分割性能。
給定一個任意的圖像輸入,實例分割算法需要判斷圖片中是否存在實例,若存在則算法返回所有實例的分割掩碼。SOLOv2 算法把實例分割問題轉化為語義類別預測問題和實例掩碼預測問題。主要思路是將圖像劃分為S×S個網格,從而以網格為樣本點來預測不同實例的類別和掩碼。原理如圖1 所示,輸入圖像中的2 個船舶實例的中心落在2 個不同的網格中,則對應的2 個網格分別負責這2 個實例的掩碼和類別預測,掩碼和語義類別的預測分別由2 個獨立的分支網絡進行預測。通過采用特征金字塔網絡(feature pyramid networks,FPN)[21]還可以將不同大小的實例有效地進行區分從而避免同一位置出現密集實例難以分割的情況。

圖1 SOLOv2 算法的原理Fig. 1 Theory of SOLOv2 algorithm
如圖1 的分類分支主要負責預測所有網格不同實例類別的概率(包含背景類的預測),對于C個類別的數據集,如果我們將輸入的圖片劃分為S×S(S=5)個網格,該預測網絡的輸出是S×S×C維度的張量,通道維度包含了不同類別實例的概率。在這種設計下每個網格都有一個語義類別的預測來表示該網格位置存在不同類別的可能性。
針對之前劃分的S×S個網格,掩碼分支負責預測每個網格對應S2個實例的掩碼,從而產生H×W×S2維度的張量來表示全圖每個網格實例的掩碼預測。H和W分別表示長和寬。如圖1 所示,分類分支的類別預測和分割分支的掩碼預測是一一對應的,若設網格坐標為(i,j),則其對應分割分支中第k=i×S+j個通道的輸出。由于實例的掩碼預測和不同位置的網格是相互關聯的,我們需要不同的通道激活不同位置的實例從而產生具有位置敏感性的特征。然而在一般產生預測掩碼的全卷積網絡(fully convolutional networks,FCN)[22]中,由于卷積網絡自身存在的空間不變性,產生的特征并不滿足該網絡的要求。因此,SOLOv2 算法引入了坐標卷積[23]運算,在圖像輸入時產生2 個輸入圖像等大小的張量,并將其數據歸一化到[-1,1]用來表示x和y坐標,最后將該張量并到圖像輸入的通道維,也就是說對于H×W×D維度的輸入圖像(H和W分別表示長和寬,D為通道數目),經過坐標卷積運算后轉化為H×W×(D+2)維度輸入到后面的卷積網絡中。
為了更直觀地分析SOLOv2 算法在船舶實例分割任務上存在的問題,本文采用ResNet101 作為特征提取網絡的SOLOv2 算法,在構建的船舶實例分割數據集上進行36 個周期迭代的訓練以獲得效果最好的SOLOv2 模型,并在1 044 張圖片的測試集上進行圖像的可視化分析。通過可視化分析圖2 發現SOLOv2 對于單一背景的圖像具有良好的分割性能,而對船舶實例密集、船舶實例特征相似和背景復雜的圖像的分割效果較差,出現了誤分割等一系列問題。

圖2 SOLOv2 船舶實例分割可視化Fig. 2 SOLOv2 for ship instance segmentation visualization graph
從SOLOv2 的實例掩碼預測的網絡結構可以看出,SOLOv2 算法針對不同實例的掩碼是由一組對位置敏感的卷積核與融合的分割特征進行卷積運算得出的,因此實例分割算法的性能受到兩方面影響:一方面卷積核需要對全圖像的特征進行逐一地分類判斷,在沒有區域篩選限制的情況下,背景中的干擾極易影響到卷積核對實例的區分;另一方面融合的分割特征不能有效地對不同位置的實例產生不同程度的響應從而影響卷積核對不同實例的區分。
由于SOLOv2 算法主要從卷積核優化的角度出發,利用坐標卷積增加位置信息來提升算法對實例位置的敏感性,而對于分割特征還缺少一定的措施來保證其對實例的區分性。因此本文考慮對融合的分割特征進行改進,尋求一定的方法來使分割特征中的實例信息更加明顯,讓學習到的動態卷積核能更有效地區分不同的實例。通過建模網格間實例的相對信息,構建基于注意力機制的依靠位置分割目標(attention based segmenting objects by locations, SOLOA)算法。
針對于復雜海天背景下SOLOv2 算法出現的誤分割問題,本文通過分析SOLOv2 的原理,構建對于復雜場景更穩定的基于注意力機制的依靠位置分割目標船舶實例分割算法。
本文在SOLOv2 原有的網絡結構上進行改進,設計了將分類特征引入分割特征的注意力(Attention)模塊,充分的利用分類網絡的信息,建模網格間實例的相對信息,構建SOLOA 算法。
2.1.1 分類網絡
如圖3 所示,分類網絡依托于特征金字塔網絡的多尺度輸入,根據特征金字塔網絡輸出尺度的不同選取合適的網格大小S值,后續將圖像進行雙線性插值到S×S大小。后面網絡包括語義分類網絡和卷積核預測網絡,2 個網絡都采用4 個卷積層作為特征提取。同時2 個網絡的權重在不同特征層級上是共享的。卷積核預測網絡預測D維度的卷積核參數與S2個網格對應,對于1×1卷積來說D等于卷積輸入通道數,而對于3×3卷積,D則等于輸入通道數目的9 倍。語義分類網絡經過特征提取后通過最后的1×1卷積來產生C個通道的類別預測輸出。

圖3 SOLOA 框架Fig. 3 SOLOA framework
2.1.2 注意力模塊
與SOLOv2 算法不同的是,分析發現通過簡單的疊加融合不同層的分割特征再進行上采樣后的融合特征中具有許多干擾信息,使其在復雜的場景下無法進行有效分割。而分類網絡將輸入的特征插值到S×S的網格特征時也包含大量實例的信息,可以用其輔助分割產生更具有對比度、干擾較少的融合特征。另一方面,輸入含有船舶的圖像,分類特征中包含船舶實例的網格必然會獲得較高的激活響應,這樣根據分類特征的激活情況就可以獲得全圖中實例的分布,從而利用分類網絡中的實例分布信息來輔助SOLOv2 算法的分割。
為了達到這一目的,引入了Attention 模塊來建模分類特征間的關系并疊加到分割特征中,來增強分割特征中存在實例信息而減弱背景的干擾,獲取全圖視角的實例分布信息。具體的Attention模塊結構如圖4 所示,以S×S大小的分類特征(Categories Feature)為輸入,通過1×1卷積產生Q、K、V等3 個向量,并通過Q和K向量相乘獲得特征間相互關系矩陣進行歸一化(softmax)操作運算,最后與V向量相乘獲取注意力矩陣并疊加到輸入的網格特征中獲得最終的注意力特征。

圖4 Attention 模塊Fig. 4 Attention module
2.1.3 分割網絡
分割網絡用來產生對實例敏感掩碼預測。首先為了得到能包含多尺度特征的融合特征圖,網絡利用特征金字塔的{P2,P3,P4,P5,P6}層的特征圖合并疊加本文引入的空間注意力模塊的輸出來產生多尺度的實例敏感特征圖,然后根據不同尺度的輸入重復引入3×3卷積、組歸一化[24]、線性修正和2 倍雙線性插值上采樣,使得4 層網絡都變為原圖大小的1/4,然后進行疊加并通過1×1卷積網絡調節通道融合特征信息,最終利用分類網絡學習到的動態卷積核來產生最終的預測,細節如圖3所示,實例敏感特征圖的產生對于產生精確的分割掩碼意義重大。
采用常用的多任務損失函數來進行訓練:
式中:分類損失Lcate采用的是Focal Loss[25],掩碼預測損失Lmask的計算式為
式中:i=k/S,j=kS,Npos代表正樣本的數目,p*和m*分別代表分類和掩碼預測任務的真實標記值, ?表示指示函數。
在比較不同的Focal Loss、BCE Loss 以及Dice Loss 等常用的分割預測損失函數后,選取Dice Loss 作為算法的最終損失:
D為Dice 系數,詳細公式為
式中px,y和qx,y表示坐標為(x,y)的像素點在預測的掩碼p和真實掩碼q中的值。
推理階段同SOLOv2 一致。給定一張輸入圖像,先將其導入特征提取和特征金字塔網絡以及其后的分類和分割網絡,產生每張圖多達3 600 多個的掩碼及類別預測,最后通過矩陣非極大值抑制算法篩選出預測效果最好的實例掩碼進行輸出。
本次實驗的硬件平臺主要采用CPU 為Xeon E5-2620,內置一塊NVIDIA GeForce GTX 1080Ti GPU。軟件平臺選擇以Linux Ubuntu 16.04、Pytorch 1.5、CUDA 10.1 在商湯發布的MMDetection 1.0 框架上進行訓練,保證模型訓練的速度和穩定性。
本文主要以各類典型的目標為主要對象,其中包括軍艦、漁船、貨船、快艇、帆船等多類典型的目標。由于數據集中具體實例情況直接影響模型的訓練結果,因此,收集圖片時充分考慮了實例的角度、位置、距離、數目以及環境等不同因素。主要的數據來源包括3 部分:通過實船采集的海上圖片、抽取通用標準數據集(VOC[26]、COCO[27])中含有船舶的圖片、網絡上下載的船舶圖片。數據集圖片總數為5 225 張,其中4 181 張作為訓練集,1 044張作為測試集。數據集圖片示例如圖5 所示。

圖5 船舶實例分割數據集Fig. 5 Ship instance segmentation dataset
模型訓練使用ImageNet[28]數據集預訓練的ResNet 模型[29]進行初始化權重。初期設置了相對較大的學習率即0.01 實現模型訓練的初期損失函數的快速下降,然而在實驗過程中出現了損失函數收斂較慢、振蕩和爆炸等問題。經過多次測試,最后選取較小的學習率即0.001 25 進行訓練,并采用warmup 的形式保證訓練初期的穩定性,最終采用70 000 次迭代,并為了保證模型平穩收斂在訓練的第60 000 次迭代時將學習率縮小到0.000 13 左右。
模型的訓練損失情況如圖6 所示,在訓練的初期損失下降較快,由于引入了注意力模塊在10 000到20 000 次迭代時出現了一定程度的緩慢下降,但在30 000 次迭代后損失逐漸收斂,訓練達到60 000次迭代時由于調整學習率,以較小的步長進行學習,整體損失基本收斂。

圖6 SOLOA 模型訓練損失值Fig. 6 Loss of the SOLOA model training
主要從改進前后的可視化分割效果和融合特征的可視化圖2 個方面來說明SOLOA 算法的效果。
采用ResNet-101 為特征提取網絡,超參數使用0.001 25 的學習率和0.9 的動量來訓練SOLOv2 及其SOLOA,最終的分割結果對比如圖7 所示。其中圖7(a)為SOLOv2 算法的分割結果圖,圖7(b)為改進后的SOLOA 分割效果圖,可見改進后實例的掩碼質量得到有效的提高,同時一定程度降低了對背景的誤分割。

圖7 實例分割結果可視化對比Fig. 7 Visual comparison of instance segmentation results
為了更清晰地體現改進的作用機制,選取含有64 通道融合特征的模型進行訓練,并和同樣訓練參數的SOLOv2 算法進行對比,其效果如圖8所示。圖8(a)為網絡輸入的原圖,圖8(b)為SOLOv2 算法融合特征圖的輸出,通過觀察可以發現許多通道同時激活了圖像中的船舶和背景,如圖中標記的2 個通道,背景和目標之間的對比度較低,在后期的1×1卷積中引入額外的干擾信息,導致分割效果不好。在引入了空間注意力模塊后的SOLOA 算法的特征圖可視化如圖8(c),可見通道抑制了背景信息的干擾,同時背景和實例的對比度更高,且大多數通道都僅僅激活了圖像中的船舶信息,減少背景的干擾使得最終1×1卷積核的掩碼的預測輸出效果更好。

圖8 特征圖可視化Fig. 8 Feature map visualization
考慮到注意力模塊引入方式的多樣性,本文對于相加和相乘的引入方式進行了測試。實驗選擇標準COCO 數據集的平均精度(average precision,AP)指標來評估算法的性能,AP 指標考慮了預測掩碼和真實掩碼的交并比(intersection over union,IoU)、準確率、召回率等指標,綜合的反映了算法的整體性能。通過計算獲得圖像中每個預測掩碼和真實掩碼的IoU,通常評估時會選擇一個合適的IoU 閾值來判斷預測結果是否正確。劃分好正確預測和錯誤預測后,對照數據集中所有標注的實例預測就可以計算平均精度。
式中:PTP表示真實標記為正,預測也為正的情況;PFP表示真實標記為負,但預測為正的情況;PFN表示真實標記為正,但預測為負的情況;PTN表示真實標記為負,但預測為負的情況。具體主要包括指標PAP、PAP50、PAP75來驗證所有類別實例分割預測的綜合情況和PAPS、PAPM、PAPL等3 個指標來表示圖像中的小目標、中目標以及大目標分割的性能。PAP50和PAP75分別表示以IoU 閾值是0.5 和0.75來評價預測樣本的精度值。PAP則為綜合指標,表示使用IoU 閾值(范圍為0.5~0.95,步長為0.05)來評價預測樣本的精度值,即PAP50到PAP95范圍內的平均精度。最后的消融實驗結果如表1 所示。

表1 注意力引入方式的對比Table 1 Comparison of the ways of using attention %
通過觀察數據可以發現,相比未改進前無注意力的算法,采用相乘的形式將實例信息引入分割特征雖然對中、大目標有一定的提升效果,但會極大影響對小目標的分割效果。而采用相加的形式引入注意力特征并不會降低小目標的分割準確率同時會極大地提升中、大目標的分割效果。
為了全面的評估改進后算法的性能,本文采用ResNet-50 和ResNet-101 這2 種特征提取的骨干網絡,分別進行訓練SOLOA 和一些其他主流的實例分割算法,包括YOLACT[8]、SOLOv2[20]和Polarmask[30]其實例分割結果如表2 所示。
相比SOLOv2,由于采用分類特征來輔助分割顯著地提高了網絡的表示能力,改進后的SOLOA算法在輕量級的ResNet-50 網絡中有顯著的提高效果,相比改進前的網絡平均精度提升3.6%。而采用更復雜的ResNet-101-FPN 主干網絡并采用3 倍迭代訓練的模型性能最好,AP 可以達到49.8%,相比SOLOv2 算法AP 共增長了1.2%。并且改進后的SOLOA 其小、中、大目標的分割效果都有了一定的提升。同時,相比YOLACT 和Polarmask,SOLOA 算法性能也是最優的。此外,為了驗證改進后SOLOv2 算法的運行速度,本小節采用單張1080Ti 顯卡對模型進行速度測試和模型復雜度(參數量)比較,實驗結果如表3 和表4 所示。增加了額外的融合機制并沒有損失過多的速度性能,也沒有增加過多的模型參數量,總體來看改進后的算法滿足船舶實例分割的實時性需求。

表4 改進前后模型參數量對比Table 4 Comparison of the number of model parameters before and after improvement
本文針對SOLOv2 算法在船舶實例分割領域存在相似實例和背景誤分割的問題,提出了一種利用分類特征中的實例分布信息進行注意力建模來融合分割特征的方法,構建了SOLOA 船舶實例分割算法。相比于SOLOv2 算法,SOLOA 算法對密集實例能有效分割,具有較好的位置敏感性和抗背景干擾能力,對不同尺度的實例尤其是中大尺度的實例均有明顯的精度提升,在保證算法運行速度的前提下全面提升了分割精度,可以滿足船舶實例分割的需求。