舒 航,林志文,周際琳,唐 靜
成都工業學院自動化與電氣工程學院,成都 611730
我國水產養殖業發展迅速,規模逐年遞增,然而在快速發展的背后,水產養殖業也面臨著嚴峻的挑戰,目前,傳統的水產養殖行業中魚類病害防治不科學,導致養殖場死魚率升高,養殖成本增加。因此,傳統水產養殖業的養殖技術迫切地需要向穩產保供、創新增效的方向進行轉型與升級[1]。
針對水產養殖行業提升生產效率、降低養殖成本,陳子文等[2]提出的基于YOLOv5 算法的目標檢測方法,能夠對所養殖的蝦類進行無接觸的目標圖像檢測與計數,準確率高,但其更多地適用于工廠化養殖,且不能較好地解決水產品病害檢測識別的問題;對于魚類等水產品病害檢測,尹銀平等[3]設計構建的Fuzzy 推理診斷系統能夠取得較好的水產品病害檢測效果,但其編程操作較為復雜,所需輸入的目標識別物特征參數較多,在輸入參數的過程中容易因人為因素導致輸入數據不準確而產生誤差,不能較好地達到快速檢測識別水產品病害的目的。因此,對傳統水產養殖行業而言,為其養殖過程中提供精準可靠的水產品病害視覺識別系統尤為重要。
隨著計算機視覺檢測技術與智能識別技術的發展,各類檢測算法大量涌現,其中YOLOv5 目標檢測算法應用廣泛,該算法對于工業生產、產品分類以及特征識別方面效果良好[4-6],可適用于更多實際生產領域。針對水產行業,視覺檢測和圖像分析技術在水產品特征識別中應用廣泛,通過圖像分析技術能夠對水產品進行合理分類,也能對水產品的品質進行檢測;同時也能對水中魚類動向、特定行為進行目標檢測,能夠準確識別魚類水產品的水下動作行為,有效提高水產品的生產自動化水平[2-3]。
本文設計了一種基于YOLOv5 目標識別算法的魚類病害檢測系統,結合避障模塊、信息采集模塊、WI-FI 模塊、動力驅動模塊,控制水下機器人實現對養殖水域的魚群進行病害監測,達到在養殖過程中有效檢測魚類病害的目的。
YOLOv5 是目前與實際場景和工程應用最契合的算法,作為目前單階段檢測算法的典型代表,YOLOv5 擁有編程簡單,對圖像特征分析精準且快速的優點[7]。其模型布局與YOLOv3、YOLOv4 一致,整體結構可分為Input、Backbone、Neck、Output 四個部分,具體結構如圖1 所示。

圖1 YOLOv5 的結構
養殖過程中對魚類病害檢測的流程為:①圖像預處理(Input);②主干特征提取(Backbone);③多尺度特征融合(Neck);④圖像輸出(Output)。
采用自制數據集,有草魚、鯉以及水箱觀賞魚等魚類圖片樣本共104 張,其中正常樣本68 張,病害樣本36 張。將所有樣本隨機劃分為訓練集與測試集,其中訓練集占比80%,測試集占比20%。從不同角度、游動姿態、魚群干擾以及不同光照條件的情況下,對魚類水霉病、爛身、掉鱗片三類病害進行檢測。
在Input 部分,首先對所輸入的圖像樣本,隨機選用4 張圖片,進行隨機裁剪,然后再拼接到一張圖片上。具體操作如圖2 所示,設定圖片裁剪尺寸為S,取尺寸大小為4S 的框圖,在尺寸為S 的藍色限定矩形區域內隨機選一點作為圖像拼接點,放入4 張圖片進行圖像拼接,得到新的圖片,以此可以豐富試驗的數據集,提升模型對于多樣性學習的能力。結合自適應瞄框計算、自適應圖片縮放,計算預測框與真實框兩者之差,再反向更新網絡。通過不斷更新預測框和真實框的差值,反向更新網絡的參數,獨立計算最優錨框值,利用自適應縮放圖片去除圖像信息干擾,降低誤差。總體上減少系統計算量,提升檢測速度,更有利于檢測魚類的病害。

圖2 圖像拼接原理
在Backbone 部分,主要由Focus 和CSP 兩大結構組成,利用Focus 結構對原始輸入的608×608×3圖像進行切片、卷積操作,將其轉換為304×304×32的特征圖,可以降低圖像模型計算量,加快網絡訓練速度,得到特征圖,利用CSPDarkNet53 將基礎層的特征映射劃分,然后進行跨層融合,豐富特征圖,保證準確率。
在Neck 部分,由特征金字塔網絡和像素聚合網絡組成,Neck 網絡作為圖像特征聚合層,經過特征金字塔網絡采樣即自上而下的特征采樣,能夠提高低層特征的傳輸,增強對各類不同比例大小的檢測識別,能夠精確識別不同種類魚類的病害特征。
在Output 部分,采用邊框損失函數GIOULOSS[8],GIOU 框型示意圖如圖3 所示,其中A 表示算法預測目標框,B 表示真實目標框,C 表示包含A 和B的最小矩形框,IOU 表示預測框重疊區域,具體公式如式(1)、式(2)所示。

圖3 GIOU 邊框示意

