□ 韓栩晨 □ 王煥然 □ 梁冬泰 □ 夏 柳 □ 劉 彬
1.寧波大學 機械工程與力學學院 浙江寧波 315211 2.北部灣大學 機械與船舶海洋工程學院 廣西欽州 535011
當前,經濟全球化進程不斷加快。到2030年,全球海運量將在現有基礎上翻一番。海上運輸線將日益繁忙,隨之而來的是船舶間碰撞事故不斷增多。在船舶海上會遇的三大局面中,交叉相遇是最為普遍、發生碰撞事故概率最高的會遇局面[1]。如何降低船舶交叉相遇碰撞事故概率,是亟待解決的問題。監測船舶時船舶在圖像中的像素面積較小,模型所預測的目標位置偏差較大,由此造成船舶檢測精度偏低。
為了減少船舶交匯時依賴人工對船舶碰撞距離進行估計,技術人員進行了相關研究。周林宏等[2]對采集到的圖像進行預處理,通過對數變換、伽馬變換、自動色彩均衡算法等對圖像進行增強和去噪,進而提出一種基于自適應圖像增強和圖像去噪的水面航行船舶識別方法,但是這一方法對船舶特征、船舶類型的識別精度不高。嚴榮慧等[3]結合船舶的運動特征及視頻監控的優點,綜合采用基于背景差分算法的運動目標檢測方法與基于深度學習算法的圖像表象特征識別方法,實現多維度廣域船舶識別功能,這一方法雖然在對小目標的預測精度方面有較大提升,提高了船舶的檢測精度,但是對位于較遠處的船舶存在目標丟失的問題。Redmon等[4-6]提出一種基于回歸預測的快速檢測算法,對船舶的檢測效果較好,同時能夠滿足實時檢測的要求,這一方法對于船舶交叉相遇或船舶較小的情況,容易出現漏檢、誤檢等問題。朱天鵬等[7]提出一種基于安全會遇距離模型的智能船舶航行行為可靠性評估方法,構建安全交匯模型,進行智能判斷,但是這一方法只在仿真系統中實現了使用,并沒有進行試驗和驗證。何渡等[8]利用改進的SSD(Single Shot MultiBox Detector)算法與DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚類算法,結合異步串行接口數據進行船舶碰撞的危險預測及預警,由于SSD算法低級特征卷積層比較少,當船舶較遠且較小時,船舶特征提取會不充分,導致識別精度降低,使預警模型產生偏差。
筆者為避免船舶交匯時發生碰撞,針對船舶在較遠處且較小情況下定位精度不高,目標丟失,檢測精度降低的問題,提出一種基于機器視覺的船舶檢測與航行安全距離監測方法。YOLO(You Only Look Once)v5算法自身具有較佳的目標檢測能力,但其單階段的結構設計特點不同于雙階段網絡可以在兩個階段內對目標位置進行優化調整,由此將YOLOv5算法結構替換為DenseNet結構,復用淺層特征信息,構建船舶深度特征矩陣。再加入注意力機制模塊,減小檢測過程中的背景干擾。對檢測器進行解耦,在預測器支路中增加編解碼模塊,使對目標的類別預測計算與位置預測計算更具有側重性,提升圖片的表征能力。通過改進,可以精準檢測出距離較遠且較小的船舶,并通過Sort(Simple Online and Realtime Tracking)算法和逆透視映射[9]融合,判斷出船舶在交匯過程中是否會產生碰撞,降低船舶交匯時的事故率。所提出的方法實用性強,準確性高,并且易于部署。
基于機器視覺的船舶檢測與航行安全距離監測方法工作流程如圖1所示。船舶進入監控范圍以后,網絡高清攝像頭可以獲取船舶的圖像信息。通過改進的YOLOv5算法識別來往船舶,獲得船舶的類別信息等,完成對船舶的識別。通過Sort算法,經過卡爾曼濾波算法去噪,并經過匈牙利算法實現數據關聯,完成對船舶的跟蹤。利用逆透視映射,對相機內外參數進行標定,經過變換矩陣運算,得到鳥瞰圖,再通過運算即可得到船舶之間的距離。最后,對以上三者數據進行融合,并與所設定的閾值進行比較,判斷是否觸發報警裝置,提醒來往船舶。

