劉世晶 涂雪瀅 錢 程 周 捷 陳 軍
(1.中國水產科學研究院漁業機械儀器研究所,上海 200092;2.上海市崇明區水產技術推廣站,上海 202150)
近年來,隨著智能、綠色、生態農業不斷發展,水產養殖面臨產業轉型升級發展機遇與挑戰。飼料作為水產養殖產業重要的生產投入品,占水產養殖總成本50%以上[1],是影響水產養殖整體效益重要因素。此外,由于飼料浪費引起的水質污染,已經成為制約水產養殖綠色健康的發展的重要瓶頸[2]。因此,開展精準投喂技術研究,減少生產過程飼料浪費,對節省養殖成本、降低水體污染和提高養殖效益具有重要意義。
池塘養殖特別是戶外池塘養殖,生產工況復雜,導致傳統檢測手法和分析手段很難準確地量化分類魚類攝食行為,大大增加了實施精準投喂的難度。近年來,國內外相關研究機構,圍繞水產養殖精準魚類攝食行為分類開展了大量研究工作,主要集中在光學和聲學兩個方面。其中聲學量化方法,主要是利用水聽器和聲納等主被動聲學技術,測量魚類攝食聲音和攝食行為,并通過回歸分析和機器學習等手段對魚類不同攝食階段進行分類。例如,Lagardere等[3]利用水聽器,發現大比目魚攝食頻率為7—10 kHz,變化幅度為15—20 dB;Juell等[4]利用小型聲納測量固定位置餌料剩余情況,并結合魚類攝食行為經驗分析,判斷魚類當前攝食狀態。上述方法在背景噪聲較少的工況環境取得了較好的試驗效果,但尚無法滿足具有全頻環境噪聲和復雜的池塘底質環境的戶外池塘養殖場景應用需要。相比于聲學技術,視覺技術由于其非接觸、高精度和低成本等特點,目前已經成為該領域研究熱點[5]。Liu等[6]和Ye等[7]采用基于單幀圖像的特征分類識別方法,量化魚類攝食行為,在魚類攝食瞬時行為評價中取得了不錯的分類效果,但由于魚類攝食行為具有明顯的強弱波動特征,基于局部特征的分類方法很難有效統計全局特性,導致其預測結果魯棒性不足。為了解決這個問題,張佳林等[8]提出一種基于變分貝葉斯編碼的卷積神經網絡分類方法,利用固定長度視頻序列特征判斷魚類攝食狀態,實現大西洋鮭(Salmo salar)攝食強度粗分類;唐宸等[9]利用神經網絡和專家打分法對魚類攝食的連續圖像進行識別分類,實現了的魚類攝食狀態的細粒度分割。上述基于時間特性的魚類攝食行為分類方法,采用固定光照條件獲取魚類攝食圖像,并利用全連接網絡實現行為分類,適用于光照穩定、魚類集群和分散行為較為明顯的設施化養殖環境,且由于采樣頻率固定,模型的泛化能力較弱。
針對上述問題,本文圍繞戶外池塘草魚精準投喂技術需求,提出一種基于幀間光流特征和改進遞歸神經網絡(Recurrent neural network,RNN)的草魚攝食狀態分類方法。該方法利用偏振相機獲取多張魚類攝食偏振圖片,并通過圖像亮度信息選取低反光圖像作為訓練樣本,以期提高系統在戶外場景的適應能力;其次,根據投飼機啟停狀態分割視頻序列,并利用光流法計算分割后視頻序列內相鄰兩幀運動狀態,以期細分攝食行為時間特性;以相鄰兩幀運動狀態為內參,構建基于幀間運動特征的視頻序列特征向量,并以此為基礎,構建特征樣本集;然后,基于視頻序列特征樣本,利用改進RNN網絡實現攝食狀態分類,增強投喂狀態識別的時間相關性;最后,通過與不同攝食分類模型比較,驗證本文方法的有效性。
試驗使用的偏振相機為型號為IMX250MZR,幀率24 fps,采集圖像分辨率為2448×2048像素。相機偏振角度為0°、45°、90°、135°,可同時獲取4個角度的偏振圖像。試驗用圖像處理器CPU主頻4.3 GHz,內存32 G,顯存2 G,CUDA并行處理核心256個。集成開發環境為Anaconda3和python3.6,RNN模型由pytorch程序包實現。
魚類攝食視頻數據采集自上海市崇明區瑞缽水產養殖專業合作社戶外養殖池塘,采樣時間為2020年7月1日至2020年7月30日。試驗池塘占地4666.7 m2,養殖品種為草魚,畝平均養殖當量為500 kg。池塘配有1臺增氧機和1臺投飼機,投飼機采用傳統的間歇式投喂方式,啟停時長分別為4s和2s。按照養殖戶養殖習慣,試驗期間日餌率定為7.2%,每天理論投飼量為252 kg,投飼機每天投喂3次,投飼時間為9:00、13:00和17:00,單次理論投喂量為84 kg,投飼時長約為28min。試驗時,為了增加比較樣本數量,將每次投喂時長設定為30min,試驗期間保持不變。
如圖 1所示,采樣相機采用三角支架安裝在投飼機側邊,采用吊裝形式固定,機座中軸近似與水面垂直。系統集成控制裝置安裝在支架中部,采用Zigbee無線通信方式控制相機和投飼機。手動調整相機角度,使圖像中心與投飼機撒料中心盡量一致,且只拍攝水面圖像。采用4G無線傳輸形式獲取投喂階段視頻,并同步記錄投飼機開關狀態。

