韋鈞樂 侯明鑫 ,2*
(1.廣東海洋大學機械與動力工程學院,廣東 湛江 524088;2.南方海洋科學與工程廣東省實驗室,廣東 湛江 524013)
2021 年4 月25 日,《廣東省國民經濟和社會發展第十四個五年規劃和二〇三五年遠景目標綱要》正式發布,其中一項指出,打造世界級海洋創新平臺,積極搶占全球涉海創新增長制高點,深入推進湛江海洋經濟發展示范區建設。湛江,三面臨海,海域面積2.1 萬平方公里,海岸線長2 023 公里約占全省海岸線的三分之一、全國的十分之一,自古以來就因海洋生物資源豐富聞名海內外。憑借著得天獨厚的地理位置,湛江的漁業非常發達。其中馬鮫魚產業在湛江水產中占據重要的地位。馬鮫魚,體形狹長,頭及體背部藍黑色,一般體長為25~50 cm、體重300~1 000 g。馬鮫魚群每年春季游到粵西沿海產卵,形成魚汛。因其肉質細嫩,味道鮮美,且營養價值高,是近海作業主要捕撈對象。因此,為了更好地實施規劃綱要,漁民們科學合理地分揀出漁獲物中的馬鮫魚十分必要。
目標檢測(Object Detection),其本質的任務是找出圖像中所有的目標物體,確定它們的類別和位置。在實際檢測情況中,往往有許多不可抗力的因素,由于各類物體有不同的外觀、形狀和姿態,加上成像時光照、遮擋等因素的干擾,目標檢測一直是計算機視覺領域最具有挑戰性的問題。隨著計算機技術的不斷發展,圖像采集技術的日益提高,這幾項技術促進了目標檢測的日臻完善。目標檢測應用廣泛,徐樂先等基于深度學習對車位進行檢測,祝朝坤等基于目標檢測的智能垃圾分類垃圾桶的設計,任宇晴等對水果成熟度的識別。機器學習的目標檢測技術不僅在人工智能理論層面進行了系里研究,同時,在各行業有目標檢測需求的場景中得到了廣泛的應用。
根據目前的文獻檢索,目標檢測雖然在絕大多數領域已有較為成熟的研究和應用,但是尚未廣泛應用于漁業,尤其是對魚類的檢測識別相對有限。傳統的對漁獲物進行分類方法大多依靠人眼識別,一般的漁獲物淡季尚且能滿足市場需求,但是在捕撈的旺季,漁獲物數目巨量增加,這使得工人的作業任務量增加巨大。隨著工作時間的增加,工人的專注度降低,難免會造成分類錯誤,引起后續一系列的麻煩。為了解決這一難題,本文采用機器學習中的目標檢測技術對魚類進行識別檢測,再結合相關的漁獲物器械打撈,能有效地節省工人工作時間,提高工作效率。
本文將以馬鮫魚為例,提出一種基于深度學習SSD 模型在馬鮫魚檢測中的算法模型。通過該深度學習模型以馬鮫魚為案例進行成功的目標檢測,驗證本文提出模型的可行性。同時,本文提出的基于深度學習目標檢測模型SSDResNet50V1FPN 的檢測方法,可以進一步推廣應用到其他種類有目標檢測需求的漁獲物場景中。
本文基于深度學習TensorFlow 框架對漁民捕獲的魚類進行分類識別檢測。首先根據需要識別的魚類——馬鮫魚選取恰當的模型。然后利用Python 的爬蟲功能從網上的圖庫爬取了上萬張馬鮫魚相關的圖片,并對圖片進行篩選。要刪除會加大機器學習運行負擔的像素過大圖片,通過對這些圖片進行相關的預處理,即將圖像進行尺寸調整、旋轉、拉伸、光線補償、灰度變直方圖均衡化、規范化、幾何校正、過濾及銳化等操作,令其符合TensorFlow 框架下對圖像識別的要求。然后再構建出深度學習SSDResNet50V1FPN 模型,并對模型進行多次訓練,實現經過算法修改調整后,達到最終檢測效果的目標。本文提出的深度學習目標檢測實現流程為模型確定,收集圖片,訓練模型,調整參數,模型驗證。
本文選用的是TensorFlow 框架,與其他深度學習框架對比,其特點是在建模能力、模型部署、性能、架構、生態系統等多個方面呈現優越性。
本文選取的是深度學習SSDResNet50V1FPN 模型。SSD,全稱Single Shot MultiBox Detector,是Wei Liu 在ECCV 2016 上提出的一種目標檢測算法,是主要的檢測框架之一,相比Faster RCNN 有明顯的速度優勢,相比YOLO 又有明顯的MAP 優勢。SSD 的方法是基于一個前饋卷積神經網絡,通過算法產生候選框,然后再對這些候選框分類和回歸,接著生成一個反應檢測對象于檢測目標相關的可靠度分數。SSD 采用卷積神經網絡(CNN)來直接進行檢測,提取了不同尺度的特征圖來做檢測,大尺度特征圖可以用來檢測小物體,而小尺度特征圖可以用來檢測大物體;再由SSD 采用了不同尺度和長寬比的先驗框Prior boxes,在Faster R-CNN 中叫作錨(Anchors)。
本次實驗從11 630 選取了10 000 張馬鮫魚的圖片,其中9 000 張作為訓練集,1 000 張作為測試集。訓練集全部被保存到了“images1”目錄下,根據每張圖片里馬鮫魚的體型,姿態的不同以達到高準確率的訓練效果。測試集則被保存到了“images2”目錄文件下,這些圖片用于對模型的訓練效果進行檢測。為了確定該模型的訓練效果,還需要利用labeling 軟件進行目標邊框的處理,得到XML 文件。此處還需修改labeling 軟件中的data 文件,將其改為“mackerel”,選擇邊框打標后可以為保存XML 文件,且保存的XML文件名與圖片的名字一一對應。
本次訓練的工作站硬件采用Dell7920,CPU 為Intel Xeon 5218R,內存64G,1TB 三星ssd 970 EVO Plus,顯卡為NVIDIA GeForce RTX 2080Ti(12G)GPU;軟件環境為Ubuntu 20.04,TensorFlow 2.8 版本。
本文采用SSDResNet50V1FPN 模型對10 000 張馬鮫魚圖片進行訓練,總的損失函數如圖1 所示,從圖1 可以看出經過25 000 步訓練后,總的損失函數減少到2.2×10,圖1 中的曲線平滑度設置為0.8,從整個曲線訓練的過程可以看出在25 000 步訓練后,采用SSDResNet50V1FPN 模型訓練已經達到穩定狀態。

圖1 基于SSDResNet50V1FPN 模型總的損失函數訓練曲線(25 000 步)
機器學習的應用成果已經滲透融入于社會生產的方方面面,基于機器學習研究目標檢測更是成為一個熱門的方向。本文基于TensorFlow 目標檢測以漁獲物馬鮫魚為例,進行了算法識別的應用研究,通過設計SSDResNet50V1FPN 模型,經過9 000 張圖片作為訓練集,1 000 張馬鮫魚的圖片作為測試集。經過25 000步訓練后,SSDResNet50V1FPN 模型損失函數收斂到2.2×10,訓練曲線表明此模型應用于馬鮫魚的目標檢測精度已經良好,且可以用于漁獲物馬鮫魚的檢測中。進一步的,本文基于深度學習SSDResNet50V1FPN 模型不僅適用于馬鮫魚的檢測,也同樣適用于其他海產品的檢測。