涂雪瀅,錢 程,劉世晶,2,劉 晃,2,李國棟,2
(1 中國水產科學研究院漁業機械儀器研究所,上海 200092;2 農業農村部漁業裝備與工程技術重點實驗室,上海 200092)
大菱鲆(Psettamaxima),又名多寶魚,是原產于歐洲的一種優良海水養殖魚類,于20世紀90年代初引入中國,經過養殖魚苗技術的突破性發展,大菱鲆已成為中國北方山東半島、河北和遼東半島等沿海地區的重要水產養殖品種之一[1-2]。目前,大部分水產育苗場采用稱重的方式對魚苗進行粗略計數,該方式誤差率較大,存在20%~30%的誤差,而人工分選計數的方式十分耗費時間與人力,大菱鲆育苗場的熟練工平均每人每小時只能計數3 300多條魚苗,且該方法人為因素影響較大,效率極低[3]。因此,針對魚類育苗的產業發展需求,應加強關鍵技術攻關,攻克苗種識別、魚苗計數和孵化率計算技術難點,研發魚苗識別與計數技術。
隨著水產養殖向機械化、自動化和智能化的方向不斷發展進步,魚苗計數的手段不再局限于傳統的人工計數方式[4]。目前國內自動化魚苗計數手段主要分為兩大類,一類是基于機械結構和電子元器件輔助的魚苗分級計數裝置,楊雨辰[5]設計了一種基于點鈔機結構原理和光線計數器的魚苗精確檢測計數與分級裝置;吳叢迪等[6]設計了一種基于分流、傳送、打包裝置和紅外計數器的全自動點苗分裝器。此類方法需要魚苗的種類規格與機械結構有較高的匹配度,且由于存在聚集魚苗分離、魚苗長距離滑動等采樣過程,容易對魚苗造成一定損傷;此外,電子技術原理需要計數對象滿足光線反射特性,而剛孵化大菱鲆魚苗由于其個體微小、身體透光性強等特點,導致上述技術不能滿足微小魚苗自動無損技術要求。另一類是基于計算機視覺和機器學習技術的魚苗識別計數系統,該系統主要利用相機等視覺采樣裝置,通過目標識別以及數量統計模型實現苗種計數。例如,朱從容[7]利用相機從上方采集背景已知魚苗全景圖像,通過背景差分實現魚苗的像素點提取,并構建魚苗像素點與魚苗數量之間的線性關系,得到魚苗數量,適用于魚苗圖像紋理清晰、前景和背景差異較大的工作場景;王文靜等[8]通過結合水流流速和拍攝速度,采集魚道出口處的魚苗圖像,通過閾值法計算樣本中魚苗數量,取得了較好的計數精度。該方法對魚苗聚集度、個體大小和身體透光性具有較高要求,無法滿足微小目標計數需要;王碩等[9]對魚苗輪廓進行曲線演化,通過統計最大輪廓曲線數來計算魚苗數量,適用于較大個體大菱鲆苗種。由于剛孵化大菱鲆魚苗個體微小、透光性強且孵化池背景成像受外部影響較大,基于背景去除或輪廓提取的方法很難直接應用到變工況場景,因此傳統的適用于魚體個體和背景差異較大以及魚體輪廓較易獲取的計數方法不能滿足剛孵化大菱鲆魚苗計數需要。
本研究提出了一種基于深度殘差網絡(Deep Residual Network,ResNet)[10]的大菱鲆魚苗識別計數方法。首先,針對微小目標成像特征不明顯的問題,設計了一套由相機、光源、承裝容器等組成魚苗采樣裝置,通過調整相機和光源位置,實現魚苗圖像的有效獲取。為了提升算法識別精度,降低背景干擾,采用背景差分、高斯濾波、全局灰度線性變換以及形態學處理等方法實現魚苗前景分割和初步定位,并利用最小外接矩規則化初步定位信息形成待識別目標,然后利用ResNet34模型作為識別模型實現大菱鲆苗種識別和目標區域數量統計,并統計所有待識別目標識別結果實現大菱鲆苗種計數。最后,通過不同方法比較分析驗證本方法的有效性。
設計了如圖1所示的試驗裝置。

