基于生成对抗网络的禽蛋图像数据生成研究

2021-03-20 08:02李庆旭王巧华马美湖
农业机械学报 2021年2期
关键词:禽蛋卷积尺寸

李庆旭 王巧华,2 马美湖

(1.华中农业大学工学院, 武汉 430070; 2.农业农村部长江中下游农业装备重点实验室, 武汉 430070;3.国家蛋品加工技术研发分中心, 武汉 430070)

0 引言

目前,禽蛋检测手段主要包括光谱、敲击振动和机器视觉等方法。光谱和敲击振动方法设备成本高、稳定性差;机器视觉技术具有成本低廉、效率高的优点,成为禽蛋品质无损检测较为稳定和可靠的方法之一[1-2]。利用机器视觉技术可以对禽蛋裂纹[3-4]、新鲜度[5-6]、尺寸[7]、散黄[8]以及种蛋受精信息[9-10]等进行无损检测。

使用机器视觉技术对禽蛋进行检测的前提是需采集大量的禽蛋图像数据,然后利用相关图像处理或图像识别[11]手段对禽蛋图像数据进行分析建模,最后将建立的模型部署到实际生产中,从而实现禽蛋的自动无损检测。近年来,深度学习在机器视觉领域占据重要地位,但深度学习往往需要大量的禽蛋图像数据。目前,国内缺乏相关禽蛋图像数据库,采集海量禽蛋图像需要耗费大量的人力和物力,且在有限的情况下采集得到的禽蛋图像数据样本容易出现分布不均衡。因此,寻找到合理的图像数据生成算法对加快深度学习在禽蛋检测领域的应用具有重要意义。

生成对抗网络(Generative adversarial network,GAN)[12]是一种基于纳什均衡和对抗训练的新型数据生成算法,可以根据小样本数据分布智能生成海量且高质量的图像数据,有效解决计算机视觉领域的样本不足和分布不均衡问题[13]。目前,GAN网络被广泛应用于文本生成[14]、图像生成与识别[15]和生物学[16]等领域,在农业领域袁培森等[17]利用GAN网络生成菌菇表型图像数据,但在禽蛋领域尚未见相关报道。使用GAN网络模拟真实数据分布、生成高质量的禽蛋图像数据,能有效解决使用机器视觉和深度学习对禽蛋检测样本不足的问题。

采用机器视觉技术对禽蛋检测时,常以透射方式检测禽蛋内部品质[18]、以反射方式检测禽蛋外部品质[19]。为此,本文以光源透射和反射情况下的禽蛋图像为研究对象,在深度卷积生成对抗网络(Deep convolutional generative adversarial networks,DCGAN)的基础上引入残差网络和Wasserstein距离,设计一种适用于禽蛋图像数据生成的GAN网络(EGG-GAN),来模拟禽蛋图像数据样本的真实分布,生成海量禽蛋图像数据。

1 图像采集和生成对抗网络

1.1 图像采集

为了分别采集透射和反射情况下的禽蛋图像,本文设计了图1所示的禽蛋透射图像采集装置和图2所示的禽蛋反射图像采集装置,采集装置由暗箱、光源、工业相机、计算机构成。透射光源选择5 W正白光LED射灯,反射光源为5 W环形LED光源,相机为AD-080GE型工业相机。以鸭蛋为研究对象,共采集透射图像和反射图像各300幅。采集得到禽蛋透射和反射图像的尺寸均为1 024像素×768像素,为了方便EGG-GAN网络读取数据,本文将图像尺寸统一调整为256像素×256像素。

1.2 GAN网络

生成对抗网络是由GOODFELLOW等[20]提出的基于零和博弈论的生成深度学习算法。GAN网络分为生成器和判别器,随机数据输入至生成器后,由生成器中的解码器将随机数据转换成图像格式的数据,判别器对生成的数据进行判定(判断是否为真实数据)。GAN网络的生成器和判别器在训练过程中不断优化,两者相互对抗最终达到纳什均衡[21],即判别器无法判定生成的图像数据和真实图像数据。

