丁秀清,周斌*,胡波
(1 中南民族大學 a.計算機科學學院;b.國家民委信息物理融合智能計算重點實驗室, 武漢 430074;2 武漢東信同邦信息技術有限公司, 武漢 430074)
傳統水上收費站通過人眼觀察控制船閘的開關,不僅消耗人力而且容易觀察失誤引起安全事故.近幾年興起的智慧船閘系統引入人工智能技術,將攝像機拍攝的船舶圖片自動轉化為鳥瞰圖,智能控制船閘開關,并且自動識別船閘內外船舶的動向.為了完成上述任務,系統需要能夠精準檢測航道內船舶的旋轉角度.
為了得到船舶的旋轉角度,需要先對船舶進行目標檢測確定其位置,而傳統的目標檢測算法如HOG+SVM[1]、Haar Cascades[2]等存在著精度有限、實時性差、不適用于大規模數據的缺點.近幾年研究主流的方法是使用基于深度學習的旋轉框目標檢測方法來檢測物體的旋轉角度,如RR-CNN[3]、R3Det[4],常應用到遙感圖片和航拍圖片,這些模型經過大規模的數據訓練能夠直接輸出目標的旋轉角度,但是對數據集的要求較高,這些數據集的共同點是圖片以較大的俯瞰角度來拍攝,而水上收費站的攝像頭高度并不滿足該條件.如果直接使用旋轉框檢測模型對船舶圖片進行訓練,會導致較大的角度誤差.
對于實例分割問題,主流的方法分為三大類:二階段實例分割、一階段實例分割、Query-based 實例分割. 二階段實例分割(如Mask R-CNN[5]、HTC[6]、Cascade Mask R-CNN[7])通常分為兩個階段:第一階段使用一個目標檢測器來檢測圖像中的對象,第二階段使用一個分割器來對每個檢測到的對象進行像素級的分割,該方法的優點是可以準確地定位和分割多個對象,并且可以在復雜的場景中實現高精度的分割,但是對于小尺寸物體的分割效果不太理想,因為可能會被模型誤認為是噪聲或背景.
一階段實例分割(如YOLACT[8]、BlendMask[9]、CondInst[10])不需要先進行目標檢測,而是直接在單一的網絡中同時進行檢測和分割任務.該方法通常采用卷積神經網絡(CNN)來實現,可以在速度和精度之間取得平衡,并且實時性好,在實際應用中具有很高的實用性,但是由于該方法需要在單一網絡中進行檢測和分割任務,因此會出現目標漏檢和分割不完整的現象.該方法與二階段方法相比通常需要更多的訓練數據和更高的計算資源,以達到與之相當的準確度.此外,對于復雜場景中的多個對象分割任務,該方法可能會遇到困難.
Query-based 實例分割(如SOLOv2[11])允許用戶指定一個查詢對象,然后自動檢測和分割該對象的所有實例.在該技術中,用戶可以通過在圖像中選擇一個查詢對象來指定要檢測的對象,然后系統會使用預訓練模型來檢測和分割所有與查詢對象相似的實例.這種方法可以用于許多應用,如自動化圖像分析和智能監控系統[12],主要缺點是對于一些復雜場景和多樣性對象的識別和分割效果不夠理想.由于該方法是基于預先定義的查詢對象進行分割的,因此對于未知的、多樣性的對象,可能會出現錯誤的分割結果.
針對以上問題,本文提出一種基于實例分割的船舶旋轉角度檢測模型,先對船舶進行實例分割提取輪廓坐標點,再使用坐標點計算船舶旋轉角度.模型使用實時性更強的one-stage 實例分割方法進行分割并提取坐標,在此基礎上引入注意力機制以彌補該方法在分割精度上的不足.在得到坐標后,模型使用輪廓法計算船舶旋轉角度.兩種方法結合以得到更為精確的船舶旋轉角度.
Yolo v8s-seg模型結構如圖1所示.

圖1 Yolo v8s-seg模型結構Fig. 1 Yolo v8s-seg model structure
Yolo v8s-seg 模型在Yolov8 模型的基礎上添加了一個mask 分支用于實例分割,與目標檢測同步進行.
本模型命名為Yolo v8s-seg-boat,結構如圖2 所示,主要改進方法為:在Yolo v8s-seg 模型的主干網絡中添加了CA 注意力機制;在C2f 結構中添加了CA 注意力機制;將IOU 函數替換為Wise-IOU. Yolo v8s-seg-boat 模型主要分為二個階段:第一階段使用改進后的網絡對船舶圖片進行實例分割處理,得到船舶的輪廓點坐標;第二階段對每組坐標點使用旋轉角度計算模塊得到船舶的旋轉角度并顯示在圖片上.

