梁 月 翔, 馮 輝*,2, 徐 海 祥,2
( 1.武漢理工大學 交通學院, 湖北 武漢 430070;2.武漢理工大學 高性能船舶技術教育部重點實驗室, 湖北 武漢 430070 )
由于船舶業(yè)的成本隨著社會對船舶的安全性能、環(huán)保性能和舒適性能等方面的追求不斷升高,提高船舶智能化水平成為船舶業(yè)的大勢所趨.
智能船舶的智能感知系統(tǒng)可以幫助智能船舶獲取自身運動狀態(tài)信息、周邊障礙物信息以及海洋環(huán)境等方面的信息和數據.基于視覺的感知是智能船舶感知系統(tǒng)中的核心,其中,利用可見光圖像實現周邊障礙物目標的檢測與識別是智能感知系統(tǒng)的重要組成部分.此外,基于可見光圖像的目標檢測與識別,具有分辨率高、速度快、傳遞的信息豐富、成本低等特點,能夠實時評估船舶航線附近的運行狀態(tài),提早發(fā)現在航行過程中的安全隱患.
基于可見光圖像的船舶目標檢測方法分為傳統(tǒng)模式識別方法和深度學習方法.傳統(tǒng)模式識別方法包括基于統(tǒng)計學方法、基于頻域變換方法等.Xie等[1]利用統(tǒng)計學方法,采用層次聚類直方圖構建異常檢測模型,然后識別候選區(qū)域并從候選區(qū)域中刪除非船舶類目標,最后使用結構連續(xù)性來消除錯誤警報.但該方法僅適用于全色可見光圖像的海區(qū),不適用于港區(qū).Yu等[2]提出了一種基于統(tǒng)計分析和形狀識別的模型.通過統(tǒng)計分析船舶在海域的分布情況,將受到影響的船舶目標與海、陸、島或巨浪區(qū)分開來,然后利用縱橫比、圓度等形狀特征來檢測船舶.在變換方法中,對輸入圖像進行變換,如Radon變換、小波變換或Hough變換,以提取特征.Yu等[3]提出了利用小波分解得到圖像的高頻和低頻特征,然后通過歸一化和加法將特征組合起來,得到顯著特征圖.葉聰穎等[4]把輸入的RGB圖像轉換到HSI空間上,通過對不同特征圖的規(guī)格化和線性融合獲得綜合的顯著圖.該方法應用于多種海上目標圖像均取得較好效果.Leng等[5]提出了一種基于復雜信號峰度(CSK)的單通道可見光圖像艦船檢測方法,該方法主要由區(qū)域提取和目標識別兩部分組成.它們首先對潛在的船舶位置進行區(qū)域建議,然后再進一步檢測與識別這些船舶的具體位置.
近年來,基于深度神經網絡的水面船舶檢測方法得到了越來越多的重視.Cheng等[6]提出了一種基于全卷積網絡(FCN)的邊緣檢測網絡.Kang等[7]使用Faster R-CNN[8]對船舶進行檢測.Jiao等[9]提出了一種基于Faster R-CNN的多尺度神經網絡,用于多尺度、多場景可見光船舶檢測.Lin等[10]提出了一種新的網絡架構,利用SE-block的通道注意力特性部署在Faster R-CNN 模型上.這個網絡抑制了冗余子特征,進一步提高了可見光圖像中的船舶檢測率.Yang等[11]提出了用旋轉密集特征金字塔網絡檢測來自不同場景的船舶,包括海洋和海港.胡炎等[12]分析了針對SAR圖像的CNN網絡結構設計的基本需求.通過分辨率歸一化制作混合數據的訓練樣本集,在Faster R-CNN框架下設計并構建了一個僅3層卷積神經網絡用于特征學習,獲得了較好的檢測結果.趙春暉等[13]分析了Faster R-CNN 中區(qū)域建議網絡的實現方法,并在區(qū)域建議網絡的包圍盒尺寸設置中引入了K-Means聚類算法,顯著地縮短了算法的識別時間.吳金亮等[14]提出了基于Mask R-CNN框架的艦船目標檢測識別方法,通過候選框與像素分割曲線相結合的思路,較好地解決了緊密排列艦船目標的檢測問題.
以上這些方法對于檢測水面正常目標效果顯著,但是對于具有識別區(qū)域分辨率低、圖像模糊、信噪比低等特點的水面小目標檢測,其感受野受到預設錨框限制,在復雜背景下容易產生大量虛警.小目標的界定在目標檢測領域中沒有確定的標準,本文將目標所在區(qū)域的像素面積小于整個圖像1/10的都稱作小目標.為了解決水面小目標檢測難題,本文以Faster R-CNN為基礎,提出自注意力特征融合水面小目標檢測算法,引入自注意力模塊、結構化特征金字塔融合結構和大梯度定位損失函數.
利用深度神經網絡進行目標識別與檢測時,通常采用自注意力機制,其目的是讓網絡模型中給予關注重點,而不是讓網絡關注全部信息.注意力機制分為軟注意力和強注意力兩種.軟注意力關注的是空間或者通道,是一種可微的并且是確定性的注意力,而強注意力關注的是像素點且不可微,所以相關領域的研究都采用軟注意力方法.利用相關的特征學習權重分布,將學習到的權重施加在原有特征上進一步提取相關知識.
最經典的注意力方法有Non-local[15]和SE-block[16].前者是注意力的加權作用在空間尺度上,通過自注意力機制來建模查詢位置與所有位置的遠程依賴關系.后者是注意力的加權作用在通道尺度上,即將全局上下文的不同通道賦予新標定的權重,強化網絡對某些通道的依賴性,其目標是通過明確地建模卷積特性通道之間的相互依賴關系提高網絡表示的質量.
Non-local的缺點也較為明顯,其建模像素之間的關系是通過自注意力機制,但其對于每一個位置的學習并不受位置依賴,造成了大量的計算浪費.SE-block雖然是輕量化方法,但是其沒有充分利用上下文信息,即缺少空間注意力.
本文在這兩個方法的基礎上設計一種全新的自注意力模塊,該模塊同時具備空間注意力和通道注意力,而且與Non-local方法相比更為輕量化,如圖1所示.其中,N代表批樣本的數量,C代表輸入圖片的通道數,H代表輸入圖片的高,W代表輸入圖片的寬,r代表瓶頸部分的縮放因子,每個計算矩陣都由4個維度組成,M代表寬高兩個變量合成一個維度,維度對應的數字代表維度的大?。撟宰⒁饬δK分為兩個部分,第1部分使用上下文建模進行相似度計算并使用Softmax 函數進行歸一化.第2部分通過一個轉換結構捕獲通道間的依賴.整個自注意力模塊的公式表示為
(1)
圖1 自注意力模塊結構
式中:R代表ReLU函數,L代表層正則化函數LN,G代表全局平均池化函數GAP,zi代表主干網絡的輸出,xi代表位置索引,xj代表存在的所有位置,Wk代表上下文建模的1×1卷積結構,W1代表轉換結構的第1個1×1卷積結構,W2代表轉換結構的第2個1×1卷積結構,全局平均池化公式可以表示為
(2)
其中S代表上下文建模(context)的輸出.
通過自注意力機制,使用一層上下文建模模塊建模遠程依賴關系.對于每個查詢位置,非局部網絡首先計算查詢位置與所有位置之間的兩兩關系,形成一個注意圖,然后將所有位置的特征用注意圖定義的權重進行加權和累加,最終將聚合的特性添加到每個查詢位置的特性中,以形成輸出.這個自注意力模塊可以廣泛應用于視覺識別任務中,并且靈活地允許它插入到網絡結構中的任意位置.
在目標檢測與識別中,多尺度目標檢測始終是一個難題.Liu等[17]在SSD中指出神經網絡模型中高層和低層特征的優(yōu)缺點:低層特征是分辨率較大的特征圖,雖然細節(jié)信息多,但是全局語義信息不足,直接在低層特征上進行分類定位不是很準確.高層特征是低層特征經過神經網絡多次降采樣后的結果,感受野大,全局語義信息全面,但是細節(jié)信息損失嚴重.
針對這種情況,Lin等[18]提出了一種自頂向下的跨層連接來緩解不同特征層之間的矛盾.具體是將高層特征圖上采樣后與低層特征進行融合,從而使低層特征同時具備全局的語義信息,這對于小目標檢測是一個提升.但是缺點也很明顯,因為低層特征傳遞累積了過多的梯度,從而使網絡對于高層特征的學習不足.
學界對于特征金字塔的改進有兩種,一種是神經網絡搜索(NAS),另一種是人工設計最優(yōu)結構(如BiFPN),如圖2所示.圖中,P3~P7表示輸入的第3~7級特征.NAS的結果符合人工設計網絡常識,且對于目標檢測效果提升明顯,但是這種網絡不利于工業(yè)部署[19].BiFPN[20]則是在NAS基礎上設計的特征金字塔結構,去掉了僅有一個輸入的節(jié)點,在同層之間增加了橫向連接,易于部署,并且可以多次堆疊,但是對于NAS的跨層連接的優(yōu)點并沒有采用.
圖2 特征融合結構比較
本文結合NAS和BiFPN的優(yōu)點,設計了一種新的結構化特征金字塔融合模塊,其模塊的特征金字塔是結構化設計的,易于部署,并且對于輸出層和中間層增加了跨層連接.進行融合操作的節(jié)點采用了兩種融合方式:一種是簡單的加權融合,主要用于多節(jié)點融合;另一種是使用自注意力機制的融合方式,主要用于雙節(jié)點融合.具體方法就是將主干網絡輸入進行最大池化操作并經過一個激活函數后與主干網絡加權聚合,從而進行有效的特征融合.
傳統(tǒng)的目標檢測算法R-CNN[21]通過多任務損失函數來解決定位和分類問題,具體組成如下所示:
Lp,u,tu,v=Lcls(p,u)+λ[u≥1]Lloc(tu,v)
(3)
式中:Lcls和Lloc分別對應于分類和定位的損失函數,Lcls中的預測和目標分別用p和u表示,tu是與類u對應的回歸結果,v為回歸目標,λ用于調整多任務學習下的損失權重.這種多任務學習的問題在于如果分類的效果很好,即分類的損失很小,即使定位效果不理想,總體損失也會變小,一定程度上忽略了定位這一回歸問題的重要性.
通常把定位損失小于1.0(設定值)的樣本稱為正常樣本,大于等于1.0的樣本稱為異常樣本.最直接的提升定位重要性的做法就是增大λ值,但是這樣帶來的問題是將異常樣本的梯度放大,導致模型學到了過多的異常樣本信息,降低了模型的泛化性能.
本文采用一種新的損失函數即大梯度定位損失函數將正常樣本的梯度增大,從而使多任務學習的分類和定位都得到一個理想的結果.
Lloc中的smoothL1損失函數定義為
(4)
梯度表達式如下:
(5)
在smoothL1損失函數基礎上重新設計較大梯度:
(6)
新損失函數使用α來控制正常樣本的梯度,但不影響異常樣本的梯度.圖3曲線分別表示smoothL1損失函數的梯度和在不同α取值控制下的大梯度定位損失函數的梯度.從圖3可以看出,在正常樣本的區(qū)間內新損失函數產生稍微大的梯度.圖4則顯示了大梯度定位損失函數提升了正常樣本的損失比例,從而使模型更加容易學習正常樣本的信息,增強了模型泛化性能.
對x積分可以得到大梯度定位損失函數:
(7)
其中參數α、β、γ之間的關系如下:
(8)
圖3、4的橫軸表示回歸錯誤E,圖3的縱軸表示梯度G,圖4的縱軸表示梯度積分后的損失值L.
圖3 不同損失函數梯度比較
圖4 不同損失函數損失值比較
大梯度定位損失函數是在傳統(tǒng)定位損失函數smoothL1的基礎上改進而來,設置拐點將正常樣本與異常樣本分隔開,并設置最大值為1.0的異常樣本產生的較大梯度.大梯度定位損失函數的關鍵思想是從正常樣本的梯度重新平衡所涉及的樣本和任務,從而在分類、整體定位和精確定位方面實現更加均衡的訓練.
目前沒有針對水面船舶目標檢測的大型數據集,研究團隊依據國內船舶分類標準建立了大型船舶數據庫.本文從中選擇41個常見類別的水面船舶圖片,其中訓練圖片13 547張,測試圖片3 411張,樣本框總數為25 437,樣本框與圖片的比例為3∶2,使用標準的VOC 2007格式數據集,圖5為本文實驗數據集的比例關系.
圖5 仿真實驗船舶數據集比例關系
為了公平比較,所有的實驗都在PyTorch1.2和mmdet上實現.本文實驗中使用的骨干網絡是公開且預訓練好的.實驗均為36個周期,初始學習率為0.002 5,如果沒有特殊說明,則在24、33個周期之后分別降到原來的1/10.實驗主要硬件配置為Intel(R) Core(TM)i5-9300 CPU@2.40 GHz處理器、16 GB內存和GeForce GTX 1660 Ti顯卡.實驗操作系統(tǒng)為Windows 10.
具體參數設置如表1所示.在數據預處理階段,對進行訓練的圖片進行數據增強操作,將已有的數據集圖片通過多種方式隨機生成,用來提高目標檢測模型的魯棒性.本文具體的數據增強方
表1 數據增強方法
法包括平移、旋轉、剪切、尺度變換以及改變圖片的飽和度和曝光率.
消融實驗對于深度學習研究至關重要,理解系統(tǒng)中的因果關系是產生可靠知識的最直接方式.消融具體的操作方法就是刪除一些模塊(或用隨機的模塊進行替換),觀察實驗的結果來分析具體模塊對模型的影響.
自注意力模塊位置不同,會導致模型精度和模型大小不同,本文針對以下幾個指標進行性能評價.(1)AP:平均精確率,即多類預測時每一類的查準率取平均值.(2)AP50:檢測器用于檢測的交并比大于0.5,AP75同理.(3)參數量:模型所有帶參數的層的權重參數總量.(4)浮點數:模型的運算次數,即時間復雜度.
Non-local注意力模塊插入在Resnet的殘差塊之后,而SE-block集成在殘差塊內的最后一個1×1卷積之后.在表2中,本文研究了使用自注意力模塊的兩種情況,兩種位置對于基準算法的指標都有提升,其中位置在Resnet的殘差塊之后的性能最佳,因此本文將該位置設為默認值.
表2 自注意力模塊位置設置
在網絡同一階段的每一層通常有很多相同的重復層,所以可以選取每一階段的最后一層卷積層作為輸出,由于conv1占用了大量內存并且conv2高級語義特征少,一般不使用它們,本文將每個階段的最后輸出(conv3,conv4,conv5)表示為{C3,C4,C5}.表3顯示了在不同階段集成自注意力模塊的結果.所有階段都受益于自注意力模塊中的全局上下文建模.插入到C4、C5比插入到C3獲得更好的性能,這表明更好的語義特征可以從全局上下文建模中獲益更多.隨著浮點數的略微增加,將自注意力模塊插入到所有層(C3+C4+C5)產生的性能甚至比只插入一個階段還要高.因此,本文采用將模塊插入到所有階段的設置.
表3 自注意力模塊階段設置
瓶頸層通過使用1×1的網絡結構很方便改變維度,靈活設計網絡,并且減小模型參數量和浮點數.瓶頸轉換器中每個組件的影響如表4所示.NL瓶頸層表示使用一個1×1 conv作為轉換器的簡化版Non-local,與基準算法相比,具有更多參數.r16表示瓶頸層的縮放因子為1/16.盡管r16和r16+ReLU的參數比NL瓶頸層少很多,但兩個層的優(yōu)化難度更大,性能也比單個層差.因此,層正則化(LN)被用來簡化優(yōu)化,其性能類似于NL瓶頸層,但參數量比前者大幅減少.
表4 瓶頸層設計
瓶頸層設計旨在減少參數中的冗余,并考慮性能和參數之間的權衡.隨著參數量的增加,縮放因子從1/32改變到1/4,性能不斷提高,最終選取縮放因子為1/16,表明本文瓶頸層在性能和參數之間取得了很好的平衡.值得注意的是,即使縮放因子選取1/32,網絡性能仍然比基準算法高很多.參見表5.
表5 瓶頸層縮放因子設計
結構化特征金字塔融合方式不同導致的模型評價指標結果見表6.首先說明在融合階段,加權融合比池化更有效,最大池化比平均池化效果好一點.所以采用加權融合和最大池化相結合的特征金字塔融合方式在不增加參數量的前提下,可以有效提升目標檢測器的性能.
將自注意力模塊、結構化特征金字塔融合結構和大梯度定位損失函數組合使用到基準算法中,可以觀察到,無論是哪種組合,對于基準算法都有較明顯的提升.其中,大梯度L1損失函數對于算法性能提升最明顯,結構化特征金字塔融合結構比自注意力模塊對于檢測器性能的提升大,3種方法單獨使用對于基準檢測器參數量的增加相近.消融實驗結果表明,將3種方法組合使用檢測器的性能提升最高,對于交并比為50的AP值提升4.96%,在犧牲一定訓練時間的情況下可以取得相對較好的檢測器性能.
因此,自注意力模塊是增強基礎網絡的信息提取能力,結構化特征金字塔融合結構是增強基礎網絡的信息融合能力,大梯度定位損失函數是平衡基礎網絡檢測性能.使用者根據不同的需求(速度、精度)進行組合,即本文的3個模塊是即插即用的靈活模塊,結果見表7.
表7 3種改進方法組合實驗
基于卷積神經網絡的深度學習模型對于目前學術研究來說仍然是黑箱,即無法通過完整的理論來解釋訓練和測試的過程,但是通過一些可視化手段可以更方便地監(jiān)督訓練和測試整個過程.本章首先通過對訓練過程中的損失函數日志進行分析,觀察新的損失函數對于模型收斂性的影響.其次,通過類激活特征圖來觀察模型對于目標特征的響應情況.最后,通過對小目標的檢測結果分析結構化特征金字塔對于小目標檢測的影響.
從圖6可以觀察到,采用大梯度定位損失函數的新算法總的損失函數曲線在基準算法之下,說明新的算法收斂性好,泛化性優(yōu)于基準算法.圖7、8分別表示兩種算法的分類和定位損失函數曲線,可以觀察到由于本文對定位損失函數的改進,正常樣本的梯度增大,使得模型更容易學到正常樣本的信息,最終的結果是定位損失函數變小,
圖6 基準算法與新算法總損失函數比較
圖7 基準算法分類和定位損失函數比較
圖8 新算法分類和定位損失函數比較
從而使得總的損失函數也變?。筇荻榷ㄎ粨p失函數可以讓目標檢測模型強化對于目標定位的重視程度,最終增強模型的泛化性.
為了對自注意力模塊達到的效果進行可視化,特征圖上每個位置在某種模式時會在其感受野中被激活,將學習到的模式進行線性組合構成類別激活特征圖,然后直接使用上采樣,將類別激活特征圖還原到與原圖一樣大小,通過疊加可以知道哪些區(qū)域與最后分類結果息息相關.通過觀察圖9的目標檢測熱力圖,可以發(fā)現自注意力模塊與基準算法相比,感受野中被高度激活的像素點集中到了物體最具特征的區(qū)域,說明改進后的網絡學習到了更加有效的語義信息,圖片中的像素建立了有效的長距離空間和通道依賴.
圖9 基準算法和自注意力模塊熱力圖
傳統(tǒng)的目標檢測算法對于小目標檢測仍然有不足之處,因此很難提取少量像素范圍內的小目標信息.盡管目前的主流算法都采用了特征金字塔進行多尺度級別的檢測,可以緩解小目標檢測的問題,但是多種不同尺度的相互耦合仍然損害小目標檢測的性能.為了進一步驗證本文算法的有效性,通過對一組采集自真實海上視頻中的目標檢測與識別目標進行了驗證,如圖10所示.
(a) 基準算法
(b) 新算法
檢測結果中數字表示置信度,可以觀察到基準算法(圖10(a))在檢測小目標時會把背景物體當作前景來檢測,并且識別出的目標置信度不高.新算法(圖10(b))可以精準識別小目標,并且不會對背景產生誤檢,同時識別的結果也具有較高的置信度.
將3個模塊組合到基準算法中后,最終的查準率為85.31%,召回率為46.72%,平均精度為70.13%,檢測單張圖片的耗時為61.85 ms.
本文針對智能船舶的水面小目標檢測與識別問題,通過分析現有自注意力機制、結構化特征金字塔融合模塊和大梯度定位損失函數的固有問題,結合多種算法的優(yōu)點,重新設計并引入全新的自注意力模塊、結構化特征金字塔融合結構和大梯度定位損失函數,提出了基于自注意力特征融合的目標檢測算法.該算法在合理范圍內增加模型的參數量,對算法的水面小目標檢測性能帶來了顯著的改進,有助于獲取船舶周圍目標分布信息并最終應用于船舶智能航行、海上監(jiān)視和交通監(jiān)管等領域.