聶 鑫,劉 文*,吳 巍
(1.武漢理工大學航運學院,武漢 430063;2.內河航運技術湖北省重點實驗室(武漢理工大學),武漢 430063;3.武漢理工大學信息工程學院,武漢 430070)
隨著水上交通運輸業的蓬勃發展,水上交通安全形勢面臨嚴峻考驗。船舶作為水路運輸的重要載體,準確識別船舶類型和檢測船舶位置對感知水路交通態勢、保證船舶航行安全和水上違法行為預警等具有重要意義。實現船舶目標的高效準確檢測是后續進行船舶行為識別與軌跡跟蹤等高級視覺任務的基礎。因通航環境復雜、水面反光和易受不良天氣影響等因素,與道路車輛檢測相比,水上船舶目標檢測更具挑戰性。
傳統目標檢測方法主要有幀間差分法和背景建模法等。幀間差分法依賴于從視頻圖像前后幀之間的差分運算獲取目標輪廓,無法提取目標的完整區域,由于船舶運動速度較慢,難以選取合適的時間間隔,不能保證船舶目標檢測的準確性和穩定性。背景建模法通過將當前幀與背景模型進行比較,通過閾值法區分像素是否屬于前景目標。由于水面波紋和船舶尾跡等因素干擾,Prasad等[1]采用23種基于背景建模的傳統目標檢測算法對水上船舶目標進行實驗,均無法準確檢測出船舶目標。另外,傳統目標檢測方法需對目標特征進行人工建模,限制了檢測模型泛化能力的提升。因此,亟須一種新的方法提高船舶目標檢測能力,并實現目標船舶所屬船舶類型的準確識別。
2012 年興起的卷積神經網絡具備強大的目標特征表達和建模能力,通過監督學習的方式,逐層、自動地學習目標從低級到高級的特征表示,實現對物體層次化的抽象和描述,成為目前目標檢測任務的首選。基于神經網絡的目標檢測算法主要分為以R-CNN(Region-Convolutional Neural Network)系列[2-4]為代表的兩次目標檢測網絡和以SSD(Single Shot multibox Detector)[5]、YOLO(You Only Look Once)系列[6-8]為代表的單次目標檢測網絡。兩次檢測網絡首先通過區域建議的方式產生大量候選區域,再將得到的候選區域送入神經網絡,預測目標的類別概率和位置信息。單次檢測網絡把目標檢測作為回歸問題處理,將目標的位置預測和類別概率預測整合到一個神經網絡中,實現端到端的訓練,在實際應用中提高了檢測速度,但準確率低于兩次檢測網絡。
深度卷積網絡已成功應用于水上船舶目標檢測領域。王新立等[9]和陳從平等[10]使用Faster R-CNN 網絡分別對港口與內河船舶進行了自動檢測,相較于傳統方法大幅提高了檢測準確率。王言鵬等[11]使用SSD 網絡克服了波浪造成的誤檢測,并利用遷移學習技術提高網絡的泛化能力。趙蓬暉等[12]通過改進特征提取網絡提高了SSD網絡檢測船舶目標的準確率。于洋等[13]通過在YOLOv2 中加入直通層對船舶目標進行檢測,與原始YOLOv2 算法相比準確率有所提高。劉博等[14]在YOLOv3 算法中加入懲罰機制實現了對船舶目標的識別與跟蹤。Kim 等[15]通過將Faster R-CNN 網絡與貝葉斯概率結合實現對船舶視頻圖像的準確檢測。因缺少用于船舶檢測的數據集,實驗所用數據主要來自從網絡獲取的低分辨率圖像,造成無法準確識別船舶類型的問題,缺乏實際應用的價值。
本文選擇兼具檢測精度與速度的YOLOv3 算法作為基礎,針對水上船舶目標檢測的具體應用場景進行改進,采用真實高分辨率監控視頻圖像進行實驗,驗證了所提算法在不同天氣條件與復雜通航背景下的有效性。
YOLO 系列目標檢測網絡是單次目標檢測網絡中最具代表性的網絡結構,YOLOv3 是YOLO 系列的最新改進網絡,因為在檢測精度上可以與兩次目標檢測網絡相媲美,同時可以達到實時檢測速度,所以成為目前最受歡迎的目標檢測算法之一。考慮到船舶目標檢測在實際應用中需要同時兼顧檢測的精度和速度,所以本文以YOLOv3 為主體,結合船舶目標檢測的應用場景進行改進,完成對船舶的位置定位和類型識別。
YOLOv3網絡結構如圖1所示。

