李慶旭 王巧華,2 馬美湖
(1.華中農(nóng)業(yè)大學(xué)工學(xué)院, 武漢 430070; 2.農(nóng)業(yè)農(nóng)村部長江中下游農(nóng)業(yè)裝備重點(diǎn)實(shí)驗(yàn)室, 武漢 430070;3.國家蛋品加工技術(shù)研發(fā)分中心, 武漢 430070)
目前,禽蛋檢測手段主要包括光譜、敲擊振動和機(jī)器視覺等方法。光譜和敲擊振動方法設(shè)備成本高、穩(wěn)定性差;機(jī)器視覺技術(shù)具有成本低廉、效率高的優(yōu)點(diǎn),成為禽蛋品質(zhì)無損檢測較為穩(wěn)定和可靠的方法之一[1-2]。利用機(jī)器視覺技術(shù)可以對禽蛋裂紋[3-4]、新鮮度[5-6]、尺寸[7]、散黃[8]以及種蛋受精信息[9-10]等進(jìn)行無損檢測。
使用機(jī)器視覺技術(shù)對禽蛋進(jìn)行檢測的前提是需采集大量的禽蛋圖像數(shù)據(jù),然后利用相關(guān)圖像處理或圖像識別[11]手段對禽蛋圖像數(shù)據(jù)進(jìn)行分析建模,最后將建立的模型部署到實(shí)際生產(chǎn)中,從而實(shí)現(xiàn)禽蛋的自動無損檢測。近年來,深度學(xué)習(xí)在機(jī)器視覺領(lǐng)域占據(jù)重要地位,但深度學(xué)習(xí)往往需要大量的禽蛋圖像數(shù)據(jù)。目前,國內(nèi)缺乏相關(guān)禽蛋圖像數(shù)據(jù)庫,采集海量禽蛋圖像需要耗費(fèi)大量的人力和物力,且在有限的情況下采集得到的禽蛋圖像數(shù)據(jù)樣本容易出現(xiàn)分布不均衡。因此,尋找到合理的圖像數(shù)據(jù)生成算法對加快深度學(xué)習(xí)在禽蛋檢測領(lǐng)域的應(yīng)用具有重要意義。
生成對抗網(wǎng)絡(luò)(Generative adversarial network,GAN)[12]是一種基于納什均衡和對抗訓(xùn)練的新型數(shù)據(jù)生成算法,可以根據(jù)小樣本數(shù)據(jù)分布智能生成海量且高質(zhì)量的圖像數(shù)據(jù),有效解決計(jì)算機(jī)視覺領(lǐng)域的樣本不足和分布不均衡問題[13]。目前,GAN網(wǎng)絡(luò)被廣泛應(yīng)用于文本生成[14]、圖像生成與識別[15]和生物學(xué)[16]等領(lǐng)域,在農(nóng)業(yè)領(lǐng)域袁培森等[17]利用GAN網(wǎng)絡(luò)生成菌菇表型圖像數(shù)據(jù),但在禽蛋領(lǐng)域尚未見相關(guān)報(bào)道。使用GAN網(wǎng)絡(luò)模擬真實(shí)數(shù)據(jù)分布、生成高質(zhì)量的禽蛋圖像數(shù)據(jù),能有效解決使用機(jī)器視覺和深度學(xué)習(xí)對禽蛋檢測樣本不足的問題。
采用機(jī)器視覺技術(shù)對禽蛋檢測時(shí),常以透射方式檢測禽蛋內(nèi)部品質(zhì)[18]、以反射方式檢測禽蛋外部品質(zhì)[19]。為此,本文以光源透射和反射情況下的禽蛋圖像為研究對象,在深度卷積生成對抗網(wǎng)絡(luò)(Deep convolutional generative adversarial networks,DCGAN)的基礎(chǔ)上引入殘差網(wǎng)絡(luò)和Wasserstein距離,設(shè)計(jì)一種適用于禽蛋圖像數(shù)據(jù)生成的GAN網(wǎng)絡(luò)(EGG-GAN),來模擬禽蛋圖像數(shù)據(jù)樣本的真實(shí)分布,生成海量禽蛋圖像數(shù)據(jù)。
為了分別采集透射和反射情況下的禽蛋圖像,本文設(shè)計(jì)了圖1所示的禽蛋透射圖像采集裝置和圖2所示的禽蛋反射圖像采集裝置,采集裝置由暗箱、光源、工業(yè)相機(jī)、計(jì)算機(jī)構(gòu)成。透射光源選擇5 W正白光LED射燈,反射光源為5 W環(huán)形LED光源,相機(jī)為AD-080GE型工業(yè)相機(jī)。以鴨蛋為研究對象,共采集透射圖像和反射圖像各300幅。采集得到禽蛋透射和反射圖像的尺寸均為1 024像素×768像素,為了方便EGG-GAN網(wǎng)絡(luò)讀取數(shù)據(jù),本文將圖像尺寸統(tǒng)一調(diào)整為256像素×256像素。
生成對抗網(wǎng)絡(luò)是由GOODFELLOW等[20]提出的基于零和博弈論的生成深度學(xué)習(xí)算法。GAN網(wǎng)絡(luò)分為生成器和判別器,隨機(jī)數(shù)據(jù)輸入至生成器后,由生成器中的解碼器將隨機(jī)數(shù)據(jù)轉(zhuǎn)換成圖像格式的數(shù)據(jù),判別器對生成的數(shù)據(jù)進(jìn)行判定(判斷是否為真實(shí)數(shù)據(jù))。GAN網(wǎng)絡(luò)的生成器和判別器在訓(xùn)練過程中不斷優(yōu)化,兩者相互對抗最終達(dá)到納什均衡[21],即判別器無法判定生成的圖像數(shù)據(jù)和真實(shí)圖像數(shù)據(jù)。
GAN網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示,輸入數(shù)據(jù)z一般為服從高斯分布的隨機(jī)變量,生成器G生成虛擬圖像G(z),判別器D對生成的虛擬圖像和真實(shí)圖像做二分類判別,得到判別結(jié)果D(x)。生成對抗網(wǎng)絡(luò)訓(xùn)練過程的實(shí)質(zhì)是不斷地調(diào)整優(yōu)化生成器G和判別器D的參數(shù),優(yōu)化的手段是使生成器極小化、判別器極大化,損失函數(shù)為
(1)
Pd(x)——真實(shí)樣本數(shù)據(jù)分布
PG(z)——生成樣本數(shù)據(jù)分布
E(·)——期望
GAN網(wǎng)絡(luò)訓(xùn)練的步驟是先固定生成器G的參數(shù),訓(xùn)練判別器D的參數(shù),然后固定判別器D的參數(shù),再訓(xùn)練生成器G的參數(shù),如此反復(fù)交替進(jìn)行。訓(xùn)練過程中期望判別器對生成圖像的判別結(jié)果D(G(z))=1,D(x)=1,當(dāng)Pd(x)=PG(z)時(shí)達(dá)到全局最優(yōu),即生成器生成的虛擬圖像能夠騙過判別器,最終達(dá)到以假亂真的效果。
GOODFELLOW等[20]提出的GAN網(wǎng)絡(luò)優(yōu)點(diǎn)明顯,但也存在訓(xùn)練過程難以收斂的問題。RADFORD等[22]利用卷積神經(jīng)網(wǎng)絡(luò)代替了GAN中的多層感知機(jī),提出了DCGAN網(wǎng)絡(luò),大大提升了GAN的性能。DCGAN網(wǎng)絡(luò)結(jié)構(gòu)與GAN網(wǎng)絡(luò)結(jié)構(gòu)相似,包括生成網(wǎng)絡(luò)與判別網(wǎng)絡(luò)。DCGAN的生成網(wǎng)絡(luò)由7層卷積神經(jīng)網(wǎng)絡(luò)組成,含有3個(gè)反卷積層(Deconvolution,Deconv)、3個(gè)標(biāo)準(zhǔn)卷積層(Convolution,Conv)和1個(gè)輸入層;其判別網(wǎng)絡(luò)由4個(gè)卷積層和1個(gè)全連接層構(gòu)成。生成器將隨機(jī)數(shù)據(jù)轉(zhuǎn)換為虛擬圖像,判別器根據(jù)真實(shí)圖像數(shù)據(jù)對虛擬圖像進(jìn)行判別,最后根據(jù)判別結(jié)果對生成器G和判別器D的網(wǎng)絡(luò)參數(shù)進(jìn)行優(yōu)化。
2.1.1DCGAN生成網(wǎng)絡(luò)
利用DCGAN網(wǎng)絡(luò)生成禽蛋圖像,CCD相機(jī)采集的實(shí)驗(yàn)圖像分辨率較高。若生成網(wǎng)絡(luò)生成的禽蛋圖像數(shù)據(jù)分辨率過低則可能會使禽蛋圖像變形,生成的禽蛋圖像質(zhì)量較差。若生成的圖像分辨率過高則會影響GAN網(wǎng)絡(luò)的訓(xùn)練速度。經(jīng)反復(fù)試驗(yàn),綜合訓(xùn)練速度和圖像質(zhì)量,本研究將生成的圖像尺寸設(shè)置為256像素×256像素。生成網(wǎng)絡(luò)中的反卷積層具有上采樣的作用[23],標(biāo)準(zhǔn)卷積層后面引入批量歸一化層(Batch normalization,BN)防止梯度消失[24],使用ReLU和tanh函數(shù)作為激活函數(shù)。
用于禽蛋圖像生成的DCGAN網(wǎng)絡(luò)的生成網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
將尺寸為32×32×128服從正態(tài)分布的隨機(jī)數(shù)據(jù)經(jīng)過上采樣和卷積操作輸出為256×256×3的圖像數(shù)據(jù)。具體實(shí)現(xiàn)步驟如下:
(1)將服從正態(tài)分布的131 072個(gè)隨機(jī)數(shù)據(jù)重構(gòu)成尺寸為32×32×128的矩陣,作為生成網(wǎng)絡(luò)的輸入。
(2)輸入層(Input):將尺寸為32×32×128的隨機(jī)數(shù)據(jù)輸入至Deconv_1。
(3)反卷積層1(Deconv_1):將尺寸為32×32×128的數(shù)據(jù)經(jīng)過反卷積層后,輸出尺寸為64×64×128的數(shù)據(jù)至Conv_1。
(4)卷積層1(Conv_1):卷積核為3×3、共128個(gè),經(jīng)過卷積層后輸出尺寸為64×64×128,再經(jīng)BN層和ReLU激活后輸入至Deconv_2。
(5)反卷積層2(Deconv_2):將尺寸為64×64×128的數(shù)據(jù)經(jīng)過反卷積層后,輸出尺寸為128×128×128的數(shù)據(jù)至Conv_2。
(6)卷積層2(Conv_2):卷積核為3×3、數(shù)量為64,將尺寸為128×128×128的數(shù)據(jù)經(jīng)過卷積層后輸出尺寸為128×128×64,再經(jīng)BN層和ReLU激活后輸入至Deconv_3。
(7)反卷積層3(Deconv_3):將尺寸為128×128×64的數(shù)據(jù)經(jīng)過反卷積層處理后,輸出尺寸為256×256×64的數(shù)據(jù)至Conv_3。
(8)卷積層3(Conv_3):卷積核為3×3,卷積核數(shù)量為3,將尺寸為256×256×64的數(shù)據(jù)卷積處理后輸出尺寸為256×256×3,最后由tanh函數(shù)激活后輸出。
2.1.2DCGAN判別網(wǎng)絡(luò)
DCGAN判別網(wǎng)絡(luò)的作用是對生成的虛擬圖像進(jìn)行真假判別,利用判別結(jié)果對生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)進(jìn)行參數(shù)更新。判別網(wǎng)絡(luò)由4個(gè)卷積層和1個(gè)全連接層(Fully connected layer,FC)構(gòu)成,網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。與生成網(wǎng)絡(luò)類似,在卷積層后使用BN層,但激活函數(shù)使用LeakyReLU和Sigmoid函數(shù)。此外還引入了dropout層,以防止判別網(wǎng)絡(luò)出現(xiàn)過擬合現(xiàn)象[25]。
判別網(wǎng)絡(luò)共5層,具體步驟如下:
(1)卷積層1(Conv_1):卷積核尺寸為5×5、卷積核數(shù)量為64、卷積步長為2,圖像尺寸為256×256×3,經(jīng)過卷積后輸出尺寸為128×128×64,卷積后使用LeakyReLU函數(shù)激活,并加入dropout層輸出至卷積層2。
(2)卷積層2(Conv_2):卷積核尺寸為5×5、卷積核數(shù)量為128、卷積步長為2,經(jīng)過卷積后輸出圖像尺寸為65×65×128,卷積后進(jìn)行批量歸一化,再經(jīng)過LeakyReLU和dropout輸出至卷積層3。
(3)卷積層3(Conv_3):卷積核尺寸為5×5、卷積核數(shù)量為256、卷積步長為2,經(jīng)過卷積和零填充(Zero_padding,ZP)后輸出尺寸為33×33×256,然后進(jìn)行批量歸一化,再使用LeakyReLU激活并加入dropout層輸出至卷積層4。
(4)卷積層4(Conv_4):卷積核尺寸為5×5、卷積核數(shù)量為512、卷積步長為1,經(jīng)過卷積后輸出圖像尺寸為33×33×512,卷積后進(jìn)行批量歸一化,再使用LeakyReLU激活并加入dropout層輸出至全連接層。
(5)全連接層(FC):輸入尺寸為33×33×512,經(jīng)過Sigmoid函數(shù)激活后輸出為0或1,表示判定結(jié)果為假或真。
DCGAN網(wǎng)絡(luò)通過引入卷積神經(jīng)網(wǎng)絡(luò)代替GAN全連接網(wǎng)絡(luò),一定程度上解決了GAN網(wǎng)絡(luò)訓(xùn)練過程中難以收斂的問題,且加快了網(wǎng)絡(luò)的訓(xùn)練速度。但DCGAN網(wǎng)絡(luò)并未對GAN網(wǎng)絡(luò)的損失函數(shù)加以改進(jìn),原始GAN網(wǎng)絡(luò)中使用JS散度來衡量生成數(shù)據(jù)分布與真實(shí)數(shù)據(jù)分布的距離,會導(dǎo)致GAN網(wǎng)絡(luò)在訓(xùn)練過程中出現(xiàn)梯度消失現(xiàn)象。為此GULRAJANI等[26]利用加梯度懲罰的Wasserstein距離對原始GAN網(wǎng)絡(luò)的損失函數(shù)進(jìn)行優(yōu)化,提出了WGAN-GP網(wǎng)絡(luò),從根本上解決了該問題。WGAN-GP網(wǎng)絡(luò)使用Wasserstein距離代替JS散度并用Lipschitz函數(shù)對判別器的權(quán)重進(jìn)行約束。Wasserstein距離定義如下
(2)
式中PR——真實(shí)樣本分布
PI——生成樣本分布
r——真實(shí)樣本y——生成樣本
γ——聯(lián)合分布
∏(PR,PI) ——PR和PI組合后所有可能聯(lián)合分布的集合
E(r,y)~γ(‖r-y‖)——聯(lián)合分布γ下真實(shí)樣本與生成樣本之間距離的期望
inf——最大下確界函數(shù)
(3)
LG=Ex~PR(D(x))-Ex~PI(D(x))
(4)
式中LD——判別網(wǎng)絡(luò)損失函數(shù)
LG——生成網(wǎng)絡(luò)損失函數(shù)
Pc——真實(shí)樣本分布與生成樣本分布的差值
WGAN-GP網(wǎng)絡(luò)雖然對原始GAN的損失函數(shù)進(jìn)行優(yōu)化,但生成網(wǎng)絡(luò)與判別網(wǎng)絡(luò)依然使用全鏈接層,導(dǎo)致其訓(xùn)練速度較慢且生成的樣本多樣性不足。而DCGAN網(wǎng)絡(luò)訓(xùn)練過程中存在難以收斂的問題,故本研究結(jié)合WGAN-GP和DCGAN網(wǎng)絡(luò)的優(yōu)點(diǎn)提出了針對禽蛋圖像的生成網(wǎng)絡(luò)。由于禽蛋圖像的數(shù)據(jù)背景簡單、目標(biāo)為橢圓,若生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)表達(dá)的特征不足則易造成禽蛋外形和顏色的失真,若大量使用全連接網(wǎng)絡(luò)則會降低網(wǎng)絡(luò)的收斂速度。
殘差網(wǎng)絡(luò)在增加網(wǎng)絡(luò)的寬度與深度方面具有明顯優(yōu)勢,可以提高網(wǎng)絡(luò)的性能。故本研究引入殘差網(wǎng)絡(luò)代替DCGAN中的卷積網(wǎng)絡(luò)從而提升網(wǎng)絡(luò)表達(dá)特征的能力,同時(shí)將DCGAN中的損失函數(shù)更改為WGAN-GP的損失函數(shù)。設(shè)計(jì)了如圖6所示的生成對抗網(wǎng)絡(luò)。生成器G為含反卷積層的殘差網(wǎng)絡(luò),判別器D為二分類卷積網(wǎng)絡(luò)。將符合正態(tài)分布的隨機(jī)噪聲z輸入生成器G中,生成虛擬圖像G(z),判別器D根據(jù)真實(shí)圖像數(shù)據(jù)分布對虛擬圖像進(jìn)行判別,最后根據(jù)判別結(jié)果對生成器G和判別器D的網(wǎng)絡(luò)參數(shù)進(jìn)行優(yōu)化。
2.2.1EGG-GAN生成網(wǎng)絡(luò)
深度殘差生成對抗網(wǎng)絡(luò)在圖像超分辨率重建方面取得了一定的優(yōu)勢,能夠生成較高分辨率的圖像樣本[27]。本文要生成尺寸為256×256×3的禽蛋圖像,屬于較高分辨率圖像,故使用殘差網(wǎng)絡(luò)代替DCGAN網(wǎng)絡(luò)中的卷積層。經(jīng)反復(fù)試驗(yàn),設(shè)計(jì)了含殘差結(jié)構(gòu)的19層禽蛋圖像數(shù)據(jù)生成網(wǎng)絡(luò),含有5個(gè)反卷積層(Deconvolution,Deconv)、13個(gè)卷積層(Convolution,Conv)和1個(gè)輸入層。該生成網(wǎng)絡(luò)的輸入數(shù)據(jù)為8×8×256的正態(tài)分布數(shù)據(jù),輸出為256×256×3。在卷積層后面同樣引入批量歸一化操作,使用ReLU和tanh函數(shù)作為激活函數(shù)。
禽蛋圖像數(shù)據(jù)生成網(wǎng)絡(luò)將噪聲數(shù)據(jù)轉(zhuǎn)換為圖像數(shù)據(jù),將服從正態(tài)分布的16 384個(gè)隨機(jī)數(shù)據(jù)重構(gòu)成尺寸為8×8×256的矩陣,作為生成網(wǎng)絡(luò)的輸入。網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示,具體實(shí)現(xiàn)步驟如下:
(1)輸入層(Input):輸入尺寸為8×8×256的隨機(jī)數(shù)據(jù),經(jīng)過ReLU激活函數(shù)處理后輸入至Deconv_1。
(2)反卷積層1(Deconv_1):將尺寸為8×8×256的數(shù)據(jù)經(jīng)過反卷積后,輸出尺寸為16×16×256的數(shù)據(jù)至Conv_1。
(3)卷積層1(Conv_1):卷積核尺寸為5×5、數(shù)量為64,經(jīng)過卷積后輸出尺寸為16×16×64,再使用BN層和ReLU激活后輸入至Conv_2。
(4)卷積層2(Conv_2):卷積核尺寸為3×3、數(shù)量為128,經(jīng)卷積輸出尺寸為16×16×128,使用BN層和ReLU激活后輸入至Conv_3。
(5)卷積層3(Conv_3):卷積核尺寸為1×1、數(shù)量為256,經(jīng)卷積輸出尺寸為16×16×256,使用BN層和ReLU激活后輸入至Conv_4。
(6)卷積層4(Conv_4):卷積核尺寸為1×1、數(shù)量為128,經(jīng)卷積輸出尺寸為16×16×128,使用BN層和ReLU激活后輸入至Conv_5。
(7)卷積層5(Conv_5):卷積核尺寸為1×1、數(shù)量為64,經(jīng)卷積輸出尺寸為16×16×64,使用BN層和ReLU激活后與Conv_1層的輸出相加,然后輸入至Deconv_2。
(8)反卷積層2(Deconv_2):將尺寸為16×16×64的數(shù)據(jù)反卷積后輸出尺寸為32×32×64的數(shù)據(jù)至Conv_6。
(9)卷積層6(Conv_6):卷積核尺寸為5×5、數(shù)量為128,將尺寸為32×32×64的數(shù)據(jù)經(jīng)過卷積后輸出尺寸為32×32×128,再使用BN層和ReLU激活后輸入至Conv_7。
(10)卷積層7(Conv_7):卷積核尺寸為3×3、數(shù)量為256,將尺寸為32×32×128的數(shù)據(jù)經(jīng)過卷積后輸出尺寸為32×32×256,再使用BN層和ReLU激活后輸入至Conv_8。
(11)卷積層8(Conv_8):卷積核尺寸為1×1、數(shù)量為512,將尺寸為32×32×256的數(shù)據(jù)經(jīng)過卷積后輸出尺寸為32×32×512,再使用BN層和ReLU激活后輸入至Conv_9。
(12)卷積層9(Conv_9):卷積核尺寸為3×3、數(shù)量為256,將尺寸為32×32×512的數(shù)據(jù)經(jīng)過卷積后輸出尺寸為32×32×256,再使用BN層和ReLU激活后輸入至Conv_10。
(13)卷積層10(Conv_10):卷積核尺寸為3×3、數(shù)量為128,將尺寸為32×32×256的數(shù)據(jù)經(jīng)過卷積后輸出尺寸為32×32×128,再使用BN層和ReLU激活后與Conv_6層的輸出相加,然后輸入至Deconv_3。
(14)反卷積層3(Deconv_3):將尺寸為32×32×128的數(shù)據(jù)經(jīng)過反卷積處理后,輸出尺寸為64×64×128的數(shù)據(jù)至Conv_11。
(15)卷積層11(Conv_11):卷積核尺寸為5×5,卷積核數(shù)量為256,將尺寸為64×64×128的數(shù)據(jù)卷積后輸出尺寸為64×64×256,再經(jīng)過BN層和ReLU激活后輸入至Deconv_4。
(16)反卷積層4(Deconv_4):將尺寸為64×64×256的數(shù)據(jù)反卷積后輸出尺寸為128×128×256的數(shù)據(jù)至Conv_12。
(17)卷積層12(Conv_12):卷積核尺寸為5×5,卷積核數(shù)量為64,將尺寸為128×128×256的數(shù)據(jù)卷積后輸出尺寸為128×128×64,再經(jīng)過BN層和ReLU激活后輸入至Deconv_5。
(18)反卷積層5(Deconv_5):將尺寸為128×128×64的數(shù)據(jù)經(jīng)過反卷積后,輸出尺寸為256×256×64的數(shù)據(jù)至Conv_13。
(19)卷積層13(Conv_13):卷積核尺寸為5×5,卷積核數(shù)量為3,將尺寸為256×256×64的數(shù)據(jù)卷積后輸出尺寸為256×256×3,最后經(jīng)tanh激活后輸出。
2.2.2EGG-GAN判別網(wǎng)絡(luò)
禽蛋圖像數(shù)據(jù)判別網(wǎng)絡(luò)的作用是對生成的虛擬圖像進(jìn)行真假判別,利用判別的結(jié)果對生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)進(jìn)行參數(shù)更新。判別網(wǎng)絡(luò)是由6個(gè)卷積層和1個(gè)全連接層(Fully connected layer,FC)構(gòu)成的卷積神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)結(jié)構(gòu)如圖8所示。與生成網(wǎng)絡(luò)類似,在卷積層后使用BN層,但激活函數(shù)使用LeakyReLU和Sigmoid函數(shù)。此外還引入了dropout層,以防止判別網(wǎng)絡(luò)出現(xiàn)過擬合現(xiàn)象。
判別網(wǎng)絡(luò)共7層,具體實(shí)現(xiàn)步驟如下:
(1)卷積層1(Conv_1):卷積核尺寸為5×5、卷積核數(shù)量為64、卷積步長為2,尺寸為256×256×3的圖像經(jīng)過卷積后輸出尺寸為128×128×64,卷積后使用LeakyReLU激活,并加入dropout層輸出至卷積層2。
(2)卷積層2(Conv_2):卷積核尺寸為5×5、卷積核數(shù)量為128、卷積步長為2,經(jīng)過卷積后輸出尺寸為65×65×128,卷積后進(jìn)行批量歸一化,再使用LeakyReLU和dropout輸出至卷積層3。
(3)卷積層3(Conv_3):卷積核尺寸為5×5、卷積核數(shù)量為256、卷積步長為2,經(jīng)過卷積和零填充(Zero_padding,ZP)后輸出尺寸為33×33×256,然后進(jìn)行批量歸一化,再使用LeakyReLU和dropout輸出至卷積層4。
(4)卷積層4(Conv_4):卷積核尺寸為5×5、卷積核數(shù)量為512、卷積步長為1,經(jīng)過卷積后輸出尺寸為33×33×512,卷積后進(jìn)行批量歸一化,再使用LeakyReLU和dropout輸出至卷積層5。
(5)卷積層5(Conv_5):卷積核尺寸為3×3、卷積核數(shù)量為256、卷積步長為1,經(jīng)過卷積后輸出尺寸為33×33×256,卷積后進(jìn)行批量歸一化,再使用LeakyReLU和dropout輸出至全連接層。
(6)卷積層6(Conv_6):卷積核尺寸為3×3、卷積核數(shù)量為256、卷積步長為2,經(jīng)過卷積后輸出尺寸為16×16×256,卷積后進(jìn)行批量歸一化,再經(jīng)過LeakyReLU和dropout輸出至全連接層。
(7)全連接層(FC):輸入尺寸為16×16×256,經(jīng)過Sigmoid函數(shù)后輸出為0或1表示判定結(jié)果為假或真。
硬件平臺為AMD銳龍 Threadripper 2920X型CPU、NIVIDIA GeForce RTX 2080Ti型GPU、128 GB內(nèi)存。軟件平臺為OpenCV 4.2.0+Keras 2.3.1+Python 3.7。
采集得到了光源透射和反射情況下的兩類禽蛋圖像各300幅,利用EGG-GAN網(wǎng)絡(luò)訓(xùn)練之前,需要對圖像數(shù)據(jù)進(jìn)行旋轉(zhuǎn)、平移、拉伸、對比度變換預(yù)處理操作。旋轉(zhuǎn)、平移和拉伸操作可以增加訓(xùn)練樣本的數(shù)量,對比度變換使禽蛋圖像的顏色信息更加真實(shí)。預(yù)處理后的禽蛋透射圖像和禽蛋反射圖像如圖9所示,數(shù)據(jù)增強(qiáng)后兩類禽蛋圖像各900幅。
DCGAN網(wǎng)絡(luò)的訓(xùn)練方式為先固定生成器G,利用式(1)的目標(biāo)函數(shù)和Adam 優(yōu)化器對判別器D的權(quán)重和偏置進(jìn)行優(yōu)化;優(yōu)化5次后,再固定判別器D,對生成器G的參數(shù)進(jìn)行優(yōu)化,優(yōu)化次數(shù)也為5,如此反復(fù)交替進(jìn)行,其中生成器G和判別器D的損失函數(shù)均為交叉熵函數(shù)。EGG-GAN網(wǎng)絡(luò)的訓(xùn)練方式和優(yōu)化器與DCGAN網(wǎng)絡(luò)相同,不同的是EGG-GAN網(wǎng)絡(luò)使用加梯度懲罰的Wasserstein距離優(yōu)化的損失函數(shù),判別器D和生成器G的損失函數(shù)分別如式(3)、(4)。DCGAN和EGG-GAN網(wǎng)絡(luò)的生成器和判別器的初始學(xué)習(xí)率均設(shè)置為0.000 2,迭代次數(shù)設(shè)置為4 000次,每個(gè)迭代訓(xùn)練57次,每次訓(xùn)練的圖像數(shù)量(Batchsize)為16,每500個(gè)迭代保存一次模型參數(shù)。EGG-GAN網(wǎng)絡(luò)的訓(xùn)練流程圖如圖10所示,DCGAN網(wǎng)絡(luò)與之類似。
蛋形指數(shù)是衡量禽蛋外形特征的重要指標(biāo)之一,通過比較生成圖像的蛋形指數(shù)均值和真實(shí)圖像蛋形指數(shù)均值來衡量生成的禽蛋圖像質(zhì)量。EGG-GAN網(wǎng)絡(luò)訓(xùn)練過程中生成的禽蛋圖像的蛋形指數(shù)變化曲線如圖11所示。DCGAN網(wǎng)絡(luò)訓(xùn)練過程中生成的禽蛋圖像的蛋形指數(shù)變化曲線如圖12所示。從圖中可以發(fā)現(xiàn),在生成禽蛋反射圖像方面,EGG-GAN網(wǎng)絡(luò)迭代至2 000次時(shí),生成的禽蛋反射圖像接近真實(shí)禽蛋圖像的蛋形指數(shù)均值,說明網(wǎng)絡(luò)已經(jīng)收斂,而DCGAN迭代至3 000次時(shí),網(wǎng)絡(luò)才收斂。在生成禽蛋透射圖像方面,EGG-GAN網(wǎng)絡(luò)迭代至2 500次時(shí)網(wǎng)絡(luò)開始收斂,而DCGAN迭代至3 500次后網(wǎng)絡(luò)才收斂。
本文將禽蛋透射圖像和禽蛋反射圖像分別用DCGAN和EGG-GAN網(wǎng)絡(luò)進(jìn)行訓(xùn)練,訓(xùn)練參數(shù)設(shè)置相同。利用訓(xùn)練好的模型進(jìn)行禽蛋圖像數(shù)據(jù)生成,分別生成禽蛋透射圖像數(shù)據(jù)和反射圖像數(shù)據(jù),驗(yàn)證網(wǎng)絡(luò)性能。DCGAN和EGG-GAN做模型驗(yàn)證時(shí),每迭代500次生成一批禽蛋圖像數(shù)據(jù)。DCGAN不同訓(xùn)練次數(shù)生成的禽蛋透射圖像、反射圖像如圖13、14所示,EGG-GAN不同訓(xùn)練次數(shù)生成的禽蛋透射圖像、反射圖像如圖15、16所示。
通過圖13、14可以看出, DCGAN網(wǎng)絡(luò)在禽蛋透射圖像生成過程中,模型迭代3 500次后能夠生成較為真實(shí)的禽蛋圖像;在禽蛋反射圖像生成過程中,迭代3 000次后生成的禽蛋反射圖像已經(jīng)十分接近真實(shí)圖像。由圖15、16可以發(fā)現(xiàn),在使用EGG-GAN網(wǎng)絡(luò)實(shí)現(xiàn)禽蛋反射圖像生成過程中,網(wǎng)絡(luò)迭代2 000次后,生成了較高質(zhì)量的禽蛋圖像;在生成禽蛋透射圖像過程中,網(wǎng)絡(luò)迭代2 500次后,生成的圖像已較為接近真實(shí)圖像。不難發(fā)現(xiàn),EGG-GAN網(wǎng)絡(luò)在禽蛋反射圖像和透射圖像生成訓(xùn)練過程中的收斂速度均大于DCGAN網(wǎng)絡(luò),說明引入殘差結(jié)構(gòu)和加梯度懲罰的Wasserstein距離優(yōu)化的損失函數(shù)能夠有效解決DCGAN網(wǎng)絡(luò)訓(xùn)練難以收斂的問題。
(1)根據(jù)禽蛋圖像的特點(diǎn),以鴨蛋為研究對象,在DCGAN網(wǎng)絡(luò)中引入殘差結(jié)構(gòu),并將損失函數(shù)用加梯度懲罰的Wasserstein距離進(jìn)行改進(jìn),在禽蛋圖像生成過程中能夠加快網(wǎng)絡(luò)的收斂速度,迭代2 500次后能夠生成高質(zhì)量的禽蛋透射圖像,迭代2 000次后能夠生成較為真實(shí)的禽蛋反射圖像,均比DCGAN網(wǎng)絡(luò)提前1 000次迭代收斂。
(2)EGG-GAN網(wǎng)絡(luò)在生成禽蛋透射圖像和反射圖像過程中均表現(xiàn)出收斂速度更快性能,說明該網(wǎng)絡(luò)在禽蛋圖像生成研究中具有較好的普適性。