張立國, 趙嘉士, 金 梅, 曾 欣, 沈明浩
(燕山大學 電氣工程學院,河北 秦皇島 066004)
船舶檢測廣泛應用于港口管理、航行安全、海洋監(jiān)測等諸多領(lǐng)域,實現(xiàn)對其精確定位和識別,有助于改善航行安全,對監(jiān)視海運交通、維護國家海洋權(quán)益和海洋安全具有重要的現(xiàn)實意義和戰(zhàn)略意義[1]。
根據(jù)圖像生成源,當前船舶檢測方法大致分為3類[2]:基于遙感圖像的檢測、基于雷達圖像的檢測和基于視覺圖像的檢測。雖然基于雷達圖像和衛(wèi)星遙感圖像的船舶檢測在近幾年得到快速發(fā)展,但圖像尺寸大導致的處理流程長,使其在實際應用中,實時性與準確性存在較大問題[3]。而基于視覺圖像中船舶分辨率高,細節(jié)、顏色特征豐富,獲取成本低,對于許多特殊應用,如安全導航,近岸船舶管理等需要較高精度和速度的檢測更加適合[4],因此基于視覺圖像的船舶檢測受到相關(guān)學者越來越多的研究和關(guān)注。
目前,基于深度學習的目標檢測算法根據(jù)是否提出候選區(qū)域(region proposals)大致分為兩種。一種是以Fast R-CNN[5]和Faster R-CNN[6]為代表的two-stage類算法,它先使用RPN(region proposal network)來生成候選區(qū)域,然后對候選區(qū)域進行回歸和分類;另一種是以YOLO(you only look once)系列[7,8]和SSD(single shot multibox detector)[9]為代表的one-stage算法,它直接在目標所在網(wǎng)格中進行回歸和分類。通常one-stage算法在速度上占優(yōu),two-stage算法在精度上占優(yōu),但隨著網(wǎng)絡(luò)模型的不斷更新,one-stage算法逐漸實現(xiàn)了高精度和快速度。根據(jù)是否定義先驗框,將檢測算法分為基于錨框和無錨框目標檢測算法,基于錨框的目標檢測方法需要根據(jù)數(shù)據(jù)集樣本分辨率以及矩形框的分布情況預先設(shè)定不同尺度的先驗框,預測網(wǎng)絡(luò)依賴于先驗框?qū)Y(jié)果進行預測輸出,雖然提高了模型的檢測精度,但也帶來很多弊端,如:錨框的設(shè)計依賴于數(shù)據(jù)集,超參數(shù)難優(yōu)化,正負樣本不均衡,這些導致網(wǎng)絡(luò)計算復雜,缺乏通用泛化能力。而無錨框的目標檢測算法放棄了錨框的預設(shè)過程,直接對目標框進行回歸預測,使訓練和預測過程變得更加有效,如文獻[10]預測目標框的左上角和右下角的坐標,文獻[11]預測目標框的中心點以及框的長度和寬度,文獻[12]直接限制邊界框的回歸范圍即預測4個邊界框的距離。當今,許多學者已經(jīng)將多種目標檢測算法應用于船舶檢測。Zhu X K等[13]提出了TPH-YOLOv5模型,通過增加具有Transformer結(jié)構(gòu)的檢測頭和CBAM(convolutional block attention module)注意力機制,VisDrone2021數(shù)據(jù)集上有效提高了小目標的平均檢測精度; Peng H等[14]為了應對岸上船舶排列密集問題,在YOLOX(you only look once x)的基礎(chǔ)上提出了關(guān)注角點的損失函數(shù)ICEIOU,用來解決檢測密集目標時漏檢問題,同時使用空洞卷積和注意力機制處理目標細節(jié)丟失問題,在HIRSD數(shù)據(jù)集上精度達到了91.5%??傮w來說,多數(shù)的檢測方法都通過復雜的網(wǎng)絡(luò)模型提取更加豐富的船舶特征,但在實際應用中,如建筑、山體和天氣等環(huán)境的干擾,船舶尺度的大小多變,都使現(xiàn)有方法存在一定的誤檢和漏檢[15],并且無法做到實時對船舶進行檢測。
為有效地降低復雜背景干擾和船舶尺度變化對檢測性能帶來的影響,提出了一種基于YOLOX的無錨框檢測算法。在Seaships數(shù)據(jù)集上的結(jié)果表明,改進后的網(wǎng)絡(luò)在有效降低漏檢率的前提下,還能對船舶目標進行快速檢測,基本實現(xiàn)了速度與精度的平衡。同時與其他算法進行對比,也驗證了改進網(wǎng)絡(luò)的魯棒性和有效性[16]。
作為YOLO系列高性能的模型,YOLOX的無錨機制消除了手動設(shè)計錨框?qū)δP头夯芰Φ挠绊?減少了網(wǎng)絡(luò)的參數(shù)量和計算量,使網(wǎng)絡(luò)訓練過程更加簡潔[17]。其網(wǎng)絡(luò)結(jié)構(gòu)可分為3個模塊:特征提取主干(BackBone)、特征融合頸部(Neck)和檢測頭部(YoloHead)。對于輸入圖像,使用Mixup和Mosaic進行數(shù)據(jù)增強處理,極大的豐富了圖片背景。主干網(wǎng)絡(luò)中首先使用Focus結(jié)構(gòu)在輸入圖片中間斷的采樣生成4個獨立的特征層,然后將這4個特征層拼接使輸入通道擴大4倍,并通過卷積提取不同的特征。Focus結(jié)構(gòu)避免了下采樣信息的丟失。特征提取部分由具有CSP結(jié)構(gòu)的殘差網(wǎng)絡(luò)組成,殘差網(wǎng)絡(luò)能夠通過增加深度來提高準確率,且內(nèi)部的捷徑分支可以緩解增加深度帶來的梯度消失。同時使用更加平滑的S形線性單元(SiLU)作為激活函數(shù)[18]。SPP(spatial pyramid pooling)使用4個不同尺寸池化層對上層(卷積層)獲得的特征圖進行采樣,將分別得到的結(jié)果進行合并得到固定長度的輸出。特征融合頸部采用路徑聚合網(wǎng)絡(luò)(PANet)和特征金字塔(FPN)結(jié)合而成的PAFPN結(jié)構(gòu)。在PAFPN結(jié)構(gòu)中,從主干網(wǎng)絡(luò)中獲得的3個有效特征層被繼續(xù)用于特征提取,先進行上采樣操作,再進行下采樣,最后實現(xiàn)將不同層次的特征圖高效融合。在檢測頭部分,YOLOX提出了一種Decouple-Head(解耦頭),它將分類和檢測任務(wù)在兩個分支中并行計算,從而提高了整體檢測性能。同時,在計算前使用1×1卷進行降維操作,避免計算量的增加。最后,該模型設(shè)計了簡單最優(yōu)傳輸分配(SimOTA)方法來為不同大小目標的動態(tài)分配正負樣本,解決正負樣本不平衡問題。
針對當前船舶檢測存在的問題,構(gòu)建了一種改進YOLOX-m的檢測算法。首先將主干網(wǎng)絡(luò)中的CSP殘差層替換成CoT模塊,抑制環(huán)境干擾,然后把頸部3×3卷積替換成深度可分離卷積,減少參數(shù)量,最后加入SimAM注意力,提高檢測精度。整體改進框架如圖1所示。
2.2.1 CoT模塊
近幾年,Transformer在計算機視覺中的應用越來越廣泛,傳統(tǒng)的Self-Attention雖然可以很好地觸發(fā)不同空間位置的特征交互,但大多還是通過(query,keys,value)三元組的交互獲得全文注意力矩陣,并未考慮相鄰鍵值之間的豐富信息,而CoTNet[19](contextual transformer network)將上下文信息挖掘和Self-Attention的學習集成在一起,通過充分利用相鄰鍵之間的上下文信息來促進自注意力學習,并增強輸出聚合特征圖的表達能力。
CoT模塊結(jié)構(gòu)如圖2所示,H、W、C分別為輸入高、寬和通道數(shù)。
圖2 CoT模塊結(jié)構(gòu)圖
首先輸入圖像經(jīng)過k×k大小的卷積核對輸入進行上下文編碼,獲取相鄰圖像的局部信息,然后將局部信息與原信息進行拼接(Concat)處理,經(jīng)過2個連續(xù)的1×1卷積學習動態(tài)多頭注意力矩陣,再進行Softmax操作,得到注意力權(quán)重矩陣A,此時A中每個空間位置都考慮到了全局特征,權(quán)重A再與Value Map進行Self-Attention計算,獲得圖像全局信息,以實現(xiàn)輸入的動態(tài)上下文表示,最后,將所得的局部信息與全局信息進行相加融合,得到了對突出點著重關(guān)注輸出特征層Y[20],
Y=Conv(keys+A○*Value)
(1)
式中:Conv包含卷積、批量歸一化和激活函數(shù);keys表示經(jīng)過編碼后的上下文鍵;○*表示聚合。
2.2.2 SimAM注意力
在神經(jīng)科學理論中,具有更多信息的神經(jīng)元與其相鄰神經(jīng)元相比表現(xiàn)更加顯著,并會對相鄰神經(jīng)元產(chǎn)生空間抑制現(xiàn)象,在處理視覺相關(guān)任務(wù)時這些帶有更關(guān)鍵信息神經(jīng)元應該賦予更高的權(quán)重。
文獻[21]中SimAM注意力就是根據(jù)上述理論提出的,其優(yōu)勢在于結(jié)構(gòu)簡單且無需引入額外參數(shù),即可直接為特征圖推導出三維權(quán)值,縮短了注意力權(quán)值的計算時間,從而確保融入YOLOX模型后能夠保持網(wǎng)絡(luò)輕量化的同時,更好地發(fā)揮出注意力機制的高效性和靈活性,提高模型的干擾抑制能力。SimAM注意力機制結(jié)構(gòu)如圖3所示。
圖3 SimAM注意力
如式(2)~式(4)所示,SimAM通過定義線性可分性的能量函數(shù)對每個網(wǎng)絡(luò)中的每個神經(jīng)元進行評估。
(2)
(3)
(4)
最后,根據(jù)各神經(jīng)元的重要性,對輸出特征圖進行加權(quán),如公式(5)所示。
(5)
式中:X為輸入特征;E為跨通道和空間維度分組數(shù);Sigmod函數(shù)限制E中可能出現(xiàn)的過大值。
SimAM注意力能夠全面高效地評估提取特征的權(quán)重,對具有更多有效信息的神經(jīng)元輸出進行增強,并有效地抑制其他無關(guān)特征的干擾,使網(wǎng)絡(luò)具有更強的特征表達能力,在抑制背景干擾的同時也提高了模型定位目標的能力。
2.2.3 損失函數(shù)CIOU
IOU(intersection over union),常常用來衡量目標檢測任務(wù)中,真實檢測框A和預測檢測框B的交并比。圖4為預測框與真實框相交情況圖。
圖4 預測框與真實框相交情況圖
IOU可以直觀地反映預測結(jié)果與實際結(jié)果之間的差距,數(shù)值越大,相關(guān)度越高,檢測性能越好,計算公式如下:
(6)
但IOU也存在2個缺點:如圖4中(a)所示,當預測框B和真實框A不相交時,無法準確反映兩個框的距離,同時IOU=0,梯度函數(shù)為0,網(wǎng)絡(luò)無法優(yōu)化。如圖4(b),圖4(c)所示,當2個框尺度相同且IOU也相同時,IOU無法準確反映2個矩形框的相交情況。
為了解決上述問題,使用CIOU(complete IOU)作為網(wǎng)絡(luò)模型的損失函數(shù)[22]。CIOU不僅考慮了重疊情況,也考慮了目標框與預測框中心點的距離以及兩個矩形框形狀的相似性,解決了IOU回歸速度慢,定位精度不高的問題。CIOU的計算公式如下:
(7)
式中:LCIOU表示CIOU Loss;ρ2(b,bgt)代表了預測框和真實框的中心點的歐氏距離;c代表最小外接邊界框?qū)蔷€長度;α為權(quán)重參數(shù);v為衡量長寬比一致性參數(shù)。
2.2.4 深度可分離卷積
深度可分離卷積可以拆分成深度卷積(depthwise conv)和逐點卷積(pointwise conv)。深度卷積負責對輸入的圖像(input)進行濾波(filters)操作,逐點卷積負責整合濾波后被拆分的通道,生成最終的特征圖(maps)。相比常規(guī)卷積,深度可分離卷積實現(xiàn)了通道和空間的獨立,在保持模型精度的同時大幅降低參數(shù)量。其卷積示意圖如圖5所示。
圖5 深度卷積和逐點卷積示意圖
兩種卷積參數(shù)量的對比公式為
(8)
式中:參數(shù)Dk均為輸入特征圖大小;DF為卷積核大小;M、N分別為輸入和輸出通道數(shù)。
根據(jù)結(jié)果可以看出,使用深度可分離卷積替換3×3卷積后,參數(shù)量縮減為原來的1/9。
實驗選用基于視覺圖像的船舶檢測數(shù)據(jù)集SeaShips。該數(shù)據(jù)集由156個監(jiān)控攝像機從不同距離和角度拍攝,共7 000張分辨率為1 920×1 080 pixels的船舶圖像,其中包含了6類不同尺寸、不同天氣下的船舶,分別為集裝箱船、散裝貨船、漁船、雜貨船、客船和礦砂船,也包含碼頭、港口、小島、陸地等干擾目標。在訓練過程中,按4:1劃分數(shù)據(jù)集為訓練集和驗證集。
數(shù)據(jù)集中6類船舶示例圖如圖6所示。數(shù)據(jù)集中環(huán)境干擾如圖7所示。
圖6 數(shù)據(jù)集中6類船舶示例圖
圖7 數(shù)據(jù)集中環(huán)境干擾
實驗使用的操作系統(tǒng)為Window10,GPU為NVIDIA GeForce RTX 3060 12G,深度學習框架為PyTorch。訓練中使用隨機梯度下降算法(Adam)訓練100輪次,初始學習率為0.001,Batch_Size為8。訓練時每批圖像都會按比例縮放到416×416大小,同時使用Mixup和Mosaic進行數(shù)據(jù)增強。為了綜合評估網(wǎng)絡(luò)性能,使用均值平均精度(mean average precision,mAP)和平均精度(average precision,AP)和每秒傳輸幀數(shù)(frames per second,FPS)作為評價網(wǎng)絡(luò)性能的指標。其中AP和mAP計算公式如式(9)~式(12)所示。
(9)
(10)
(11)
(12)
式中:TP(True Positive)表示正樣本;FP(False Positive)表示負樣本;FN(False Negative)表示預測為負的正樣本。
為了驗證改進方法是否提升船舶檢測的性能,在Seaships數(shù)據(jù)集上做了消融實驗,見表1。表1中“+”表示在上一個的改進的基礎(chǔ)上新增添的方法。
表1 消融實驗
由表1可知,在YOLOX-m中使用CoT模塊替換帶有CSP的殘差層后,mAP提升了5.5%;使用CIOU替換原損失函數(shù)后,mAP提升了0.82%;加入SimAM注意力后,mAP提升了1.82%;使用深度可分離卷積替換特征金字塔的普通卷積后,參數(shù)量較原網(wǎng)絡(luò)減少了0.54 MB。當所有改進的方法同時加入原始YOLOX-m模型后,整體的mAP值提升了6.73%,FPS提升了4.1。原YOLOX-m網(wǎng)絡(luò)與改進后YOLOX-m網(wǎng)絡(luò)效果對比如圖8所示。
圖8 原YOLOX-m網(wǎng)絡(luò)和改進后YOLOX-m檢測結(jié)果
從圖8中可以看到,相比于原網(wǎng)絡(luò),改進后的網(wǎng)絡(luò)整體檢測效果很好,不僅減少了漏檢誤檢現(xiàn)象,還提高了檢測精度。從第1、第2種環(huán)境干擾中可以看出,改進后模型對不同尺度目標都具有比較好的識別效果,抗噪性能也比較好;第3、第4種環(huán)境干擾中展示了改進后的算法可以靈活的應對黑夜、霧天、雨天等場景。從第5種環(huán)境干擾中可以看出,對于山體、港口、房屋等多種復雜場景,改進后的模型也能精確的識別各種船舶。
在相同條件下,將改進后模型與主流檢測模型進行比較,在Seaships數(shù)據(jù)集上的比對結(jié)果如表2所示。由表2中數(shù)據(jù)可知,主流算法中CenterNet檢測速度最快,但其精度最低,YOLOv4算法精度和速度比較平衡,但還有較大的提高空間,而本文改進后的算法,在精度和速度上都超越了大多數(shù)算法,并且基本實現(xiàn)了精度與速度的平衡。
針對當前船舶檢測中出現(xiàn)的船舶尺度變化大、環(huán)境干擾嚴重等問題,提出了一種改進YOLOX的無錨框檢測算法,首先使用CoT模塊替換主干網(wǎng)絡(luò)中的殘差結(jié)構(gòu),增強特征提取骨干網(wǎng)絡(luò)的表達能力,然后在特征融合頸部使用深度可分離卷積,縮減參數(shù)量,提升檢測速度,在頸部和頭部之間嵌入SimAM注意力機制,賦予攜帶豐富信息的神經(jīng)元的更多的權(quán)重,最后在頭部使用CIOU替換原始損失函數(shù),提升網(wǎng)絡(luò)收斂速度。改進后的網(wǎng)絡(luò)在SeaShips數(shù)據(jù)集上獲得了較好的效果,在減少參數(shù)量的同時,精度提高了6.73%,mAP達到了96.63%,檢測速度達到了48.6幀/s,實現(xiàn)了速度與精度的平衡。