系統整體設計如圖4 所示,水下機器人總體設計方案分為動力驅動模塊、避障模塊、信息采集模塊、WI-FI 模塊4 個模塊,控制核心采用樹莓派4B和STM32F401,通過水下機器人對魚類進行目標病害檢測,即動力驅動模塊使水下機器人在水下移動,由信息采集模塊通過樹莓派上連接的攝像頭對魚類圖像實時采集,通過樹莓派對圖像信息預處理后,再由WI-FI 模塊將所檢測到的信息傳回到控制終端,由控制終端通過訓練好的算法模型進行處理,進而回傳到可視化操作界面上達到檢測魚類病害的目的。

圖4 水下機器人總體工作框架
各硬件模塊基于樹莓派4B 和STM32F401 進行設計。
樹莓派4B 集成arm7l、1.5 GHz 運行的64 位四核處理器,4 GB RAM、2.4/5.0 GHz 雙頻無線WLAN、藍牙5.0/BLE、POE,使用Linux32 位系統,具有上限高、可操作性強等優點。在系統中主要實現圖像信息處理與分析、圖像回傳等功能。
STM32F401 控制器采用32 位RAM 核心處理芯片,同時集成了arm32 位Cortex-m4 的軟硬件以及內核。其優點在于其經濟性好、能耗少,在系統中實現測距、避障等功能。
本設計選用HC-SR04 超聲波測距模塊,采用6個超聲波裝置模塊,分別安裝在水下機器人上下、前后、左右6 個方位,以實現全方位立體探測機器人各方位障礙物的功能。
該模塊通過與STM32F401 的信號傳輸實現檢測障礙物并控制水下機器人精準避障的功能,機器人水下運行時,通過串口觸發測距,該模塊發出方波信號,而后判斷是否檢測到回波,當檢測到回波時,根據信號傳輸持續時間計算障礙物距離,反饋至控制核心。并與動力驅動模塊配合,當距離障礙物小于0.5 m 時,停止驅動,進行轉向實現避障。
動力驅動模塊主要由6 個推進器組成,推進器通過I/O 口與控制核心連接。控制核心通過控制各推進器的開啟/關閉狀態實現對機器的前進、轉向和下潛等動作的控制。其中,機器人前后分別連接2個推進器,主要控制前進、后退、左轉、右轉,機身兩側共2 個推進器負責機器的上升下潛,如圖5 所示。推進器配合動力系統控制機器人運動速度。

圖5 水下機器人推進器的配置
信息采集模塊主要選用樹莓派原裝攝像頭,通過樹莓派4B 的SCI 接口與攝像頭連接,攝像頭以感光芯片為核心,利用差分數據信號端口傳輸圖像,通過模數轉換進行輸出[9]。
系統整體控制流程如圖6 所示。

圖6 水下機器人整體控制流程
水下機器人檢測系統采用VNC Client 進行遠程控制。VNC 由客戶端VNC Viewer 和服務器端的VNC Server 組成,其控制原理如圖7 所示,VNC 將被控制端的操作界面,通過X 協議將其運行在VNC Server 的桌面中,然后通過RFB 協議在遠程的Viewer 中實現控制[10]。

圖7 VNC 控制原理
系統由機器人采集圖像數據,數據通過串聯端口傳輸到水下機器人的控制核心,再由控制核心通過WI-FI 模塊利用2.4 GHz 頻段將所收集到的魚病的相關圖像數據信息傳輸到終端服務器,由終端服務器傳輸到可視化操作界面,再由上位機(PC)聯網通過VNC Viewer 對機器人發出指令進行控制,工作流程如圖8 所示。

圖8 水下機器人遠程控制流程
魚類病害檢測選用樹莓派4B 作為試驗平臺;計算機作為訓練平臺進行魚類檢測測試。試驗所選訓練運行環境如表1 所示。

表1 試驗訓練運行環境
訓練結果采用準確率和召回率作為評價指標。
準確率(Precision)即對于所用數據集中,模型正確預測的目標樣本和總樣本數之比,計算公式如式(3);召回率(Recall)即樣本中所需識別的樣本被正確預測識別的比率,計算公式如式(4)。

式(3)、式(4)中,TP表示模型所需識別的目標樣本正確識別的數量,FP即為將不需要識別的樣本識別為所需的目標樣本或未識別到的樣本個數,FN表示將所需識別的正確目標樣本識別為不需要識別的樣本的數量。
通過對原始數據集進行訓練,所得準確率和召回率隨著訓練輪數變化的試驗結果如圖9 所示。

圖9 目標檢測準確率和召回率試驗結果數據
本次試驗從魚群圖像采集角度、魚的游動姿態、魚群中對目標的識別以及不同光照條件下進行了檢測試驗,部分檢測圖片結果如圖10 所示。

圖10 水下機器人部分檢測圖片
從召回率與準確率2 項指標來看,YOLOv5 檢測算法訓練在達到200 輪后開始達到穩定,在訓練400 輪左右開始逐漸趨于穩定,識別效果好,識別準確率高,系統網絡模型檢測準確率可達94%以上,對于養殖過程中魚類病害能夠有效識別,系統測試結果如表2 所示。

表2 水下機器人系統測試結果
本文設計的一種基于YOLOv5 的水下機器人魚類病害檢測系統,系統基于YOLOv5 算法對目標進行圖像特征采集,進行多個尺度的圖像特征融合,可以提升對水下魚類病害檢測的效率和精度,有效檢測出所養殖魚類的病害從而及時采取防治措施降低養殖成本,對于提升養殖效率、推進水產養殖智能化有顯著作用。