圖1 YOLOv3算法框架Fig.1 YOLOv3 algorithm framework
在提取特征之前,輸入圖像首先被調整為統一的尺寸,然后輸入圖像被送入Darknet-53 特征提取網絡提取特征。Darknet-53特征提取網絡是包含53個卷積層的深度卷積神經網絡,可以用來提取輸入圖像從低級到高級的特征表示,在進行目標檢測任務時需要移除最后一層全連接層,所以可以對輸入圖像做52 次卷積操作,得到不同深度的特征圖。卷積層連續交替使用3×3 和1×1 兩種不同尺寸的卷積核,通過3×3 的卷積核使得到的特征圖數量增加一倍,便于網絡提取更多的目標特征,使用1×1 的卷積核壓縮特征圖數量,從而減少模型參數,降低網絡計算的復雜度。為了可以在訓練時使用比較大的學習率以減少訓練時間,提高收斂速度,達到穩定訓練的目的,在每一個卷積層后使用批規范化層,將輸入數據做均值為0、方差為1的歸一化處理。在批規范化層之后使用泄露線性修正單元(Leaky Rectified Linear Unit,Leaky ReLU)激活函數進行非線性操作,從而使網絡可以應用在非線性模型中。卷積層、批規范化層和激活函數層構成卷積塊結構。由于深層的卷積神經網絡在訓練時容易出現梯度消失的問題,導致在訓練過程中檢測準確率達到飽和,所以引入殘差跳躍連接結構,在加深網絡層數的同時解決了網絡退化問題。
YOLOv3 算法在預測階段使用了多尺度預測的策略,通過Darknet-53 特征提取網絡得到的特征圖經過幾次卷積操作得到粗尺度特征圖用于檢測大尺度目標,粗尺度特征圖經過上采樣操作并與Darknet-53 網絡中間層特征圖拼接得到中尺度特征圖用于檢測中尺度目標,中尺度特征圖再經過上采樣操作并與Darknet-53 網絡更淺層的特征圖拼接得到細尺度特征圖用于小尺度目標檢測,這種類似特征金字塔網絡的結構保證了算法對不同尺度的目標都有比較好的預測效果。不同于兩次目標檢測網絡使用的區域提名方法,YOLOv3 網絡將特征圖劃分成S×S的網格單元,如果目標的中心點坐標落在某個網格單元內部,則該網格單元負責這個目標的預測。同時,YOLOv3 算法借鑒Faster R-CNN 的錨框機制,在每個尺度上預先設置3 個大小、寬高比不同的先驗錨框提高目標檢測的準確率。在每一個預測尺度,檢測層對于每一個網格單元預測3 個預測框信息,每個預測框信息包括網絡學習到的預測框中心點相對于網格單元左上角坐標的相對坐標(tx,ty)、預測框寬、高相對于先驗錨框寬、高的縮放尺度(tw,th),網格單元內有無目標的置信度Pobj以及對應n個目標類別的類別概率P0,P1,…,Pn-1。最后,將3 個預測尺度的預測信息組合并通過非極大值抑制算法得到最終的預測結果。
雖然經過多次改進的YOLOv3 網絡已經在檢測精度和檢測速度之間取得了比較好的平衡,且因實現簡單,成為許多目標檢測任務的首選算法,但是作為一種單次目標檢測網絡,仍然存在著定位誤差大和前景、背景復雜度不平衡的問題。
為了追求檢測速度,YOLOv3 算法將目標定位和分類集成在一個卷積神經網絡中,同時預測目標的位置坐標和類別信息。然而,由于神經網絡中深度特征圖包含更高級和抽象的特征信息,適合用于目標分類,但由于丟失了較多的空間信息,對目標定位的效果較差。而淺層特征圖的特征更加具體,包含空間信息較多,適合坐標定位但對目標分類的效果并不理想。雖然YOLOv3 嘗試使用深度特征圖和淺層特征圖拼接來融合不同級別的特征信息,但與兩次目標檢測算法相比仍然存在著目標定位不準確的問題。
此外,YOLOv3 算法在3 個預測尺度上一共要預測10 000個以上可能的預測框,其中只有一少部分預測框中包含有目標,而大多數預測框中只包含有圖像背景信息,導致前景、背景數量極度的不平衡。YOLOv3 網絡需要在上萬個可能的預測框中搜索到包含有目標的最適合的一個預測框,給網絡訓練帶來很大困難,網絡更多地聚焦在容易分類的背景框,造成對前景的分類能力下降。
針對YOLOv3 網絡定位誤差大和前景、背景復雜度不平衡的問題,本部分通過加入對預測框的不確定性回歸和重新設計損失函數,提出增強YOLOv3 算法,并以海事監控視頻中的船舶目標作為檢測對象進行實驗。
由于YOLOv3 算法同時對目標的位置和類別信息進行回歸,所以自然存在高分類準確率和低定位準確率,而且不同于對預測框內是否存在目標的置信度和類別概率的回歸都是概率值,可以指示分類的準確程度,YOLOv3 算法對目標位置信息的預測是確定的值,即預測框的中心點相對于負責預測該目標的網格單元左上角坐標的相對坐標(tx,ty)和預測框的寬、高相對于先驗錨框寬、高的縮放尺度(tw,th),所以無法知道網絡對目標位置預測的準確程度。雖然置信度Pobj可以反映該預測框內是否有目標,但無法反映出該預測框定位的準確度,即目標有多大部分在預測框內。Choi 等[16]在自動駕駛中通過使用定位的不確定性提高了車輛和行人的檢測精度。受Choi 等的啟發,通過在YOLOv3 算法的預測框輸出信息中加入顯示預測框準確程度的指標,在網絡訓練過程中指導網絡學習預測更加準確的預測框,從而降低YOLOv3 算法的定位誤差。
因為每一個目標只有一個人工標注的真實邊界框(Ground Truth,GT),所以可以使用單高斯模型分別對預測框中心點的相對坐標和歸一化尺寸的概率分布進行建模。對于給定的輸入x,輸出y的單高斯模型如式(1)所示:

其中:μ(x)表示均值,Σ()x表示方差。用均值μ表示預測框的相對位置和尺寸信息,用方差Σ反映預測框定位的準確程度。所以預測框的每一個坐標和尺寸信息可以分別被建模為均值和方差,即網絡學習到的預測框信息可以表示為。沿用YOLOv3 使用預測框相對于對應網格單元左上角坐標的偏移值和相對于先驗錨框的縮放尺度表示預測框的位置和尺寸的方法,需要對網絡學習到的預測框相關信息使用sigmoid函數進行預處理:

其中:均值μtx和μty表示預測框中心點相對于負責該預測框回歸的網格單元左上角坐標的偏移值,使用sigmoid 函數處理后的取值范圍在(0,1),控制目標中心的偏移位于對應的網格單元之內,確保不會過偏移;μtw和μth表示預測框寬、高相對于先驗錨框寬、高的縮放尺度;Σtx、Σty、Σtw、Σth分別表示對應信息的不確定性,取值為(0,1),值越小,說明對預測框的回歸越準確。
加入預測框不確定性回歸后網絡對每一個預測框輸出8個位置和尺寸信息,1 個有無目標的置信度信息和多個類別信息,改進后的輸出信息如圖2 所示。由于預測框不確定性回歸只在網絡最后的檢測層起作用,不會對網絡的特征提取造成影響,所以不會額外增加網絡的計算量。

圖2 帶有預測框不確定性回歸的輸出信息Fig.2 Output information with prediction box uncertain regression
通過網絡學習到的預測框信息的偏移值可以計算出預測框的坐標和尺寸信息,如圖3 所示,網絡最后輸出的預測框的坐標、尺寸信息可以由式(4)計算:

其中:(bx,by)表示輸出的預測框中心點坐標,bw和bh分別表示輸出的預測框的寬和高;pw和ph分別表示先驗錨框映射到特征圖的寬和高;(cx,cy)表示網格單元左上角的坐標,在預測層的特征圖中,每一個網格單元的邊長均為1。

圖3 預測框的坐標信息Fig.3 Coordinate information of prediction box
損失函數是評價網絡訓練情況的重要指標,通過對網絡預測結果與真實樣本標記產生的誤差反向傳播指導網絡調整參數學習,YOLOv3 算法主要使用了兩種損失函數,對預測框信息使用了均方誤差損失函數,對有無目標的置信度信息和類別概率信息使用二值交叉熵損失函數。
由于預測信息中加入了對預測框的不確定性回歸,所以需要對位置損失函數進行重新設計。使用負對數似然損失代替均方誤差損失如式(5)所示:

其中:Lx、Ly、Lw、Lh分別表示預測框的中心坐標位置損失和尺寸損失;δ表示是否為最合適的預測框:是為1,否則為0;ε取一個極小的值;x、y表示目標真實邊界框相對于網格單元左上角坐標的偏移值,w、h表示目標真實邊界框寬、高相對于先驗錨框寬、高的縮放尺度表示預測框相對于網格單元左上角坐標的偏移值表示預測框寬、高相對于先驗錨框寬、高的縮放尺度。其中,真實值可由式(6)計算:

其中:Gx、Gy、Gw、Gh分別表示目標真實邊界框映射到特征圖上的中心點坐標和寬、高。
不同于YOLOv3 中使用的均方誤差損失函數無法反映噪聲數據對網絡訓練的影響,負對數似然損失函數可以對網絡訓練過程中不一致的數據添加不確定性懲罰,從而使網絡從穩定的數據中學習預測框的準確位置,提高網絡對預測框坐標位置估計的準確程度。
YOLOv3 算法存在的第二個問題是前景、背景復雜度不平衡,如圖4 所示,在船舶目標檢測中,待檢測的船舶是前景,其他部分是背景,簡單樣本的特點是距離近、尺寸大,與背景差異較大,容易區分;復雜樣本的特點是拍攝距離遠、尺寸小,與背景極為相似,不容易識別。而且在上萬個預測框中,最后只有一個預測框是最適合的,這種“萬里挑一”的做法給網絡訓練帶來極大的困難,網絡將過多的焦點專注于學習樣本數量多的幾類目標,而忽略了對樣本數量較少的目標的特征的學習,影響損失函數的梯度更新。

圖4 復雜度不平衡的樣本Fig.4 Samples with imbalanced complexity
YOLOv3 算法在置信度損失和類別概率損失中使用的傳統二值交叉熵函數為Lbce=-ln(pt),式中,pt表示概率。借鑒文獻[17]中對密集物體的檢測方法,在上式中加入動態放縮因子,使損失函數能夠降低簡單樣本的損失,集中訓練數據中的復雜樣本。改進后的損失函數如式(7)所示:

其中:(1-pt)γ表示動態放縮因子;γ是可調超參數,用來控制放縮比例,解決前景、背景的不平衡,本文取2;αt表示平衡變量,取值為(0,1),用來解決船舶樣本復雜度的不平衡,本文取0.3。
圖像中的前景屬于正樣本,背景屬于負樣本。正樣本中又分為簡單樣本和復雜樣本,對于簡單樣本,容易分類,輸出概率值大,復雜樣本不容易分類,輸出概率之小。對于簡單樣本,(1-pt)γ的值會更小,得到的損失函數也更小,而復雜樣本得到的損失相對變更大;對于負樣本,預測概率值小的樣本損失比預測概率值大的損失要小得多,可以使損失函數更多地聚焦在復雜樣本的學習上,減少簡單樣本的影響。由于正樣本占比例較小,而且負樣本相對比較容易進行分類,所以使用一個比較小的平衡變量對正樣本進行平衡。
在目標檢測中使用邊界框真值與預測框的交并比(Intersection over Union,IoU)表示預測的準確程度,但是當兩個框沒有重合時會導致梯度為0,造成損失函數無法優化。為了解決這個問題,受文獻[18]的啟發,對于任意的兩個檢測框,定義廣義交并比(Generalized Intersection over Union,GIoU)如式(8)所示:

其中:A、B表示任意兩個檢測框;C表示兩個檢測框的最小閉合凸面;(A∪B)表示兩個檢測框重疊部分的面積。則GIoU的損失函數可以表示為Lgiou=1-GIoU。
所以,改進后的總體損失函數為:

其中:Lcoor、Lconf、Lprob分別表示坐標損失、置信度損失和類別概率損失;lbbox_scale=2-表示預測框尺度損失,w、h和W、H分別表示預測框和輸入圖片的寬和高;1obj表示網格中是否存在船舶目標,存在為1,不存在為0;P(c)表示船舶所屬的類別概率。
數據集在基于深度學習的目標檢測中起著至關重要的作用,卷積神經網絡從龐大的訓練數據中學習目標特征。由于監督學習需要人工標記標簽,是一項費時費力的工作,所以獲得訓練數據集極其困難。SeaShips[19]是第一個公開的用于船舶目標檢測的數據集,包含7 000 張6 個類別的船舶圖像。將數據集分為:訓練集1 750 張、驗證集1 750 張,測試集3 500張,分別對3 個子數據集中每個類別的船舶數量(GT)進行統計如表1 所示,3 個子數據集的目標數量分布相似,保證了網絡具有良好的泛化能力。
文獻[20]證明霧天、低照度條件會嚴重影響船舶目標檢測的準確率,為了增強網絡的泛化能力,緩解訓練過程中的過擬合現象,提高算法在惡劣天氣條件下的檢測能力,在訓練過程中使用數據增強技術擴充樣本數量。除了使用水平翻轉、隨機平移和隨機剪切外,針對水上常見的霧天和低照度環境,但難以獲取大量惡劣天氣環境下的船舶圖片的事實,使用基于大氣散射模型和Retinex 模型的模擬霧圖、模擬低照度圖技術。樣本增強后的效果如圖5所示。

