范松偉,林翔瑜,周 平
(1 浙江理工大學(xué)信息學(xué)院,浙江 杭州 310018;2 杭州萬深檢測科技有限公司,浙江 杭州 310018)
2018年中國淡水養(yǎng)殖產(chǎn)值5 884.27億元,水產(chǎn)苗種產(chǎn)值644.62億元,其中對蝦養(yǎng)殖產(chǎn)量2 681 265 t,比2017年增長513 670 t,且仍處在上升階段[1]。生產(chǎn)實踐中,蝦苗的放養(yǎng)和銷售等環(huán)節(jié)至今仍用質(zhì)量法、杯量法等人工方式計數(shù),容易記錯、數(shù)錯等致使計數(shù)不準確且費時費力[2-3]。因此,如何高效準確計數(shù)蝦苗有著迫切的用戶需求。
國內(nèi)首次采用光電計數(shù)法實現(xiàn)自動蝦苗計數(shù),對蝦苗自動計數(shù)速度最高達30萬尾/h,計數(shù)誤差±2%,但因計數(shù)穩(wěn)定性欠佳,至今未被養(yǎng)殖戶采納[4]。張康德[5]用方盆和框格方法取樣計數(shù),取2格蝦苗平均后乘以總方格數(shù)計算蝦苗總量,取樣復(fù)雜不適用大量蝦苗;薛志寧等[6]建立蝦苗尾數(shù)與質(zhì)量的回歸關(guān)系計數(shù)日本對蝦,因蝦苗大小與體重生長關(guān)系隨品種不同存在差異而未普及;劉世晶等[7]通過改進主成分分析(PCA)算法的自動識別運動蝦苗,提取圖像中不同運動狀態(tài)的蝦苗,識別正確率達98%,但其識別精度和穩(wěn)定性易受蝦苗粘連和光照影響。季玉瑤等[8]提出了一種對數(shù)商連通域標記面積估算蝦苗,過程煩瑣且計數(shù)準確率不高。姜松等[9]發(fā)明了一種蝦苗計數(shù)裝置以及計數(shù)方法,可降低勞動強度,但智能化程度不高。張建強等[10]發(fā)明了一種對蝦苗種計數(shù)裝置,不會影響出苗時苗種存活率,計數(shù)成本低,但計數(shù)誤差受計數(shù)速度影響大。
近年來,深度學(xué)習(xí)在目標識別計數(shù)方面表現(xiàn)優(yōu)秀,能夠自動提取圖像特征并給出計數(shù)結(jié)果,操作簡單,應(yīng)用廣泛。為解決蝦苗因個體小、易粘連和聚集打堆等產(chǎn)生的計數(shù)難題,提出了一種利用卷積神經(jīng)網(wǎng)絡(luò)模型實現(xiàn)對蝦苗的自動計數(shù)方法。
1.1.1 數(shù)據(jù)來源
蝦體透明且長度不一,為排除光照等外在影響,于同時間段統(tǒng)一使用500萬像素彩色相機在均勻背光源下實拍長度約為6~15 mm蝦苗圖像共1 438張,包含有3種不同聚集密度分布,各圖中的蝦苗約129~3 000尾不等,平均每張圖片上蝦苗約有1 163尾,按照文獻[11]設(shè)置,將其分成訓(xùn)練集和測試集,分別占據(jù)數(shù)據(jù)集的4/5和1/5,并對數(shù)據(jù)集采用五重交叉驗證。
1.1.2 樣本集制作
隨機抽取部分原始樣本集進行平移、鏡像[12]、旋轉(zhuǎn)[13]及亮度調(diào)節(jié)等方式增強數(shù)據(jù),用以增加樣本的數(shù)據(jù)量,同時防止出現(xiàn)過擬合現(xiàn)象[14],并提高模型的泛化能力和魯棒性。在深度學(xué)習(xí)中,訓(xùn)練樣本的質(zhì)量直接影響模型性能,有效的標注方式至關(guān)重要,樣本標記的基本事實計數(shù)(Ground Truth)不準確將導(dǎo)致?lián)p失函數(shù)的計算錯誤[15]。尤其蝦苗打堆的情況下,采用滑動窗口法提取候選區(qū)域真正包含目標很少,在檢測過程中速度很慢且網(wǎng)絡(luò)在后續(xù)處理中采用NMS[16]會把重疊度較高的矩形框丟棄,導(dǎo)致出現(xiàn)較多的漏標記,故未用Labelimg工具提取圖像目標的感興趣區(qū)域(ROI)[17]。選用對樣本圖中每個蝦苗用一個像素做點標記,僅用歸一化為一個總和的二維高斯核來模糊每個點標記以生成基本事實,確定二維空間位置信息和個數(shù)[18-19]。試驗統(tǒng)一采用在蝦頭中心進行標注,共標記蝦苗樣本總數(shù)68 932尾,圖1為其中部分樣本標記前后拍攝圖。
圖1 蝦苗標記圖像示例
1.2.1 VGGNet基礎(chǔ)網(wǎng)絡(luò)
VGGNet由輸入層、卷積層、池化層、全連接層、softmax輸出層構(gòu)成[20],其中有13個卷積層與3個全連接層和5個池化,采用卷積+卷積(+卷積)+池化的結(jié)構(gòu)(圖2)。
圖2 VGGNet網(wǎng)絡(luò)結(jié)構(gòu)
VGGNet的結(jié)構(gòu)簡單,但所包含的權(quán)重數(shù)目卻很大,達到了139 357 544個參數(shù),具有很高的擬合能力。網(wǎng)絡(luò)組成分量介紹如下:
1)輸入層是實拍的蝦苗樣本圖。
2)卷積層的卷積操作用于提取輸入圖像的不同特征,有4個超參數(shù)指定,分別是濾波器的數(shù)量、濾波器的大小、步長和零值填充的數(shù)量,共同決定卷積層的輸出大小。
3)池化層用于減少網(wǎng)絡(luò)參數(shù)降低計算量,同時控制過擬合。其運算一般有平均池化(mean-pooling)和最大池化(max-pooling)。平均池化,即對鄰域內(nèi)特征點只求平均;最大池化,即對鄰域內(nèi)特征點取最大。池化操作沒有參數(shù)進行訓(xùn)練,但可以通過池化來減小計算的復(fù)雜度。池化層選用統(tǒng)一步長2的2×2 最大池化,使得高和寬是前一層的一半。
4)全連接層用于連接所有的特征,并在最后一層用Dropout方法[21]減少過擬合,將輸出值傳給分類器。
1.2.2 對基礎(chǔ)網(wǎng)絡(luò)的改進
VGG16起初主要用作圖像分類,在處理計數(shù)問題需要對網(wǎng)絡(luò)改進使其效果更佳。當(dāng)圖片中目標密度過大時,計算量會激增,為了減少浮點運算的數(shù)量,提高模型的計算效率,對此,參考人群計數(shù)相關(guān)網(wǎng)絡(luò)結(jié)構(gòu)作出如圖3所示的改進。
首先,相機拍攝角度會影響蝦苗的失真程度,因此,為了輸入圖像大小可以任意,用卷積層代替全連接層使其更好將網(wǎng)絡(luò)學(xué)習(xí)的特征圖映射到密度圖。其次,多次池化操作會導(dǎo)致空間位置特征丟失,因此將第4個最大池化層的步幅設(shè)置為1、第5個池化層換成一個1×1的卷積核處理輸出特征圖,這樣處理后最終的特征圖大小由輸入圖像尺寸的 1/32變?yōu)?/8,并使用膨脹卷積處理第4個最大池層中步幅的移除引起的感受不匹配。最后在整個網(wǎng)絡(luò)中,在每個卷積層后面添加線性整流函數(shù)(Rectified Linear Unit,ReLU)作為激活函數(shù)[22]。
圖3 改進的網(wǎng)絡(luò)結(jié)構(gòu)
1.2.3 網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化
訓(xùn)練階段用平方損失函數(shù)衡量預(yù)測模型的估計密度圖與真實密度圖之間的差距。該平方損失函數(shù)如式(1):
(1)
式中:N為訓(xùn)練圖片樣本數(shù);Xi為第i張樣本圖;F(Xi;Θ)為估計密度圖;Fi為第i張圖片的真實密度圖;Θ為待優(yōu)化的網(wǎng)絡(luò)參數(shù);L(Θ)為真實密度圖和估計密度圖之間的損失值。
1.2.4 密度圖的制作
用回歸分布密度圖的方法估計圖中蝦苗數(shù)量。訓(xùn)練樣本圖輸入到網(wǎng)絡(luò)學(xué)習(xí)前,根據(jù)數(shù)據(jù)集中每個蝦苗訓(xùn)練樣本的像素點生成蝦苗的真實密度圖。
蝦苗圖中坐標為(xi,yi) 蝦苗標記點,可表示為δ(x-xi,y-yi),假設(shè)某圖中有M個蝦苗標記點,則可表示為式(2):
(2)
將式(2)與一個高斯濾波器Gσ做卷積可將標注過的圖像轉(zhuǎn)成連續(xù)的密度圖,如式(3)所示:
(3)
式中:M為圖像中蝦苗總數(shù);δ(x-xi,y-yi)為delta函數(shù);F(x,y)為真實密度圖在坐標點(x,y)的值;Gσ為高斯濾波器。
為保證嚴謹性,所有試驗均在相同試驗平臺和數(shù)據(jù)集上進行。硬件環(huán)境:處理器Intel Corei 7,GPU是NVDIA GTX1080;軟件環(huán)境:Python 3.6,CUDN 9.0,cuDNN 7.0,Tensorflow-GPU 1.6,操作系統(tǒng)為CentOS 7;各目標的訓(xùn)練和測試算法均以TensorFlow深度學(xué)習(xí)框架[23]為基礎(chǔ),與上下文感知網(wǎng)絡(luò)(CAN)[24]、多列卷積神經(jīng)網(wǎng)絡(luò)(MSNN)[25]、擁擠場景識別網(wǎng)絡(luò)(CSRNet)[26]網(wǎng)絡(luò)模型作對比。
采用L2正則化避免過度擬合,預(yù)先訓(xùn)練的模型初始化部分參數(shù),自適應(yīng)學(xué)習(xí)率優(yōu)化算法Adam更新網(wǎng)絡(luò)參數(shù),網(wǎng)絡(luò)參數(shù)用方差為0.1的高斯函數(shù)做初始化。訓(xùn)練階段的網(wǎng)絡(luò)初始學(xué)習(xí)率設(shè)置為0.000 01,動量設(shè)為0.9,選取5、10、20、25個像素步幅來掃描圖像,用訓(xùn)練圖像經(jīng)過反復(fù)迭代數(shù)萬次訓(xùn)練后,將測試樣本送入模型檢測評估,并將獲得的密度子圖合并作為估計密度圖。
2.3.1 誤差結(jié)果
根據(jù)相關(guān)文獻[27],采用平均絕對誤差(XMAE)、均方根誤差(XRMSE)、精確度(XAcc)評估蝦苗計數(shù)效果。XMAE用于量化預(yù)測準確性,XRMSE用于評估訓(xùn)練性能。XMAE值和XRMSE值越低,且XAcc值越高,則計數(shù)性能越好。計算公式如下:
(4)
(5)
(6)
隨機抽取40張驗證集樣本圖進行交叉驗證,其蝦苗最少284尾,最多1 543尾,平均每個圖像804尾,試驗結(jié)果誤差波動見圖4所示,每張圖中的計數(shù)平均誤差在7尾左右,最大誤差為47尾,XMAE為12.70,故在可接受范圍內(nèi)。
圖4 用XMAE評估蝦苗計數(shù)精度
每張樣本圖中的網(wǎng)絡(luò)獲得的估計數(shù)量和基準的基本事實計數(shù)的對比散點圖見圖5,其XAcc值為97.59%,從散點圖的對比中可以看出兩者之間的波動穩(wěn)定,故較好解決了蝦苗個體小、有重疊、較透明的計數(shù)難點。
圖5 40張蝦苗圖像真實值與估計值的對比
2.3.2 計數(shù)的可視化驗證
為了更好地解釋本研究模型,圖6對部分蝦苗計數(shù)實例可視化,列舉了3張蝦苗的原圖(第1行)、真實密度圖(第2行)和估計密度圖(第3行)。對應(yīng)圖的下方是真實和估計的蝦苗數(shù)量。
圖6 估計密度圖與真實密度圖對比
從圖6中可以看出,兩者相似度很高,說明算法輸出密度圖的質(zhì)量極佳,因而取得優(yōu)秀的計數(shù)效果。估計數(shù)量和基準的基本事實計數(shù)的總和呈小數(shù),是因標記點靠近圖邊緣時,其高斯概率部分處于圖像外所致。圖6b數(shù)據(jù)顯示真實值與估計值之間誤差相對大些,這是因蝦苗過分聚集重疊所致,故蝦苗聚集情況需要有個限度,不能過度遮擋。
圖7顯示了數(shù)據(jù)集中每個圖像在3種情況下計數(shù)結(jié)果,包括改進網(wǎng)絡(luò)獲得的預(yù)測數(shù)量,基本網(wǎng)絡(luò)獲得的預(yù)測數(shù)量以及基準的基本事實計數(shù)。在多數(shù)情況下,改進網(wǎng)絡(luò)預(yù)測的數(shù)量比實際數(shù)量更接近真實數(shù)量。但是在極少數(shù)情況下,改進網(wǎng)絡(luò)不如基本網(wǎng)絡(luò)準確。例如,對于基本事實計數(shù)512,改進網(wǎng)絡(luò)的預(yù)測計數(shù)為525,XMAE為13,而來自基礎(chǔ)網(wǎng)絡(luò)的預(yù)測計數(shù)為520,XMAE只有8。即便如此,改進網(wǎng)絡(luò)在預(yù)測高密度蝦苗數(shù)量方面的準確性圖像仍超過90%的基礎(chǔ)網(wǎng)絡(luò)。
圖7 改善網(wǎng)絡(luò)前后的計數(shù)比較
將本文方法與MCNN、CSRnet、CAN等優(yōu)秀網(wǎng)絡(luò)進行比較,表1用XMAE和XRMSE以及XAcc等量化試驗??梢钥闯觯疚木W(wǎng)絡(luò)模型的準確率為97.59%,XMAE為12.70,XRMSE為14.21,XMAE較MCNN、CSRnet、CAN分別降低了7.6、4.8、3.2,獲得了較好的計數(shù)水平。
表1 本文方法與其他網(wǎng)絡(luò)模型的比較
圖8是與萬深檢測科技合作研發(fā)的蝦苗計數(shù)儀原型機,燈箱為白色內(nèi)壁,內(nèi)壁上方布置了一圈24 W的白光LED燈帶,以產(chǎn)生漫反射無影照明效果,避免了光直射底面的蝦苗水盤而形成投照光斑,影響蝦苗自動識別,對被計數(shù)蝦苗重新做了充分的標記學(xué)習(xí)并形成蝦苗識別計數(shù)文件,以在手機App上使用。用撈網(wǎng)每次撈取3 000尾以內(nèi)的蝦苗放在盛有150 mL清水的白扁盤內(nèi),晃一下后放入拍攝視野,點按燈箱頂部的手機軟件來控制連拍5張蝦苗圖,自動按圖片清晰度評價算出最清晰3張圖的蝦苗數(shù),自動平均后顯示出計數(shù)結(jié)果量,整個操作過程在20 s內(nèi)完成。進一步驗證試驗發(fā)現(xiàn):蝦苗計數(shù)精度跟標記學(xué)習(xí)量呈正相關(guān),與蝦苗聚集密度呈負相關(guān)。故每次計數(shù)需控制蝦苗總量在100~3 000尾,以不使蝦苗過分密集堆疊。
圖8 蝦苗計數(shù)儀原型機
改進的模型相比基礎(chǔ)網(wǎng)絡(luò),保持優(yōu)秀的特征提取能力[20],通過減少了VGG16中不必要的層,使訓(xùn)練時間減少23.86%,模型大小縮小88.40%,提高網(wǎng)絡(luò)識別的實時性,具有低運算的特點。與其他計數(shù)模型比較中,改進網(wǎng)絡(luò)通過提取更細節(jié)的圖像特征構(gòu)建密度函數(shù)參數(shù)[19]回歸分布密度圖的方式計數(shù)蝦苗,算法有更高的魯棒性和準確性,計數(shù)穩(wěn)定性也顯著提高,解決了一定蝦苗密度和重疊度計數(shù)困難的問題,說明本研究模型更適合實際情況,可以更好地估計蝦苗的數(shù)量以及有效區(qū)分背景區(qū)域和蝦苗目標,無須進行預(yù)處理或人工操作,滿足了實際蝦苗計數(shù)的需求。
光電計數(shù)儀在蝦苗之間粘連接觸通過水流時,因蝦苗的大小不一致,通道獲得的蝦苗電信號會不準確,導(dǎo)致計數(shù)誤差、計數(shù)穩(wěn)定性差等問題[4],并容易在操作過程中受熟練度的影響使苗種存活率會有所降低,但相較于手工計數(shù)在計數(shù)速度上有很大優(yōu)化。計數(shù)儀原型機操作簡便、停留時間短、智能化程度高,使用過程中對蝦苗的傷害很小,在保證計數(shù)速度、精確度的同時,可以穩(wěn)定對蝦苗自動計數(shù)。
改進的網(wǎng)絡(luò)模型相比于傳統(tǒng)的圖像處理方式以及其他網(wǎng)絡(luò)模型,在計數(shù)準確度、效率和穩(wěn)定性都有提高,基本能解決蝦苗交易和養(yǎng)殖過程的計數(shù)問題。但蝦苗過分密集會因其過分重疊而丟失相當(dāng)多的蝦苗證據(jù),導(dǎo)致自動預(yù)測準確性計數(shù)下降。未來通過更大量的蝦苗數(shù)據(jù)集標記學(xué)習(xí),進一步優(yōu)化網(wǎng)絡(luò)模型參數(shù),提高密度圖的質(zhì)量,使蝦苗計數(shù)精度和魯棒性獲得一定程度的提高。本研究可延伸推廣到對魚苗的智能化計數(shù)中。