王德興,秦恩倩,袁紅春
(上海海洋大學(xué)信息學(xué)院,上海 201306)
中國是水產(chǎn)養(yǎng)殖大國,多年來,水產(chǎn)養(yǎng)殖業(yè)主要依賴粗放經(jīng)營的傳統(tǒng)方式,不僅效率低、缺乏科學(xué)性,且存在較強(qiáng)的主觀性,隨著社會經(jīng)濟(jì)的發(fā)展,水產(chǎn)養(yǎng)殖信息化已成為必然趨勢,信息化技術(shù)對現(xiàn)代化漁業(yè)的可持續(xù)發(fā)展具有重要意義[1- 2]。為制訂相應(yīng)的信息化管理措施,水產(chǎn)養(yǎng)殖需要進(jìn)行高效的圖像識別工作,隨著深度學(xué)習(xí)的發(fā)展,目前深度卷積神經(jīng)網(wǎng)絡(luò)(Deep Convolutional Neural Network,DCNN)在圖像分類領(lǐng)域的應(yīng)用已經(jīng)取得巨大成功。如Krizhevsky 等[3]訓(xùn)練一個大型DCNN,將LSVRC- 2010 ImageNet訓(xùn)練集中的130萬個高分辨率圖像分類為1 000個不同的類別;He等[4]針對更深層次神經(jīng)網(wǎng)絡(luò)難以訓(xùn)練的問題,提出一種深度殘差學(xué)習(xí)用于圖像識別,在ImageNet測試集上的誤差只有3.57%。基于卷積神經(jīng)網(wǎng)絡(luò)的模型要取得較高的識別率或好的分類效果,往往取決于大規(guī)模帶有標(biāo)簽的數(shù)據(jù)集,而利用較小規(guī)模數(shù)據(jù)集訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型通常會出現(xiàn)過擬合現(xiàn)象[5]。針對水產(chǎn)動物圖像、數(shù)據(jù)集的采集需要耗費(fèi)大量的人力物力,獲得合適的訓(xùn)練數(shù)據(jù)往往是有限的,嚴(yán)重限制了這一技術(shù)在水產(chǎn)養(yǎng)殖領(lǐng)域的應(yīng)用。
針對這一問題,需要對樣本數(shù)據(jù)進(jìn)行增強(qiáng),人為擴(kuò)大數(shù)據(jù)集。在數(shù)據(jù)增強(qiáng)研究方面,Bjerrum等[6]利用仿射變換生成新樣本,再與原始樣本混合,作為新的訓(xùn)練集輸入到神經(jīng)網(wǎng)絡(luò)中進(jìn)行分類。近年來,出現(xiàn)了很多更復(fù)雜的數(shù)據(jù)增強(qiáng)方法[7],如:Allken等[8]為了彌補(bǔ)訓(xùn)練數(shù)據(jù)的不足,以實(shí)現(xiàn)一個可以生成合成圖像作為訓(xùn)練數(shù)據(jù)的模擬器,圖像由真實(shí)圖像的分量隨機(jī)組合而成,處理速度快、直觀;Goodfellow等[9]提出的生成對抗網(wǎng)絡(luò)(Generative Adversarial Network,GAN)是一種生成式模型,通過生成器與判別器的不斷對抗,達(dá)到一種納什均衡[10],最終生成符合真實(shí)樣本分布的數(shù)據(jù),具有比傳統(tǒng)深度學(xué)習(xí)更強(qiáng)大的特征學(xué)習(xí)和表達(dá)能力,但模型本身容易出現(xiàn)訓(xùn)練不穩(wěn)定、難以訓(xùn)練等問題。
提出了一種基于深度卷積生成對抗網(wǎng)絡(luò)的數(shù)據(jù)增強(qiáng)方法,在水產(chǎn)動物的分類中引入該網(wǎng)絡(luò)模型,將傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)與新興的生成對抗網(wǎng)絡(luò)結(jié)合,通過對已有的少量樣本特征提取并實(shí)現(xiàn)樣本重建,解決訓(xùn)練樣本數(shù)據(jù)不足以及特征不平衡的問題,生成更多可用的樣本提供給深度學(xué)習(xí)分類網(wǎng)絡(luò)訓(xùn)練。
在圖像分類任務(wù)中,圖像數(shù)據(jù)增強(qiáng)是很常見的方法,這是由于深度學(xué)習(xí)對數(shù)據(jù)集的規(guī)模有一定的要求,如果原始數(shù)據(jù)集較小,則網(wǎng)絡(luò)模型易出現(xiàn)過擬合現(xiàn)象,很難訓(xùn)練出良好的結(jié)果,直接影響模型的性能。圖像數(shù)據(jù)增強(qiáng)通過對原始圖像進(jìn)行一定的處理來擴(kuò)充數(shù)據(jù)集,能夠在一定程度上提升模型的性能。根據(jù)生成樣本的方式,將數(shù)據(jù)增強(qiáng)方法分為兩類:非生成式數(shù)據(jù)增強(qiáng)方法和生成式數(shù)據(jù)增強(qiáng)方法。常用的非生成式數(shù)據(jù)增強(qiáng)方法有以下幾種:
(1)幾何變換。包括對原圖片的平移、縮放、翻轉(zhuǎn)或者鏡像[12]、旋轉(zhuǎn)[13]和隨機(jī)裁剪。同時(shí)對圖片做平移、縮放、翻轉(zhuǎn)、旋轉(zhuǎn)、裁剪等多重操作稱為仿射變換。
(2)顏色抖動。指對顏色的數(shù)據(jù)增強(qiáng),包括對原圖片的亮度、飽和度、對比度等變化。
(3)隨機(jī)噪聲。在原來圖像上加一些隨機(jī)生成的“誤差”,就能構(gòu)成新的圖片,常見的方法有:高斯噪聲、椒鹽噪聲。其中高斯噪聲是指其概率分布函數(shù)服從高斯分布的噪聲。
常用的生成式數(shù)據(jù)增強(qiáng)方法即生成對抗網(wǎng)絡(luò)以及它的衍生模型,如深度卷積生成對抗網(wǎng)絡(luò)、條件生成對抗網(wǎng)絡(luò)等。其中生成對抗網(wǎng)絡(luò)模型的基本結(jié)構(gòu)如圖1所示[11]。
注:z為輸入的隨機(jī)噪聲,G為生成器,G(z)表示生成的圖片,即假樣本;x為真實(shí)數(shù)據(jù),D為判別器
圖1生成對抗網(wǎng)絡(luò)基本結(jié)構(gòu)
Fig.1 Framework of GAN
深度卷積生成對抗網(wǎng)絡(luò)(DCGAN)是GAN的一種變體[14],是在GAN的基礎(chǔ)上,將生成器與判別器中的網(wǎng)絡(luò)由改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò)替換,并結(jié)合帶泄露線性整流(Leaky rectified liner unit,Leaky ReLU)激活函數(shù)和雙曲正切(tanh)激活函數(shù)的一種網(wǎng)絡(luò)結(jié)構(gòu)。DCGAN中的D、G的含義以及目標(biāo)函數(shù)都和原始GAN中完全一致,但是它在D和G中采用了較為特殊的結(jié)構(gòu),以便對圖片進(jìn)行有效建模。
生成模型的網(wǎng)絡(luò)結(jié)構(gòu)是一個類似反卷積的神經(jīng)網(wǎng)絡(luò),其輸入層是一個服從均勻分布的100維隨機(jī)向量,而不是普通卷積神經(jīng)網(wǎng)絡(luò)的一張圖;其次,卷積操作使用4個微步幅卷積(或稱分?jǐn)?shù)步長卷積),類似于用反卷積來代替池化層,學(xué)習(xí)自己的空間上采樣。設(shè)置微步幅卷積的步長為2,那么生成網(wǎng)絡(luò)經(jīng)過每一次微步幅卷積,通道數(shù)減半,圖像尺寸加倍。在除了輸出層以外的每一層加上批量規(guī)范化(BN)[15]的操作,能夠解決糟糕的初始化問題,避免生成模型崩潰(這是GAN經(jīng)常遇到的失敗現(xiàn)象)。同時(shí),將特征層的輸出歸一化能夠讓訓(xùn)練更加穩(wěn)定,此外還能讓梯度向更深層次的網(wǎng)絡(luò)傳播。最后輸出層的激活函數(shù)采用tanh,其他層設(shè)為線性整流(Rectified Linear Unit,ReLU)激活函數(shù),輸出一個64×64像素的3通道RGB圖像。整個網(wǎng)絡(luò)結(jié)構(gòu)沒有池化層,在卷積特征之上沒有全連接層(表1)。
表1 DCGAN生成模型Tab.1 Generation model of DCGAN
注:Conv代表卷積層,單位均為像素,下同
判別模型網(wǎng)絡(luò)結(jié)構(gòu)與卷積神經(jīng)網(wǎng)絡(luò)類似(表2)。卷積層使用帶步長的卷積取代空間池化,實(shí)現(xiàn)空間上采樣。與生成模型類似,對除了輸入層以外的每一層數(shù)據(jù)進(jìn)行批量規(guī)范化操作,使其均值變?yōu)?,方差變?yōu)?,緩解訓(xùn)練中的梯度消失,加快模型的訓(xùn)練速度。為了防止梯度稀疏,激活函數(shù)使用Leaky Relu函數(shù)替代Relu函數(shù)。最后,通過一個全連接層輸出一個標(biāo)量,范圍為0到1,用來表示輸入數(shù)據(jù)屬于真實(shí)數(shù)據(jù)而不是生成樣本的概率。
表2 DCGAN判別模型Tab.2 Discriminator model of DCGAN
深度卷積生成對抗網(wǎng)絡(luò)與生成對抗網(wǎng)絡(luò)的目標(biāo)函數(shù)是一致的,如公式(1)所示[8]:
(1)
式中:Pdata(x)表示真實(shí)樣本x的分布;pz(z)表示隨機(jī)噪聲z的分布,D(G(z))表示D網(wǎng)絡(luò)判斷G生成的圖片是否真實(shí)的概率,生成器G和判別器D通過對抗學(xué)習(xí),不斷更新參數(shù),最終達(dá)到納什均衡。
本研究將水產(chǎn)動物圖像作為真實(shí)樣本,利用DCGAN訓(xùn)練生成新的樣本,其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,DCGAN的訓(xùn)練是一個交替進(jìn)行的過程,本質(zhì)上是最大最小優(yōu)化問題,分為兩個部分:
1)生成網(wǎng)絡(luò)的訓(xùn)練。固定判別網(wǎng)絡(luò)D,優(yōu)化生成網(wǎng)絡(luò)G的參數(shù)。由于D(G(z))表示D網(wǎng)絡(luò)判斷G生成的圖片是否真實(shí)的概率,那么目標(biāo)函數(shù)應(yīng)最大化D(G(z)),等同于最小化1-D(G(z)) ,也就是最小化目標(biāo)函數(shù)V(D,G),如公式(2)所示[8]。經(jīng)過“判斷”,判別器會將它的梯度傳回G來更新生成網(wǎng)絡(luò)的參數(shù)。
(2)
2)判別網(wǎng)絡(luò)的訓(xùn)練。固定生成網(wǎng)絡(luò)G,優(yōu)化判別網(wǎng)絡(luò)D的參數(shù)。要使得判別網(wǎng)絡(luò)具有較好的判別能力,那么對于真樣本,得到的結(jié)果越大越好,即最大化;對于假樣本,需要其結(jié)果越小越好,也就是D(G(z))最小化,即1-D(G(z))最大化。因此訓(xùn)練判別網(wǎng)絡(luò)時(shí),應(yīng)最大化目標(biāo)函數(shù)V(D,G),如公式(3)所示[8]。通過誤差的反向傳播,更新判別網(wǎng)絡(luò)的參數(shù)。
(3)
圖2 DCGAN結(jié)構(gòu)圖Fig.2 Structure diagram of DCGAN
為評估基于DCGAN的數(shù)據(jù)增強(qiáng)方法對水產(chǎn)動物圖像識別準(zhǔn)確率的提升,采用魚蝦蟹貝數(shù)據(jù)集進(jìn)行試驗(yàn)。硬件環(huán)境:GPU為NVIDIA GTX1080Ti,通過CUDA8.0進(jìn)行加速運(yùn)算,CPU為AMD Ryzen Threadripper 1950X。軟件環(huán)境:Windows10專業(yè)版,Python3.5,TensorFlow- gpu1.6深度學(xué)習(xí)框架[16]和Keras2.1庫。
試驗(yàn)所采用的魚蝦蟹貝數(shù)據(jù)集均來自于本研究背景項(xiàng)目的上海海洋大學(xué)濱海養(yǎng)殖基地,每一類各300 張共計(jì)1 200 張圖片作為試驗(yàn)訓(xùn)練集,圖3為其中部分樣本。
試驗(yàn)采用的模型為VGG16[17]、InceptionV3[18]和ResNet50[4]這3個采用ImageNet 訓(xùn)練集開發(fā)的訓(xùn)練模型,為提高模型整體的識別能力,再通過微調(diào)的方式使模型針對目標(biāo)樣本進(jìn)行調(diào)整。訓(xùn)練的初始化權(quán)值設(shè)置epoch為100,每個批次32個樣本,Learning rate為0.0001,Momentum為0.9,其中VGG- 16 和ResNet50模型在訓(xùn)練之前需將圖片調(diào)整為224×224像素大小,InceptionV3模型需將原始圖片全部歸一化為299×299像素再進(jìn)行訓(xùn)練,InceptionV3和ResNet50模型在中間層的每一層加上Batch- Normalization操作(表3)。
采用多種非生成方式進(jìn)行訓(xùn)練數(shù)據(jù)的增強(qiáng),通過翻轉(zhuǎn)、旋轉(zhuǎn)、裁剪、亮度調(diào)節(jié)、添加高斯噪聲等方法,將每張?jiān)紙D片隨機(jī)變換為32張不同的變形圖。一方面增加了訓(xùn)練的數(shù)據(jù)量,可以提高模型的泛化能力,另一方面增加一些噪聲數(shù)據(jù),可提高模型的魯棒性。圖4給出了一組對比示例,分別為原始圖和增強(qiáng)后的效果圖。
圖3 水產(chǎn)動物圖像示例Fig.3 Examples of aquatic animal images
表3 各網(wǎng)絡(luò)模型訓(xùn)練參數(shù)Tab.3 Training parameters of each network model
注:Ecoph為迭代次數(shù),Batch- size為批處理大小,Learning rate為學(xué)習(xí)率,Momentum為動量,Input- tensor為對應(yīng)模型所接受原始圖像的維度,BN為批量規(guī)范化操作
圖4 非生成式數(shù)據(jù)增強(qiáng)方法示例Fig.4 Examples of non- generative data enhancement methods
基于DCGAN的數(shù)據(jù)增強(qiáng)方法與非生成式數(shù)據(jù)增強(qiáng)方法進(jìn)行水產(chǎn)動物圖像識別的試驗(yàn)環(huán)境、原始數(shù)據(jù)集以及訓(xùn)練使用的模型完全一致。為提高模型整體的識別能力,同樣采用微調(diào)方式進(jìn)行調(diào)整。由于拍攝角度、拍攝距離變化、拍攝設(shè)備性能好壞等因素,水產(chǎn)動物圖像中可能會有許多的背景噪聲,同時(shí),待識別物體在拍攝圖像中可能只占小部分,而用DCGAN生成盡可能類似真實(shí)樣本的水產(chǎn)動物圖像,需要原始數(shù)據(jù)集中目標(biāo)物體特征盡可能明顯,背景噪聲的存在將會對生成圖像有負(fù)面影響。因此,提取水產(chǎn)動物圖像的感興趣區(qū)域(ROI)是非常有必要的[19]。
由于拍攝的水產(chǎn)動物圖片中,目標(biāo)物體幾乎在圖片的中心,所以以中心為原點(diǎn),對圖片進(jìn)行剪切,大小為108×108像素,再根據(jù)模型所接受的原始圖片的像素要求,將所有圖片重新調(diào)整尺寸為64×64像素。圖5是以數(shù)據(jù)集中一張?jiān)嫉聂~類圖片為例進(jìn)行ROI 圖像提取的結(jié)果。
圖5 ROI 圖像示例Fig.5 Examples of ROI image
適當(dāng)?shù)爻跏蓟瘷?quán)值可以更有效地訓(xùn)練神經(jīng)網(wǎng)絡(luò)。DCGAN模型的學(xué)習(xí)率為0.0002,動量設(shè)為0.5,批處理大小設(shè)置為64,生成器的輸入為N(0,1)分布的噪聲。使用Adam 優(yōu)化器,學(xué)習(xí)率設(shè)置為1e- 4。其余參數(shù)使用Tensor Flow 的默認(rèn)設(shè)置。經(jīng)過多次試驗(yàn)對比,發(fā)現(xiàn)在迭代500次以后損失函數(shù)震蕩幅度較大,模型易崩潰,極不穩(wěn)定,所以DCGAN 訓(xùn)練迭代次數(shù)設(shè)置為500。
訓(xùn)練迭代次數(shù)與損失函數(shù)的變化如圖6所示。圖中的(a)、(b)分別表示DCGAN在魚蝦蟹貝數(shù)據(jù)集上判別器判斷樣本是真的損失函數(shù)(d_loss_real)和判斷樣本是假的損失函數(shù)(d_loss_fake)隨著訓(xùn)練次數(shù)增加而變化的情況,(c)表示DCGAN在魚蝦蟹貝數(shù)據(jù)集上判別器的損失函數(shù)(d_loss)隨著訓(xùn)練次數(shù)增加而變化的情況,(d)表示DCGAN在魚蝦蟹貝數(shù)據(jù)集上生成器的損失函數(shù)(g_loss)變化情況。
從圖6(a)、(b)可以看出判別器判斷樣本是真的損失函數(shù)在緩慢上升,判別樣本是假的損失函數(shù)在緩慢下降,隨著生成圖像與真實(shí)樣本越來越相似,判別器判別能力減弱,生成器生成的樣本被判別器識別為真的概率越來越大,總體震蕩較大,(a)、(b)的損失函數(shù)的和即為(c)中的損失函數(shù),即d_loss=d_loss_real+d_loss_fake。從(c)可以看出判別器的損失函數(shù)隨著迭代次數(shù)變化在初期較為穩(wěn)定,隨著迭代次數(shù)增加,在一段緩慢地上升之后,整體呈現(xiàn)緩慢的下降趨勢,判別器的判別能力增強(qiáng)。從(d)可以看出生成器的損失函數(shù)在訓(xùn)練初期值較大且變化范圍大,生成器生成的圖片判別器很容易判別為假,迭代150次以后,損失函數(shù)值下降到較小值且趨于穩(wěn)定,這個時(shí)期生成器能夠生成較為清晰的圖片??傮w來看,兩個函數(shù)震蕩變化,生成器與判別器這兩個網(wǎng)絡(luò)結(jié)構(gòu)在相互制約、平衡。
圖6 生成器和判別器的損失函數(shù)變化趨勢Fig.6 Trend of loss function of generator and discriminator
以數(shù)據(jù)集中魚類為例,圖7為數(shù)據(jù)集前500個生成樣本在3個階段(第0、200、500 Epoch)生成樣本的情況。可以看出,隨著Epoch次數(shù)的增加,生成樣本的輪廓越來越清晰,特征也越來越明顯。
圖7 DCGAN生成樣本Fig.7 Samples generated by DCGAN
經(jīng)過非生成式數(shù)據(jù)增強(qiáng)方法的擴(kuò)增,每一類數(shù)據(jù)擴(kuò)增至3 200張,分別使用VGG16、InceptionV3和ResNet50 模型進(jìn)行訓(xùn)練,記錄每次訓(xùn)練完成后圖像分類的準(zhǔn)確率,經(jīng)過多次試驗(yàn),取其中準(zhǔn)確率最高的一次作為評估模型識別性能的依據(jù);經(jīng)過DCGAN數(shù)據(jù)增強(qiáng)方法的擴(kuò)增,采用同樣的方法進(jìn)行訓(xùn)練,試驗(yàn)結(jié)果見表4。兩種方法對比,可以看出經(jīng)過DCGAN模型的數(shù)據(jù)增強(qiáng)[14]后,比用傳統(tǒng)的旋轉(zhuǎn)、剪切、翻轉(zhuǎn)變化的數(shù)據(jù)增強(qiáng)方法[6]在3個不同的模型上用于水產(chǎn)動物圖像識別的準(zhǔn)確率都有所提高。在VGG16模型上準(zhǔn)確率提高9.8%,在InceptionV3模型上準(zhǔn)確率提高2.7%,在ResNet50模型上準(zhǔn)確率提高1.2%。相比較而言,對于用非生成式的數(shù)據(jù)增強(qiáng)方法擴(kuò)增樣本后準(zhǔn)確率較低的模型,準(zhǔn)確率提升較高,而在InceptionV3、ResNet50這兩個用非生成式的數(shù)據(jù)增強(qiáng)方法擴(kuò)增樣本后準(zhǔn)確率達(dá)到95%以上的模型,準(zhǔn)確率的提升空間較小,總體均有所提高。
表4 各模型準(zhǔn)確率對比Tab.4 Accuracy comparison of different models
從數(shù)據(jù)增強(qiáng)的角度,提出一種基于深度卷積生成對抗網(wǎng)絡(luò)的數(shù)據(jù)增強(qiáng)方法用于水產(chǎn)動物識別,能解決樣本不足、特征不明顯的問題。通過對比傳統(tǒng)的非生成式數(shù)據(jù)增強(qiáng)方法,該方法適用于對水產(chǎn)動物圖像的增強(qiáng),有助于提高不同模型識別的準(zhǔn)確率;還有助于提高圖片生成的速度以及生成圖片的質(zhì)量。