許 小 華,陳 豹,王 海 菁,包 學 才
(1.江西省水利科學院,江西 南昌 330029; 2.南昌工程學院 信息工程學院,江西 南昌 330099; 3.南昌工程學院 江西省水信息協同感知與智能處理重點實驗室,江西 南昌 330099 )
內河航運是中國綜合立體交通運輸系統的重要組成部分,對推動經濟發展和擴大對外開放發揮了不可替代的作用。隨著建設投資金額的不斷提升,航運系統日益完善,貨物裝載量和吞吐量逐年提高[1]。然而,內河航運暴露出一些問題亟待解決,如船舶間的相互碰撞嚴重威脅航運安全[2]。此外,運砂船違規停靠給河道管理帶來挑戰,采砂船違規作業對水生態環境造成不可逆的破壞。因此,加強河湖過往船舶的監管變得極為重要。
常規的河湖船舶目標檢測算法主要是基于支持向量機(SVM)[3]和主成分分析(PCA)的算法,這些算法在白天天氣良好的環境下對船舶檢測識別效果較好,但在強光照、水面波動、物體倒影和船舶之間相互遮擋等復雜河湖環境下,識別效果精度較差,給全天候有效監管帶來了挑戰。
近年來,基于深度學習的目標檢測算法得到了快速發展,目標檢測精度得到大幅提升,主要分為兩階段(Two-Stage)和一階段(One-Stage)兩類目標檢測算法。兩階段的目標檢測算法專注于對建議框的尋找和目標分類,如Lin等[4]利用壓縮與激勵機制提升兩階段R-CNN檢測算法性能,并使用編碼比例向量有效抑制子特征圖的信息冗余;Nie等[5]在Mask R-CNN檢測算法的特征金字塔網絡(FPN)中添加自下而上的短接結構,使用通道與空間注意力機制提升重要像素特征的相應權重,實現像素級別的船舶檢測;針對樣本數據利用不充分的問題,李健偉等[6]利用生成對抗網絡進行特征變換,獲取多尺度與旋轉角的檢測圖擴充樣本,提升不同場景下船舶檢測的適應性;You等[7]將場景分割功能引入檢測框架,使用邊緣概率加權合并方法檢測特征圖與非目標區域,抑制近岸相似物體對船舶檢測的干擾。而一階段的目標檢測算法則專注于一次性得到目標船舶的邊界框和類別,以保證船舶檢測實時性。如李暉暉等[8]將CReLU引入SSD的淺層網絡,利用FPN逐級融合深淺層特征圖有效檢測出碼頭中的密集船舶;楊龍等[9]選取Darknet-53作為主干網絡,設計了新的二分類損失函數,改善訓練過程中難易樣本失衡;針對大尺度圖像中船舶目標漏檢較多的問題,王璽坤等[10]將YOLOv3-Tiny與特征映射模塊增強預測層融合,以提高對小尺度密集目標的檢測精度;為提升模型的可移植性,Zhou等[11]利用堆疊的小尺度卷積充分提取圖像特征,改進雙向密集連接模塊降低網絡復雜度;Chen等[12]提出端到端的全卷積Anchor-Free網絡預測船頭、船尾以及船舶中心3類關鍵點及角度生成包圍框;Zhang等[13]在CenterNet基礎上分別利用降低假陰性與假陽性樣本數,將雙向特征金字塔與YOLOv3檢測網絡相結合,以提升相似并排船舶的檢測精度;Gao等[14]提出具有密集注意力機制的Anchor-Free網絡,通過密集連接與迭代融合提高網絡的泛化性能;劉荻等[15]提出了由多維特征聚合模塊與注意力特征重構模塊組成的特征重聚焦策略。
上述目標檢測算法的優點是對復雜河面場景下的船舶檢測精度較高,但缺點是模型參數量較大,操作過程相對復雜,推理速度較慢,無法滿足邊緣計算設備實時性的要求。
因此,為解決這一問題,提出一種基于改進YOLOv4-Tiny的輕量化檢測模型,模型引入Sigmoid 加權線性單元(SiLU)激活函數來提高網絡的特征映射效果,并通過改進空間金字塔池化以適應不同尺度的輸入圖像。此外,通過引入卷積塊注意力模塊(CBAM)以加強深層網絡對信息的傳遞,并對路徑聚合網絡(PANet)進行改進,以加強不同尺度特征層的信息融合。
為實現河面船舶識別任務的要求,對YOLOv4-Tiny算法進行一系列改進,通過引入SiLU激活函數,在兩個不同大小的有效特征層后面引入CBAM,并在大小為(19,19,512)的有效特征層后面引入改進的空間金字塔池,利用改進的PANet結構加強特征融合。此外,使用Mosic數據增強對數據集進行預處理,并利用α=0.005的標簽平滑正則化提高模型的泛化性能和準確率,同時結合余弦退火來實現學習率衰減。基于改進YOLOv4-Tiny的目標檢測網絡架構如圖1所示。