圖2 Yolo v8s-seg-boat模型結構Fig. 2 Yolo v8s-seg-boat model structure
P1、P2、P3、P4 和P5 表示網絡不同級別的不同特征圖,通過一系列卷積層和下采樣操作獲得.P1是指在骨干網絡的第一階段之后獲得的特征圖.P2、P3、P4 和P5 是在隨后的階段中獲得的,并且具有逐漸降低的分辨率.P3+C2f和P4+C2f表示這些特征圖的C2f 結構中添加了注意力機制,P5+CA+C2f 表示該特征圖在其C2f 結構中添加了注意力機制的同時,在SPPF層前添加了注意力機制CA.
1.1.1 主干網絡添加注意力機制CA
Yolo v8s-seg-boat 網絡結構借鑒了基于改進的yolact模型[13]結構,使用的分割方法是典型的一階段實例分割方法,實時性高,但是在分割精度方面有所欠缺.為了得到更高的船舶分割精度,在Yolo v8sseg 網絡的基礎上添加了CA (Coordinate Attention)注意力機制[14],其backbone結構如圖3所示.在特征融合層SPPF 前添加的注意力機制CA,它能根據輸入的特征圖中的重要區域和上下文信息,對特征進行加權,讓SPPF 層能夠接收到更加強化的特征表示,從而提升模型特征的表達能力.將CA放在SPPF層之前能夠進一步增加特征的感受野,使模型能夠更好地捕捉到不同尺度上的關鍵信息;另一方面,CA 還考慮了特征空間的位置信息,特征在SPPF 層進行融合時,模型能夠更加準確地對局部信息和全局信息進行加權,從而提高特征的融合效果.

圖3 Yolo v8s-seg-boat的backbone網絡結構Fig. 3 Backbone network structure of Yolo v8s-seg-boat
Yolo v8s-seg-boat 的backbone 網絡結構主要用于提取船舶圖片的特征,用于head 結構的檢測和分割,矩形大小代表各個層的參數量,而加入的注意力機制CA 參數量較大,能夠加強backbone 網絡的特征提取能力.
1.1.2 C2f添加注意力機制CA
模型的C2f 模塊參考了Yolo v5 中C3 結構和Yolo v7[15]中ELAN[16]設計思想,結構如圖4 所示,讓Yolo v8s-seg-boat 網絡可以在保證輕量化的同時獲得更加豐富的梯度流信息.該模塊首先用1 × 1 卷積核對特征進行降維,通過split 模塊將特征圖分為主干分支和支干分支,再通過瓶頸結構Bottleneck在有效減少參數量的情況下提取特征,最后通過Concat模塊進行特征拼接,在此基礎上添加了CA注意力機制到Concat 模塊后,為特征分配不同的權重,增強模型對重要特征的關注,同時通過對特征圖的加權,改善了多尺度特征融合效果.

圖4 改進后的C2f結構Fig. 4 Improved C2f structure
C2f 結構中加入的注意力機制CA 同樣也起到了加強特征提取的作用,相比于Yolov5中的C3結構檢測效果更好.
1.1.3 CIOU損失函數優化
Yolo v8s-seg 使用CIoU 損失函數[17]來計算分割損失,該函數考慮重疊面積、中心點距離、長寬比三個方面,公式如下:
其中:IoU 為交并比,是目標檢測中常見的指標,主要用于反映預測檢測框與真實檢測框的檢測效果;v為中心點距離,表示預測框的中心點與實際框中心點之間的距離;α為長寬比,用于衡量預測框與實際框長度和寬度的比例誤差.CIoU 計算過程中涉及到反三角函數,計算量較大,尤其是在處理大量數據時,會影響模型的訓練速度,此外在處理低質量訓練數據時,長寬比的幾何度量會加劇對低質量數據的懲罰從而使模型的泛化性能下降,導致出現精度不高的情況.綜合以上原因,Yolo v8s-seg-boat 使用Wise-IoU[18](簡稱為WIoU)代替CIoU 來計算分割損失,公式如下:
其中Wg,Hg是最小預測框的寬度與高度,(xgt,ygt)是目標框中心點坐標.對于低質量錨框,1 - IoU 的值將被顯著放大;對于高質量錨框,會顯著降低RWIoU.WIoU 取消了長寬比損失項,降低了對數據集中出現的低質量錨框的懲罰,另一方面降低了計算量,加快了模型的訓練速度.對于船舶數據集而言,遮擋和噪聲現象普遍存在,如果模型使用CIoU 作為損失函數,由于其對低質量錨框的懲罰,會使模型訓練時難以收斂.
圖片在經過Yolo v8s-seg-boat網絡進行分割后,對其輪廓點坐標使用邊緣法計算旋轉角度,算法步驟如下:
(1)通過計算所有輪廓點的坐標的平均值得到船舶的重心坐標,如圖5所示;

