徐立鴻 黃 薪 劉世晶
(1.同濟大學電子與信息工程學院, 上海 201800; 2.中國水產科學研究院漁業機械儀器研究所, 上海 200092)
水產養殖業在中國漁業發展中具有重要的地位[1-2],同時水產養殖是我國漁業主要生產方式,其中開放式池塘養殖產量占全國水產養殖總量的80%[3]。隨著水產養殖業的不斷發展和擴大,工業化的魚類養殖技術也在不斷地更新和適應不同的養殖環境,實現餌料自動投喂是水產養殖實現自動化、工業化的關鍵[4-5]。餌料是魚類生長的必需品,同時也直接影響水產養殖的經濟收益,餌料投喂不足會影響魚群的生長發育,餌料投喂過量會造成經濟浪費和水體富營養化。科學控制水產養殖的投餌量對自動化水產養殖有重要意義。
在智能化投餌領域內,目前基于機器視覺投餌控制研究背景主要是分為室內循環養殖池和開放式養殖池塘。如ZHOU等[6]采用近紅外攝像頭從養殖池上方獲取魚群狀態,通過圖像處理等技術提出了SIFFB和FIFFB共2個指標,實現了對魚群攝食強度的評估。之后他們收集魚群攝食過程中的圖像訓練卷積神經網絡(Convolutional neural networks, CNN),實現對魚類食欲水平的分級[7]。陳明等[8]提出了一種基于特征加權融合的魚類攝食活動強度評估方法。張佳林等[9]采集了大西洋鮭水下攝食行為視頻,提出了一種基于幀間關系的魚類攝食行為視頻分類算法,唐宸等[10]在此基礎上進行改進,實現了基于光流法的魚群攝食行為視頻三分類。YANG等[11]提出了Efficient Net-B2的雙重注意機制網絡用于魚群的細粒度短期攝食行為分析。但是這些方案只適用于水質清晰、光照均勻的室內養殖環境,并不適用于環境復雜開放式養殖池塘。
與循環養殖池相比,開放式養殖池塘受水質混濁、光照不均等環境因素影響,智能化難度較大,成為研究的重點。如胡利永等[12]以投餌過程中拍攝的水面攝食圖像中有魚部分以及魚群攝食引起的水花部分作為特征區域,提出了一種投餌量計算模型。王勇平等[13]通過直方圖均衡、幀間差分法等對魚群攝食期間的圖像進行處理,利用橢圓擬合得到目標魚群面積來進行投餌量的控制。覃學標等[14]借助水下圖像增強技術提高魚類檢測的準確度。
視頻識別技術已經應用于各個領域,有許多視頻分類深度網絡取得了較好的效果,其中包括基于雙流法的視頻分類[15-17]和基于3D卷積[18-20]的分類算法。M?L?Y等[21]提出了雙流循環神經網絡(Dual stream recurrent network, DSRN)實現了魚類攝食行為的兩分類,但是網絡同時引用了VggNet[22]和ResNet[23],參數多且計算量大。UBINA等[24]提取視頻的光流特征輸入3D卷積神經網絡[20]實現攝食強度的四分類,但是需要無人機拍攝攝食圖像,成本過高,不適用于大部分的池塘養殖。
長期卷積循環網絡[25](Long-term recurrent convolutional networks, LRCN)是一種結合了傳統卷積網絡和長短期記憶網絡的新型網絡結構,具有處理時序信息的能力。SENet[26](Squeeze-and-excitation networks)是一種典型的注意力模型,它的子結構SE Block可以隨意插入到任何網絡中,能夠有效提高網絡的準確率,且計算量小。
針對實際生產環境問題,本文提出一種基于改進LRCN的魚群攝食強度分類模型,將注意力機制應用于魚群攝食視頻的分類模型中,以通過較少的計算量實現對視頻的分類,使模型更具有魯棒性。
為證明算法的有效性,試驗以草魚、鯽魚混合養殖攝食強度分類為例,這些魚類具有較強的奪食性,可以在養殖池塘水面上觀察到較為明顯的強度差異,此算法同樣適用于其他具有奪食性的池塘養殖淡水魚攝食強度的分類。試驗數據采集于上海瑞缽水產有限公司,該水產基地位于上海市崇明區,數據采集選定3號池塘,該池塘水深約2 m,長約50 m、寬約25 m,面積約為1 333 m2,一個池塘配有一個ZY150型顆粒飼料投餌機(佛山市中漁科技有限公司),安裝在岸邊的延伸臺,如圖1所示,采用扇形噴撒式投餌方案,投餌半徑約6 m。