GAN网络结构如图3所示,输入数据z一般为服从高斯分布的随机变量,生成器G生成虚拟图像G(z),判别器D对生成的虚拟图像和真实图像做二分类判别,得到判别结果D(x)。生成对抗网络训练过程的实质是不断地调整优化生成器G和判别器D的参数,优化的手段是使生成器极小化、判别器极大化,损失函数为

(1)

Pd(x)——真实样本数据分布

PG(z)——生成样本数据分布

E(·)——期望

GAN网络训练的步骤是先固定生成器G的参数,训练判别器D的参数,然后固定判别器D的参数,再训练生成器G的参数,如此反复交替进行。训练过程中期望判别器对生成图像的判别结果D(G(z))=1,D(x)=1,当Pd(x)=PG(z)时达到全局最优,即生成器生成的虚拟图像能够骗过判别器,最终达到以假乱真的效果。

2 EGG-GAN网络实现

2.1 DCGAN网络

GOODFELLOW等[20]提出的GAN网络优点明显,但也存在训练过程难以收敛的问题。RADFORD等[22]利用卷积神经网络代替了GAN中的多层感知机,提出了DCGAN网络,大大提升了GAN的性能。DCGAN网络结构与GAN网络结构相似,包括生成网络与判别网络。DCGAN的生成网络由7层卷积神经网络组成,含有3个反卷积层(Deconvolution,Deconv)、3个标准卷积层(Convolution,Conv)和1个输入层;其判别网络由4个卷积层和1个全连接层构成。生成器将随机数据转换为虚拟图像,判别器根据真实图像数据对虚拟图像进行判别,最后根据判别结果对生成器G和判别器D的网络参数进行优化。

2.1.1DCGAN生成网络

利用DCGAN网络生成禽蛋图像,CCD相机采集的实验图像分辨率较高。若生成网络生成的禽蛋图像数据分辨率过低则可能会使禽蛋图像变形,生成的禽蛋图像质量较差。若生成的图像分辨率过高则会影响GAN网络的训练速度。经反复试验,综合训练速度和图像质量,本研究将生成的图像尺寸设置为256像素×256像素。生成网络中的反卷积层具有上采样的作用[23],标准卷积层后面引入批量归一化层(Batch normalization,BN)防止梯度消失[24],使用ReLU和tanh函数作为激活函数。

用于禽蛋图像生成的DCGAN网络的生成网络结构如图4所示。

将尺寸为32×32×128服从正态分布的随机数据经过上采样和卷积操作输出为256×256×3的图像数据。具体实现步骤如下:

(1)将服从正态分布的131 072个随机数据重构成尺寸为32×32×128的矩阵,作为生成网络的输入。

(2)输入层(Input):将尺寸为32×32×128的随机数据输入至Deconv_1。

(3)反卷积层1(Deconv_1):将尺寸为32×32×128的数据经过反卷积层后,输出尺寸为64×64×128的数据至Conv_1。

(4)卷积层1(Conv_1):卷积核为3×3、共128个,经过卷积层后输出尺寸为64×64×128,再经BN层和ReLU激活后输入至Deconv_2。

(5)反卷积层2(Deconv_2):将尺寸为64×64×128的数据经过反卷积层后,输出尺寸为128×128×128的数据至Conv_2。

(6)卷积层2(Conv_2):卷积核为3×3、数量为64,将尺寸为128×128×128的数据经过卷积层后输出尺寸为128×128×64,再经BN层和ReLU激活后输入至Deconv_3。

(7)反卷积层3(Deconv_3):将尺寸为128×128×64的数据经过反卷积层处理后,输出尺寸为256×256×64的数据至Conv_3。

(8)卷积层3(Conv_3):卷积核为3×3,卷积核数量为3,将尺寸为256×256×64的数据卷积处理后输出尺寸为256×256×3,最后由tanh函数激活后输出。

2.1.2DCGAN判别网络