注:CBS為CONV+BN+SiLU激活函數組成的基本卷積塊,CONV為卷積操作,BN為批量歸一化(Batch Normalization)操作,SiLU為Sigmoid Weighted Liner Unit激活函數,CSP為跨階段殘差(Cross Stage Partial)結構,Concat為通道拼接的特征融合方式,Maxpool為最大池化下采樣操作,CBAM為卷積塊注意力模塊,Upsample為上采樣操作,Downsample為利用卷積實現的下采樣操作,輸入為608×608像素尺度的圖片,輸出為YOLOHead的兩個輸出張量,其大小分別為(38,38,33)和(19,19,33)。圖1 基于改進YOLOv4-Tiny的目標檢測網絡架構Fig.1 Object detection network structure based on improved YOLOv4-Tiny
激活函數是確定神經網絡輸出的數學方程式,該函數加在每個神經單元后面,神經元的輸入經過線性映射后,再經過激活函數得到最后的輸出。激活函數的作用是為神經網絡加入非線性映射。因此,選擇一種合適的激活函數對提高網絡的整體性能發揮著重要作用。YOLOv4-Tiny網絡使用的是帶泄露修正線性單元(Leaky ReLU)激活函數,是ReLU[16]激活函數的變體。該函數的特點是:若輸入是正值,直接線性映射輸出;若輸入是負值,線性映射成絕對值很小的輸出,其優點是導數不為零,減少了靜默神經元的出現,在輸入為負值時允許基于梯度的學習。但Leaky ReLU的缺點是采用基于梯度的學習收斂速度很慢,而且實驗結果表明其實際效果并不總是優于ReLU函數。另外一種具有高性能的神經網絡激活函數是高斯誤差線性單元(Gaussian Error Linear Units,GELU)[17]。GELU的非線性變化是一種符合預期的隨機正則變換方式,在尊重神經元值的同時結合Dropout和ZoneOut方法,但是GELU激活函數過于復雜,對于YOLOv4-Tiny這種輕量級網絡達不到最優效果。
基于上述原因,本文引入性能表現優秀且簡潔的SiLU激活函數。SiLU激活函數是Swish激活函數[18]的簡化版,具備無上界、有下界、平滑和非單調的特點。該函數將正值輸入線性映射為輸出,將負值輸入進行一個非線性映射,輸出為接近于零的值。在零點附近時,不同于Leaky ReLU的硬零映射,SiLU為一個光滑的擬合函數,避免了零點導數不存在而引起的梯度消失和梯度爆炸問題,從而在深層模型上的學習效果更好。
SiLU激活函數公式如下:
f(x)=x*sigmoid(x)
(1)
因此導數為
f′(x)=f(x)+sigmoid(x)[1-f(x)]
(2)
式中:x為激活函數的輸入,f(x)為SiLU激活函數的輸出;f′(x)為SiLU激活函數的導數。
當提取圖片特征時,卷積神經網絡需要提取重要的特征,同時抑制不重要的特征,無法通過手工調整來實現,因此如何讓神經網絡自適應地注意感興趣的區域并且提高其表達能力非常重要。為此,Woo等[19]提出卷積塊注意力模塊CBAM(Convolutional Block Attention Module),該模塊由通道注意力模塊(Channel Attention Module,CAM)和空間注意力模塊(Spatial Attention Module,SAM)組成。
CAM模塊利用特征通道間的關系生成通道注意力特征圖,將每個通道看作一個特征檢測器。CAM模塊首先使用平均池化和最大池化對輸入特征圖F∈C×H×W在空間維度上進行壓縮,得到兩個不同的一維特征圖和使用平均池化可以有效學習到目標具體大小范圍的信息,使用最大池化可以提取到區分不同目標的信息,同時使用兩者可以最大程度上提升通道注意力的效果。其次,將這兩個特征圖輸入共享的多層感知機進行處理,然后將結果相加,最后通過Sigmoid激活函數生成權值介于0~1之間的通道注意力特征圖Mc∈C×1×1,將此特征圖乘以原輸入特征圖,即得到CAM模塊的輸出F′∈C×H×W。

