王金鳳,胡 凱,江 帆,吳耿潛,羅東林,周子楓
(華南農業大學數學與信息學院,廣州 510642)
水產養殖作為水產品生產及供給的重要產業,目前正面臨著一系列的問題[1-2]。一些養殖從業者缺乏養殖經驗及養殖知識,難以判斷養殖過程中魚類種群密度是否處于合理范圍。通過養殖密度對魚類生長情況影響的研究[3-5]發現,密度過小會浪費水體生產力和飼料,密度過大會對魚類生理生長造成影響。養殖密度作為一種環境脅迫因子能引起魚類的應激反應,改變魚類內在生理狀況,使養殖群體生長率和存活率下降。因此,有效檢測魚群密度是保證養殖魚類品質的關鍵。
傳統的密度檢測方法分為基于檢測的方法和基于回歸的方法[6-9]。人群密度檢測是其中的熱點[10-13],盧湖川等[14]基于統計運動區域幾何特征實現實時人群計數系統。姬麗娜等[15]解決人群遮擋、光照突變環境下人群計數的問題。近年來,深度學習被引入計算機視覺應用中[16],出現通過深度學習生成密度圖的基于密度估計的方法[17-19],有效緩解對擁擠場景判斷失準及忽視顯著性特征的問題,受到更為廣泛的應用。Rodriguez等[20]結合鄰域特征平滑技術將密度檢測結果轉化為密度熱力圖。Zhang等[21]提出多列卷積神經網絡MCNN架構,解決前景分割、密度和分布差異大、不同圖像尺度不同等問題。Li等[22]提出擁塞場景識別的網絡CSRNet,實現準確的計數估計,生成高質量的密度圖,解決訓練時間過長以及存在大量無效分支的問題。與此同時,相關方法也逐漸遷移到其他生物領域的研究中。王衛民等[23]基于卷積神經網絡有效提高蟲情圖像的計數精度。范松偉等[24]基于改進的卷積神經網絡在均勻背光環境下實現蝦苗自動計數,符合蝦苗養殖業的計數要求。
目前,已有基于聲學光學的傳統的魚群數量和密度統計方法[25-27]?;▌購姷萚28]基于水下光柵儀和攝像機建立對魚的實時計數和種類識別新型系統,實現自動化檢測和統計。然而上述傳統研究方法缺少利用視覺和圖像特征建模為基于深度學習的密度識別任務。Alfonso等[29]提出基于深度網絡體系結構的魚類檢測系統,可在各種底棲背景和光照條件下穩健地檢測和計數魚類對象。姜萌萌[30]基于卷積神經網絡特征實現快速區域檢測魚群數量與密度。但是兩者都是進行魚體目標檢測,沒有系統地處理為密度估計任務,也沒有充分考慮到魚群中的遮擋、前景分割等問題,影響其應用效率及應用價值,并且準確率還有較大提升空間。
本研究基于CSRNet的魚群密度檢測系統,將基于深度學習的密度識別任務擴展到魚群密度識別領域,將魚群密度識別問題歸結為基于密度圖的密度評估任務。系統結合生物學知識,嵌入密度預警系統,可實時檢測定點區域魚群密度是否處于正常范圍。
本研究構建開發一個基于深度學習的魚群密度檢測系統,將識別系統與生物學知識相結合,嵌入了密度預警系統,從而可以幫助魚類養殖工作者實時檢測定點區域魚群密度是否處于正常范圍。
系統采用CSRNet網絡模型,利用機器視覺技術對魚群密度進行實時精確檢測?;谏疃葘W習框架TensorFlow進行實現,調用高級神經網絡API Keras進行網絡構建。采用魚群密度檢測數據集對網絡進行訓練,得到所需的數學模型,用來獲取魚群的密度情況。系統構建框架圖如圖1所示。

圖1 系統流程圖
通過剔除全連接層,并權衡準確性和資源開銷,我們選取CSRNet架構作為訓練主網絡。通過測試發現保持前十層VGG-16只有3個池化層時可抑制由池化操作引起的對輸出精度的不利影響,實現最佳權衡。若繼續增加卷積層和池化層,輸出大小會進一步縮小,難以生成高質量的密度映射。根據Simonyan等的研究[31],當獲得相同大小的感受區域時,使用具有較小內核的更多卷積層比使用具有更大內核的更少層更有效。
CSRNet分為前端和后端網絡。前端網絡由基于視覺幾何群網絡VGG-16的10個卷積層和3個池化層組成,并刪除完全連接層及其分類部分。卷積層采用3×3的卷積核,相比于5×5、7×7和11×11的大卷積核,參數量明顯減少,帶來了性能的提升。后端網絡使用6個空洞率相同的空洞卷積層,并采用1個普通卷積層輸出最后的結果。將擴張的卷積層作為后端進行部署可提取更深層次的顯著性信息,既保持分辨率,又擴大感知域,從而生成高質量的魚群密度圖。本研究的CSRNet詳細架構如圖2所示。