圖1 自動投餌機Fig.1 Automatic feeding machine
試驗池塘中草魚體長約70 cm,平均魚體質量2.5 kg;鯽魚體長約35 cm,平均魚體質量1 kg。投餌方案為定時定量投餌,每日09:00—16:00間隔1 h投餌,投餌機拋撒出定量的餌料后會暫停1 min,等待魚群攝食完成后再繼續下一次投餌動作,每次投餌完全結束需要約30 min。
試驗的視頻采集采用水上視角,如圖2所示。攝像頭通過立桿安置在池塘投餌機的上方,距離水面約4 m,攝像頭斜向下進行拍攝,拍攝區域中心為投餌機的餌料拋撒區域。視頻采集幀率為30 Hz,視頻幀的原始尺寸為1 920像素×1 080像素。攝像頭采集不同時間段、不同光照條件下投餌前中后期的魚群攝食視頻,通過Python語言的OpenCV圖像處理庫對原始長視頻進行處理。視頻采集的具體方案如表1所示,在光照為中等或較弱時,每次視頻采樣時間為10 min;當光照較強時,由于可能出現視頻曝光過曝的問題,因此將采集時間設置為25 min以保證能采集到足夠的數據集。

圖2 視頻采集示意圖Fig.2 Structure diagram of video capture

表1 攝食期間視頻采集方案Tab.1 Video capture plan during feeding
將原始采集的水上視頻按照未攝食和攝食2種狀態進行劃分,之后結合相關文獻及當地養殖專家經驗對魚群攝食期間的視頻進行強度分類,分成強和弱兩種狀態。未攝食狀態:魚群對投喂的餌料無反應,不浮至水面,水面平穩;弱攝食狀態:少量魚群上浮至水面,對投喂餌料主動進食;強攝食狀態:大量魚群上浮至水面搶奪餌料,激起水花。
視頻樣本的時長設置為2 s(60幀),尺寸裁剪為600像素×500像素,視頻幀圖像如圖3所示。時間長度為2 s的視頻可以較好地表現當前時間魚群的攝食強度,同時對設備要求也更低。在實際生產環境中,可以根據現場情況適當調整視頻時長,以適應具體的養殖環境。

圖3 視頻幀Fig.3 Video frame
視頻的標注工作由3名研究人員同時展開,每一視頻樣本必須由2名或2名以上人員確認為同一類別才可完成標注,否則視為無效樣本。數據集共包含1 071個時長2 s的視頻,其中未攝食視頻樣本355個,弱攝食樣本335個,強攝食樣本381個,訓練集、驗證集和測試集按照7∶2∶1的比例劃分,具體數量如表2所示。

表2 數據集信息Tab.2 Dataset information
長期卷積循環網絡LRCN用于具有空間輸入的序列預測問題,結構如圖4所示(圖中y1、y2、…、yt表示不同時間下視頻幀的分類結果)。用于視頻分類時,卷積神經網絡提取輸入視頻幀的特征,這些具有時序關聯的特征送入后續的長短期記憶網絡(Long short-term memory, LSTM)[26]進行處理,并得到時序預測結果的輸出。

圖4 LRCN結構圖Fig.4 Structure diagram of LRCN
LRCN將CNN應用于每個輸入的視頻幀,并將每個輸入視頻幀的輸出作為單個時間步驟傳遞給LSTM網絡。本文選取長期卷積循環網絡作為基準模型,融合SE模塊,并對LSTM網絡部分進行改進,實現網絡性能的提升。
SENet是一種新型網絡結構,引入了通道注意力機制。SE模塊建模特征通道之間的相互依賴關系的核心在于網絡會自動獲取到每個特征通道的重要程度,根據重要程度去放大有用的特征及抑制無用的特征,示意圖如圖5所示。

圖5 SE模塊示意圖Fig.5 Structure diagram of SE block
SE模塊首先對特征圖進行Sequeeze操作,順著空間維度來進行特征壓縮,將每個大小為W×H的二維特征通道壓縮至1×1,數學描述為
(1)
式中xc——原始特征圖,尺寸為H×W×c
zc——Sequeeze操作后1×1×c的特征圖
c——通道數
Fsq——Sequeeze操作函數
之后進行Excitation操作,通過參數來為每個特征通道生成權重,其中參數被學習用來顯式地建模特征通道間的相關性,數學描述為
s=Fex(z,W)=σ(W2δ(W1z))
(2)
式中W1、W2——可訓練的參數,其中W1的維度為(c/r)c,W2的維度為c×c/r
r——縮放參數
Fex——Excitation操作函數
σ()——Sigmoid函數
δ()——脈沖函數
s——通道權重
最后進行特征重標定,將Excitation操作后的輸出權重通過乘法逐通道加權到先前的特征上,數學描述為
(3)