圖1 試驗裝置
該裝置由不銹鋼黑箱、置物抽屜、可調節光源和工業相機等組成。裝置以鋁合金型材為骨架,在骨架外固定黑色不銹鋼板,組成密閉黑箱,其尺寸為(400×400×400) mm,置物抽屜安裝在黑箱底部,便于更換樣本,工業相機型號為大恒ME2P-2621-4GC-P,鏡頭焦距為8 mm。相機固定在頂部居中位置,保證承裝容器中魚苗有效成像。光源采用2個條形光源,固定在黑箱頂部。針對微小透光魚苗清晰成像的拍攝需求,設計采用光照強度可調光源,用以配合不同光照強度的拍攝需求。此外,為了滿足算法運算要求,本研究中模型是基于Python3.8、Pytorch框架開發,軟件運行在Windows11操作系統上,硬件包括:中央處理器為Intel(R) Xeon(R) W-2245 CPU @ 3.90 GHz,運行內存為64 G,圖形處理器為NVIDIA GeForce RTX2080 SUPER。
由于大菱鲆魚卵孵化周期短,魚苗孵化后短期內就具備自由游動能力,因此為了有效獲取剛孵化的大菱鲆魚苗,減少大面積采樣對孵化池內魚苗的影響,根據大菱鲆魚苗孵化規律,將采樣時間設定為魚卵開始孵化后的第72小時,并將采樣魚苗暫養在養殖箱內。采樣時,選用200 mm×200 mm×60 mm的亞克力盒作為拍攝容器,從養殖箱內隨機選取部分幼苗倒入容器中,置于拍攝箱底部。為增強魚苗與背景的反差,亞克力容器底部采用白色底板為采樣背景,通過調節采樣高度和相機焦距,得到清晰的幼苗樣本圖像。
魚苗計數方法整體框架如圖2所示,分為3個部分:圖像預處理、樣本庫構建和目標識別計數。

圖2 大菱鲆苗種計數技術路線圖

圖3 圖像預處理
圖像預處理部分主要用于降低背景噪聲對識別精度的影響,因此根據采樣裝置成像特點,選用背景差分、圖像增強和幾何變換的手段抑制背景無用的信息,增強前景圖像特征[11]。樣本庫構建部分,為了進一步提升方法的實用性,有效統一樣本空間和待識別目標空間,利用經過圖像預處理的前景信息,通過對目標輪廓做最小外接矩形,實現目標的提取,以此構建待識別目標樣本集,并根據提取出的目標圖像大菱鲆苗種構建分類標簽,按照8∶2的比例將其劃分為訓練集和驗證集;目標識別計數階段,首先是利用ResNet34模型實現不同數量目標樣本的識別,然后根據識別樣本數量統計整張圖像大菱鲆魚苗總數,實現苗種計數。
通過試驗裝置采樣得到的圖像包含過多背景信息,不利于后續魚苗目標的識別,因此需要對原始圖像中冗余的信息進行預處理。共采用4步圖像預處理方法獲得魚苗清晰前景圖像。首先,對容器的4個角點進行定位,采用透視變換法[12]得到目標區域的圖像,然后使用背景差分法[13]得到背景信息相對較少的魚苗圖像,采用高斯濾波[14]對圖像進行平滑處理并利用全局灰度線性變換方法[15]對圖像進行灰度拉伸。最后,利用膨脹腐蝕等形態學處理去除圖像中的噪點、毛刺和微小雜物,填補目標的空洞和斷點[16-17],去除圖像中多余的雜質點。采樣原圖及預處理后圖像如3所示。
1.5.1 目標提取
經過形態學處理的魚苗圖像為二值圖像,已經能夠很好地區分出目標與背景,采用邊界跟蹤算法[18]來提取目標的輪廓(圖4a)。對于魚苗不重疊,且背景無雜質的圖像,直接通過計算輪廓的數量即可得到魚苗的數量。但當背景較為復雜時,輪廓圈出的可能不僅有魚苗,還有其他干擾目標。此種情況可以選擇先提取出輪廓圈出的所有目標,再對每一個目標進行識別判斷,判斷其是否為魚苗,從而計算魚苗的數量。因此可以通過對輪廓做外接矩形的方法,提取出待識別目標(圖4b)。當魚苗相鄰較近時,普通外接矩形容易將其他目標也圈進矩形中,且魚苗斜向時,其外接矩形圈出的背景面積較大。因此,在外接矩形的基礎上,選擇輪廓最小外接矩形對輪廓進行目標提取(圖4c)。

