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