DCGAN判别网络的作用是对生成的虚拟图像进行真假判别,利用判别结果对生成网络和判别网络进行参数更新。判别网络由4个卷积层和1个全连接层(Fully connected layer,FC)构成,网络结构如图5所示。与生成网络类似,在卷积层后使用BN层,但激活函数使用LeakyReLU和Sigmoid函数。此外还引入了dropout层,以防止判别网络出现过拟合现象[25]。

判别网络共5层,具体步骤如下:

(1)卷积层1(Conv_1):卷积核尺寸为5×5、卷积核数量为64、卷积步长为2,图像尺寸为256×256×3,经过卷积后输出尺寸为128×128×64,卷积后使用LeakyReLU函数激活,并加入dropout层输出至卷积层2。

(2)卷积层2(Conv_2):卷积核尺寸为5×5、卷积核数量为128、卷积步长为2,经过卷积后输出图像尺寸为65×65×128,卷积后进行批量归一化,再经过LeakyReLU和dropout输出至卷积层3。

(3)卷积层3(Conv_3):卷积核尺寸为5×5、卷积核数量为256、卷积步长为2,经过卷积和零填充(Zero_padding,ZP)后输出尺寸为33×33×256,然后进行批量归一化,再使用LeakyReLU激活并加入dropout层输出至卷积层4。

(4)卷积层4(Conv_4):卷积核尺寸为5×5、卷积核数量为512、卷积步长为1,经过卷积后输出图像尺寸为33×33×512,卷积后进行批量归一化,再使用LeakyReLU激活并加入dropout层输出至全连接层。

(5)全连接层(FC):输入尺寸为33×33×512,经过Sigmoid函数激活后输出为0或1,表示判定结果为假或真。

2.2 EGG-GAN网络

DCGAN网络通过引入卷积神经网络代替GAN全连接网络,一定程度上解决了GAN网络训练过程中难以收敛的问题,且加快了网络的训练速度。但DCGAN网络并未对GAN网络的损失函数加以改进,原始GAN网络中使用JS散度来衡量生成数据分布与真实数据分布的距离,会导致GAN网络在训练过程中出现梯度消失现象。为此GULRAJANI等[26]利用加梯度惩罚的Wasserstein距离对原始GAN网络的损失函数进行优化,提出了WGAN-GP网络,从根本上解决了该问题。WGAN-GP网络使用Wasserstein距离代替JS散度并用Lipschitz函数对判别器的权重进行约束。Wasserstein距离定义如下

(2)

式中PR——真实样本分布

PI——生成样本分布

r——真实样本y——生成样本

γ——联合分布

∏(PR,PI) ——PR和PI组合后所有可能联合分布的集合

E(r,y)~γ(‖r-y‖)——联合分布γ下真实样本与生成样本之间距离的期望

inf——最大下确界函数

(3)

LG=Ex~PR(D(x))-Ex~PI(D(x))

(4)

式中LD——判别网络损失函数

LG——生成网络损失函数

Pc——真实样本分布与生成样本分布的差值

WGAN-GP网络虽然对原始GAN的损失函数进行优化,但生成网络与判别网络依然使用全链接层,导致其训练速度较慢且生成的样本多样性不足。而DCGAN网络训练过程中存在难以收敛的问题,故本研究结合WGAN-GP和DCGAN网络的优点提出了针对禽蛋图像的生成网络。由于禽蛋图像的数据背景简单、目标为椭圆,若生成网络和判别网络表达的特征不足则易造成禽蛋外形和颜色的失真,若大量使用全连接网络则会降低网络的收敛速度。

残差网络在增加网络的宽度与深度方面具有明显优势,可以提高网络的性能。故本研究引入残差网络代替DCGAN中的卷积网络从而提升网络表达特征的能力,同时将DCGAN中的损失函数更改为WGAN-GP的损失函数。设计了如图6所示的生成对抗网络。生成器G为含反卷积层的残差网络,判别器D为二分类卷积网络。将符合正态分布的随机噪声z输入生成器G中,生成虚拟图像G(z),判别器D根据真实图像数据分布对虚拟图像进行判别,最后根据判别结果对生成器G和判别器D的网络参数进行优化。

