朱偉東 何月順 陳 杰 任維民 孫一蓬
(1.東華理工大學信息工程學院 南昌 330013)(2.江西經濟管理干部學院 南昌 330088)
海洋中的海參、海膽、扇貝、海星等生物含有豐富的蛋白質,且易于被人體吸收。世界上一半以上的人口依賴海洋生物作為蛋白質的主要來源。隨著人口在不斷增長,海洋生物的需求持續攀升,水下機器人捕撈爆發式增長,如果不加以選擇、盲目的捕撈,會誤捕很多不是目標的物種,會對其造成傷害甚至死亡,嚴重破壞了海域資源和海洋生態系統[1]。近年來我國大力發展海洋牧場,將深度學習方法應用在海洋水產業中,推動海洋經濟的高質量發展,對保護海洋生態環境具有重要意義[2]。
隨著深度學習和計算機視覺的迅速發展,大量學者著手研究水下目標檢測任務。洪亮等[3]提出一種基于改進YOLOv3 的海珍品實時檢測方法,在數據預處理階段引入馬賽克(Mosaic)數據增強方法,豐富了水下海珍品的背景和數目,提升了圖像的檢測效果,但原始Mosaic 數據增強最多將4 張圖片進行隨機裁剪、縮放等操作拼接到一張馬賽克圖片上,會產生大量無用的灰邊,影響模型訓練的效率。朱世偉等[4]采用類加權損失方法來提升YOLO算法的水下目標檢測性能,但需要根據數據樣本的特征,人為地給每一個樣本類別設計適當的權重來獲得最佳的檢測效果,效率較低。李寶奇等[5]將重構SSD算法中的基礎網絡和附加特征提取網絡,通過添加可擴張可選擇模塊ESK 以提高合成孔徑聲吶圖像水下目標的檢測精度,但計算其合適的擴張系數和多尺度系數過程繁瑣,計算量較大。林森等[6]提出一種改進YOLOv5 的水下珍品檢測方法,通過融合CBAM 注意力機制、添加檢測層等方式改進算法結構,來提升模型檢測精度,但融合CBAM、添加檢測層操作都會給模型引入額外參數量。
基于上述研究,本文提出了一種改進的YOLOv5 海洋生物檢測算法,有效地解決了目前海洋生物檢測模型在復雜環境下對小目標存在特征提取能力不足、檢測精度低的問題。改進思路包含兩個方面:一方面是改進Mosaic 數據增強,豐富了小目標數據集的數目,用于提高模型對小目標檢測的能力;另一方面在YOLOv5 的主干網絡引入SimAM注意力模塊,對海洋生物特征圖分配3D 注意力權值,在不增加模型參數量的情況下,加強了模型提取特征的能力,進而提高目標的檢測精度。
基于深度學習的目標檢測算法主要分為兩類:兩階段檢測器(Two-stage detector)和單階段檢測器(One-stage detector)。常見的Two-stage detector 有Faster R-CNN[7],該類算法通常檢測精度較高,但檢測速度較慢。具有代表性的One-stage detector有SSD[8]、YOLO系列[9~10]等,該類算法通常比Two-stage detector 速度更快、輕量、應用范圍更廣。結合應用場景,本文選擇One-stage detector 中的YOLOv5 算法v6.0 版本作為海洋生物分類檢測的模型,將全國水下機器人大賽數據集輸入到模型中訓練,使用訓練好的模型來實現海洋生物的檢測。
YOLOv5 算法共有五個網絡模型:YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x[11],網絡模型參數如表1所示。其中,網絡深度決定模型C3結構的重復迭代次數,網絡寬度決定模型卷積核的通道數,YOLOv5n 是v6.0 版本新提出的模型,相比較YOLOv5s 模型,網絡深度維持0.33 不變,但通道數從0.50減少到0.25,檢測精度有所損失。綜合考量,本文選擇YOLOv5s 網絡為代表,其網絡結構如圖1所示。

圖1 YOLOv5s網絡結構圖
YOLOv5s 網絡結構主要包括輸入端(Input)、主干網絡(Backbone)和預測分類器(Head)三個部分。
Input 部分,采用Letterbox 自適應圖片縮放方法把原圖的尺寸等比例縮放到標準尺寸,然后剩下部分采用灰邊填充,計算公式如下:

其中,w0和h0分別表示原始圖片的寬度和高度,w1和h1分別表示標準尺寸的寬度和高度,本網絡模型的標準尺寸為640×640,r為收縮比,w和h分別表示收縮后圖片的寬度和高度。使用該方法的目的是為了保持原始圖片的寬高比,減少圖片的失真率,提高了模型的訓練效率。
Backbone 部分的核心為CBS、C3、SPPF 結構。CBS 結構由二維卷積Conv2d、批量歸一化處理BatchNorm2d 和激活函數SiLU 串聯組成。C3 結構分為兩條支路,上支路通過標準卷積和Bottleneck模塊,下支路連接標準卷積再和上支路進行拼接,隨后連接一個標準卷積。v6.0 版本使用SPPF 結構替換了v5.0 版本中使用的空間金字塔池化SPP 結構,并放到Backbone 部分的結尾以提升檢測性能。SPPF 結構是先通過一個標準卷積將輸入特征的通道數減半再分為兩條支路,上支路采用三個5×5 的最大池化層串聯,剩下一條支路未進行池化操作再和上支路三個池化層進行拼接,最后連接一個標準卷積從而實現不同特征圖之間的優勢互補的效果。
Head 部分的關鍵是路徑聚合網絡[12](PANet),PANet是基于特征金字塔[13](FPN)基礎上引入了自底向上的特征融合,使得底層信息更容易傳遞到高層頂部,獲取了更加豐富的特征信息。特征圖通過Head部分進行預測并生成預測邊界框和預測類別。
YOLOv5 算法在數據預處理階段采用Mosaic數據增強來豐富數據集,其處理過程最多將4 張圖片進行隨機裁剪、縮放等操作拼接到一張馬賽克圖片上,隨后余下的部分采用灰邊填充。原始Mosaic數據增強如圖2(a)所示,但過多的灰邊會導致模型學習到無關的特征信息,降低模型訓練的效率。為了盡可能減少模型從訓練數據中學習到無關的特征信息,本文將改進Mosaic數據增強模塊。改為最多將9 張圖片拼接在一張馬賽克圖像中,拼接順序如圖2(b)所示。使用改進后的Mosaic 數據增強有三點好處:一是提高了批訓練大小;二是盡可能減少灰邊填充的面積,提高模型訓練效率;三是由于圖片經過縮放后在尺寸上會更接近小目標的尺寸,擴充了小目標數據集,增強了模型的魯棒性,能有效提高模型在海洋環境中對小目標的檢測能力。

圖2 改進Mosaic數據增強效果對比
通道注意力機制(SENet)通常會使模型沿著通道維度分配權值來提升模型的性能,但基于它們的結構會給模型帶來額外參數[14~15]。SimAM[16]可以為特征圖靈活地分配3D 注意力權值,從而增強模型提取特征的能力,進而提高目標的檢測精度,且不會引入額外參數,同時也是一個即插即用的模塊,分配3D 注意力權值示意圖如圖3 所示。SimAM 模塊通過設計能量函數來評估每個神經元的重要性,避免了過多的結構調整。

圖3 分配3D注意力權值示意圖
能量函數的設計主要是利用SVM 算法的特征。具體來說,離決策邊界遠的點是容易樣本(Easy Sample),離決策邊界近的點是困難樣本(Hard Sample),很好地契合了神經學的理論。能量函數定義為

其中,t表示單通道中輸入特征的目標神經元,xi表示除了目標神經元以外的其他神經元,wt和bt分別為t,xi線性變換的權重和偏置,i為空間維度上的索引,M=H×W為單通道上所有神經元的數目。通過計算wt和bt的閉式解,加速了注意力權值的計算。通過對wt和bt求偏導代入原能量函數,獲取最小能量公式為

從式(5)可以看出,能量函數值越小,神經元t與其他神經元的線性可分性越大,重要程度越高。最終SimAM模塊優化為

其中,E是將所有通道和空間維度中的能量函數進行分類。如圖4 所示,本文在YOLOv5 的主干網絡中的Bottleneck 結構引入SimAM 無參注意力機制,在不增加原始網絡參數的情況下,幫助模型在檢測過程中能更有效地提取目標的特征信息。

圖4 引入SimAM無參注意力機制示意圖
本文采用全國水下機器人大賽數據集,該數據集包含海參、海膽、扇貝、海星四種海洋生物圖片,共計1415 張圖片。海洋生物圖片是由水下機器人在復雜海洋環境的海底下進行采集的,這些圖片之間不存在幀間連續性。使用labelImg 圖像標注工具對采集到的圖片進行標注,圖片的尺寸以及目標框參數信息存儲在XML 文件格式中。將數據集按照7∶3 比例隨機劃分為訓練集和測試集,送入到網絡模型中訓練。部分數據集如圖5所示。