圖5 opencv計算重心Fig.5 Opencv calculates the center of gravity
(2)對于每一個輪廓點,計算該點和船舶重心的連線與x軸的夾角,如圖6所示;

圖6 計算輪廓點與重心的夾角Fig. 6 Calculate the angle between the contour point and the center of gravity
(3)將所有點的夾角根據不同位置進行加權平均處理,得到船舶的平均夾角;
(4)平均夾角減去90 度得到船舶的旋轉角度,如圖7所示.

圖7 旋轉角度顯示Fig.7 Rotation angle display
計算船舶的旋轉角度時,需要將平均夾角減去90 度,是因為船舶的輪廓點坐標與x軸的夾角是相對于水平方向的,而圖片船舶的朝向是垂直于水平方向的,由于船舶生成的輪廓點總數并不完全相同,先將權值根據輪廓點數量平均化,再賦予4 個頂點(離矩形框4 個頂點最近的4 個輪廓點)2 倍于其他點的權值,這是因為頂點對旋轉坐標的影響更大.
收集的船舶的數據集來自于江蘇某個水上收費站多個高清攝像頭拍攝的航道內船舶圖片,這些船舶圖片用于該收費站中智慧船閘系統的人工智能訓練.根據航道內船舶的數量、大小和種類采集了4000 張俯視角度圖片,圖片大小均為640 × 640,將圖片按照8∶1∶1 的比例分為訓練集、驗證集和測試集.相比于航拍和遙感等一系列較高俯視角度的圖片數據集,本數據集有著俯視角度較低、船舶位置密集等特點,對模型的檢測精度有更高的要求.
使用以下指標來衡量Yolo v8s-seg-boat 網絡的分割效果:
(1)精確度Precision 表示預測為正樣本的數據樣本中,真正的正樣本所占的比例,公式如下:
其中:TP 表示模型預測為正樣本實際也為正樣本的數據樣本,FP 表示模型預測為正樣本實際卻為負樣本的數據樣本.
(2)召回率Recall 表示實際為正樣本的數據樣本中,真正的正樣本所占的比例,公式如下:
其中:FN表示實際為正樣本預測為負樣本的數據樣本;一般來說,數據的召回率越高,它的精確度越低.
(3)AP 與mAP. mAP 是目標檢測任務中最常用的評估指標之一,可以用來比較不同模型的性能差異;AP 表示的是模型在一個類別上的優劣程度,它的實際值是圖中曲線與橫坐標軸、縱坐標軸圍成的面積,取值范圍在0~1之間.
使用Pytorch 深度學習框架搭建實驗環境,通過RTX 3090 24GB顯卡進行GPU加速,具體環境如表1所示.

表1 實驗環境配置單Tab. 1 Experimental environment configuration sheet
2.3.1 船舶數據集IoU實驗結果分析
在船舶數據集訓練過程中,輸入的圖像大小為640 × 640,batch_size、縮放因子、最大迭代輪次、初始學習率分別設為2,0.35,100,0.01. 使用SGD[19]算法優化器調控模型收斂,動量momentum 設置為0.937,用于控制模型參數的更新速度和方向.動態焦點損失權重dfl 設置為1.5,目的是優化動態焦點損失對總損失函數的貢獻程度.實驗結果與其他IoU函數進行比較,如表2.

表2 IOU效果對比Tab. 2 IOU effect comparison
對比這3種IoU函數的實驗效果可以看出,搭載了WIoU 損失函數的分割模型在船舶數據集上的效果最好.與Yolo v8s-seg 模型自帶的CIoU 函數相比較,EIoU[20]在mAP 上提升了0.3%,這說明EIoU 在CIoU 基礎上拆分長寬比懲罰項分為長損失和寬損失的操作在船舶數據集上有助于提高分割精度;而WIoU 相比于EIoU 通過考慮預測框和真實框之間的區域來對IoU進行加權,mAP進一步提高了0.1%.前50輪訓練不同IoU 函數下模型的分割損失變化如圖8所示.

圖8 訓練過程中不同IoU對模型的分割損失變化Fig.8 Segmentation loss variation of the model with different IOUs during the training process
從圖8 中可以看出搭載WIoU 損失函數的模型在訓練過程中收斂速度最快,分割損失值最小,這說明了WIoU在CIoU的基礎上簡化的長損失和寬損失在一定程度上加快了模型的收斂,另一方面減少了低質量框對模型訓練的影響,使得分割損失變小.
2.3.2 船舶數據集注意力機制的實驗結果分析
在Yolo v8s-seg 的主干網絡上添加各種注意力機制進行模型訓練,效果對比如表3.