2.2.1EGG-GAN生成网络

深度残差生成对抗网络在图像超分辨率重建方面取得了一定的优势,能够生成较高分辨率的图像样本[27]。本文要生成尺寸为256×256×3的禽蛋图像,属于较高分辨率图像,故使用残差网络代替DCGAN网络中的卷积层。经反复试验,设计了含残差结构的19层禽蛋图像数据生成网络,含有5个反卷积层(Deconvolution,Deconv)、13个卷积层(Convolution,Conv)和1个输入层。该生成网络的输入数据为8×8×256的正态分布数据,输出为256×256×3。在卷积层后面同样引入批量归一化操作,使用ReLU和tanh函数作为激活函数。

禽蛋图像数据生成网络将噪声数据转换为图像数据,将服从正态分布的16 384个随机数据重构成尺寸为8×8×256的矩阵,作为生成网络的输入。网络结构如图7所示,具体实现步骤如下:

(1)输入层(Input):输入尺寸为8×8×256的随机数据,经过ReLU激活函数处理后输入至Deconv_1。

(2)反卷积层1(Deconv_1):将尺寸为8×8×256的数据经过反卷积后,输出尺寸为16×16×256的数据至Conv_1。

(3)卷积层1(Conv_1):卷积核尺寸为5×5、数量为64,经过卷积后输出尺寸为16×16×64,再使用BN层和ReLU激活后输入至Conv_2。

(4)卷积层2(Conv_2):卷积核尺寸为3×3、数量为128,经卷积输出尺寸为16×16×128,使用BN层和ReLU激活后输入至Conv_3。

(5)卷积层3(Conv_3):卷积核尺寸为1×1、数量为256,经卷积输出尺寸为16×16×256,使用BN层和ReLU激活后输入至Conv_4。

(6)卷积层4(Conv_4):卷积核尺寸为1×1、数量为128,经卷积输出尺寸为16×16×128,使用BN层和ReLU激活后输入至Conv_5。

(7)卷积层5(Conv_5):卷积核尺寸为1×1、数量为64,经卷积输出尺寸为16×16×64,使用BN层和ReLU激活后与Conv_1层的输出相加,然后输入至Deconv_2。

(8)反卷积层2(Deconv_2):将尺寸为16×16×64的数据反卷积后输出尺寸为32×32×64的数据至Conv_6。

(9)卷积层6(Conv_6):卷积核尺寸为5×5、数量为128,将尺寸为32×32×64的数据经过卷积后输出尺寸为32×32×128,再使用BN层和ReLU激活后输入至Conv_7。

(10)卷积层7(Conv_7):卷积核尺寸为3×3、数量为256,将尺寸为32×32×128的数据经过卷积后输出尺寸为32×32×256,再使用BN层和ReLU激活后输入至Conv_8。

(11)卷积层8(Conv_8):卷积核尺寸为1×1、数量为512,将尺寸为32×32×256的数据经过卷积后输出尺寸为32×32×512,再使用BN层和ReLU激活后输入至Conv_9。

(12)卷积层9(Conv_9):卷积核尺寸为3×3、数量为256,将尺寸为32×32×512的数据经过卷积后输出尺寸为32×32×256,再使用BN层和ReLU激活后输入至Conv_10。

(13)卷积层10(Conv_10):卷积核尺寸为3×3、数量为128,将尺寸为32×32×256的数据经过卷积后输出尺寸为32×32×128,再使用BN层和ReLU激活后与Conv_6层的输出相加,然后输入至Deconv_3。

(14)反卷积层3(Deconv_3):将尺寸为32×32×128的数据经过反卷积处理后,输出尺寸为64×64×128的数据至Conv_11。

(15)卷积层11(Conv_11):卷积核尺寸为5×5,卷积核数量为256,将尺寸为64×64×128的数据卷积后输出尺寸为64×64×256,再经过BN层和ReLU激活后输入至Deconv_4。