CBAM結構如圖2所示,對于給定的輸入特征圖F∈C×H×W,CBAM首先生成一維通道注意力特征圖Mc∈C×1×1,并與輸入特征圖進行自適應特征加權相乘得到F′∈C×H×W,然后根據F′∈C×H×W生成二維空間注意力特征圖Ms∈1×H×W,并與之進行自適應特征加權相乘得到F″∈C×H×W。此過程如下:

圖2 CBAM模塊結構Fig.2 Structure of CBAM
F′=Mc(F)?F
(3)
F″=Ms(F′)?F′
(4)
式中:?為張量元素逐個相乘,Mc(F)為一維通道注意力特征圖,Ms(F′)為二維空間注意力特征圖,F為輸入特征圖,F′為經通道注意力加權的特征映射,F″為經空間注意力加權的特征映射。
對于卷積神經網絡來說,其網絡結構固定且層數和權重的維度基本不變,因此需要統一輸入圖片的尺寸來滿足卷積神經網絡中分類器層的固定尺度需求。通常統一輸入尺寸的方式包括裁剪圖片或者在圖片周圍添加灰條,但這會帶來圖片信息的丟失和圖片畸變等問題。為了解決此問題,He等[20]提出了空間金字塔池化(Spatial Pyramid Pooling,SPP)網絡,該網絡能對神經網絡提取的不同尺度特征層進行池化和融合操作,并得到固定尺度的輸出。在YOLOv4-Tiny的骨干網絡之后引入改進的SPP網絡來實現對于不同尺度特征層的融合,增強特征層對于不同大小目標的提取能力。YOLOv4中的SPP使用大小分別為5×5,9×9,13×13的池化核進行最大池化處理。卷積神經網絡其淺層網絡提取內容是圖像局部紋理的位置和小目標信息,其深層網絡提取內容是整體語義和大目標信息。因此,對于越深的網絡,其特征層映射到原圖的感受野越大,所以使用較大的池化核提取特征;對于較淺的網絡,其特征層映射到原圖的感受野較小,因此使用較小的池化核進行特征提取。YOLOv4-Tiny是YOLOv4的簡化版,其網絡層數比YOLOv4少。如圖1所示,改進SPP網絡使用大小為3×3,7×7,11×11的池化核進行最大池化,改進CSPDarknet53-Tiny主干網絡的第二個有效輸出特征層先經過改進SPP模塊處理,然后進入改進特征融合網絡。
改進SPP的具體實現過程為:首先使用卷積核大小分別為1×1,3×3,1×1,步長為1的3個CBS卷積塊對輸入的特征層進行處理,通道數由512變為256;其次使用3個大小分別為3×3,7×7,11×11的池化核進行最大池化處理,每個池化層輸出的通道數都為256;然后將這3個輸出與改進SPP的輸入在通道維度上進行拼接,通道數變為1 024;最后再經過卷積核大小分別為1×1,3×3,1×1,步長為1的3個CBS卷積塊處理得到改進SPP的輸出,其通道數變為256。改進SPP模塊在對輸入有效特征層進行多尺度最大池化和特征融合的同時,也增加了網絡對于大目標的感受野,對于輸入特征信息尤其是大目標語義信息提取更為充分。

