宦毓泰,陳 琳,劉 彬,王文杰
(上海船舶設備研究所,上海 200031)
近年來,智能船舶的研發應用不斷推陳出新[1]。隨著云技術、大數據、人工智能以及虛擬現實的運用日益成熟,信息化、自動化船舶向著自主決策、自主控制的智能化方向發展。其發展方向之一就是智能無人船(Unmanned Surface Vessel,USV)[2],即當面對復雜的海洋環境時,可以對目標或障礙物進行檢測與識別,以進行避障、規劃和自主完成任務,因此,無人船的環境感知和識別系統需要較高的準確性和實時性。
目前,海洋環境下雷達作為傳統的傳感器,但基于船用雷達有限的空間分辨率和相對較低的掃描速率,雷達的精度有限[3]。為了克服此局限性,可用可見光傳感器進行海上目標檢測,提高海洋環境中自主導航的感知和態勢感知性能[4]。考慮到無人船感知和決策的強實時性和YOLOv5新的先驗框機制,本文采用基于改進YOLOv5的網絡架構進行目標檢測,同時對原始圖像進行圖像預處理和數據增強,優化神經網絡模型,采用K-means改進錨點框的尺寸大小,實現較好的海面目標檢測效果[5-7]。
基于無人船感知系統對實時性和準確性的需求,本文采用YOLOv5l網絡結構,主要由4個部分組成,分別是輸入(Input)、主干網絡(Backbone)、頸部網絡(Neck)、檢測頭(Prediction),見圖1,其中Focus模塊是指聚焦模塊,CONV模塊是指卷積(Convolution)模塊,BN模塊是指批標準化(Batch Normalization)模塊,SiLU模塊是一種激活函數,CBS模塊是指卷積模塊、批標準化模塊、SiLU模塊的串聯模塊,Res unit模塊是指殘差組件,Concat是指特征融合模塊,CSP1_X是指有X個殘差組件的跨階段局部網絡模塊(Cross Stage Partial Network),CSP2_X是指有2X個殘差組件的跨階段局部網絡模塊,Upsampling模塊是指上采樣模塊,Maxpool模塊是指最大池化模塊,slice模塊是指切片模塊[8-10]。

圖1 YOLOv5l 網絡結構圖
基于無人船海面圖像的近方船舶和遠方船舶的像素點不同,引入Mixup數據增強方法,可對兩個樣本-標簽數據對按比例相加后生成新的樣本-標簽數據。
假設batchx1是一個batch樣本,batchy1是該batch樣本對應的標簽,batchx2是另外一個batch樣本,batchy2是該batch樣本對應的標簽,λ是由參數為(α,β)的貝塔分布計算出來的混合系數,由此得到Mixup原理公式為

式(1)~式(3)中:Beta指的是貝塔分布,mixed_batchx是混合后的batch樣本,mixed_batchy是混合后的batch樣本對應的標簽。
Mixup數據增強后的效果圖見圖2。

圖2 Mixup 數據增強效果圖
原始YOLOv5使用GIOU_Loss做邊界框的損失函數,損失函數如式(4)~式(7)所示,由類別損失、定位損失和置信度損失3個部分構成。其中置信度損失和類別損失采用二元交叉熵損失函數進行計算:


本文采用Focal loss 損失函數,并采用CIOU_Loss損失函數代替GIOU_Loss損失函數。
Focal loss損失函數本質上就是在二元交叉熵損失函數引進了一個控制正負樣本的權重的系數α和一個控制容易分類和難分類樣本的權重γ,通過權重γ和該類別的概率pt計算出調制系數(1-pt)γ,代入式(6)和式(7)中,得到:

原始YOLOv5模型中先驗框是固定的9個框,為[12, 16]、[19, 36]、[40, 28]、[36, 75]、[76, 55]、[72, 146]、[142, 110]、[192, 243]、[459, 401]。為了更好地匹配海面船舶圖像的特征,用K-means聚類算法對數據集重新聚類,生成適合的先驗框,最終得到的先驗框為[46, 21]、[93, 39]、[178, 42]、[135, 64]、[244, 72]、[187, 107]、[413, 90]、[301,145]、[507, 163],K-means聚類結果圖見圖3。