表1 不同類別船舶目標數量統計Tab.1 Statistics of numbers of different ship categories

圖5 數據增強Fig.5 Data augmentation
由于船舶目標呈細長狀,也就是邊界框的寬比高要大很多,而且不同類型船舶之間尺寸差異很大。YOLOv3原始設定的先驗錨框尺寸主要面向自然界中通用目標檢測,不能滿足船舶目標檢測的需要,所以需要重新對先驗錨框進行設計。不同于依賴人的先驗知識設定的錨框尺寸,通過使用K-means聚類算法對數據集中所有已標注的目標邊界框進行聚類,產生不同數量的先驗錨框,可以使錨框與目標邊界框更加匹配,從而提高檢測精度。不同聚類數目對應的平均交并比如圖6所示。

圖6 不同聚類數目與平均交并比Fig.6 Different number of clusters and mean intersection over union
考慮到計算效率與準確率的平衡,同時為了使產生的先驗錨框平均分配到3個預測尺度,選擇產生9個先驗錨框。最終確定的先驗錨框尺寸經歸一化后如表2 所示。將YOLOv3原始設計的先驗錨框尺寸與本文重新設計的先驗錨框尺寸進行比較如圖7 所示,可以看到兩者的差異很大,說明重新設計先驗錨框的必要性。

表2 先驗錨框尺寸Tab.2 Prior anchor box scales

圖7 不同錨框尺寸比較Fig.7 Comparison of different prior anchor box scales
在預測的后處理階段,YOLOv3 使用非極大值抑制(Non-Maximum Suppression,NMS)算法消除冗余的預測框,降低誤檢率。由于非極大值抑制算法會將和得分最高的預測框的交并比大于某個閾值的其他預測框直接置零,所以在有重合目標的情況下會導致有目標檢測失敗。為了改進非極大值抑制算法硬閾值的缺點,設置高斯軟閾值函數如式(10)所示:

其中:bi表示網絡預測出的一系列預測框;si表示預測框得分;M表示得分最高的預測框;D表示經過非極大值抑制算法處理后保留的一系列預測框的集合,初始時將D設為空集;IoU表示交并比;σ取值為(0,1),本文取0.3。高斯軟閾值函數可以在得分最高的預測框和其他預測框的交并比越大時降低其他預測框的置信度,而不是粗暴地將其他預測框置零,從而緩解了目標重合時的檢測失敗問題。
本文實驗使用的操作系統為ubuntu18.04,處理器型號為Intel Core i7-8700K,顯卡型號為NVIDIA GeForce GTX 1080 Ti,采用NVIDIA CUDA9.0加速工具箱。
本文中除了特別說明以外,在網絡訓練階段使用的部分實驗參數如表3所示。
為了評價網絡的性能和說明船舶目標檢測網絡的有效性,選取下列評價指標。
1)查準率(Precision,P)和召回率(Recall,R):查準率指網絡檢測到的正樣本數量占檢測到的所有樣本數量的比率;召回率指網絡檢測到的正樣本數量占標記的真實樣本數量的比率。查準率和召回率的計算公式為:

其中:真正樣本(True Positive,TP)表示檢測到的目標類別與真實目標類別一致的樣本數量;假正樣本(False Positive,FP)為檢測到的目標類別與真實目標類別不一致的樣本數量;假負樣本(False Negative,FN)為真實目標存在但未被網絡檢測出來的樣本數量。

表3 實驗參數設置Tab.3 Setting of experimental parameters
2)平均準確率(Average Precision,AP)和平均準確率均值(mean Average Precision,mAP):一個理想的目標檢測網絡應該在召回率增長的同時查準率保持在很高的水平,但現實情況是召回率的提高往往需要損失查準率的值,所以通常情況下用查準率-召回率(Precision-Recall,P-R)曲線來顯示目標檢測器在準確率和召回率之間的平衡。對于每一個船舶類別,該類別的平均準確率定義為P-R曲線下方的面積;平均準確率均值是所有類別的平均準確率的均值。AP和mAP的計算公式為:

其中N表示所有目標類別的數量。
3)幀率(Frames Per Second,FPS):目標檢測網絡每秒鐘能夠檢測的圖片數量,用該指標評價目標檢測網絡的檢測速度。
為了獲得更高性能的訓練模型,在網絡訓練階段會使用多種有利于網絡訓練的方法,這些方法對神經網絡的影響效果如表4所示。其中,“√”表示使用了對應的方法。由于原始的數據集樣本數量太少,所以直接使用YOLOv3進行訓練的準確率比較低,同時由于原始的先驗錨框尺寸與船舶目標形狀差異較大,得到的預測框的交并比值也比較低,這說明對船舶目標的定位不夠準確。使用了合成惡劣天氣數據增強方法之后,有效擴充了訓練樣本的數量,從而提高了網絡的魯棒性和泛化能力,使算法的準確率提升了5.24 個百分點。在網絡訓練時使用重新設計的先驗錨框,與船舶的形狀更加匹配,使網絡的平均交并比提高了6.93 個百分點,說明網絡輸出的預測框與人工標注的真實邊界框重合程度更高,對船舶的定位更加準確,而且在與其他方法組合使用時,網絡的平均交并比還會進一步提升。在網絡的后處理階段,在傳統非極大值抑制算法中加入了高斯軟閾函數,主要是為了解決重合目標的漏檢測問題。從表5可以看出,使用了改進后的非極大值抑制算法可以提高算法的召回率,這意味著有一些傳統YOLOv3算法無法檢測出來的船舶目標被檢測出來,其中散裝貨船、礦砂船和漁船召回率提升較多,主要是在這三種類型的船舶相互重合的場景多。因為有一些重合的船舶被正確檢測,也讓整個網絡的檢測精度有了略微的提高。使用了3種訓練方法的組合對YOLOv3算法進行訓練,得到的模型比原始模型的檢測精度提升了5.85 個百分點,平均交并比提升了6.86個百分點,說明了在網絡訓練階段使用合成惡劣天氣數據增強、根據檢測對象重新設計先驗錨框和加入高斯軟閾值函數的非極大值抑制算法的組合訓練方法能夠有效提升網絡的性能。

表4 不同改進方法對算法性能的提升Tab.4 Performance improvement of algorithms by using different improvement methods

表5 使用不同非極大值抑制算法的船舶召回率 單位:%Tab.5 Recall of ships using different NMS algorithms unit:%
在使用網絡組合訓練方法的基礎上,在網絡預測層加入對預測框的不確定性回歸使網絡整體性能提升了6.81 個百分點,平均交并比提高5.2 個百分點,這證明了加入預測框不確定性回歸減小了YOLOv3 算法的定位誤差。如果只使用改進的二值交叉熵損失函數進行網絡訓練,也會使YOLOv3 算法的檢測精度提高3.93 個百分點,平均交并比有小幅提升,說明使用改進后的損失函數可以有效提高算法的性能。
最后,使用所提改進方法的組合模型進行網絡訓練,本文將該模型稱為增強YOLOv3,實驗結果顯示增強YOLOv3相較于使用單獨改進方法的模型,算法性能均有提升,主要原因是每一項改進方法都針對傳統YOLOv3 算法的某一問題進行改進,而使用組合的改進方法可以有效解決傳統YOLOv3 算法在船舶目標檢測任務中存在的問題,取得較好的檢測效果。實驗結果表明,與傳統YOLOv3 算法相比,增強YOLOv3 算法的檢測精度提升了21.12%,平均交并比提升了27.60%。
為了驗證加入預測框不確定性回歸后算法對目標定位誤差是否有改進,實驗在YOLOv3的最后預測層加入預測框不確定性信息,對預測框坐標的損失函數使用負對數似然損失函數替換均方誤差損失函數,而對置信度和類別概率仍然使用傳統的二值交叉熵損失函數,所得模型稱為帶有預測框不確定性信息 的 YOLOv3(YOLOv3 with Prediction Box Uncertainty Information,YOLOv3-PBUI)。傳統YOLOv3 算法在最后的每個尺度的預測層輸出的張量維度為S×S×(5+n)×3,其中S×S是對特征圖劃分的網格單元的數量,5指的是5個預測信息,3表示每個網格單元預測的3個預測框,n表示共有n個目標類別。加入預測框不確定性回歸信息后,YOLOv3-PBUI每個尺度的預測層輸出的張量維度變為S×S×(9+n)×3,本文中共有6個船舶類別,所以n=6,輸出的張量維度為S×S×45。
分別對傳統YOLOv3 算法和YOLOv3-PBUI 算法進行訓練,得到訓練好的模型。使用測試集進行測試,設置IoU 閾值為0.5,得到的TP 值和FP 值如表6所示,圖8顯示了部分樣本的檢測結果。由圖8 可以看到,對于一些非常小的船舶目標,傳統YOLOv3算法無法準確檢測,而改進后的算法可以準確對這些小船舶目標進行檢測,從而增加了算法的TP值,說明改進后的算法可以對更多的正樣本準確檢測;對于部分船舶目標,雖然傳統YOLOv3算法可以檢測出該船舶,但是錯誤識別了該船舶的類型,從而導致了FP值很高,而改進后的YOLOv3-PBUI算法可以同時準確定位船舶位置和識別船舶類型,比傳統YOLOv3算法更加魯棒。同時,因為改進后的YOLOv3-PBUI算法可以更好地學習目標的位置信息,所以可以消除對船舶的錯誤定位。從表6 可以看出,加入預測框不確定性回歸之后的YOLOv3-PBUI 算法FP 值降低了35.42%,而TP 值也提高了1.83%,這是改進模型檢測精度提高的主要原因。對于海事視頻監控來講,FP值降低說明能夠準確識別船舶類型,這對重點關注某一類型的船舶或防止船舶碰撞是有幫助的,而TP值增加說明可以準確檢測出更多的船舶數量,降低漏檢的可能性,這對統計船舶交通流量和監控船舶行為十分必要。