▲圖1 船舶檢測與航行安全距離監測方法工作流程
目標檢測算法分為以YOLO[10-11]、SSD等為代表的一階段算法和以區域卷積神經網絡、Fast區域卷積神經網絡等為代表的兩階段算法。YOLO系列算法是當前在目標檢測中應用最廣泛的算法之一,圖像推理速度最快達0.007 s,即每秒可以處理140幀圖像,滿足視頻圖像實時檢測需求。YOLOv5算法有YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四種,其中YOLOv5s算法網絡最小,速度最快,每個類別的召回率從0到1的平均精度最低,結構小巧,對于類似船舶這樣追求速度的目標,較為合適。
YOLOv5s算法網絡結構如圖2所示,主要由四個部分組成,四個部分分別為輸入端、骨干網絡、頸部、預測部分。
YOLOv5算法在輸入端主要采用馬賽克數據增強方法。馬賽克數據增強方法是CutMix數據增強方法的升級版,利用隨機四張圖片進行旋轉、縮放、裁剪等操作,拼接為一張全新的圖片,由此擴充數據的豐富程度。骨干網絡主要包含Focus結構和CSP1_x結構,主要關鍵步驟為切片操作。頸部包含CSP2_x結構,可以提高網絡特征的融合能力,并保留YOLOv4算法中的特征金字塔網絡+路徑聚合網絡結構。預測部分采用GloU_Loss[12]作為損失函數,能夠處理邊界框不重合的問題,通過非極大值抑制來獲得最優的目標框。

▲圖2 YOLOv5s算法網絡結構
對YOLOv5算法的網絡結構進行改進。DenseNet是在ResNet基礎上提出的一種全新的卷積神經網絡結構[13]。因為DenseNet每一層的輸入都來源于之前所有層的輸出,所以與傳統卷積網絡結構存在不同,DenseNet具有L(L+1)/2個直接連接。在DenseNet網絡結構中,使用DenseBlock+Transition的結構。其中,DenseBlock是包含很多層的模塊,在這一模塊中,每個層的特征圖大小相同,層與層之間采用密集連接方式。Transition是用于連接兩個相鄰DenseBlock的模塊,通過池化使特征圖減小。在DenseNet中,將之前所有層作為輸入xl:
xl=Hl([x0,x1,…,xl-1])
(1)
Hl是非線性轉化函數,包括歸一標準化函數BN,激活函數ReLU,以及卷積操作Conv,即:
Hl=BN+ReLU+Conv(3×3)
(2)
DenseNet的每個層輸入都會由于層數的疊加而不斷增加,進而會導致后續層的輸入非常大。對此,在原有結構中增加一個1×1卷積核,來減少特征數量,減輕網絡負擔,提升計算效率,即:
Hl=BN+ReLU+Conv(1×1)+BN+ReLU
+Conv(3×3)
(3)
DenseNet相比傳統網絡,優勢在于在網絡深度越深時避免梯度消失,同時可以加強特征傳播,鼓勵特征重用,減少參數數量,并保證低維度特征。
在特征提取網絡中,為獲取充分的語義特征,通常采用深度卷積網絡,憑借網絡的深度優勢獲得充分的特征信息。對于船舶檢測,這樣做存在一定的問題。當船舶處于遠方時,船舶在圖片中所占的面積較小,經過深度卷積網絡中的多次下采樣后,有效像素面積進一步減小,在特征圖中特征信息所占的比例較低,不利于定位與檢測。筆者對特征提取網絡進行優化,提升淺層特征信息的復用率,同時增大船舶特征信息在特征圖中的有效比重。對特征提取網絡中各個維度殘差塊的輸入、輸出構建密集連接,并且在模塊的輸入端加入空間注意力機制模塊。優化后的主干網絡結構如圖3所示,密集連接結構如圖4所示。
為盡量避免小目標因下采樣導致特征丟失,將網絡模型的輸入修改為640×640,之后每個模塊的輸出傳遞至之后各個模塊的輸入端口,在整體上構建密集連接的網絡形態。采用密集連接結構,能夠將低維模塊所提取的特征傳遞至高維模塊,提升特征復用率。低維特征還沒有語義化,主要包含有小目標的紋理、邊界信息,將低維特征信息傳遞至網絡深層,能夠對高維特征信息進行補充。但是,密集連接結構也容易傳遞背景等干擾特征,為了對這些干擾特征進行過濾,在殘差模塊的輸入端前加入空間注意力機制模塊,結構如圖5所示。

▲圖3 優化后主干網絡結構

▲圖4 密集連接結構