圖2 CSRNet架構圖
前端網絡設置3個池化層使得每個維度的輸出大小是原始輸入大小的1/8,導致輸出的密度圖較小。為確保圖像輸出分辨率與輸入相同,選擇因子為8的雙線性插值進行縮放,并確保輸出與輸入圖像具有相同的分辨率,以便將預測密度圖與真實密度圖進行比較。
CSRNet的前向傳播算法如下:
a)根據輸入層的填充大小,填充原始圖片的邊緣,得到輸入張量al。
b)初始化所有隱藏層的參數W,b。
c)forl=2 toL:
如果第l層是卷積層,則輸出為:
al=ReLU(Wl×al-1+bl)
(1)
如果第l層是池化層,則輸出為:
al=P(al-1)
(2)
式中:P表示根據池化區域大小以及池化標準將輸入張量縮小的過程函數;l為網絡層數;al為第l層輸出張量。
在CSRNet的訓練階段,對于給定的圖像,數據集提供了由該圖像中魚眼標注組成的稀疏矩陣,并利用高斯濾波器將該稀疏矩陣轉換為2D密度圖。使用幾何適應的高斯變換核的方法來從標定的數據集中生成密度圖。
高斯核計算方式如下:
(3)
式中:N為圖像中的魚眼總數;δ為沖激函數;xi表示在圖像中魚眼的像素位置;δ(x-xi)為魚眼位置的沖激函數;Gσi(x)為具有標準偏差σi的高斯核函數。
基于Zhang等[21]的相關研究,采用歐氏距離測量生成的密度圖與真實值的距離。歐式距離算法的核心是:設圖像矩陣有n個元素,用n個元素值組成該圖像的特征組,特征組形成了n維空間,特征組中的特征碼,即每一個像素點構成了每一維的數值。在n維空間下,兩個圖像矩陣各形成了一個點,然后利用數學上的歐式距離公式計算這兩個點之間的距離,距離最小者就是最匹配的圖像。
損失函數的計算方式如下:
(4)

