王金鳳,胡 凱,江 帆,吳耿潛,羅東林,周子楓
(華南農(nóng)業(yè)大學(xué)數(shù)學(xué)與信息學(xué)院,廣州 510642)
水產(chǎn)養(yǎng)殖作為水產(chǎn)品生產(chǎn)及供給的重要產(chǎn)業(yè),目前正面臨著一系列的問題[1-2]。一些養(yǎng)殖從業(yè)者缺乏養(yǎng)殖經(jīng)驗及養(yǎng)殖知識,難以判斷養(yǎng)殖過程中魚類種群密度是否處于合理范圍。通過養(yǎng)殖密度對魚類生長情況影響的研究[3-5]發(fā)現(xiàn),密度過小會浪費水體生產(chǎn)力和飼料,密度過大會對魚類生理生長造成影響。養(yǎng)殖密度作為一種環(huán)境脅迫因子能引起魚類的應(yīng)激反應(yīng),改變魚類內(nèi)在生理狀況,使養(yǎng)殖群體生長率和存活率下降。因此,有效檢測魚群密度是保證養(yǎng)殖魚類品質(zhì)的關(guān)鍵。
傳統(tǒng)的密度檢測方法分為基于檢測的方法和基于回歸的方法[6-9]。人群密度檢測是其中的熱點[10-13],盧湖川等[14]基于統(tǒng)計運動區(qū)域幾何特征實現(xiàn)實時人群計數(shù)系統(tǒng)。姬麗娜等[15]解決人群遮擋、光照突變環(huán)境下人群計數(shù)的問題。近年來,深度學(xué)習(xí)被引入計算機視覺應(yīng)用中[16],出現(xiàn)通過深度學(xué)習(xí)生成密度圖的基于密度估計的方法[17-19],有效緩解對擁擠場景判斷失準(zhǔn)及忽視顯著性特征的問題,受到更為廣泛的應(yīng)用。Rodriguez等[20]結(jié)合鄰域特征平滑技術(shù)將密度檢測結(jié)果轉(zhuǎn)化為密度熱力圖。Zhang等[21]提出多列卷積神經(jīng)網(wǎng)絡(luò)MCNN架構(gòu),解決前景分割、密度和分布差異大、不同圖像尺度不同等問題。Li等[22]提出擁塞場景識別的網(wǎng)絡(luò)CSRNet,實現(xiàn)準(zhǔn)確的計數(shù)估計,生成高質(zhì)量的密度圖,解決訓(xùn)練時間過長以及存在大量無效分支的問題。與此同時,相關(guān)方法也逐漸遷移到其他生物領(lǐng)域的研究中。王衛(wèi)民等[23]基于卷積神經(jīng)網(wǎng)絡(luò)有效提高蟲情圖像的計數(shù)精度。范松偉等[24]基于改進的卷積神經(jīng)網(wǎng)絡(luò)在均勻背光環(huán)境下實現(xiàn)蝦苗自動計數(shù),符合蝦苗養(yǎng)殖業(yè)的計數(shù)要求。
目前,已有基于聲學(xué)光學(xué)的傳統(tǒng)的魚群數(shù)量和密度統(tǒng)計方法[25-27]?;▌購姷萚28]基于水下光柵儀和攝像機建立對魚的實時計數(shù)和種類識別新型系統(tǒng),實現(xiàn)自動化檢測和統(tǒng)計。然而上述傳統(tǒng)研究方法缺少利用視覺和圖像特征建模為基于深度學(xué)習(xí)的密度識別任務(wù)。Alfonso等[29]提出基于深度網(wǎng)絡(luò)體系結(jié)構(gòu)的魚類檢測系統(tǒng),可在各種底棲背景和光照條件下穩(wěn)健地檢測和計數(shù)魚類對象。姜萌萌[30]基于卷積神經(jīng)網(wǎng)絡(luò)特征實現(xiàn)快速區(qū)域檢測魚群數(shù)量與密度。但是兩者都是進行魚體目標(biāo)檢測,沒有系統(tǒng)地處理為密度估計任務(wù),也沒有充分考慮到魚群中的遮擋、前景分割等問題,影響其應(yīng)用效率及應(yīng)用價值,并且準(zhǔn)確率還有較大提升空間。
本研究基于CSRNet的魚群密度檢測系統(tǒng),將基于深度學(xué)習(xí)的密度識別任務(wù)擴展到魚群密度識別領(lǐng)域,將魚群密度識別問題歸結(jié)為基于密度圖的密度評估任務(wù)。系統(tǒng)結(jié)合生物學(xué)知識,嵌入密度預(yù)警系統(tǒng),可實時檢測定點區(qū)域魚群密度是否處于正常范圍。
本研究構(gòu)建開發(fā)一個基于深度學(xué)習(xí)的魚群密度檢測系統(tǒng),將識別系統(tǒng)與生物學(xué)知識相結(jié)合,嵌入了密度預(yù)警系統(tǒng),從而可以幫助魚類養(yǎng)殖工作者實時檢測定點區(qū)域魚群密度是否處于正常范圍。
系統(tǒng)采用CSRNet網(wǎng)絡(luò)模型,利用機器視覺技術(shù)對魚群密度進行實時精確檢測。基于深度學(xué)習(xí)框架TensorFlow進行實現(xiàn),調(diào)用高級神經(jīng)網(wǎng)絡(luò)API Keras進行網(wǎng)絡(luò)構(gòu)建。采用魚群密度檢測數(shù)據(jù)集對網(wǎng)絡(luò)進行訓(xùn)練,得到所需的數(shù)學(xué)模型,用來獲取魚群的密度情況。系統(tǒng)構(gòu)建框架圖如圖1所示。
圖1 系統(tǒng)流程圖
通過剔除全連接層,并權(quán)衡準(zhǔn)確性和資源開銷,我們選取CSRNet架構(gòu)作為訓(xùn)練主網(wǎng)絡(luò)。通過測試發(fā)現(xiàn)保持前十層VGG-16只有3個池化層時可抑制由池化操作引起的對輸出精度的不利影響,實現(xiàn)最佳權(quán)衡。若繼續(xù)增加卷積層和池化層,輸出大小會進一步縮小,難以生成高質(zhì)量的密度映射。根據(jù)Simonyan等的研究[31],當(dāng)獲得相同大小的感受區(qū)域時,使用具有較小內(nèi)核的更多卷積層比使用具有更大內(nèi)核的更少層更有效。
CSRNet分為前端和后端網(wǎng)絡(luò)。前端網(wǎng)絡(luò)由基于視覺幾何群網(wǎng)絡(luò)VGG-16的10個卷積層和3個池化層組成,并刪除完全連接層及其分類部分。卷積層采用3×3的卷積核,相比于5×5、7×7和11×11的大卷積核,參數(shù)量明顯減少,帶來了性能的提升。后端網(wǎng)絡(luò)使用6個空洞率相同的空洞卷積層,并采用1個普通卷積層輸出最后的結(jié)果。將擴張的卷積層作為后端進行部署可提取更深層次的顯著性信息,既保持分辨率,又擴大感知域,從而生成高質(zhì)量的魚群密度圖。本研究的CSRNet詳細架構(gòu)如圖2所示。
圖2 CSRNet架構(gòu)圖
前端網(wǎng)絡(luò)設(shè)置3個池化層使得每個維度的輸出大小是原始輸入大小的1/8,導(dǎo)致輸出的密度圖較小。為確保圖像輸出分辨率與輸入相同,選擇因子為8的雙線性插值進行縮放,并確保輸出與輸入圖像具有相同的分辨率,以便將預(yù)測密度圖與真實密度圖進行比較。
CSRNet的前向傳播算法如下:
a)根據(jù)輸入層的填充大小,填充原始圖片的邊緣,得到輸入張量al。
b)初始化所有隱藏層的參數(shù)W,b。
c)forl=2 toL:
如果第l層是卷積層,則輸出為:
al=ReLU(Wl×al-1+bl)
(1)
如果第l層是池化層,則輸出為:
al=P(al-1)
(2)
式中:P表示根據(jù)池化區(qū)域大小以及池化標(biāo)準(zhǔn)將輸入張量縮小的過程函數(shù);l為網(wǎng)絡(luò)層數(shù);al為第l層輸出張量。
在CSRNet的訓(xùn)練階段,對于給定的圖像,數(shù)據(jù)集提供了由該圖像中魚眼標(biāo)注組成的稀疏矩陣,并利用高斯濾波器將該稀疏矩陣轉(zhuǎn)換為2D密度圖。使用幾何適應(yīng)的高斯變換核的方法來從標(biāo)定的數(shù)據(jù)集中生成密度圖。
高斯核計算方式如下:
(3)
式中:N為圖像中的魚眼總數(shù);δ為沖激函數(shù);xi表示在圖像中魚眼的像素位置;δ(x-xi)為魚眼位置的沖激函數(shù);Gσi(x)為具有標(biāo)準(zhǔn)偏差σi的高斯核函數(shù)。
基于Zhang等[21]的相關(guān)研究,采用歐氏距離測量生成的密度圖與真實值的距離。歐式距離算法的核心是:設(shè)圖像矩陣有n個元素,用n個元素值組成該圖像的特征組,特征組形成了n維空間,特征組中的特征碼,即每一個像素點構(gòu)成了每一維的數(shù)值。在n維空間下,兩個圖像矩陣各形成了一個點,然后利用數(shù)學(xué)上的歐式距離公式計算這兩個點之間的距離,距離最小者就是最匹配的圖像。
損失函數(shù)的計算方式如下:
(4)
由于缺少高清水下攝像機等設(shè)備的支持,主要采用網(wǎng)絡(luò)爬蟲與自制仿真等手段整理了一個標(biāo)注正確的、逼真的魚群密度檢測數(shù)據(jù)集。同時,采用真實的養(yǎng)殖魚群圖像作為模型的校驗數(shù)據(jù)集。不同種魚類之間的形態(tài)、性狀差異較為明顯,且考慮到多數(shù)養(yǎng)殖漁場在同一水域所養(yǎng)殖的魚類相同,因此所采用的魚群數(shù)據(jù)為常見的同種或類型相似的養(yǎng)殖魚類。
試驗數(shù)據(jù)集使用的是像素為800×450的高密度魚群與像素為400×300的低密度魚群的兩種仿真高清魚群圖片;像素為400×300的真實的養(yǎng)殖魚群圖片作為校驗,數(shù)據(jù)共100余張。利用圖像標(biāo)注工具Labelme對魚群圖片進行標(biāo)注,記錄圖片中每條魚的魚眼位置,并將位置信息保存在對應(yīng)的JSON文件中。
魚群真實密度圖的生成是基于原始圖片數(shù)據(jù)以及對應(yīng)的正確標(biāo)注的JSON文件。通過構(gòu)建與圖像大小相同的零矩陣,并將標(biāo)注點賦值為1,生成熱力編碼的稀疏矩陣。利用高斯濾波器將該稀疏矩陣轉(zhuǎn)換為2D密度圖,密度圖中所有單元格的總和為魚的實際數(shù)量。最后,將密度圖信息存儲在H5文件中。本研究的CSRNet模型與多個模型進行比較,如Faster R-CNN[30]、基于光柵圖特征提取方法[28]。
2.2.1 魚群密度識別準(zhǔn)確度
魚群密度識別準(zhǔn)確度采用平均絕對誤差(Mean Absolute Error,MAE)、均方誤差(Mean Square Error,MSE)和可釋方差得分(Explained Variance Score,EVS)作為評測方法[21-22]。
2.2.2 密度圖的質(zhì)量
魚群分布密度圖的質(zhì)量使用峰值信噪比(Peak Signal to Noise Ratio,PSNR)和結(jié)構(gòu)相似性(Structural Similarity,SSIM)作為評估方法[22]。
CSRNet屬于端到端網(wǎng)絡(luò),其前端網(wǎng)絡(luò)的10個卷積層使用ImageNet預(yù)訓(xùn)練權(quán)重進行初始化,并進行微調(diào)訓(xùn)練。其余卷積層參數(shù)使用標(biāo)準(zhǔn)偏差為0.01的高斯分布進行初始化,優(yōu)化算法采用隨機梯度下降(Stochastic Gradient Descent,SGD),超參數(shù)初始化設(shè)置為Learning rate=0.008,decay=1e-6,momentum=0.9,nesterov=True。接下來,Keras在SGD優(yōu)化器中具有默認的學(xué)習(xí)率調(diào)整器,該調(diào)整器根據(jù)隨機梯度下降優(yōu)化算法,在訓(xùn)練期間降低學(xué)習(xí)速率。在訓(xùn)練過程中使用了提前終止法,以節(jié)省訓(xùn)練時間。
2.4.1 密度圖展示
將本模型應(yīng)用到經(jīng)過預(yù)處理的數(shù)據(jù)集上,按既定參數(shù)設(shè)置網(wǎng)絡(luò)架構(gòu),輸出的結(jié)果如圖3所示。第一行是魚群密度檢測數(shù)據(jù)集中測試集的樣本,第二行是該樣本的真實密度圖,第三行是通過CSRNet模型生成的預(yù)測密度圖。通過對比真實密度圖與預(yù)測密度圖可知,兩者在形狀上非常接近。但由于預(yù)測的密度圖矩陣方差偏大,故其所呈現(xiàn)出的亮度會更大。而這也更易于通過觀察預(yù)測密度圖,了解到魚群的密度情況。
2.4.2 密度檢測情況
圖3中的第一列是高密度魚群檢測的情況,第二列是低密度魚群檢測的情況,通過對比兩種情況可知,低密度情況下的預(yù)測準(zhǔn)確度更高。第三列、第四列是真實的養(yǎng)殖魚群的情況,利用養(yǎng)殖生產(chǎn)的魚群數(shù)據(jù)進行模型的校驗,將真實魚群圖片添加進魚群密度檢測數(shù)據(jù)集中,訓(xùn)練得到的CSRNet模型也具有良好的表現(xiàn),其在預(yù)測魚群分布、密度信息上基本吻合,且預(yù)測密度圖的形狀與真實情況十分接近。在真實的養(yǎng)殖魚群圖片中會含有氣泡、光線、遮擋等因素的干擾,因此所呈現(xiàn)的預(yù)測密度圖會存在一定的誤差,但這并不妨礙我們從圖中直接觀察魚群密度的分布情況。
圖3 密度檢測結(jié)果示例
2.4.3 密度檢測評價
表1中列出了不同密度魚群數(shù)據(jù)上所得的指標(biāo)值。MAE可以較好地反映預(yù)測值誤差的實際情況,MSE可以描述模型的準(zhǔn)確度。CSRNet模型應(yīng)用于低密度時各項估計誤差更小,意味著在魚群密度越低的情況下誤差值越小。而EVS越接近1表示模型擬合度越好。CSRNet模型在各密度中所得的EVS都比較接近1,表明模型擬合程度較好。
表1 CSRNet的預(yù)測結(jié)果評價
圖像在經(jīng)過灰度化處理后,分別計算PSNR和SSIM值。PSNR是計算對應(yīng)像素點間的誤差,是基于誤差敏感的圖像質(zhì)量評價。當(dāng)PSNR高于40時,說明圖像質(zhì)量極好,即非常接近原始圖像。應(yīng)用于各密度下的CSRNet模型所得的PSNR值都高于40,意味著預(yù)測的密度圖和真實情況十分接近。SSIM是從亮度、對比度、結(jié)構(gòu)三方面度量圖像相似性。值越接近1,表示圖像失真越小。CSRNet模型所得的SSIM值在各密度下都趨向于1,意味著預(yù)測的密度圖失真度極小。
2.4.4 與其他模型的比較
為了評價模型的性能,本研究的CSRNet模型與多個模型之間進行方法及準(zhǔn)確率及預(yù)測方法的比較分析,模型預(yù)測準(zhǔn)確率結(jié)果如表2所示。
表2 不同模型或方法的準(zhǔn)確率對比
CSRNet模型與傳統(tǒng)的基于光柵圖特征提取方法相比,不僅省去了大量復(fù)雜的聲學(xué)光學(xué)設(shè)備,并且在各密度情況下都大大提升了預(yù)測的準(zhǔn)確率。同樣基于VGG-16的改進,CSRNet模型比Faster R-CNN模型在密度檢測方面的表現(xiàn)更為優(yōu)越。
CSRNet模型在魚群低密度的預(yù)測下準(zhǔn)確率極高,而隨著密度升高準(zhǔn)確率有輕微下降,但仍能保持90%以上的準(zhǔn)確率,能很好地預(yù)估各密度下的魚群密度。
基于CSRNet的魚群密度檢測模型與傳統(tǒng)的基于聲學(xué)光學(xué)設(shè)備的方法以及其他模型相比,在預(yù)測各密度最好的情況下準(zhǔn)確率提升了近14%,并且生成高質(zhì)量的魚群分布密度圖。真實的養(yǎng)殖魚群圖片中含有氣泡、光線、遮擋等因素的干擾,導(dǎo)致呈現(xiàn)的預(yù)測密度圖存在一定誤差,但并不妨礙觀察魚群密度的分布情況。建立基于深度學(xué)習(xí)的魚群密度檢測系統(tǒng)軟件,可實時檢測定點區(qū)域魚群密度是否處于正常范圍,有利于實現(xiàn)魚量的合理產(chǎn)出,達到科學(xué)養(yǎng)殖的效果。
□