圖8 YOLOv3和YOLOv3-PBUI的檢測結果Fig.8 Detection results of YOLOv3 and YOLOv3-PBUI
為了驗證改進后的二值交叉熵損失函數是否有助于解決傳統YOLOv3算法存在的類別不平衡問題,實驗用改進的二值交叉熵損失函數替換了傳統二值交叉熵損失函數,得到的實驗結果如表7所示。在訓練集中,客船的樣本數量是最少的,不足漁船和礦砂船樣本數量的1/5,不足所有訓練樣本的5%,存在著樣本類別的不平衡問題,同時訓練樣本中有很多圖像中只有一個或幾個極小的船舶目標,而傳統YOLOv3算法在3個尺度的預測層共產生10 647個預測框,存在著嚴重的前景、背景不平衡問題,但是實驗結果顯示改進后的模型對客船這一類船舶的檢測準確率提高最多,提高了8.08個百分點,而對樣本數量相對少的船舶類別的檢測準確率都有不同程度的提高,說明改進后的損失函數可以使網絡專注于這些比較困難的樣本的學習,提高了網絡的性能。而測試樣本中大多數小船舶目標都是漁船,而且漁船的測試樣本數量是最多的,雖然改進后的網絡對漁船的檢測性能有略微的降低,但是從整體上看改進的二值交叉熵損失函數對解決類別不平衡問題還是有效果的,對漁船的性能損失可以通過使用其他改進方法進行彌補。

表7 使用不同損失函數的船舶平均精度 單位:%Tab.7 mAP of ships using different loss functions unit:%
為了進一步說明本文所提方法的優越性,增強YOLOv3算法將與兩種典型的基于背景建模的目標檢測方法進行比較分析,即低秩復原(Low Rank Recovery,LLR)算法[21]和魯棒主成分分析(Robust Principal Component Analysis,RPCA)算法[22]。由于傳統的船舶目標檢測往往作為船舶目標跟蹤的前序步驟,所以需要使用視頻數據進行實驗。本文選擇了兩段采集于武漢二七長江大橋的監控視頻,分別使用三種檢測算法進行檢測,得到的結果如圖9所示。由于傳統目標檢測算法使用人工設計的特征表達,特征設計往往比較簡單,所以無法對不同船舶的類別進行識別。水面動態背景會導致傳統檢測算法將水面檢測為前景,造成誤檢測非常多。背景建模方法獲得的前景往往很難是一個閉合的整體,所以容易導致對同一個船舶的多個檢測,使檢測的準確率下降。而基于深度學習的增強YOLOv3算法在網絡訓練中只學習前景的特征而忽略了背景,所以有效解決了傳統目標檢測算法存在的問題,而且可以識別出不同類型的船舶,更符合智能視頻監控的需要。

