李海濤,王 騰,王印庚
1(青島科技大學(xué)信息科學(xué)與技術(shù)學(xué)院,青島 266061)
2(中國水產(chǎn)科學(xué)研究院 黃海水產(chǎn)研究所,青島 266071)
我國海水養(yǎng)殖業(yè)規(guī)模龐大,普遍是粗放型的養(yǎng)殖模式,養(yǎng)殖戶僅憑個人經(jīng)驗和盲目投藥,給海水養(yǎng)殖業(yè)帶來巨大的養(yǎng)殖風(fēng)險,使養(yǎng)殖區(qū)病害泛濫惡化,過量投藥還會造成藥物殘留,帶來生態(tài)風(fēng)險.2019年我國水產(chǎn)行業(yè)因病害造成的損失達(dá)到450億元,病害問題已成為影響我國海水養(yǎng)殖業(yè)發(fā)展的重大障礙.
早期的海水養(yǎng)殖病害診斷多是根據(jù)病癥描述得出結(jié)論,葉嬋[1]實現(xiàn)了對蝦病害防治專家系統(tǒng),該系統(tǒng)利用BP神經(jīng)網(wǎng)絡(luò)建立了對蝦癥狀文字描述與疾病之間的關(guān)系,但在實際應(yīng)用中會存在語義理解上的誤差,難以推廣.而海水養(yǎng)殖生物病害受到生物本體免疫力、養(yǎng)殖區(qū)水質(zhì)、致病病原體等多方面影響,會在病灶形態(tài)、輪廓、顏色、位置、紋理等方面產(chǎn)生明顯的視覺差異,病害圖像中包含了大量病癥信息,因此非常適合借助圖像識別技術(shù)進(jìn)行病害診斷.宋健[2]基于形狀特征實現(xiàn)了魚病圖像診斷,該方法在分類時具有處理速度快、魯棒性高、易于實現(xiàn)等優(yōu)點,但對于病害圖像中所表現(xiàn)出來的全部特征,這種方法所獲取的信息并不多.隨著機(jī)器學(xué)習(xí)的發(fā)展,學(xué)者們逐漸開始采用神經(jīng)網(wǎng)絡(luò)去獲取圖像中高緯度的病癥特征,Shaveta Malik[3]應(yīng)用神經(jīng)網(wǎng)絡(luò)算法對魚類病害圖片分類,有效提升了魚病診斷的效率.近年,由牛津大學(xué)提出的VGG卷積神經(jīng)網(wǎng)絡(luò)模型在圖像分類和目標(biāo)檢測任務(wù)中表現(xiàn)出優(yōu)良性能,本文基于傳統(tǒng)的VGG-16網(wǎng)絡(luò)建立起海水養(yǎng)殖病害診斷模型,并優(yōu)化了梯度下降算法,解決了模型過擬合問題.該模型可根據(jù)病害圖像快速準(zhǔn)確地診斷出對應(yīng)病癥,為養(yǎng)殖戶提供及時、準(zhǔn)確的病害信息,致力于減少病害造成的損失.
VGG[4]網(wǎng)絡(luò)是牛津大學(xué)計算機(jī)視覺組和Google DeepMind公司共同研發(fā)出的一種深度卷積網(wǎng)絡(luò),該模型被提出時,因為它的高效和簡潔,很快成為當(dāng)時最通用的卷積神經(jīng)網(wǎng)絡(luò)模型.它在圖像分類任務(wù)中表現(xiàn)出非常好的效果,而其變形結(jié)構(gòu)VGG-16的表現(xiàn)更加突出,故而本文采用VGG-16卷積神經(jīng)網(wǎng)絡(luò)模型.
VGG-16作為卷積神經(jīng)網(wǎng)絡(luò)中分類性能優(yōu)良的網(wǎng)絡(luò)模型,它把卷積層發(fā)展為卷積塊的概念,使網(wǎng)絡(luò)模型擁有更廣闊的感受野,還能降低網(wǎng)絡(luò)參數(shù);VGG-16通過多次使用ReLU激活函數(shù),可實現(xiàn)更多的線性變換,學(xué)習(xí)能力也更強(qiáng).VGG-16網(wǎng)絡(luò)模型含有13個卷積層、5個最大池化層、3個全連接層和1個輸出層(Softmax),其網(wǎng)絡(luò)模型結(jié)構(gòu)如圖1所示.
圖1 VGG-16網(wǎng)絡(luò)結(jié)構(gòu)
VGG-16網(wǎng)絡(luò)將3×3卷積核和2×2最大池化層排列組合,可提取出輸入圖像中大量細(xì)節(jié)特征.3×3卷積核的堆疊組合可以實現(xiàn)和5×5或7×7卷積核相同的效果,相比單個大尺寸卷積核,小尺寸卷積核的組合運用可具備更好的非線性特征.
使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像分類任務(wù)時,識別精度、仿真速度以及內(nèi)存消耗是研究的目標(biāo),為進(jìn)一步提升模型識別準(zhǔn)確率、縮減訓(xùn)練時間與資源占用,因此需要在已有VGG-16網(wǎng)絡(luò)基礎(chǔ)上進(jìn)行優(yōu)化.
網(wǎng)絡(luò)模型優(yōu)化方法有很多,可以調(diào)整網(wǎng)絡(luò)深度、修改卷積核尺寸、更改激活函數(shù)、優(yōu)化梯度下降、平衡數(shù)據(jù)集、降低過擬合、優(yōu)化遷移學(xué)習(xí)等等,其中梯度下降優(yōu)化算法在卷積神經(jīng)網(wǎng)絡(luò)中較為常用.本文采用了隨機(jī)梯度下降[5]的優(yōu)化算法,它的特點是每當(dāng)更新權(quán)重時還會更新每個樣本的梯度,學(xué)習(xí)速度快;相對于其他梯度下降算法,尤其是在數(shù)據(jù)冗余的時候,該算法能更加有效地利用數(shù)據(jù)信息.隨機(jī)梯度下降算法每當(dāng)更新參數(shù)時僅使用一個樣本x(i)及其所對應(yīng)的標(biāo)簽y(i),梯度運算公式如式(1):
網(wǎng)絡(luò)模型訓(xùn)練完成后,需要評估其識別性能和損失值.本模型中的損失值通過運用對數(shù)損失函數(shù)計算,其運算公式如式(2):
模型在訓(xùn)練集上識別率較高,而在驗證集準(zhǔn)確率較低,即模型的泛化性能不強(qiáng),這就是過擬合現(xiàn)象,卷積神經(jīng)網(wǎng)絡(luò)中過擬合現(xiàn)象是一個重要問題.本文綜合運用了多個降低過擬合的方法優(yōu)化VGG-16模型,主要包括了Dropout方法、數(shù)據(jù)集擴(kuò)增方法、Batch Normalization方法、遷移學(xué)習(xí)方法.
Dropout方法[6]通過隨機(jī)地丟棄訓(xùn)練所得的信息,從而減少模型過擬合.該方法應(yīng)用于激活層之后,每次反向傳播時按一定比例對激活層的隱藏節(jié)點隨機(jī)采樣,使得全連接網(wǎng)絡(luò)具有一定的稀疏化,從而減輕了不同特征的協(xié)同效應(yīng);由于隱含節(jié)點都是以一定概率隨機(jī)出現(xiàn),因此兩個神經(jīng)元不會每次都同時出現(xiàn),從而減少了神經(jīng)元之間的共適應(yīng)關(guān)系,可提高網(wǎng)絡(luò)的魯棒性.
卷積神經(jīng)網(wǎng)絡(luò)對于不同位置、視角、尺度甚至光照的組合都可以進(jìn)行穩(wěn)健的分類,于是可以利用基本變換對數(shù)據(jù)集進(jìn)行有效擴(kuò)充.數(shù)據(jù)集擴(kuò)增即通過裁剪、旋轉(zhuǎn)、插值、錯切等圖像變換手段處理原始圖片樣本集,不僅獲得了更多的訓(xùn)練樣本圖片,還通過增加訓(xùn)練時的擾動使模型在更加復(fù)雜的環(huán)境下也能保持很好的檢測精度,有效解決了深度學(xué)習(xí)因數(shù)據(jù)不足造成的模型表達(dá)能力差、過度擬合等問題.
隨著網(wǎng)絡(luò)結(jié)構(gòu)深度的增加,輸入數(shù)據(jù)經(jīng)過多個中間層運算之后,數(shù)據(jù)分布的偏移將越來越大,樣本特征也變得分散,這會導(dǎo)致神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)速度緩慢甚至難以學(xué)習(xí).為解決上述問題引入的Batch Normalization方法[7]就是在每層輸入之前插入一個歸一化層,采用均值標(biāo)準(zhǔn)化的方法規(guī)范化VGG-16網(wǎng)絡(luò)激活函數(shù)的輸入值,使輸入樣本值的均值為0,方差為1,即將偏移的分布規(guī)范化為標(biāo)準(zhǔn)分布.Batch Normalization方法使得激活輸入值落在非線性函數(shù)對輸入比較敏感的區(qū)域,這樣輸入的小變化就會使損失函數(shù)發(fā)生較大的變化,能大大加快損失函數(shù)收斂速度,提高模型訓(xùn)練精度.
遷移學(xué)習(xí)[8]是將已經(jīng)訓(xùn)練好的模型應(yīng)用到新的任務(wù)中,不僅節(jié)省了訓(xùn)練時間,還縮小了訓(xùn)練數(shù)據(jù)需求量.同時由于本次研究所用圖像數(shù)量少、采集成本高,數(shù)據(jù)量難以支撐網(wǎng)絡(luò)訓(xùn)練,采用遷移學(xué)習(xí)方法可以解決圖像數(shù)據(jù)量不足的問題.利用VGG-16在ImageNet數(shù)據(jù)集上的預(yù)訓(xùn)練模型進(jìn)行相關(guān)知識的遷移,優(yōu)化各卷積層和池化層的參數(shù),在降低過擬合問題的同時還減少了模型訓(xùn)練時間.
對蝦是我國海水養(yǎng)殖業(yè)的重要養(yǎng)殖生物,本文根據(jù)對蝦病害分類綱要,選出白斑病、紅腿病、紅體病、黃鰓病、腸炎、黑斑病6種最常見病害作為研究對象,另外采集一部分無病害的圖樣做對照,構(gòu)建對蝦病害圖庫,如表1所示.
表1 對蝦病害圖庫
本次研究使用的病害數(shù)據(jù)來源于多個方面:中國水產(chǎn)科學(xué)研究院黃海水產(chǎn)研究所深耕水產(chǎn)養(yǎng)殖病害研究數(shù)十年,收錄了數(shù)百種水產(chǎn)病害圖像,是本次研究的重要數(shù)據(jù)來源;智慧水產(chǎn)云服務(wù)平臺、水產(chǎn)養(yǎng)殖網(wǎng)等多家權(quán)威網(wǎng)站也為本次研究補(bǔ)充了大量圖樣數(shù)據(jù).為了保障圖片庫質(zhì)量,本文使用的圖庫均由經(jīng)驗豐富的行業(yè)專家整理完成,各病種示例圖片如圖2.各病種的病斑特征如表2所示.
圖2 對蝦病害圖例
表2 對蝦常見6類病害特征
本文模型訓(xùn)練和測試均在Tensorflow 環(huán)境下進(jìn)行,模型搭建采用開源框架實現(xiàn),硬件設(shè)備:處理器為AMD 2600X,GPU為NVIDIA GTX1080TI.模型訓(xùn)練和測試流程如下:
1)數(shù)據(jù)預(yù)處理.通過平移、縮放、旋轉(zhuǎn)、錯切等圖形變換手段在原始病害圖像庫上產(chǎn)生更多樣的訓(xùn)練樣本圖片,一方面可增加訓(xùn)練數(shù)據(jù)量,另一方面能夠提升模型的泛化能力.其次,還需要調(diào)整圖片的大小,便于統(tǒng)一注入網(wǎng)絡(luò)進(jìn)行訓(xùn)練.
2)輸入水產(chǎn)病害圖樣.從1)生成的病害圖像庫中抽取病害圖片,作為訓(xùn)練樣本集進(jìn)行輸入.
3)將VGG-16卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于海水養(yǎng)殖病害診斷,構(gòu)建如圖3所示的海水養(yǎng)殖病害診斷模型:輸入224像素×224像素×3向量的RGB圖像,首先經(jīng)過兩個卷積層,兩個卷積層的卷積核大小為3×3,卷積核數(shù)量均為64,滑動步長為1,經(jīng)兩次卷積+ReLU運算后的尺寸變?yōu)?24×224×64;再經(jīng)過一層最大池化層,它采用的池化單元尺寸為2×2,步長為2,該池化層使尺寸減半,變?yōu)?12×112×64;接著經(jīng)過兩個卷積層,經(jīng)128個3×3的卷積核作兩次卷積+ReLU運算,尺寸變?yōu)?12×112×128;再經(jīng)過一層最大池化層,池化單元尺寸大小為2×2,步長為2,輸出為56×56×128;隨后經(jīng)過3個卷積層,卷積核大小均為3×3,卷積核數(shù)量均為256,步長為1,輸出均為56×56×256;再經(jīng)過最大池化層,池化單元尺寸大小為2×2,步長為2,輸出為28×28×256;接著經(jīng)過3個卷積層,卷積核大小均為3×3,卷積核數(shù)量均為512,步長為1,輸出均為28×28×512;再經(jīng)過一層最大池化層,池化單元尺寸大小為2×2,步長為2,輸出為14×14×512;后面經(jīng)過3個卷積層,卷積核大小為3×3,卷積核數(shù)量均為512,步長為1,輸出均為14×14×512;再經(jīng)過一層最大池化層,池化單元尺寸大小為2×2,步長為2,輸出為7×7×512;隨后經(jīng)過兩個包含4096個隱藏節(jié)點的全連接層及ReLU,最后一層輸出層包含7個節(jié)點,對應(yīng)本次診斷的7種病害診斷結(jié)果,進(jìn)行Softmax分類.
圖3 海水養(yǎng)殖病害診斷模型
本文提出的病害診斷模型在卷積層均采用3×3尺寸的卷積核,并由2個或3個卷積核連續(xù)排列,可以獲得更大的感受野效果;卷積核滑動步長為1,并利用padding 邊界填充使卷積層前后圖像維數(shù)不變;模型中的池化層選用2×2尺寸的池化窗口,步長為2,用于降低卷積后的特征圖尺寸,實現(xiàn)少量參數(shù)對特征的表示;全連接層是連續(xù)3個全連接的堆疊組合,通道數(shù)分別是4096、4096、7個;網(wǎng)絡(luò)末尾是由具有7個標(biāo)簽的Softmax分類器作為輸出;在已有網(wǎng)絡(luò)基礎(chǔ)上采用隨機(jī)梯度下降算法更新模型參數(shù);模型在激活函數(shù)之前應(yīng)用批歸一化方法,在全連接層執(zhí)行Dropout方法,系數(shù)分別為0.7、0.5,通過Xavier方法對全連接層的參數(shù)進(jìn)行初始化,并以測試集識別性能作為網(wǎng)絡(luò)模型的評判依據(jù).
4)模型訓(xùn)練.加載ImageNet上的VGG-16 預(yù)訓(xùn)練模型,通過遷移學(xué)習(xí)方式優(yōu)化病害識別模型參數(shù),主要優(yōu)化13個卷積層和池化層的參數(shù).設(shè)定動量參數(shù)、學(xué)習(xí)速率和迭代次數(shù),通過損失函數(shù)的迭代,優(yōu)化網(wǎng)絡(luò)各層參數(shù).本次研究中,每執(zhí)行10次迭代訓(xùn)練,都要在測試集上測試模型準(zhǔn)確率,從Tensorboard 中繪制測試集準(zhǔn)確率和損失量曲線如圖4所示.
圖4 模型訓(xùn)練過程圖
5)模型測試.選擇測試數(shù)據(jù)集進(jìn)行模型測試,以檢驗?zāi)P偷男阅芎途_度.
圖4(a)展示了網(wǎng)絡(luò)模型在驗證集上的識別準(zhǔn)確率變化曲線,橫軸表示迭代訓(xùn)練次數(shù),縱軸為準(zhǔn)確率,圖4(b)為損失量變化曲線,橫軸為迭代次數(shù),縱軸為損失量.綜合圖4(a)、圖4(b)可知,當(dāng)?shù)l次較低時,網(wǎng)絡(luò)對訓(xùn)練數(shù)據(jù)的學(xué)習(xí)不充分,在驗證集的識別準(zhǔn)確率也不理想,隨著訓(xùn)練的迭代進(jìn)行,圖像在驗證集的識別準(zhǔn)確率持續(xù)上升,且最終穩(wěn)定在較高水平.可見,本文構(gòu)建的網(wǎng)絡(luò)模型,在保持了識別精度的同時具有較強(qiáng)的收斂性能.本研究所用模型在擴(kuò)增過的訓(xùn)練集上訓(xùn)練500輪之后,在驗證集上的識別精度達(dá)到了90%,取得了優(yōu)良的識別性能.
為比較本文研究與其他模型的性能差異,本次研究將BP神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)2種淺層網(wǎng)絡(luò),以及AlexNET、GoogLeNET、傳統(tǒng)VGG-16NET 等3種深層神經(jīng)網(wǎng)絡(luò)作為對照模型,與本研究模型進(jìn)行對照分析,結(jié)果如表3所示.
表3 海水養(yǎng)殖病害識別模型測試結(jié)果
由表3對比可知,AlexNET、GoogLeNET、傳統(tǒng)VGG-16NET與本文研究模型共4種深層神經(jīng)網(wǎng)絡(luò)模型均大幅優(yōu)于BP神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)2種淺層網(wǎng)絡(luò).在深層神經(jīng)網(wǎng)絡(luò)中,由于傳統(tǒng)VGG-16NET模型和本研究模型的特征提取是通過3×3尺寸卷積核的堆疊組合,提取出病害區(qū)域內(nèi)更多非常細(xì)小的特征,因此,傳統(tǒng)VGG-16NET模型和本研究模型優(yōu)于AlexNET和GoogleNET;同時,本研究模型綜合采用了隨機(jī)梯度下降算法和一系列降低過擬合的方法,在測試集中略優(yōu)于傳統(tǒng)VGG-16NET模型.由上述對比試驗中可知,本文提出的模型具備更優(yōu)良的識別能力,能更好地辨識病害類別.
本文構(gòu)建了一個基于VGG-16的海水養(yǎng)殖病害診斷模型,使用隨機(jī)梯度下降算法更新網(wǎng)絡(luò)權(quán)重,并用數(shù)據(jù)集擴(kuò)增、Dropout方法、Batch Normalization方法、遷移學(xué)習(xí)方法優(yōu)化了模型,有效提升了訓(xùn)練效率和模型識別率,降低了過擬合.實驗結(jié)果顯示此模型具有很高的識別精度,具有一定的擴(kuò)展性和推廣價值,達(dá)到了預(yù)期目標(biāo).