▲圖5 空間注意力機制模塊
特征圖輸入空間注意力機制模塊后,由兩條卷積支路進行處理。在第一條卷積支路中,采用最大值池化,不改變特征圖大小。最大值池化能夠將特征圖中權值較大的像素點進一步擴展,提升顯著性。在第二條卷積支路中,輸入的特征圖經過1×1卷積層提高非線性,進行轉置,轉置后得到的特征圖為C×(H×W)。之后將第一條卷積支路與第二條卷積支路的輸出特征圖進行相乘,采用SoftMax激活函數進行權重計算,得到一維權值特征圖(H×W)×(H×W)。最后通過殘差映射方式,將權值特征圖與輸入特征進行相乘,得到賦值后的空間信息特征圖。采用空間注意力機制,能夠在空間層面上對目標特征信息進行加權,并且能夠對背景特征進行抑制。
筆者的另外一個優化項是對YOLO算法檢測器進行修改。對檢測器頭進行解耦操作,解耦后的檢測器結構如圖6所示。
原YOLO算法檢測器采用線性回歸方式,完成對目標類別與位置的預測。對YOLO算法檢測器優化后,特征圖都輸入檢測器,由兩條支路分別進行預測。在上支路中,采用全局平均池化將特征圖壓縮為一維特征,通過分類計算預測每個候選框的類別。在下支路中,采用3×3卷積層進行回歸計算,預測每個目標的位置信息。采用解耦,使對目標的類別預測計算與位置預測計算更具側重性。在類別預測支路中,采用全局平局池化計算,能夠實現類別與特征圖通道的對應,并且整合全局空間信息,可以在一定程度上提高預測精度。在位置預測支路中,支持采用卷積層對空間信息進行提取,壓縮整合通道特征,使模型在位置預測方面具有更高的精度。

▲圖6 解耦后檢測器結構
通過DS-2DE5223SC-AYC球形攝像機進行數據采集。視頻數據用于進行Sort算法的測試。將視頻用腳本劃分為一幀一幀的圖像,并將圖像保存為JPG格式,重新命名,應用LabelImg標注軟件對圖像進行標注。在標注時對船舶進行分類標注,共分為五類,五類分別為OreCarrier、GeneralCargoShip、ContainerShip、PassengerShip、FishingBoat,如圖7所示。數據集采用PASCAL VOC格式,為了防止數據樣本數量較少導致訓練模型出現過擬合現象,基于原有的1 566張圖像,通過旋轉、剪切、鏡像等數據增強方法,使圖像增加至6 952張。將圖像按9∶1分為訓練集和測試集兩部分。

▲圖7 船舶分類標注
試驗中采用Ubuntu 18.04操作系統,運行環境為CUDA11.4,中央處理器型號為英特爾酷睿i5-9400,圖形處理器型號為英偉達精視RTX 3060 Ti,訓練時采用Pytorch深度學習框架。
為了使YOLOv5算法達到最佳性能,迭代次數設置為1 000,訓練批次設置為32,權重衰減因子設置為0.000 5。為了防止過擬合,學習率動量設置為0.937。設置完參數后開始進行訓練,訓練結果顯示,迭代收斂較快,所以將迭代次數設置為300再次進行訓練。訓練損失函數曲線如圖8所示,可以看出從0到50次迭代時,損失函數值呈現出快速下降態勢,從50到200次迭代時,損失函數值下降較慢,從200到300次迭代時,損失函數值逐漸趨于平穩。

▲圖8 訓練損失函數曲線
采用平均精度均值作為檢測精度的評價指標。平均精度均值與各類別的平均精度,以及準確率和召回率有關,準確率P為:
(4)
式中:TP為圖像中包含目標船舶且被檢測出的船舶數量;FP為圖像中不包含目標船舶但也被檢測出的船舶數量。
召回率R為:
(5)
式中:FN為圖像中包含目標船舶但沒有被檢測出的船舶數量。
試驗采用PASCAL VOC中的評價指標,可以根據準確率和召回率得到一條范圍在[0,1]之間的曲線,曲線圍成的面積即為平均精度AP,AP為:

(6)
對得到的平均精度進行均值計算,最終得到平均精度均值mAP,為:
(7)
式中:n為船舶的類別總數;AP(k)為第k個類別的平均精度。
改進YOLOv5算法平均精度均值如圖9所示。由圖9可以看出,經過300次迭代后,改進YOLOv5算法的平均精度均值逐漸達到收斂狀態。

▲圖9 改進YOLOv5算法平均精度均值
為了驗證改進YOLOv5算法對較遠小目標物體的檢測精度,與SSD算法、Faster區域卷積神經網絡及原YOLOv5算法進行比較,檢測結果如圖10,檢測結果對比見表1。

▲圖10 檢測結果