YOLOv4-Tiny的特征融合部分使用的是特征金字塔網絡(Feature Pyramid Network,FPN)[21]。FPN對語義信息更豐富的高層次特征進行上采樣后,與細節信息更為豐富的低層次特征在通道維度上進行拼接,來進行特征融合。FPN使用了自下而上的特征融合方式,從深層特征往上與淺層特征相結合。然而此FPN結構比較簡單,導致網絡不同尺度的特征融合不夠充分,而且對于細節特征信息的利用率過低,導致模型在復雜場景下檢測遮擋船舶目標時精度不高。
為了解決上述問題,引入路徑聚合網絡(Path Aggregation Network,PAN)[22]并對其進行改進作為特征融合網絡。具體改進方法如下:分別在PAN的上采樣層和下采樣層后加入CBAM以及在第二個輸出Feat2之前加入CBS形成改進的PAN結構,其接收來自CBAM的輸出特征層Feat1和改進SPP的輸出特征層Feat2,共同進行自下而上和自上而下的特征融合。在自下而上的特征融合路徑中,輸入Feat2經過卷積核大小為1×1,步長為1的CBS處理、上采樣處理和CBAM處理后,形狀變為(38,38,128),然后與Feat1在通道上進行拼接實現特征融合。該特征圖有兩個作用:一個是作為改進PAN的第一個輸出,特征圖大小變為(38,38,384);另一個是在自上而下的路徑中,經過一層卷積核大小為3×3,步長為2的CBS進行下采樣處理來減小特征圖的尺度,特征圖大小變為(19,19,256),再經過一次CBAM處理之后,與Feat2在通道維度上進行拼接,再一次融合兩個不同尺度的特征,最后經過卷積核大小為1×1,步長為1的CBS整合特征得到改進PANet的第二個輸出,特征圖大小為(19,19,256)。
改進PAN的兩個不同尺度輸出特征圖分別經過各自對應的盒類預測網絡YOLOHead處理后,輸出的船舶分類預測信息、船舶置信度預測信息和錨框坐標預測信息,為YOLOv4-Tiny網絡的最終輸出結果。其中,盒類預測網絡YOLOHead由一個卷積核大小為3×3的CBS卷積塊和一層卷積核大小為1×1的普通卷積組成,其輸出數據中的錨框坐標信息是相對于先驗框坐標信息的偏移量。
使用公開船舶目標檢測數據集SeaShip(7 000張)驗證本文所提算法的有效性,數據集包括河面上常見的六大類船舶,分別為運砂船、普通貨船、散裝貨船、集裝箱船、客船和漁船。數據集格式為PASCAL VOC。訓練時按照9∶1的比例劃分訓練驗證集(6 300張)和測試集(700張),在訓練驗證集中也按照9∶1的比例劃分訓練集(5 670張)和驗證集(630張)。其中,訓練集的作用是設置分類器與回歸器的參數,再訓練分類與回歸算法,最后擬合出船舶檢測算法的多個分類回歸器;驗證集的作用是找出識別精度最高的算法權重,對訓練出的各個算法權重進行檢測,并記錄算法準確率,選出精度最高的算法所對應的權重參數;測試集的作用是對經過訓練集和驗證集得出的最優算法進行預測,衡量該算法的效果[23]。
基于改進YOLOv4-Tiny的河湖船舶目標檢測算法的具體驗證流程如圖3所示。

圖3 基于改進YOLOv4-Tiny的目標檢測算法驗證流程Fig.3 Verification process of the object detection algorithm based on improved YOLOv4-Tiny
本文采用平均精度均值(mAP)和每秒推理幀數(FPS)作為算法檢測精度和速度的指標。
在河面船舶檢測任務中,mAP即為6類船舶檢測平均精度(AP)的均值,其計算公式如式(5)所示:
(5)
式中:N為船舶類別數,i為某一類船舶,APi為第i類船舶的檢測平均精度,其計算公下:

(6)
式中:P(R)為檢測精確率P和召回率R兩者的映射關系。
(7)
(8)
式中:TP為被正確劃分到正樣本的數量,FP為被錯誤劃分到正樣本的數量,FN為被錯誤劃分到負樣本的數量。
每秒推理幀數(FPS)是指網絡一秒時間內識別的圖像幀數,用于衡量算法的推理速度,每秒推理幀數越高表示算法推理越快,它主要取決于算法前向傳播、閾值篩選和非極大值抑制操作的復雜度。
本文實驗平臺計算機配置為Intel Core i5-9500中央處理器,主頻2.90 GHz,運行內存16 GB,顯卡為Nvidia GeForce RTX3060,顯存12 GB,操作系統為Windows 10,并行計算架構版本為CUDA11.1,深度學習加速庫版本為cuDNN8.0.5,深度學習框架為PyTorch1.7.1,采用Python3.7作為編程語言。使用PASCAL VOC數據集的預訓練權重對改進的CSPDarknet53-Tiny主干網絡進行權重初始化,以獲得更好的初始性能。此外,訓練前使用Mosic數據增強對數據集進行預處理。
算法的訓練超參數設置具體包括:解凍前每批次訓練樣本數為32,學習率為0.001;解凍后每批次訓練樣本數為16,學習率為0.000 1。采用自適應矩陣估計(Adam)優化器優化算法,使用標簽平滑策略,同時利用余弦退火算法更新學習率。遍歷1次全部訓練驗證集數據稱為1個Epoch,經過200個Epoch訓練使代價函數最小,得到最優算法。
傳統YOLOv4-Tiny算法和改進YOLOv4-Tiny算法對于河湖不同類型船舶的識別效果如表1所列。表中mAP為算法對測試集中所有6種類型船舶識別平均精度的均值。改進YOLOv4-Tiny算法檢測平均精度,比傳統YOLOv4-Tiny算法提高了1.27%,這是