圖4 目標提取
圖4d為對原圖中魚苗目標的輪廓做最小外接矩形,可以看出效果相對普通外接矩形要好。但最小外接矩形的四條邊并不是平行和垂直正常畫面,要提取出每一個目標,需對最小外接矩形提取出的部分做透視變換[19],得到每個目標的圖像。
由表1可以看出,提取出的圖像包含4種類型,其中,0個目標圖像不包含魚苗,1個目標圖像、2個目標圖像和3個目標圖像中分別包含1條、2條、3條魚苗。將提取出的圖像做分類標簽,形成大菱鲆魚苗樣本集。

表1 目標提取后的圖像

表2 樣本數量分布
1.5.2 樣本分配
樣本數量分布如圖2所示。
大菱鲆魚苗樣本集中,包含76張0個目標圖像,2 466張1個目標圖像,160張2個目標圖像和12張3個目標圖像,共計2 714張樣本圖像。將樣本集按約3∶1的比例劃分為訓練集和驗證集,構成目標樣本庫。
1.6.1 ResNet網絡結構
網絡層的深度和數量增加,引入的激活函數數量增加,有利于提高網絡的非線性變換能力,更好地進行數據特征的提取和變換。然而,當其達到一定水平時,網絡幾乎完全失去了線性轉換的能力[20]。ResNet在傳統的深度學習基礎上引入了殘差模塊,通過多個網絡的輸入輸出,對一個單元模塊進行跳躍拼接,在特征提取的同時疊加上一步的信息,該方法很大程度上緩解了因網絡深度的增加而出現的梯度消失、網格退化等問題[21]。
ResNet網絡結構因其模型不易退化、特征信息損耗度小等優點[20],在圖像識別領域有較為優秀的識別速度和精度,其在魚類識別方面也有較多應用和較好的識別效果,經過對比分析,本研究選用ResNet34模型對魚苗圖像進行識別研究。
Input為輸入圖像,輸入尺寸設置為224×224×3像素;Conv1為預處理卷積層,包含一個7×7的卷積層,批標準化處理層、激活層和最大池化層;Conv2_x、Conv3_x、Conv4_x、Conv5_x代表殘差結構,每個殘差結構分別包含3、4、6、3個參數不同的殘差單元;殘差層的輸出結果經過AvgPool平均池化層后進入FC全連接層進行分類;由Softmax分類器輸出對應的概率值,從而得到識別結果。ResNet34網絡結構如圖5所示。

圖5 ResNet34網絡結構
參數的選擇對模型訓練時的收斂效果、速度、識別精度非常重要。綜合考慮試驗環境系統配置、樣本數量和模型訓練效果,將批尺寸[22]的大小設為8,迭代次數為30次,選取Kaiming正態分布作為模型初始化權重方式[23],ReLU作為模型的激活函數[24],交叉熵損失函數作為模型的損失函數[25],初始學習率設為0.001,并采用Adam優化算法優化學習率[26],同時添加Dropout避免模型訓練時出現過擬合風險[27]。
大菱鲆目標樣本庫中,訓練集包含2 036張樣本圖像,驗證集包含678張樣本圖像。利用ResNet34對訓練集和驗證集進行訓練,得到訓練模型,其訓練效果如圖6所示。