圖1 相機現場安裝圖Fig.1 Site layout of camera
戶外環境養殖水體鏡面反射是影響成像質量的重要影響因素,已經成為制約視覺技術深入應用的關鍵技術瓶頸。為了降低戶外光照的影響,增加技術的實用性,本文利用具備4個偏振角成像偏振相機作為采樣裝置,同時獲取4幅不同偏振角圖像圖 2。為了選取最優偏振圖像構建樣本集,提出一種基于圖像飽和度和亮度的圖像選取方法。

圖2 偏振圖像選擇Fig.2 Polarization image selection
利用文獻[10]中方法,將RGB顏色空間轉換為HSL(Hue,Saturation,Luminance)顏色空間,其中S(飽和度)和L(亮度)分量取值范圍為0—255;采用專家經驗法初步確定L上限閾值PL,當亮度高于上限值時認為存在過度曝光現象。水面反射光線偏振角度與太陽高角度值緊密相關,因此在特定時間,當一個偏振角度圖像存在過度曝光現象時,肯定存在另一個偏振角度圖像無過度曝光現象。以0°偏振角圖像作為起始點,按照偏振角度從小到大順序遍歷所有偏振圖像,確定所有圖像像素點亮度都低于PL時的一個或多個偏振角度;當無過度曝光偏振角度為1個時,以此偏振角度圖像為樣本構建圖像樣本集;當存在多個無過度曝光偏振角度時,比較不同偏振角度圖像飽和度,選擇飽和度最高的偏振角度圖像構建樣本集。
本文采用光流法[11]構建魚類攝食運動特征。光流法是一種計算幀間運動信息的計算方法,通過光流法在全局圖像范圍內計算關鍵像素點的運動場,能夠有效描述魚類攝食圖像瞬時變化情況。光流法主要依靠三個假設:(1)亮度恒定,外部光照條件恒定;(2)時間連續,幀間圖像運動連續且位移較小;(3)空間一致,相鄰像素運動方向一致。基于這三個假設,我們可以得到像素點灰度約束方程:

式中,L(u,v,t)代表圖像(u,v)位置初始像素點在t時刻的光強度值,u為橫軸方向像素坐標,v為縱軸方向像素坐標。L(u+du,v+dv,t+dt)代表t+dt時刻初始像素點移動到(u+du,v+dv)位置時的光強度值。利用泰勒展開公式,可得光流方程為:

式中,x、y分別為光流沿u、v方向運動矢量,、、表示像素點灰度沿u、v、t三個方向的偏導數。
為了描述魚類攝食圖像時間序列圖像運動特性,本文選擇速度和轉角兩個參數表征光流特征,其中速度特征代表像素的運動矢量(式3),轉角特征代表像素運動的相位角度(式4)。

式中,Mag(u,v),ang(u,v)分別為(u,v)點運動速度和相對轉角。文獻[12]比較了不同光流方法的算法性能,指出Lucas-Kanade(LK)光流法[13]在所有測試集都表現良好,因此本文選擇LK光流法作為光流特征提取方法,得到的相鄰兩幀光流特征矢量場圖像如圖 3所示。
本文采用速度矢量和相位角度來表征光流矢量,只能定性的評價魚類攝食圖像光流脈動,很難定量的量化光流脈動。魚類攝食運動具有明顯的隨機特性,當魚類開始搶食時,水面波動劇烈,造成的圖像特征變化多樣,基于視頻序列計算出的光流矢量差異較大,僅通過矢量場評價攝食運動強度是極不科學的。此外,在撒料中心區魚類活動相比與周邊區域更為劇烈,導致圖像光流場分布不均勻,增加了全局光流矢量量化難度。
針對此種情況,本文提出一種基于光流能量值和分塊描述的圖像光流脈動量化方法,首先采用等分策略將圖像分割成44、88或3232等多個獨立單元,計算每個單元的光流運動矢量,并利用文獻[14]中的方法計算每個圖像塊的光流能量值,能量值計算公式如下:

式中,Lk為分塊圖像第k個像素點的像素大小,n為圖像塊像素點總數,Magk為速度矢量,angk為相位角度。為了量化圖像光流矢量,利用2-范數來代表分塊圖像中像素點的光流脈動能量,并用所有光流脈動能量的期望來代表分塊圖像中光流的平均脈動強度,則單幀圖像光流脈動強度表征向量X i為:

式中,其中Xi為時間長度索引i處的特征向量,n為分塊 數量,為每塊的平均光流能量值。
近年來,基于序列的遞歸神經網絡(Recurrent neural network,RNN),在語音識別和機器翻譯等領域取得了良好的應用效果,其良好時間序列追溯能力,為動物行為分析提供了有效的技術手段,且正逐漸應用到相關領域的研究[15—17]。目前常見的RNN改進結構包括LSTM和GRU等,改進結構能夠有效避免網絡層數增加產生的梯度消失和梯度爆炸問題,但會增加算法運算復雜度[18,19]。受饑餓程度和飽食度影響,魚類攝食行為雖然具有明顯的時間特性,但是一個逐步變化的過程,單個視頻樣本序列內整體攝食強度變化不劇烈,因此利用經典RNN模型開展魚類攝食狀態分類是可行的。此外,針對實際生產工況,魚類攝食狀態分類結果將為下一步精準投喂提供決策數據,因此對算法實時性要求較高,相比于改進結構傳統RNN結構更為簡潔,運算速度更快,更符合實時性要求較高的應用場景使用要求圖 4。

圖4 改進RNN模型結構Fig.4 Improved RNN model structure
由于魚類的可馴化特性,其對投飼機投飼聲音能夠產生應激行為,但飽食后搶食行為不明顯,因此需結合投飼機暫停投喂后魚類行為綜合判斷魚類搶食狀態。因此,本文采用雙向RNN(Birectional Recurrent Neural Networks,BiRNN)結構構建分類模型[20],模型結構如圖 3所示。其中,RNN輸入為時視頻序列光流脈動強度特征X={Xi}。雙向RNN具有前向和后向兩個隱藏狀態,在時間索引t處的全局隱藏狀態為,隱藏狀態更新如下:

式中,g和f均為激勵函數,U、W、分別代表輸入層到隱藏層權值,為BiRNN隱藏層輸出。對于魚類攝食等群體運動行為分類,由于其運動狀態具有明顯的時間關聯特性,需對時間序列進行整體分析,以判定其全局狀態。如圖 3所示,為了增強模型對全局數據的利用能力,模型在BiRNN結構的基礎上增加了一個具有線性激活函數的全連接層,并采用前饋神經網絡實現攝食狀態分類,狀態分類估計如下:

圖3 光流矢量場圖像Fig.3 Optical flow vector field image

式中,Linear為線性激活函數,T為隱藏層輸出權值,b為偏置量。
為了評價攝食狀態分類效果,本文選擇準確率(Precision)、召回率(Recall)和F1得分(F1·score)作為模型評價指標。其中準確率主要用于評價模型精準識別程度,召回率主要用于評價正確樣本的分類效果,而F1得分主要用于評價算法的整體效果,避免出現保守預測和暴力召回的情況[21]。模型評價公式如下所示:

式中,N待分類樣本總數,為正確分類樣本數,M為樣本分類數,為第l個類別正確分類樣本數。
養殖試驗共采集正常養殖30d投喂數據,養殖場每天投喂3次,每次投喂時長30min,合計獲得視頻數據2700min,按照投喂機1次投喂和暫停時間6s計算,共得到樣本集數據27000個。在圖像采集時,設定采集幀率為24幀,每2幀獲取一組光流數據計算,單個樣本向量的維度為72。為了找到最適圖像分割比例構建光流特征,按照4×4、8×8、16×16和32×32構建4組比較樣本。
為了保證樣本基礎分類的準確性,選擇5名科研人員按照弱攝食、中攝食和強攝食3個分類標準對試驗樣本進行分類,當有3名或超過3名人員同時選擇一種狀態時將該狀態作為該視頻片斷的攝食狀態。當選擇的攝食狀態有較大分歧時,即產生2:2:1的選擇比例時,低比例人員在剩余兩組內重新選擇,并根據選擇結果,將得票較多的狀態作為分類狀態。按照此種方法,共獲得弱攝食狀態樣本數據6721個,中攝食強度樣本數據13467個,強攝食狀態數據6812個。按照深度學習經驗樣本分類辦法[22],基于四舍五入原則,將所有攝食狀態樣本集按照8∶2的比例構建訓練集和測試集。
改進的RNN模型共包括BiRNN層和全連接層兩個主要組成部分。因此,模型的超參數主要包括隱藏層的數量、每層中隱藏的RNN單元的數量、學習率和匹尺寸等。本文采用pytorch神經網絡礦建實現和優化改進RNN模型,其中隱含層數量設為2,每層RNN隱藏單元數量設為80。采用Adam優化器更新梯度變量,并設定丟失率為0.3 %,匹尺寸為60。
本文提出的基于光流能量值的運動強度特征構建方法,通過將圖像分割成多個運動區塊,來近似的描述整幅圖像的光流脈動強度。區塊劃分越細,圖像脈動強度還原度越高,但算法運算量將成級數增長。此外,針對群體運動的全局性圖像描述,隨著劃分區間數量的增加,區間內圖像運動特征隨機干擾降低,趨同性增強,進一步劃分對算法精準度提升有限。因此選擇合適的劃分區間,不僅可以提升算法預測精度,更有利于降低算法復雜度,提升運算效率。針對此種情況,本文在前期經驗分析的基礎上,選擇4種圖像劃分方法分類,并通過比較評價指標,確定最優劃分方案。4種圖像劃分方法分類結果如表 1所示。
從表 1可以看出,隨著區域劃分數量的增加攝食狀態識別準確率和召回率都有明顯提升,4×4劃分方法識別精度最低,16×16和32×32劃分方法識別精準基本一致,32×32劃分方法識別平準準確率和平準召回率僅比16×16劃分方法高0.03。在所有四組分類方法之中攝食狀態識別精度最高,弱攝食和強攝食狀態識別精準接近。16×16劃分方法中攝食識別準確度和召回率均高于32×32劃分方法,而弱攝食和強攝食識別結果略低于32×32劃分方法。