表1 YOLOv4-Tiny算法改進前后的檢測效果對比Tab.1 Comparison of detection effects of YOLOv4-Tiny model before and after improvement
由于改進YOLOv4-Tiny算法加入了改進的SPPNet結構及改進的PAN結構,從而加強了高層特征語義信息的提取,提高了算法對船舶目標的檢測能力。此外,改進的YOLOv4-Tiny算法模型大小為37.34 MB,每秒的推理幀率為81.55幀/s。重要的是,算法的主干網絡僅引入了簡化的激活函數,改進后的YOLOv4-Tiny算法不僅提高了檢測精度,而且符合實時性的要求。
使用相同的河湖船舶數據集分別訓練YOLOv5s、YOLOX-Tiny[24]、傳統YOLOv4-Tiny和改進YOLOv4-Tiny 4種目標檢測算法,分別對昏暗、模糊、強光、遮擋重疊和部分目標4種場景下的河湖過往船舶進行識別。不同檢測算法對于4種場景下船舶檢測效果的對比結果如圖4所示。通過綜合對比發現,改進的YOLOv4-Tiny目標檢測算法能準確識別出昏暗、模糊、強光、遮擋重疊和船舶目標不全場景下的河湖過往船舶,具有最高的識別率,而其他3種目標檢測算法均出現了漏檢、誤檢以及重復檢測的情況。因此,本文改進YOLOv4-Tiny算法具有很好的魯棒性,可應用到實際復雜天氣環境下的河湖船舶目標檢測。以運砂船目標檢測為例,結合智能追蹤技術,可對重點關注的運砂船只及其行為及時發現和預警,有效應用于河湖采砂監管中,提升采運砂監管效能[25]。

圖4 4種場景下不同目標檢測算法的船舶檢測效果Fig.4 Detection effects of ships under four scenarios for different object detection algorithms
此外,YOLOv4-MobileNetV3、YOLOv5s、YOLOX-Tiny、傳統YOLOv4-Tiny和改進YOLOv4-Tiny等5種目標檢測算法對河湖船舶的檢測性能對比結果如表2所列。從表2可以看出,本文提出的改進YOLOv4-Tiny目標檢測算法對于運砂船、集裝箱船、客船和漁船的檢測平均精度均有較大的提升,相對于傳統YOLOv4-Tiny分別提升了1%,1.34%,1.54%和3.51%。

表2 不同目標檢測算法的檢測識別性能對比Tab.2 Comparison of detection performance for different object detection algorithms
在推理速度方面,改進YOLOv4-Tiny算法的推理速度比YOLOv4-MobileNetV3快近1倍,推理速度超出YOLOv5s 23.09幀/s,超出YOLOX-Tiny 29.08幀/s。由于本文提出的改進算法引入了改進模塊,增加了一些參數量,所以推理速度略低于傳統YOLOv4-Tiny,不過仍然達到了81.55幀/s。綜上所述,改進的YOLOv4-Tiny目標檢測算法模型占據了較少的內存和計算資源,在實現高精度推理的同時滿足了實時性要求,適合邊緣計算設備的部署。
(1) 本文提出了一種基于改進YOLOv4-Tiny的輕量級目標檢測算法,實現對于不同自然場景下河湖過往船舶的目標檢測識別。在傳統YOLOv4-Tiny算法的基礎上引入性能優越的SiLU激活函數,在改進的主干網絡后面加入CBAM注意力模塊和改進的SPP網絡,并在特征金字塔網絡FPN中加入CBAM注意力模塊和自上而下的連接,形成改進的特征融合網絡,以提高算法在實時條件下對于不同類型船舶的檢測精度。實驗結果表明,在使用RTX3060圖形處理器的條件下,結合Mosaic數據增強、余弦退火學習率衰減和標簽平滑,改進的YOLOv4-Tiny算法對于河湖船舶識別的平均精度均值達到98.67%,比原算法提升了1.27%,推理速度達到81.55幀/s,占用內存僅為37.34 MB,滿足河道沿岸邊緣計算設備對復雜場景下河湖船舶精準快速識別的要求。
(2) 對于復雜天氣環境下河湖中實際檢測船舶識別需求,針對4種不同自然場景下的河湖船舶測試集,分別測試了YOLOv4-MobileNetV3、YOLOv5s、YOLOX-Tiny、傳統YOLOv4-Tiny和改進YOLOv4-Tiny目標檢測算法的檢測效果,并進行檢測精度和推理速度的對比分析。實驗結果表明,本文提出的改進YOLOv4-Tiny目標檢測算法在滿足實時性的同時達到了最高的檢測精度,在與其他先進目標檢測算法的綜合比較中取得了最好的效果。