表3 不同注意力機制效果對比Tab. 3 Comparison of the effects of different attention mechanisms
其中FLOPS 是浮點運算數(Floating Point Operations),表示在訓練過程中所執行的浮點運算的數量, Parameters 是模型的參數量.在mAP50-95指標上,CA 效果最好,相較于原模型提高了1%,同時分割精準度提高了2.2%;相比于CBAM,CA 提取重要空間信息時主要是依據像素之間的關聯性,能夠更好地捕捉到局部細節和空間結構,而CBAM 主要專注于對通道關系進行建模,無法完全捕捉像素之間的空間依賴性;另一方面,CA 不僅能夠捕獲跨通道的信息,還能捕獲方向感知和位置感知的信息,在復雜場景中更加適合,如本數據集中,船舶分布密集且存在覆蓋的情形.因此CA 在指標Pre 和mAP50-95上最優.
最后12 輪訓練中不同注意力機制下mAP 的變化如圖9所示.

圖9 最后12輪訓練中不同注意力機制對模型mAP的影響Fig. 9 Effect of different attentional mechanisms on model mAP in the last 12 rounds of training
從圖9 中可以看出注意力機制CA 在訓練過程中mAP 的上升速度明顯超過其他注意力機制,這說明它對模型梯度下降過程起到了促進作用,幫助模型更好地進行擬合.
為了更好地理解CA對本模型的影響,引入熱力圖來直觀感受特征在加入注意力機制前后的變化,打印未加入CA的模型Yolo v8s-seg第9層特征熱力圖和加入CA后模型Yolo v8s-seg + CA 第10層(加入注意力機制CA的層數)特征熱力圖作比較,如圖10所示.

圖10 無注意力機制(左)與注意力機制CA(右)的熱力圖對比Fig. 10 Heat map comparison between no attention mechanism (left)and attention mechanism CA (right)
模型的熱力圖主要用于顯示圖像中各個區域的目標物體的位置和置信度,顏色越深的區域表示模型認為該區域存在目標物體的可能性越高.從圖10中可以明顯看到加入CA 后顏色在船舶區域更深,說明模型在加入注意力機制CA 后對目標檢測物船舶的準確率增加;另一方面,非船舶區域的顏色存在不同程度變淺的現象,這說明了模型對特征權重的分配更加合理,降低了檢測誤差.
2.3.3 消融實驗結果分析
為了驗證模型中加入的各個模塊(注意力機制,IoU)的作用,單獨加入CA 或者WIoU 進行實驗,實驗結果如表4.

表4 注意力機制與IoU對模型的影響Tab. 4 Attentional mechanisms and the effect of IOUs on modeling
由表4 可見:加入的注意力機制CA 與WIoU 對船舶輪廓分割的準確率有不同程度的提升效果,注意力機制CA 涉及到網絡層數的增加,訓練參數也進一步增加,而WIoU 對模型的準確率提升效果更高,同時WIoU降低了CIoU帶來的計算復雜度,在一定程度上減少了模型的訓練時間,加入這兩個模塊的模型相比于原模型在mAP50-95 指標上提升了1.8%. Yolo v8s-seg 模型與Yolo v8s-seg-boat 模型對船舶輪廓的分割效果對比如圖11所示.從圖11中可以明顯看出:本模型檢測的船舶輪廓相比于Yolo v8s-seg模型更加完整,并且在相同置信度下漏檢率更低.

圖11 Yolo v8s-seg模型(左)與本模型(右)輪廓分割效果對比Fig. 11 Comparison of contour segmentation effect between Yolo v8sseg model (left) and the presented model (right)
船舶角度檢測效果如圖12 所示.由圖12 可知:水上收費站實地考察得到的上述船舶角度為70.9度,這說明Yolo v8s-seg-boat模型在角度檢測上更加準確.

圖12 Yolo v8s-seg模型(左)與本模型(右)角度檢測效果對比Fig. 12 Comparison of angle detection effect between Yolo v8s-seg model (left) and the presented model (right)
本文針對船舶旋轉角度檢測高實時化的需求,提出了基于實例分割的船舶旋轉角度檢測模型,在Yolo v8s-seg 網絡的基礎上添加了注意力機制,使用Yolo v8s-seg-boat 網絡來得到船舶的輪廓點坐標,再使用旋轉角度檢測模塊來得到船舶的角度.實驗結果表明本文提出的改進模型Yolo v8s-seg-boat 相較于Yolo v8s-seg 模型能得到更加完整和精確的船舶輪廓,對船舶角度的檢測更加精準,并已在工程上進行了應用.