Fscale——加權操作函數
sc——不同通道的特征權重
利用SE模塊可嵌入到其他模型中的特點,將SE模塊嵌入LRCN模型的卷積神經網絡中,提高網絡的特征提取能力。
門控遞歸單元[27](Gate recurrent unit, GRU)是循環神經網絡(Recurrent neural network, RNN)的一種,具有結構簡單、參數量少、效果優等特點。LSTM中含有3個門函數來控制輸入值、記憶值和輸出值,在GRU中只有更新門和重置門,所以GRU需要更少的數據來泛化。
本文提出了SE-LRCN視頻分類模型,對魚群的攝食視頻進行強度分類,該模型融合了SE模塊和LRCN網絡結構,用雙層GRU代替原始的單層LSTM網絡,模型的整體結構如圖6所示(圖中cl1代表魚群處于未攝食狀態,cl2代表魚群處于弱攝食狀態,cl3代表魚群處于強攝食狀態)。

圖6 SE-LRCN模型示意圖Fig.6 Structure diagram of SE-LRCN
模型輸入層為時長2 s(60幀)的視頻樣本。SE-CNN網絡部分將SE模塊嵌入到卷積神經網絡中,用于視頻幀的特征提取,共包含5個卷積層和1個平均池化層,中間3個卷積層嵌入了SE模塊(r=4),網絡結構如圖7所示。

圖7 SE-CNN網絡示意圖Fig.7 Structure diagram of SE-CNN network
通過SE-CNN網絡進行視頻幀特征提取后,將具有時間分布信息的特征輸入至兩層的GRU網絡中,GRU網絡的節點數均為256,最后通過全連接分類層輸出視頻樣本的類別,輸出層采用Softmax分類函數預測類別概率,數學描述為
(4)
式中pcl——視頻樣本預測為cl的概率
cl——分類類別
K——類別數量,取3
acl——全連接分類層預測為cl的原始輸出
模型采用交叉熵損失函數L進行訓練,學習率設置為0.001。
選取綜合準確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1值(F1 score)4個評價指標來評估本算法的性能。綜合準確率表示預測正確的樣本數量占總樣本數量的比例,精確率表示預測屬于某一類別的樣本中預測正確的比例,召回率表示所有屬于某一類別的樣本被預測正確的比例,F1值則綜合考慮了精確率和召回率,能夠避免算法出現保守預測和暴力召回的情況。
在SE-LRCN模型中,GRU網絡的層數會直接影響模型的效果,如表3所示。在同樣使用SE-CNN網絡進行視頻特征提取的情況下,隨著GRU網絡層數的增加,模型的評價指標均有一定的提升。當GRU層數從1層上升為2層時,模型的準確率提升了7個百分點;當層數從2層提升為3層時,模型準確率只提升了0.5個百分點。考慮到GRU網絡層數提升帶來的計算量和參數量,本文最終選擇采用兩層的GRU網絡進行視頻幀特征的分類。

表3 不同GRU網絡層數下模型性能Tab.3 Model performance at different layers of GRU networks %
循環神經網絡的類型同樣會影響模型的效果,本文選擇GRU、LSTM和RNN[28]3種典型網絡結構進行試驗,均采用SE-CNN網絡進行視頻特征提取,并使用雙層網絡結構,對比結果如表4所示,雙層GRU網絡結構在各項指標下均優于其他2種網絡結構。

表4 不同網絡結構下模型性能Tab.4 Model performance at different types %
SE-LRCN模型在驗證集上的準確率達到97%,精確率達到95.7%,與改進前LRCN模型相比,準確率提高12個百分點(表5),精確率提高15個百分點,召回率提高9.8個百分點,F1值提高12.4個百分點,各項指標都有明顯的提升。

表5 SE-LRCN與LRCN模型性能對比Tab.5 Experiment results comparison between SE-LRCN model and LRCN model %
由表3~5可知,原始的LRCN網絡僅依靠卷積神經網絡進行視頻特征的提取,特征提取能力有限。SE模塊的引入能夠整合特征通道的重要程度,有效提升CNN的表示能力,極大地提高了網絡的性能。GRU相較于LSTM網絡具有參數量少等特點,在數據量大的條件下,LSTM強大表達能力可能會產生更好的結果。但本文數據集的樣本數量較少,結構簡單、參數少的GRU網絡能夠更好地泛化。雙層GRU網絡結構與單層相比具有更加強大的表達能力和學習能力,能夠更好地處理具體有時序信息特征的問題。
(1)搭建了開放式養殖池塘水上魚群攝食視頻數據集,為后續視頻分類模型訓練提供數據支撐。
(2)對傳統的LRCN視頻分類模型進行改進,將注意力機制應用于視頻分類中,提出了SE-LRCN模型,適用于數據集數量較少的場景。
(3)利用搭建的開放式養殖池塘水上魚群攝食視頻數據集對SE-LRCN模型進行訓練,最終在驗證集上準確率達到97%,與改進前LRCN模型相比有較大的性能提升。
(4)模型實現了針對開放式養殖池塘水上魚群攝食強度的三分類,能夠較為全面地表現魚群的攝食狀態。