圖5 部分數據集樣本
本文實驗環境為Windows10 操作系統,I5-11400F CPU@2.60GHz 六核,RTX 3060 Ti(8G)GPU,16GRAM,Python3.9.7 編程語言,CUDA-Toolkit11.3,CuDNN8.2.1 加速庫,Pytorch1.10.0 深度學習框架。訓練階段采用Warmup 訓練預熱和余弦退火衰減策略[17]來對學習率進行動態調整。實驗參數設置如表2所示。

表2 實驗參數設置
本文使用查準率(P)、查全率(R)、參數量(Parameters)、平均檢測精度(mAP)、每秒傳輸幀數(FPS)作為評價指標。
查準率為真正例率與真正例率及假正例率和之比。查全率為真正例率與真正例率及假負例率和之比。參數量是模型中的參數總數。平均檢測精度為IoU=0.5 時,所有類別的平均精度(AP)的均值[18],計算公式如下:

式(7)和式(8)中的TP、FP、FN分別表示真正例、假正例、假負例,三者之間的關系依賴于表3 混淆矩陣。式(9)中的classes表示所有類別數和,本文所有類別數和為4。

表3 混淆矩陣
本文使用改進后的算法與原始YOLOv5 算法進行對比,圖6 為訓練過程中平均檢測精度對比曲線,其中,橫坐標代表訓練次數,縱坐標代表平均檢測精度。從圖中可以看出,兩種模型在80 輪左右趨于平緩,達到收斂,且均未出現欠擬合和過擬合的問題。相比于原始YOLOv5 算法,改進后的算法的平均檢測精度得到一定程度的提升,具有一定的可行性。

圖6 平均檢測精度對比曲線
為了更加全面地驗證本文提出的改進方法對海洋生物檢測的影響,本文還使用SENet 作為對比方法,檢測性能對比如表4 所示,改進1 使用改進Mosaic 數據增強,改進2 引入SENet 模塊,改進3 引入SimAM 模塊,改進4 將改進Mosaic 數據增強與SENet 混合使用,且各注意力機制添加的位置固定,表中“√”表示使用相應方法。
在表4 中,通過YOLOv5 算法、改進1、改進2、改進3 相對比,改進Mosaic 數據增強、SENet 以及SimAM 都能提高網絡的檢測性能,SENet 會使參數量增加15488,SimAM不會引入額外參數;通過YOLOv5算法與改進點4相對比,將改進Mosaic數據增強與SENet 混合使用會微略降低查準率、查全率以及平均檢測精度;本文算法與YOLOv5 算法相對比,查準率提高了2.8%,查全率提高了1.7%,平均檢測精度提高了1.6%。實驗結果表明,本文算法對海洋生物檢測精度最高,能有效地增強網絡的檢測性能并保持模型參數量不變。

表4 檢測性能對比
為了進一步驗證本文算法的檢測性能,將本文算法與其他目標檢測算法SSD、Faster R-CNN、YOLOv3、YOLOv4 進行對比,采用mAP、FPS 作為評價指標,如表5所示。

表5 不同算法下的實驗結果對比
從表5 可以看出,本文算法在檢測精度方面優于其他目標檢測算法,且本文算法的檢測速度比Faster R-CNN、SSD、YOLOv3、YOLOv4 算法更快。本文算法相較于YOLOv5 算法,檢測速度僅慢5FPS,在一定程度上不影響海洋生物實時檢測任務的同時提升檢測精度。本文算法部分效果檢測圖如圖7所示。

圖7 部分效果檢測圖
針對海洋生物檢測任務,本文提出一種基于改進YOLOv5 的海洋生物檢測算法,通過改進Mosaic數據增強,提高對小目標的檢測精度;同時在YOLOv5 的主干提取網絡引入無參注意力機制,增強檢測網絡提取特征的能力。實驗結果表明,本文算法在不增加模型參數量的情況下,獲得了更高的檢測精度,且幾乎不影響檢測速度,最終得到模型的權重大小僅13.7MB,為水下機器人進行精準識別和捕撈提供了技術支持。在下一步工作計劃中,進一步優化模型結構,將優化后模型植入到嵌入式設備,以實現海洋生物更輕量、更高效的檢測。