(16)反卷积层4(Deconv_4):将尺寸为64×64×256的数据反卷积后输出尺寸为128×128×256的数据至Conv_12。

(17)卷积层12(Conv_12):卷积核尺寸为5×5,卷积核数量为64,将尺寸为128×128×256的数据卷积后输出尺寸为128×128×64,再经过BN层和ReLU激活后输入至Deconv_5。

(18)反卷积层5(Deconv_5):将尺寸为128×128×64的数据经过反卷积后,输出尺寸为256×256×64的数据至Conv_13。

(19)卷积层13(Conv_13):卷积核尺寸为5×5,卷积核数量为3,将尺寸为256×256×64的数据卷积后输出尺寸为256×256×3,最后经tanh激活后输出。

2.2.2EGG-GAN判别网络

禽蛋图像数据判别网络的作用是对生成的虚拟图像进行真假判别,利用判别的结果对生成网络和判别网络进行参数更新。判别网络是由6个卷积层和1个全连接层(Fully connected layer,FC)构成的卷积神经网络,网络结构如图8所示。与生成网络类似,在卷积层后使用BN层,但激活函数使用LeakyReLU和Sigmoid函数。此外还引入了dropout层,以防止判别网络出现过拟合现象。

判别网络共7层,具体实现步骤如下:

(1)卷积层1(Conv_1):卷积核尺寸为5×5、卷积核数量为64、卷积步长为2,尺寸为256×256×3的图像经过卷积后输出尺寸为128×128×64,卷积后使用LeakyReLU激活,并加入dropout层输出至卷积层2。

(2)卷积层2(Conv_2):卷积核尺寸为5×5、卷积核数量为128、卷积步长为2,经过卷积后输出尺寸为65×65×128,卷积后进行批量归一化,再使用LeakyReLU和dropout输出至卷积层3。

(3)卷积层3(Conv_3):卷积核尺寸为5×5、卷积核数量为256、卷积步长为2,经过卷积和零填充(Zero_padding,ZP)后输出尺寸为33×33×256,然后进行批量归一化,再使用LeakyReLU和dropout输出至卷积层4。

(4)卷积层4(Conv_4):卷积核尺寸为5×5、卷积核数量为512、卷积步长为1,经过卷积后输出尺寸为33×33×512,卷积后进行批量归一化,再使用LeakyReLU和dropout输出至卷积层5。

(5)卷积层5(Conv_5):卷积核尺寸为3×3、卷积核数量为256、卷积步长为1,经过卷积后输出尺寸为33×33×256,卷积后进行批量归一化,再使用LeakyReLU和dropout输出至全连接层。

(6)卷积层6(Conv_6):卷积核尺寸为3×3、卷积核数量为256、卷积步长为2,经过卷积后输出尺寸为16×16×256,卷积后进行批量归一化,再经过LeakyReLU和dropout输出至全连接层。

(7)全连接层(FC):输入尺寸为16×16×256,经过Sigmoid函数后输出为0或1表示判定结果为假或真。

3 实验结果与分析

硬件平台为AMD锐龙 Threadripper 2920X型CPU、NIVIDIA GeForce RTX 2080Ti型GPU、128 GB内存。软件平台为OpenCV 4.2.0+Keras 2.3.1+Python 3.7。

3.1 数据预处理

采集得到了光源透射和反射情况下的两类禽蛋图像各300幅,利用EGG-GAN网络训练之前,需要对图像数据进行旋转、平移、拉伸、对比度变换预处理操作。旋转、平移和拉伸操作可以增加训练样本的数量,对比度变换使禽蛋图像的颜色信息更加真实。预处理后的禽蛋透射图像和禽蛋反射图像如图9所示,数据增强后两类禽蛋图像各900幅。

3.2 网络训练