圖6 準確率與損失值曲線
訓練時,每批次訓練的圖像數量為8張,一共迭代30次,可以看出,訓練集和驗證集分別在第11輪和第17輪迭代后趨于收斂,訓練集經過30次迭代后,損失值穩定在0.1左右。完成訓練后,保留準確率最高的一次ResNet34訓練模型,構建大菱鲆魚苗識別計數系統,實現對測試樣本的識別與計數。
識別結果用混淆矩陣[28]的方式可視化展示,結果如表3所示。表3中,橫向表示目標樣本圖像中含有魚苗的真實數量,縱向表示目標樣本圖像中含有魚苗的預測數量,矩陣中的數值xij表示將類別i預測為類別j的數量,其中,對角線上的數值越大,代表識別的準確率越高。由表3可以看出,對角線上的數值遠高于其他位置的數值,這表明ResNet34對目標樣本圖像有較高的識別準確率。

表3 混淆矩陣
為了驗證方法的有效性,選取目前常見的SVM[29]、AlexNet[30]、ResNet18[31]和ResNet50[32]等方法與本研究方法進行比較分析,結果如表4所示。

表4 不同算法的識別準確率對比
由表4可知,5種方法識別精度都高于85%,證明本研究樣本數據庫構建的有效性;相比于深度學習方法,SVM方法識別精度較低,識別精度僅為85.8%,ResNet18、ResNet34和ResNet50等方法識別精度接近,其中ResNet34識別精度最高,達到94.44%。由此可見,ResNet34更加適用于本研究構造的大菱鲆魚苗樣本圖像的識別檢測。

為了估算大菱鲆魚苗識別計數系統的計數準確率,用亞克力盒從養殖箱內隨機選取部分大菱鲆魚苗進行采樣,將該圖像傳入系統進行識別計數,共采樣50次,得到每次的識別準確率和計數準確率,統計結果如圖7所示。

圖7 魚苗識別與計數準確率
由圖7可知,系統在魚苗識別方面,識別的準確率最低為90.07%,最高為98.11%,平均識別準確率為94.27%,在 50 次識別檢測中有26次的識別準確率在平均線以上。在魚苗計數方面,計數的準確率最低為92.78%,最高為100%,平均計數準確率為96.28%,在 50次計數檢測中有27次的計數準確率在平均線以上。相較ResNet34模型對魚苗樣本圖像識別的準確率94.44%,魚苗計數準確率較高,這主要是由于模型會將0個目標圖像識別為1或2個目標圖像,將1個目標圖像識別為2個目標圖像,使得檢測出的魚苗數量增加,又將2個目標圖像識別為0或1個目標圖像,將1個目標圖像識別為0個目標圖像,導致檢測出的魚苗數量減少,雙方平衡下,導致最終檢測出的魚苗個數與實際魚苗個數相差不大。
設計了一套針對微小魚苗計數專用圖像采樣裝置,搭建了基于圖像預處理的魚類苗種數據集,為后續苗種識別和數量統計提供數據支撐。通過圖像預處理手段,將全局隨機檢索問題簡化為特定目標識別問題,有效降低了后續識別計數算法應用復雜度。結果證明ResNet34識別模型在不同數量大菱鲆魚苗圖像識別的有效性,并通過識別每個初步定位目標大菱鲆魚苗數量實現整張圖像大菱鲆魚苗的全局計數,大菱鲆魚苗的平均識別和計數精度分別達到94.27%和96.28%,為大菱鲆養殖魚苗孵化率的精準計算提供堅實的技術支撐。本方法雖然實現了特定場景苗種計數,但不可避免地帶來了魚苗損傷問題,下一步將根據本研究結果,嘗試引入相關環境補償算法,實現原始工況場景魚苗精準計數。
□