表1 不同圖像劃分方法分類結果Tab.1 Classification results of different image division methods
按照一般性認知,圖像分割數量越多,其光流特征對圖像整體特征描述越準確,但是由于模型訓練時匹尺寸選擇和優化器學習率選擇具有一定的隨機性,導致產生隨機誤差。當預測精度接近時,出現了32×32劃分方法在中攝食識別精度略低于16×16劃分方法的情況。綜上,根據不同圖像劃分方法綜合比較,本文選擇16×16劃分方法作為模型圖像光流特征構建框架。
本文采用改進RNN結構作為識別模型對魚類攝食行為進行分類,適用于不同時長視頻序列輸入,可滿足不同投喂頻率的視頻序列分類學習。但是,為了比較本文方法的有效性,采用固定輸入數據維度的方法選擇比較算法。首先,本文利用了雙向RNN來提升模型對投飼機投喂時產生聲音應激行為的適應能力,因此選擇單項RNN結合全連接層作為第一個比較算法。其次,本文選擇全連接層以充分利用整個時間序列狀態,因此選擇典型雙向RNN作為第二個比較算法。此外,目前常見的魚類攝食狀態分類方法主要利用BP神經網絡、SVM和CNN等分類算法,因此本文選用具有代表性的文獻[23—25]中的方法作為其他類比算法進行綜合比較。為了提高比較效果的有效性,本文不考慮文獻原有試驗環境,而是直接利用python3.6對文獻中的方法進行重現,并應用于戶外養殖環境獲取的圖像,比較結果如表 2所示。
從表 2可以看出,本文方法在分類平均準確率、平均召回率及平均F1得分方面都優于其他方法。其中,基于單向RNN+全連接層的分類方法比雙向RNN取得了更好的分類效果,說明魚類攝食視頻序列是一種非穩態的時間變化序列,引入全連接層增加模型對整個時間序列的利用能力,增強了模型對非穩態特征的適應能力。單向RNN的分類精度低于雙向RNN,說明魚類攝食行為在投飼機投喂時和暫停時有較大差異,需利用正向和反向聯合判斷提升攝食狀態分類的準確性。此外,文獻[25]中的方法采用CNN網絡實現魚類攝食行為分類,充分利用了時序圖像特征,其分類精度略低于本文方法,優于單向RNN+全連接層和雙向RNN分類方法。該方法采用全局特征描述,沒有考慮局部特征變化對全局的影響,而魚類攝食圖像在投飼機投喂區域紋理變化頻率遠大于非投喂核心區,單一利用全局特征的評價很容易丟失局部信息,而本文方法通過比較不同圖像分塊狀態分類效果,確定最優分塊特征實現了基于局部特征的全局復雜特征描述,有效提升了算法分類效果。

表2 不同分類算法分析結果Tab.2 Analysis results of different classification algorithms
提出一種基于幀間光流特征和改進RNN的草魚攝食狀態分類方法,實現了戶外池塘養殖草魚攝食狀態的精準分類,主要結論如下:(1)基于圖像偏振成像原理,利用偏振相機獲取不同偏振角度的攝食圖像,并根據圖像亮度和飽和度確定最優偏振視角,實現了戶外自然光條件魚類攝食圖像的有效獲取;(2)提出一種基于光流脈動強度和圖像分塊的圖像全局光流特征構建方法,實現了基于局部特征的全局復雜特征有效描述,有效提升了圖像的分類精度;(3)本文方法在強中弱三類魚類攝食狀態分類方面取得了較好的分類精度,模型評價指標達到了平均準確率91%、平均召回率92.2%、平均F1得分91.6,均優于其他分類方法;(4)本文采用基于RNN的模型構建方法,可滿足不同投喂時間策略樣本訓練要求。此外,通過改變樣本集,可適用于其他搶食性魚類攝食狀態判定,有效提升了模型廣適性。綜上,本文方法在草魚攝食狀態分類方面取得了較好的識別效果,但現有樣本數量和種類還不滿足不同養殖模式、不同養殖周期攝食狀態分類需要,仍需繼續豐富樣本數量,增強模型適應能力,為魚類精準飼喂控制提供有效數據和算法支撐。