由于缺少高清水下攝像機等設備的支持,主要采用網絡爬蟲與自制仿真等手段整理了一個標注正確的、逼真的魚群密度檢測數據集。同時,采用真實的養殖魚群圖像作為模型的校驗數據集。不同種魚類之間的形態、性狀差異較為明顯,且考慮到多數養殖漁場在同一水域所養殖的魚類相同,因此所采用的魚群數據為常見的同種或類型相似的養殖魚類。
試驗數據集使用的是像素為800×450的高密度魚群與像素為400×300的低密度魚群的兩種仿真高清魚群圖片;像素為400×300的真實的養殖魚群圖片作為校驗,數據共100余張。利用圖像標注工具Labelme對魚群圖片進行標注,記錄圖片中每條魚的魚眼位置,并將位置信息保存在對應的JSON文件中。
魚群真實密度圖的生成是基于原始圖片數據以及對應的正確標注的JSON文件。通過構建與圖像大小相同的零矩陣,并將標注點賦值為1,生成熱力編碼的稀疏矩陣。利用高斯濾波器將該稀疏矩陣轉換為2D密度圖,密度圖中所有單元格的總和為魚的實際數量。最后,將密度圖信息存儲在H5文件中。本研究的CSRNet模型與多個模型進行比較,如Faster R-CNN[30]、基于光柵圖特征提取方法[28]。
2.2.1 魚群密度識別準確度
魚群密度識別準確度采用平均絕對誤差(Mean Absolute Error,MAE)、均方誤差(Mean Square Error,MSE)和可釋方差得分(Explained Variance Score,EVS)作為評測方法[21-22]。
2.2.2 密度圖的質量
魚群分布密度圖的質量使用峰值信噪比(Peak Signal to Noise Ratio,PSNR)和結構相似性(Structural Similarity,SSIM)作為評估方法[22]。
CSRNet屬于端到端網絡,其前端網絡的10個卷積層使用ImageNet預訓練權重進行初始化,并進行微調訓練。其余卷積層參數使用標準偏差為0.01的高斯分布進行初始化,優化算法采用隨機梯度下降(Stochastic Gradient Descent,SGD),超參數初始化設置為Learning rate=0.008,decay=1e-6,momentum=0.9,nesterov=True。接下來,Keras在SGD優化器中具有默認的學習率調整器,該調整器根據隨機梯度下降優化算法,在訓練期間降低學習速率。在訓練過程中使用了提前終止法,以節省訓練時間。
2.4.1 密度圖展示
將本模型應用到經過預處理的數據集上,按既定參數設置網絡架構,輸出的結果如圖3所示。第一行是魚群密度檢測數據集中測試集的樣本,第二行是該樣本的真實密度圖,第三行是通過CSRNet模型生成的預測密度圖。通過對比真實密度圖與預測密度圖可知,兩者在形狀上非常接近。但由于預測的密度圖矩陣方差偏大,故其所呈現出的亮度會更大。而這也更易于通過觀察預測密度圖,了解到魚群的密度情況。
2.4.2 密度檢測情況
圖3中的第一列是高密度魚群檢測的情況,第二列是低密度魚群檢測的情況,通過對比兩種情況可知,低密度情況下的預測準確度更高。第三列、第四列是真實的養殖魚群的情況,利用養殖生產的魚群數據進行模型的校驗,將真實魚群圖片添加進魚群密度檢測數據集中,訓練得到的CSRNet模型也具有良好的表現,其在預測魚群分布、密度信息上基本吻合,且預測密度圖的形狀與真實情況十分接近。在真實的養殖魚群圖片中會含有氣泡、光線、遮擋等因素的干擾,因此所呈現的預測密度圖會存在一定的誤差,但這并不妨礙我們從圖中直接觀察魚群密度的分布情況。

圖3 密度檢測結果示例
2.4.3 密度檢測評價
表1中列出了不同密度魚群數據上所得的指標值。MAE可以較好地反映預測值誤差的實際情況,MSE可以描述模型的準確度。CSRNet模型應用于低密度時各項估計誤差更小,意味著在魚群密度越低的情況下誤差值越小。而EVS越接近1表示模型擬合度越好。CSRNet模型在各密度中所得的EVS都比較接近1,表明模型擬合程度較好。

表1 CSRNet的預測結果評價
圖像在經過灰度化處理后,分別計算PSNR和SSIM值。PSNR是計算對應像素點間的誤差,是基于誤差敏感的圖像質量評價。當PSNR高于40時,說明圖像質量極好,即非常接近原始圖像。應用于各密度下的CSRNet模型所得的PSNR值都高于40,意味著預測的密度圖和真實情況十分接近。SSIM是從亮度、對比度、結構三方面度量圖像相似性。值越接近1,表示圖像失真越小。CSRNet模型所得的SSIM值在各密度下都趨向于1,意味著預測的密度圖失真度極小。
2.4.4 與其他模型的比較
為了評價模型的性能,本研究的CSRNet模型與多個模型之間進行方法及準確率及預測方法的比較分析,模型預測準確率結果如表2所示。

表2 不同模型或方法的準確率對比
CSRNet模型與傳統的基于光柵圖特征提取方法相比,不僅省去了大量復雜的聲學光學設備,并且在各密度情況下都大大提升了預測的準確率。同樣基于VGG-16的改進,CSRNet模型比Faster R-CNN模型在密度檢測方面的表現更為優越。
CSRNet模型在魚群低密度的預測下準確率極高,而隨著密度升高準確率有輕微下降,但仍能保持90%以上的準確率,能很好地預估各密度下的魚群密度。
基于CSRNet的魚群密度檢測模型與傳統的基于聲學光學設備的方法以及其他模型相比,在預測各密度最好的情況下準確率提升了近14%,并且生成高質量的魚群分布密度圖。真實的養殖魚群圖片中含有氣泡、光線、遮擋等因素的干擾,導致呈現的預測密度圖存在一定誤差,但并不妨礙觀察魚群密度的分布情況。建立基于深度學習的魚群密度檢測系統軟件,可實時檢測定點區域魚群密度是否處于正常范圍,有利于實現魚量的合理產出,達到科學養殖的效果。
□