表1 檢測結果對比
對于改進后的YOLOv5算法,在目標船舶較遠且存在遮擋時,檢測置信度達到98%,平均精度均值達到97.66%,召回率達到95.62%。對于同樣的目標船舶,原YOLOv5算法和Faster區域卷積神經網絡雖然都能夠識別,但是置信度僅為90%左右。SSD算法在置信度為50%時沒有能夠檢測出目標船舶,僅在置信度為10%時檢測出目標船舶。對于交并比[14],改進YOLOv5算法相比原YOLOv5算法提升3.4個百分點,相比SSD算法這一同類型一階段算法提升11.9個百分點。與Faster區域卷積神經網絡這一兩階段算法相比,改進YOLOv5算法的交并比同樣高2.8個百分點。檢測結果說明筆者所提出的改進YOLOv5算法在船舶檢測時對小目標船舶的識別與其它一階段、兩階段算法相比,均具有明顯的優勢,由此證明通過加強淺層特征信息復用,采用空間注意力機制模塊對船舶特征信息進行增強,能夠有效提升檢測器對目標位置信息預測的精度。另一方面,對檢測器進行解耦,由單獨的位置預測支路進行目標位置預測,在一定程度上也提高了檢測精度。
筆者將改進YOLOv5算法與Sort算法、逆透視映射相結合,通過檢測船舶交匯時的距離來進行安全預警。在進行船舶目標檢測任務時,用一個矩形框將船舶框出,此時得到的船舶位置存在誤差。對此,使用卡爾曼濾波算法來消除噪聲,通過對數學模型的預測值和測量值進行融合,找到一個基于兩者融合的最優估計值。還需要使用匈牙利算法完成數據關聯,求出目標軌跡和目標檢測的關聯代價矩陣[15]。代價矩陣的值為檢測目標與預測目標所有預測邊界框之間的交并比距離。最后完成Sort算法跟蹤,最大優點是速度快、準確率高。
通過逆透視映射方法完成船舶測距。使用高清攝像機對船舶圖像進行采集時,由于產生折射等原因會使數據產生畸變,因此需要對高清攝像機進行標定操作,獲得高清攝像機的內參和外參矩陣。在圖像處理過程中,通過透視變換矩陣得到船舶在航道中的鳥瞰圖,再通過逆透視映射矩陣將鳥瞰圖擬合、疊加,關系式為:
(8)
式中:(x,y)為圖像坐標系中的點;(X,Y)為世界坐標系中的點;a11、a12、a13、a21、a22、a23、a31、a32為透視變換矩陣的參數。
通過棋盤格標定四組坐標點,即可得到世界坐標系和圖像坐標系對應的圖像點,最后得到逆透視映射矩陣。
由于不同船舶之間的安全交匯距離不一樣,根據船舶的大小,以及正態分布分析[16],可以得到船舶長度L與船舶交匯安全距離Z0之間的關系式,為:
Z0=0.002 893L2+0.303 744L
(9)
船舶長度越長,船舶交匯安全距離也就越大。對各種不同船舶的長度進行匯總,得到船舶交匯安全距離,見表2。因為試驗所在的航道較為狹窄,并且來往船舶長度最長不超過15 m,所以船舶交匯安全距離閾值設置為6 m。

表2 船舶交匯安全距離 m
當船舶與船舶行駛過程中的距離大于所設定的交匯安全距離閾值,屬于安全交匯,此時船舶標記為綠色。當船舶與船舶行駛過程中的距離小于所設定的交匯安全距離閾值,屬于危險交匯,存在碰撞的危險,此時船舶標記為紅色,需要采取預警措施,如使用激光射線、揚聲器警告等。船舶航行安全距離監測圖像如圖11所示。
船舶在湖海江河中行駛,常常會由于操作不當、人員反應不及時,以及天氣影響而發生碰撞。對此,提出一種基于機器視覺的船舶檢測與航行安全距離監測方法。原有的YOLOv5算法在實際檢測過程中針對目標船舶較遠且較小的情況檢測精度不足,對此,將原有YOLOv5算法的結構更換為DenseNet結構,有利于提升梯度的反向傳播,使網絡更容易訓練,并且提升型態特征。同時增加空間注意力機制模塊,通過空間注意力機制模塊來尋找網絡中的最重要部位。對檢測器進行解耦,以提高圖像的表征能力。改進YOLOv5算法的平均精度均值達到97.66%,提升效果明顯。將改進YOLOv5算法與Sort算法、逆透視映射融合,通過所設定的船舶安全交匯距離閾值對船舶航行進行實時監測,通過可視化界面直觀顯示船舶航行情況,并對危險情況進行預警,由此大大降低船舶碰撞事故率。

▲圖11 船舶航行安全距離監測圖像