黎袁富,杜家豪,莫家浩,薛月菊
1.華南農業大學數學與信息學院,廣東,廣州,510642;2.華南農業大學電子工程學院(人工智能學院),廣東,廣州,510642
魚苗高效計數可為精準投喂、魚苗銷售、水質調控等智慧水產的主要環節提供關鍵的基礎信息。而我國目前魚苗計數仍大多采用網兜等容器取樣、人工觀察計數方法,不僅勞動強度大、效率低、主觀性強、誤差大,且易造成魚苗損傷。因此,智能化的魚苗計數器有待發展。
利用計算機視覺的魚苗計數器,相比光電魚苗計數器、電橋計數器等,具有對魚苗不同尺寸適應性強、計數精度高和速度快等優點,近年來發展迅速。王文靜等人利用局部閾值分割提取目標,計算出每幀圖像中不重疊區域的幼苗數量[1];黃玲結合圖像分割后的連通域和魚苗像素點數進行魚苗計數[3];朱從容對采集到的魚苗灰度圖像進行分析,通過數據擬合方法建立圖像中魚苗所占像素點數與魚苗數的關系,從而對魚苗進行計數[4];為解決目標粘連的問題,王碩等人提出了一種基于曲線演化的圖像處理方法[2]。但是,上述方法對魚苗的計數精度不高,難以實際推廣應用。
近年來,基于卷積神經網絡的目標檢測算法Faster R-CNN、YOLO、RetinaNet和CenterNet等被相繼提出[5]。YOLO算法運行速度具有明顯優勢,被廣泛應用于各領域,如郭貴松等利用YOLOv4研究了斑馬魚群檢測算法,但魚之間的遮擋較大地影響了檢測精度[6]。YOLOX為YOLO算法中最先進的無錨點檢測器,能一定程度上克服重疊、粘連目標檢測困難的問題[7]。
為此,本文使用攝像頭實時采集魚苗圖像,研究基于YOLOX魚苗的檢測與計數算法,從而判斷實際魚苗數,有效解決了人工計數中存在的準確率低、效率低等問題,具有很好的實用價值和應用前景。
本文使用了兩批加州鱸魚苗,體長分別為5~7cm和3~4cm。圖像采集系統硬件由光源、攝像頭、白色水箱、LED燈板和計算機組成,如圖1所示。采用海康攝像頭距水箱水面50厘米左右處拍攝魚苗,圖像分辨率為1080×1920。

圖1 魚苗自動計數系統硬件裝置
實驗中,以10條、20條、30條、40條和50條分成五組采集魚苗圖像。從五組魚苗的視頻,分別截取聚集、分散、游動、靜止等各種場景下的視頻幀圖像100張,共500張圖像,然后使用DarkLable軟件對每一張圖像中魚苗標注包圍框,形成txt文件格式,再轉化為CoCo數據集格式。將每一組100張圖像隨機分為60%訓練集、20%驗證集和20%測試集,則訓練集、驗證集和測試集分別包含300張、100張和100張圖像。
YOLOX是在YOLOv3的基礎上,利用預測分支解耦、數據增強、Anchor-Free和樣本匹配等策略而形成的精度高、速度快的目標檢測器。它主要包括四個部分:輸入端、主干網絡、頸部(Neck)和預測分支[8]。

圖2 YOLOX結構圖
(1)輸入端。在網絡的輸入端,YOLOX主要采用了Mosaic、Mixup兩種數據增強方法。Mosaic數據增強,是通過隨機縮放、隨機裁剪、隨機排布的方式進行拼接,可有效提升小目標的檢測效果。MixUp數據增強是將隨機的兩張樣本按比例混合,主要應用在圖像分類精度。
(2)主干網絡。YOLOX的主干網絡可選配多種不同網絡,為保證模型精度,本文選擇YOLOX-L。
(3)頸部。YOLOX在主干網絡特征提取之后,采用了FPN(特征金字塔)進行低層高分辨率特征與高層高語義特征融合,以提高對小目標的檢測性能。
(4)預測。為降低耦合檢測頭可能帶來的性能損害,YOLOX將分類頭和定位頭解耦,極大地改善了收斂速度和檢測精度;輸出層采用非錨框機制,相比錨點框機制,降低了檢測頭復雜度、減少了調整參數數量;并且充分利用了高級標簽分配SimOTA(Simplified Optimal Transport Assignment)和全局信息的匹配策略,省去了OTA中的Sinkhorn-Knopp算法過程。
本文在Pytorch框架上實現YOLOX和YOLOv3算法,服務器平臺配置為:Intel(R)Xeon(R) Gold 5218 CPU @ 2.30GHz處理器,32GB 運行內存,12GB GTXForce RTX 2080 Ti GPU,系統為 Ubuntu 18.04.5 LTS。
在不同魚苗密度場景下,在測試集上比較了YOLOX與YOLOv3的檢測精度,檢測結果如表1所示。隨著數量的增加,YOLOX和YOLOv3的檢測準確率、召回率都有所降低,但魚苗數目在50條時YOLOX準確率仍然可以達到96.99%,召回率達到97.38%,比YOLOv3分別高出1.19%和5.38%。這是由于YOLOX應用了數據增強、預測分支解耦、Anchor-Free和樣本匹配等策略,能較好地克服魚苗遮擋和粘連引起的魚苗檢測困難問題。從表2中可以看出,用YOLOX自動數魚苗個數與實際數量基本一致。YOLOX在不同魚苗密度情況下的檢測實例如圖3所示。

表1 YOLOX和YOLOv3的檢測結果比較

圖3 YOLOX在不同魚苗密度情況下的檢測實例

表2 YOLOX計數結果
本文采用攝像頭實時采集魚苗圖像,研究基于YOLOX魚苗檢測與計數算法。在魚苗數量較少時,YOLOX和YOLOv3的檢測精度均較高,準確率和召回率分別可達到93.00%以上;但隨著魚苗數量的增加,YOLOX和YOLOv3檢測精度均有所下降,但在50條時YOLOX準確率可以達到96.99%,召回率達到97.38%,YOLOX檢測準確率和召回率均高于YOLOv3。目前無論國內外,水產養殖都在逐漸智能化,基于計算機視覺的魚苗計數是解決人工魚苗計數問題的一個有效途徑,因此本文基于YOLOX的魚苗檢測與計數方法具有很好的實用價值和應用前景。