DCGAN网络的训练方式为先固定生成器G,利用式(1)的目标函数和Adam 优化器对判别器D的权重和偏置进行优化;优化5次后,再固定判别器D,对生成器G的参数进行优化,优化次数也为5,如此反复交替进行,其中生成器G和判别器D的损失函数均为交叉熵函数。EGG-GAN网络的训练方式和优化器与DCGAN网络相同,不同的是EGG-GAN网络使用加梯度惩罚的Wasserstein距离优化的损失函数,判别器D和生成器G的损失函数分别如式(3)、(4)。DCGAN和EGG-GAN网络的生成器和判别器的初始学习率均设置为0.000 2,迭代次数设置为4 000次,每个迭代训练57次,每次训练的图像数量(Batchsize)为16,每500个迭代保存一次模型参数。EGG-GAN网络的训练流程图如图10所示,DCGAN网络与之类似。

蛋形指数是衡量禽蛋外形特征的重要指标之一,通过比较生成图像的蛋形指数均值和真实图像蛋形指数均值来衡量生成的禽蛋图像质量。EGG-GAN网络训练过程中生成的禽蛋图像的蛋形指数变化曲线如图11所示。DCGAN网络训练过程中生成的禽蛋图像的蛋形指数变化曲线如图12所示。从图中可以发现,在生成禽蛋反射图像方面,EGG-GAN网络迭代至2 000次时,生成的禽蛋反射图像接近真实禽蛋图像的蛋形指数均值,说明网络已经收敛,而DCGAN迭代至3 000次时,网络才收敛。在生成禽蛋透射图像方面,EGG-GAN网络迭代至2 500次时网络开始收敛,而DCGAN迭代至3 500次后网络才收敛。

3.3 结果分析

本文将禽蛋透射图像和禽蛋反射图像分别用DCGAN和EGG-GAN网络进行训练,训练参数设置相同。利用训练好的模型进行禽蛋图像数据生成,分别生成禽蛋透射图像数据和反射图像数据,验证网络性能。DCGAN和EGG-GAN做模型验证时,每迭代500次生成一批禽蛋图像数据。DCGAN不同训练次数生成的禽蛋透射图像、反射图像如图13、14所示,EGG-GAN不同训练次数生成的禽蛋透射图像、反射图像如图15、16所示。

通过图13、14可以看出, DCGAN网络在禽蛋透射图像生成过程中,模型迭代3 500次后能够生成较为真实的禽蛋图像;在禽蛋反射图像生成过程中,迭代3 000次后生成的禽蛋反射图像已经十分接近真实图像。由图15、16可以发现,在使用EGG-GAN网络实现禽蛋反射图像生成过程中,网络迭代2 000次后,生成了较高质量的禽蛋图像;在生成禽蛋透射图像过程中,网络迭代2 500次后,生成的图像已较为接近真实图像。不难发现,EGG-GAN网络在禽蛋反射图像和透射图像生成训练过程中的收敛速度均大于DCGAN网络,说明引入残差结构和加梯度惩罚的Wasserstein距离优化的损失函数能够有效解决DCGAN网络训练难以收敛的问题。

4 结论

(1)根据禽蛋图像的特点,以鸭蛋为研究对象,在DCGAN网络中引入残差结构,并将损失函数用加梯度惩罚的Wasserstein距离进行改进,在禽蛋图像生成过程中能够加快网络的收敛速度,迭代2 500次后能够生成高质量的禽蛋透射图像,迭代2 000次后能够生成较为真实的禽蛋反射图像,均比DCGAN网络提前1 000次迭代收敛。

(2)EGG-GAN网络在生成禽蛋透射图像和反射图像过程中均表现出收敛速度更快性能,说明该网络在禽蛋图像生成研究中具有较好的普适性。

猜你喜欢
禽蛋卷积尺寸
CIIE Shows Positive Energy of Chinese Economy
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
禽蛋生产消费缓慢增长,进出口基本稳定
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
D90:全尺寸硬派SUV
禽蛋 生产消费市场供需基本平衡
禽蛋:产量增速放缓消费稳步增长
佳石选赏