圖3 K-means 聚類結果圖
將改進后的YOLOv5算法應用于海面船舶識別的場景下,并與原始的YOLOv5進行對比試驗。
試驗環境的具體配置為Windows10 64位,CPU為Intel Core i7 10875H@2.3GHz,GPU為GeForce RTX 2060(6.0 GB),內存為16GB,python版本為3.8,CUDA版本為10.2,pytorch版本為1.11.0。
訓練參數方面,所有圖片輸入為640×640,模型采用YOLOv5l,初始學習率為0.001,最小學習率為0.000 01。訓練輪數(epoch)為64,其中前32個epoch凍結模型的主干網絡部分的參數,批處理量(Batch size)為8,特征提取網絡不發生變化,網絡僅進行微調,后32個batch解凍主干網絡,batch size為4,優化器為adam(Adaptive Moment Estimation),動量(Momentum)為0.937,權值衰減為0,使用余弦退火算法對學習率進行更新。
本文數據集采用SeaShips數據集[11],該數據集由7 000張圖片組成,涵蓋6種常見船型:礦砂船(Ore Carrier)、客船(Passenger Ship)、集裝箱船(Container Ship)、散貨船(Bulk Cargo Carrier)、雜貨船(General Cargo Ship)、漁船(Fishing Boat),所有圖像都是來自真實視頻片段,均使用具體船型標簽和高精度邊界框進行注釋,SeaShips數據集具體分布見圖4。

圖4 SeaShips 數據集分布圖
數據增強為線上增強,所有圖片數據有1/3進行Mosaic數據增強,1/3進行Mixup數據增強,1/3只進行旋轉、平移等基礎數據增強。考慮到Mosaic數據增強和Mixup數據增強遠遠脫離自然圖片的真實分布,故在訓練的最后30%batch不進行數據增強。
本文評估指標采用平均精度(Average Precision, AP)、平均精度均值(Mean AP, mAP)、精確率(precision)和召回率(recall)有關以及每秒檢測圖片的幀數(Frames Per Second, FPS)這5種在目標檢測算法中較為常見的評價指標來評估本文算法的性能。
在訓練64個epoch的過程中,損失函數和平均精度的變化曲線見圖5和圖6,可以看到僅10個epoch之后模型就達到了較好的擬合效果。模型最終的平均精度均值達到了98.6%,相對于原始YOLOv5l模型的mAP提高了1.69%,具體每類的平均精度值見圖7。以數量最多的礦砂船為例,精確度達到了99.03%,召回率達到了93.18%,精確度和召回率隨門限值變化而變化的折線圖,如圖8和圖9所示。同時本文提出的模型的檢測速度達到了22.234FPS,較原始模型的20.335FPS也有明顯提升。

圖5 模型在數據集上訓練過程中損失函數變化曲線

圖6 模型在數據集上訓練過程中平均精度變化曲線

圖7 最終模型的平均精度均值和每類的平均精度圖

圖8 精確度隨門限值變化的折線圖

圖9 召回率隨門限值變化的折線圖
本文算法的具體海面目標檢測效果圖見圖10,可以看到算法模型對較大的船只和較小的船只都有不錯的檢測效果,且可以有效分辨出不同船只的種類。

圖10 檢測效果圖
為了提高無人船的感知能力,本文基于YOLOv5算法模型,利用深度學習的方法,針對海面船舶檢測的特點,提出一種基于改進YOLOv5的海面可見光圖像船舶檢測算法,對模型的輸入方法、損失函數和先驗框作出了改進,利用Seaships船舶數據集進行訓練和目標檢測,平均精度均值最高可達98.6%,同時檢測時間也少于50 ms,獲得了較好的檢測結果,能夠滿足無人船感知的精確性和實時性,完善了無人船的感知系統,對無人船的感知研究工作有一定指導意義。