馮雙星,王丁弘,潘 良,周 超
(1 北京市農(nóng)林科學(xué)院信息技術(shù)研究中心,北京 100097;2 國(guó)家農(nóng)業(yè)信息化工程技術(shù)研究中心,北京 100097;3 農(nóng)產(chǎn)品質(zhì)量安全追溯技術(shù)及應(yīng)用國(guó)家工程研究中心,北京 100097)
金鱒(Oncorhynchusaguabonita)是虹鱒的亞種,在其養(yǎng)殖過(guò)程中,飼料支出約占總成本的40%以上[1-2]。相關(guān)研究表明,對(duì)魚類攝食強(qiáng)度進(jìn)行實(shí)時(shí)精確的量化,并用于指導(dǎo)投喂,可有效減少過(guò)投喂的發(fā)生,進(jìn)而提高飼料利用率[3-5]。
機(jī)器視覺技術(shù)因其成本低、無(wú)損的特點(diǎn)[6-8],在水產(chǎn)養(yǎng)殖中得到了廣泛應(yīng)用[9-10]。但傳統(tǒng)的機(jī)器學(xué)習(xí)算法過(guò)于依賴手工提取的特征,應(yīng)用受限。目前,深度學(xué)習(xí)[11]憑借其特征自動(dòng)學(xué)習(xí)和處理大量數(shù)據(jù)能力,已廣泛應(yīng)用于魚類目標(biāo)識(shí)別、水質(zhì)預(yù)測(cè)、生物量估測(cè)、行為量化等多個(gè)方面[12-15]。其中,魚類攝食強(qiáng)度的評(píng)估也是其應(yīng)用的重要領(lǐng)域之一[16-17]。涂雪瀅等[18]基于深度學(xué)習(xí),識(shí)別了鱸魚、鯽魚、錦鯉等5種典型養(yǎng)殖魚類,識(shí)別精度為95.47%。提出了基于LeNet5框架的攝食強(qiáng)度評(píng)估系統(tǒng),分級(jí)準(zhǔn)確率達(dá)90%。朱明等[19]基于輕量級(jí)MobileNetV3-Small網(wǎng)絡(luò),對(duì)鱸魚的攝食狀態(tài)進(jìn)行了分類。
魚群攝食是一個(gè)連續(xù)、快速的過(guò)程,實(shí)時(shí)檢測(cè)魚群攝食強(qiáng)度有助于實(shí)現(xiàn)飼料按需投喂。單幀圖像雖然可以通過(guò)魚群的空間分布提取其聚散等空間信息,但在提取魚群行為的時(shí)間序列信息時(shí)受限。攝食視頻可提供魚群時(shí)間和空間的運(yùn)動(dòng)變化信息。M?l?y等[20]設(shè)計(jì)了一種基于光流和RGB圖像的雙流循環(huán)神經(jīng)網(wǎng)絡(luò),識(shí)別鮭魚攝食和非攝食狀態(tài)的準(zhǔn)確率可達(dá)81.4%。張佳林等[21]基于卷積神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)了魚群攝食和非攝食狀態(tài)的分類,準(zhǔn)確率為89%。
基于深度學(xué)習(xí)的視頻動(dòng)作識(shí)別算法起始于2014年的DeepVideo[22]。之后,雙流法[23]被提出。3D CNN可實(shí)現(xiàn)較好效果,C3D[24]網(wǎng)絡(luò)已被用于行為識(shí)別、場(chǎng)景識(shí)別等領(lǐng)域。為了進(jìn)一步降低三維網(wǎng)絡(luò)訓(xùn)練的復(fù)雜性,在保持3D CNN實(shí)時(shí)性的同時(shí),又對(duì)其3D內(nèi)核分解為2D 空間卷積和1D時(shí)間卷積兩個(gè)單獨(dú)的操作,進(jìn)一步提出了R2+1D算法[25]和S3D[26]算法。目前攝食強(qiáng)度分級(jí)主要基于視頻流中識(shí)別動(dòng)作,對(duì)魚群攝食視頻進(jìn)行強(qiáng)度分級(jí),難以精細(xì)反映魚群攝食活動(dòng)變化。S3D算法兼顧更優(yōu)的準(zhǔn)確率和更少的參數(shù)運(yùn)算量,可用于攝食強(qiáng)度檢測(cè)。
基于此,本研究結(jié)合時(shí)序動(dòng)作檢測(cè)方法,使用S3D算法,利用滑窗在視頻流中精確定位魚群攝食強(qiáng)度等級(jí),更精細(xì)地反映魚群攝食狀態(tài)。同時(shí)開發(fā)了魚類攝食強(qiáng)度識(shí)別系統(tǒng),可為開發(fā)智能的投飼系統(tǒng)提供有用的輸入信息。
本試驗(yàn)在北京市農(nóng)林科學(xué)院信息技術(shù)研究中心的水產(chǎn)精準(zhǔn)養(yǎng)殖實(shí)驗(yàn)室進(jìn)行,如圖1所示。系統(tǒng)共有6個(gè)養(yǎng)殖池,每個(gè)養(yǎng)殖池直徑1 m,高度1.2 m,養(yǎng)殖水深1 m。以金鱒為試驗(yàn)對(duì)象,平均規(guī)格520±10 g,密度9.1 kg/m3,溶氧質(zhì)量濃度10~12 mg/L,養(yǎng)殖溫度為(16±0.4)℃。每天投喂2次,投喂時(shí)間分別為10:00和17:00。為避免影響其正常習(xí)性,6個(gè)養(yǎng)殖池的金鱒均已經(jīng)過(guò)兩個(gè)月的適應(yīng)性養(yǎng)殖。投喂裝置為循環(huán)養(yǎng)殖池上方的投飼機(jī)(圖1),其可以調(diào)節(jié)拋灑范圍,以便在水面拋灑飼料時(shí)更加均勻。在飼料投放同時(shí),開始采集魚群攝食的視頻圖像。
圖1 試驗(yàn)裝置圖Fig.1 Experimental device
本研究采集視頻的方案為水面拍攝,攝像機(jī)型號(hào)為GOPRO HERO8,如圖1所示,攝像機(jī)放置于養(yǎng)殖池水面上方50 cm高度,為保證視野寬闊,在畫面中盡可能多地拍攝內(nèi)容,鏡頭設(shè)置為“寬”(16~34 mm)。
本研究基于相關(guān)文獻(xiàn)[18,27]和專家經(jīng)驗(yàn),將魚群攝食強(qiáng)度分為 “None” “Weak” “Medium” “Strong” 四級(jí)(圖2)。其中,“None”表示魚類無(wú)攝食欲望,對(duì)飼料沒有反應(yīng),此時(shí)出現(xiàn)大量殘余飼料;“Weak”表示魚只攝食落在前面的飼料,出現(xiàn)少量殘飼;“Medium”表示魚類主動(dòng)游向飼料并攝食; “Strong”表示魚類劇烈搶食,如圖2。
圖2 魚群攝食強(qiáng)度數(shù)據(jù)集劃分Fig.2 Data set division of fish feeding intensity
將采集到的魚類攝食視頻編號(hào),為了保證視頻包含完整的行為信息,視頻樣本的時(shí)長(zhǎng)為5~9 s,共采集400段不同行為視頻,共154 259幀。其中,“Strong”強(qiáng)度93段視頻,29 040幀;“Medium”強(qiáng)度107段視頻,34 618幀;“Weak”強(qiáng)度共有98段視頻,38 702幀;“None”強(qiáng)度共有102段視頻,51 899幀。取總數(shù)的20%作為測(cè)試集,其余80%數(shù)據(jù)按照8∶2的比例劃分訓(xùn)練集和驗(yàn)證集。
魚群攝食具有時(shí)間較短、切換快的特點(diǎn),而S3D算法能更好地提取短期魚群攝食的時(shí)空特征。S3D算法主要是I3D網(wǎng)絡(luò)作為基準(zhǔn),使用Inception模塊和深度可分離卷積。創(chuàng)造性地提出了3D時(shí)空Sep-Inc模塊,并與池化層和3D卷積層交替搭建成新的S3D網(wǎng)絡(luò)。其有效增加了算法的表征能力,減少了運(yùn)算量,其算法流程如圖3所示。
圖3 S3D算法及投喂控制系統(tǒng)框架圖Fig.3 Frame diagram of S3D algorithm and feeding control system
S3D模型中的3D時(shí)空Sep-Inc模塊,基于Inception模塊和深度可分離卷積改進(jìn)而來(lái),其將輸出的不同尺寸特征進(jìn)行融合,其中深度可分離卷積核尺寸設(shè)定為3。為準(zhǔn)確和快速檢測(cè)魚群攝食動(dòng)作,使用小卷積核,避免使用大卷積核增加模型運(yùn)算量,進(jìn)而減慢攝食強(qiáng)度檢測(cè)。3D時(shí)空Sep-Inc模塊如圖4所示。
圖4 3D時(shí)空Sep-Inc模塊Fig.4 3D spatiotemporal Sep-Inc module
本試驗(yàn)主機(jī)操作系統(tǒng)Windows10,CPU為Intel Core i7-9700K,GPU為 Nvidia GeForce RTX 2080 Ti(11 GB)。采用框架 PyTorch 1.7.1,加速環(huán)境為CUDA 10.1和CUDNN 7.6.5。
訓(xùn)練模型時(shí),考慮到GPU內(nèi)存,本研究將batch size設(shè)置為16,迭代次數(shù)設(shè)置為200,學(xué)習(xí)率為0.01,通過(guò)SGD優(yōu)化器對(duì)網(wǎng)絡(luò)參數(shù)進(jìn)行優(yōu)化。訓(xùn)練使用16幀RGB剪輯作為輸入,輸入數(shù)據(jù)大小為3通道×16幀×112像素×112像素。
本算法訓(xùn)練過(guò)程的損失曲線如圖5所示。
圖5 訓(xùn)練損失曲線Fig.5 Training loss curve
可以看出,在25次迭代之前,損失迅速減小,然后隨著迭代次數(shù)的增加,損失緩慢向下振蕩,趨于穩(wěn)定。最終損失值穩(wěn)定在約0.5。損失值的逐漸減小和穩(wěn)定意味著模型逐漸收斂,訓(xùn)練結(jié)果達(dá)到預(yù)期,證明了模型的魯棒性,適合于養(yǎng)殖工廠中魚群的攝食強(qiáng)度識(shí)別。最終,算法識(shí)別結(jié)果如表1所示。
表1 不同模型試驗(yàn)結(jié)果比較Tab.1 Comparison of different models
其中,準(zhǔn)確率(accuracy)是所有魚群攝食強(qiáng)度正確率的平均值,值越高,算法的識(shí)別正確率越高。Parameters表示神經(jīng)網(wǎng)絡(luò)模型的參數(shù),GFLOPs表示每秒10億次浮點(diǎn)運(yùn)算的次數(shù),這兩個(gè)參數(shù)能綜合反應(yīng)模型的運(yùn)算量,參數(shù)越小,模型越輕量化。S3D算法的準(zhǔn)確率達(dá)到92.68%,與C3D[24]和R2+1D[25]算法相比較,本研究中算法的準(zhǔn)確率為92.68%,比C3D提高了9.75%,比R2+1D提高了14.63%。S3D比C3D的 Parameters參數(shù)下降88.27%,比R2+1D 的Parameters參數(shù)下降71.41%。S3D比C3D 的GFLOPs下降87.60%,比R2+1D 的GFLOPs下降88.5%。從表1這3個(gè)參數(shù)對(duì)S3D、C3D和R2+1D算法的運(yùn)算性能進(jìn)行綜合分對(duì)比判斷,本研究的算法不僅在魚群攝食強(qiáng)度分級(jí)的準(zhǔn)確率最優(yōu),而且相比于C3D[24]和R2+1D[25]算法,模型運(yùn)算量大幅度下降,運(yùn)算速度快,具有高度輕量化的特點(diǎn)。其通過(guò)對(duì)影響視頻分類的主要模塊進(jìn)行設(shè)計(jì)與構(gòu)建,實(shí)現(xiàn)網(wǎng)絡(luò)運(yùn)算速度和識(shí)別準(zhǔn)確性之間的平衡[26],說(shuō)明本算法在量化時(shí)間短、切換快的魚群攝食時(shí)空特征上有顯著優(yōu)勢(shì)。
為評(píng)估算法的運(yùn)行效率,將分割后的魚群攝食視頻進(jìn)行測(cè)試,從而獲得相應(yīng)的攝食強(qiáng)度標(biāo)簽。用FPS(Frames Per Second)和ANFR(Average number of frames recognized per second)指標(biāo)[28]進(jìn)行評(píng)價(jià)。FPS指每秒傳輸幀數(shù),用于保存、顯示動(dòng)態(tài)視頻的信息數(shù)量。ANFR表示模型每秒內(nèi)識(shí)別幀的平均數(shù)量,可綜合反應(yīng)算法的實(shí)時(shí)性和硬件平臺(tái)性能。本試驗(yàn)中,在2080Ti NVIDIA GPU配置下,輸入視頻FPS為60 Hz,ANFR為17 f/s。每次預(yù)測(cè)使用16個(gè)視頻幀,輸出17個(gè)行為標(biāo)簽,即對(duì)魚群攝食進(jìn)行17次預(yù)測(cè)。從上述指標(biāo)可以看出,FPS大于ANFR,因?yàn)榛贠pencv讀取視頻幀之后輸入模型,降低了時(shí)間效率,但是識(shí)別效果依然良好。結(jié)果表明,將S3D算法應(yīng)用于養(yǎng)殖場(chǎng)中魚群攝食行為的快速準(zhǔn)確識(shí)別是可行的,其在保持較高準(zhǔn)確率的前提下,仍然可以提高算法的效率,兼顧了速度和準(zhǔn)確性[23],為魚群攝食行為的智能感知奠定了基礎(chǔ)信息,并有利于改善養(yǎng)殖的效率。
為更好實(shí)現(xiàn)魚群攝食強(qiáng)度檢測(cè),本研究基于輕量型S3D模型,應(yīng)用時(shí)序動(dòng)作檢測(cè),使用PyQt5開發(fā)了魚群攝食強(qiáng)度實(shí)時(shí)檢測(cè)系統(tǒng),實(shí)時(shí)預(yù)測(cè)魚群攝食強(qiáng)度。如圖6所示。
圖6 基于滑動(dòng)窗口實(shí)時(shí)預(yù)測(cè)攝食強(qiáng)度Fig.6 Real time prediction of feeding intensity based on sliding window
基于滑動(dòng)窗口采樣[29]在視頻中定位動(dòng)作和預(yù)測(cè)未分割的視頻流,以獲得相應(yīng)的標(biāo)簽。長(zhǎng)視頻行為測(cè)試時(shí),如使用幀數(shù)過(guò)多,預(yù)測(cè)的視頻幀中可能同時(shí)包含兩種動(dòng)作幀,易引起模型誤判。如圖7所示,點(diǎn)擊打開按鈕,檢測(cè)開始,系統(tǒng)對(duì)當(dāng)前的魚群攝食視頻流進(jìn)行分析,提供其當(dāng)前的攝食強(qiáng)度標(biāo)簽和置信度,并能提供相應(yīng)的投喂指令建議。當(dāng)前魚群處于Strong攝食強(qiáng)度狀態(tài),置信度為0.93,提供的投喂指令為加大投喂。同時(shí),攝食強(qiáng)度曲線也能反映魚群的總體攝食強(qiáng)度的時(shí)間狀態(tài)。
圖7 魚類攝食強(qiáng)度識(shí)別系統(tǒng)Fig.7 Fish feeding intensity identification system
為了減少滑窗經(jīng)過(guò)不同動(dòng)作交界處誤判的概率,本算法預(yù)測(cè)幀數(shù)設(shè)為16,在保證預(yù)測(cè)精度的基礎(chǔ)上,減小誤判率。圖8是應(yīng)用滑動(dòng)窗口機(jī)制對(duì)魚群實(shí)時(shí)攝食視頻流的攝食強(qiáng)度識(shí)別結(jié)果。橫坐標(biāo)代表視頻長(zhǎng)度,視頻長(zhǎng)度70 s,一共2 100幀,逐幀識(shí)別,總共有2 100個(gè)識(shí)別結(jié)果。縱坐標(biāo)1~4代表None、Weak、Medium和Strong四級(jí)強(qiáng)度。圖8為算法的識(shí)別結(jié)果和真實(shí)參考值。
圖8 算法實(shí)時(shí)檢測(cè)結(jié)果Fig.8 Real time detection
從圖8可以看出,Medium和Weak誤判的概率高于Strong和None,Strong和None識(shí)別效果更好,這也與以前的研究保持一致[30]。而且Strong和Medium的時(shí)間短于Weak和None,但是在Strong和Medium兩個(gè)時(shí)間段,魚群攝食大部分飼料顆粒。在Weak和None切換時(shí),因?yàn)閃eak和None交界處的相似性,易造成誤判。參考測(cè)試集的視頻數(shù)量,取19段魚群攝食視頻,根據(jù)模型識(shí)別的正確時(shí)間長(zhǎng)度與總時(shí)間的比值,計(jì)算平均識(shí)別正確率??傄曨l長(zhǎng)度為1 330 s,正確時(shí)間長(zhǎng)度為1 059.67 s,平均識(shí)別正確率為79.67%??傮w上仍能實(shí)現(xiàn)對(duì)大部分時(shí)間段攝食強(qiáng)度的準(zhǔn)確識(shí)別,為魚群的智能投喂奠定了良好的基礎(chǔ)。
綜上,本系統(tǒng)通過(guò)嵌入深度學(xué)習(xí)模型,相比于傳統(tǒng)機(jī)器學(xué)習(xí)的方法,在智能性上有較大提高。與挪威M?l?y等[20]的研究相比,后者只能識(shí)別攝食與非攝食兩種狀態(tài),本研究在此基礎(chǔ)上,將其拓展為“Strong”“Medium”“Weak” 和 “None”4種攝食強(qiáng)度狀態(tài),其優(yōu)點(diǎn)在于,4種狀態(tài)可為智能的投飼機(jī)輸入更靈活和豐富的控制指令,以更好地為魚類按需投喂提供決策依據(jù)。與智能可調(diào)速的投飼機(jī)配合,可以控制飼料投放速度,在魚類攝食強(qiáng)度減弱時(shí),可有效避免飼料浪費(fèi)的產(chǎn)生。此外,還可以有效避免因魚群攝食和非攝食狀態(tài)臨界狀態(tài)轉(zhuǎn)換時(shí)帶來(lái)的誤判。
與前期利用支持向量機(jī)、前向神經(jīng)網(wǎng)絡(luò)等傳統(tǒng)機(jī)器學(xué)習(xí)方法[17]相比,本研究基于深度學(xué)習(xí),無(wú)需提取復(fù)雜的手工特征,對(duì)于復(fù)雜的場(chǎng)景,如可變的光照條件等情況下,本算法可以自動(dòng)學(xué)習(xí)圖像中蘊(yùn)含的攝食相關(guān)的深層特征[11],有效避免傳統(tǒng)機(jī)器學(xué)習(xí)方法性能對(duì)特征選取的依賴[31],手工特征等圖像處理步驟的增加,不僅延長(zhǎng)計(jì)算時(shí)間,還增加誤判的風(fēng)險(xiǎn)。Zhou等[30]的研究,也證實(shí)了本研究算法思路的先進(jìn)性,其非線性逼近能力彌補(bǔ)了傳統(tǒng)機(jī)器學(xué)習(xí)算法的不足[32],具有較強(qiáng)的魯棒性和較高的準(zhǔn)確性,可以取得較好的攝食強(qiáng)度分級(jí)性能。
與C3D、R2+1D等方法相比,本算法在保持最優(yōu)準(zhǔn)確率的前提下,所用參數(shù)量至少減少70%。也進(jìn)一步說(shuō)明,S3D算法提出的3D時(shí)空Sep-Inc模塊,可以較好提取時(shí)序特征,保持了高精度。并且其改進(jìn)后的1×3×3的卷積,減少了運(yùn)算量,在部署到實(shí)際現(xiàn)場(chǎng)時(shí),其輕量化的優(yōu)點(diǎn)更為突出[26]。
為實(shí)現(xiàn)按魚類需求投喂,本研究提出了基于輕量型S3D算法的魚類攝食強(qiáng)度識(shí)別算法,可有效識(shí)別“Strong” “Medium” “Weak” 和 “None” 四種魚群攝食強(qiáng)度,準(zhǔn)確率為92.68%;比C3D、R2+1D分別提高了9.75%、14.63%;同時(shí),Parameters參數(shù)分別下降88.27% 和71.41%,GFLOPs分別下降87.6%和88.5%。在保持較高魚群攝食強(qiáng)度分級(jí)準(zhǔn)確率的前提下,減少了參數(shù)和運(yùn)算量。此外,本研究還以金鱒為例,開發(fā)了金鱒魚的攝食強(qiáng)度識(shí)別系統(tǒng),可為魚類投喂提供理論依據(jù)。在未來(lái)的工作中,將在當(dāng)前魚群攝食識(shí)別的基礎(chǔ)上,進(jìn)一步擴(kuò)展到更多的魚類品種,更好地為指導(dǎo)魚類投喂奠定基礎(chǔ)。