圖9 增強YOLOv3算法與傳統方法檢測結果比較Fig.9 Detection result comparison of the enhanced YOLOv3 algorithm and traditional methods
本文還與目標檢測中常用的幾種深度學習算法進行了對比實驗,包括單次目標檢測算法YOLOv2、SSD 和兩次目標檢測算法Faster R-CNN。實驗使用同一訓練集對每種算法進行訓練,網絡訓練的相關參數都使用對應論文中建議的參數,在網絡訓練過程中輸入圖像的尺寸也使用論文中建議的輸入尺寸,其中Faster R-CNN 算法限制輸入圖像的最長邊為1 000 像素值,并對輸入圖像等比例縮放。通過官方評估算法使用同一測試集對算法性能進行評估,各檢測算法的性能如表8 所示,由于SSD 算法的官方評估算法沒有提供對單種類別的平均精度,所以表8中沒有列出相關結果。具有代表性的4種檢測算法的檢測效果如圖10所示。

表8 不同目標檢測網絡性能比較Tab.8 Performance comparison of different object detection networks
實驗結果表明,本文所提出的增強YOLOv3 算法表現出了較好的性能,對每一種船舶類別的檢測效果相對平均,而另外4 種目標檢測算法對于樣本數量最少的客船檢測效果,相比樣本數量較多的船舶類別的檢測效果都有極大的差距,這說明增強YOLOv3 算法很好地解決了樣本類別不平衡的問題。圖10的檢測效果顯示增強YOLOv3算法能夠準確對圖像中的船舶目標進行定位和種類識別,而其他3 種算法漏檢測、對同一個船舶的多重檢測和錯誤識別船舶類型的現象嚴重,這說明增強YOLOv3 算法對船舶目標的定位更加準確,原因是增強YOLOv3 算法增加了對預測框的不確定性回歸,可以使網絡更好地學習目標的位置信息,加入高斯軟閾值函數后的非極大值抑制算法也比傳統非極大值抑制算法更加穩定。作為兩次目標檢測算法,Faster R-CNN 受到檢測速度的制約,無法達到實時檢測的要求,而YOLOv3 算法在所有算法中表現出了最快的檢測速度,這也是單次目標檢測算法最大的優點。增強YOLOv3 算法因為需要預測更多的信息,所以檢測速度略有下降,但仍然快于其他檢測算法,可以滿足實時檢測的需要。增強YOLOv3 算法使用了分辨率更高的輸入圖像,這是因為分辨率高的圖像包含更多的細節特征,有助于網絡的學習,可以在一定程度上獲得檢測性能的提升。
圖11展示了在不同場景下增強YOLOv3算法的檢測效果,在低照度條件和霧天環境下都能準確檢測出船舶目標,這得益于在網絡訓練過程中使用了合成惡劣天氣圖像的數據增強方法,提高了網絡在各種天氣條件下的穩定性和泛化能力。增強YOLOv3算法在船舶目標有大部分重疊的情況下和船舶目標與通航背景極為相似的情況下也都可以準確對船舶進行檢測,適用于各種復雜場景下的船舶目標檢測。通過多項實驗表明,本文所提出的增強YOLOv3算法檢測精度可以達到87.74%,遠超其他目標檢測算法,對船舶航行中遇到的多種復雜場景都有良好的檢測的結果,是兼具檢測精度和檢測速度的船舶目標檢測算法。

圖10 不同目標檢測算法的檢測結果Fig.10 Detection results of different object detection algorithms

圖11 增強YOLOv3算法在不同場景下的船舶目標檢測結果Fig.11 Ship detection results of the enhanced YOLOv3 algorithm under different scenes
傳統YOLOv3 目標檢測網絡無法準確檢測復雜場景下的船舶目標。本文通過在YOLOv3 網絡的預測層加入對預測框的不確定性回歸并重新改進了損失函數,使用組合網絡訓練方法提出了適合船舶目標檢測的增強YOLOv3 算法。實驗結果表明預測框不確定性回歸有效降低了對船舶目標的定位誤差,改進的二值交叉熵損失函數解決了樣本類別和前景、背景不平衡的問題,有助于算法性能的提升。在網絡訓練階段使用重新設計的先驗錨框提高了預測框位置的準確度,使用數據增強策略提高算法在各種天氣條件和復雜通航背景下的檢測能力,增強網絡泛化能力和魯棒性,加入高斯軟閾值函數的非極大值抑制算法有效解決了船舶重合時容易漏檢測的問題。通過與其他算法的對比實驗驗證了增強YOLOv3 算法有效平衡了檢測的精度和速度,適合復雜場景下的船舶目標檢測。