基于深度卷积生成对抗网络的植物图像识别方法的研究
2019-05-17崔梦天
张 澎,崔梦天,谢 琪,姜 玥
(西南民族大学计算机科学与技术学院, 四川 成都 610041)
近年来,越来越多的人工智能技术被应用于农业生产活动中,如通过深度学习方法实现植物病虫害[1]与植物种类[2]的识别.深度学习需要大量的带有标签的数据样本,在此前提下训练模型能够取得更高的识别率或者更好的分类效果,但若数据样本数量较小的话,则会导致模型出现过拟合现象. 为了更好地解决数据样本数量小的问题,专家们提出了生成对抗网络来解决此类问题.
生成对抗网络(Generative adversarial network,GAN) 是Goodfellow 等[3]在2014 年提出的一种生成模型,也是一种无监督学习模型. 相较于传统的生成模型, 其在网络结构上除了生成网络外,还包含一个判别网络.GAN 的主要灵感源于博弈论中零和博弈的思想,即生成网络G(Generator)与判别网络D(Discriminator)之间不断博弈,从而达到生成网络G(Generator)不断学习到数据分布的目的. 目前,GAN 取得了的广泛的研究与应用,在图像与视觉领域已经用于人脸检测[4]、风格迁移[5]以及生产高分辨率图像[6]等,另外GAN 还被应用于语音处理[7]、隐私保护[8]和病毒检测[9]等问题.然而生成对抗网络在植物图像样本的应用却不多,本文使用深度卷积生成对抗网络[10]生成新的植物图像,并使用深度卷积神经网络来验证新生成图像用于植物图像识别的可行性,实验结果表明,该方法生成的植物图像能够有效的提高模型识别结果.
1 生成对抗网络原理
生成对抗网络(GAN)[3]由两个网络构成,生成网络G(Generator)和判别网络D(Discriminator).G 通过随机噪声z 生成图像,记为G(z).D 负责对输入的样本进行判别,判断样本是真实的数据还是生成的数据G(z).而训练过程中,生成网络G 的任务是尽量生成真实的图片以达到欺骗判别网络D 的目的,而判别网络D 则需要尽量将生成网络G 生成的图片与真实图片区分开,二者构成了一个动态的博弈,直至达到纳什均衡[11].GAN 的流程如图1 所示:
图1 GAN 流程图Fig.1 GAN flow chart
与其他生成模型对比来看,例如玻尔兹曼机[12]和GSNs[13]只用到了反向传播,而不需要马尔科夫链[14-15].从实际结果看,GAN 产生的样本更加清晰、真实.
但目前GAN 还一些缺点需要弥补,如离散形式数据的处理,包括文本等.而且由于GAN 模型的训练需要达到纳什均衡,导致GAN 模型的训练是不稳定的.
2 深度卷积生成对抗网络
深度卷积生成对抗网络(DCGAN) 是Dundar等[10]人在2015 年改进的新型GANs.在GAN 的基础上增加了深度卷积神经网络结构,用于生成图像样本.
在DCGAN 中,一张图像经判别器D 处理后,其输出结果表示此图像是真实图像的概率.而判别器D的结构是一个卷积神经网络,判别器D 通过若干层对输入的图像的卷积后,提取卷积特征,并将得到的特征输入Logistic 函数中,输出可看做是概率.
生成器G 的输入是1 个100 维的噪声向量z.生成器G 网络的第一层为全连接层,其任务是将100 维的噪声向量变成4 ×4 × 1024 维的向量,并从第二层开始使用转置卷积做上采样操作,逐步减少通道数,最终的输出为64 ×64 ×3 的图像.生产器G 的网络结构如图2 所示:
图2 DCGAN 中生成器G 的网络结构[16]Fig.2 Network structure of generator G in DCGAN
DCGAN 与传统的GAN 相比有以下特点[17]:
①在判别器D 中,使用带有步长(Stride)的卷积来代替池化层.
②在网络结构中,生成器G 和判别器D 采用了批量归一化[18](Batch Normalization)以此来帮助模型收敛.
③在生成器G 中使用ReLU[19](Rectified linear unit)激活函数.
④在判别器D 中使用Leaky ReLU(Leaky rectify linear unit)激活函数.
3 利用DCGAN 实现植物图像增强
利用深度卷积生成对抗网络进行数据增强需要三个步骤,第一步是收集原始数据样本,第二步是搭建训练环境,第三步是基于原始数据,通过DCGAN 模型进行训练并生成数据.
3.1 数据样本
本文数据来源于奥尔胡斯大学信号处理小组与南丹麦大学合作发布的数据集,数据集中含有数量分布不均匀的12 类植物图像,通过DCGAN 模型实现数据均衡与数据增强操作.
3.2 搭建训练环境
本文中模型的搭建环境如下表1 所示:
表1 环境配置信息Table 1 Environmental configuration information
3.3 模型训练
本组训练学习率设定为0.0002,单次循环随机加载64 张图像.图像原始尺寸为224 × 224 ,在程序运行中,将这些图像中心截取96 × 96 的小块并缩放到48 ×48 像素,然后添加噪声开始训练.循环过程可以描述为,首先生成器G 生成输出,然后经判别器D 进行判别,通过生成器G 和判别器D 的输出来计算生成损失和判别损失. 最终,通过反向传播算法进行优化权重参数,然后开始下一次循环.每20 次循环输出测试图像.
本文选用TensorFlow 作为学习框架,基于Tensor-Flow 学习框架搭建DCGAN 模型. 在model. py 中,进行参数初始化代码及参数说明见表2:
表2 参数说明Table 2 Description of parameters
最后在系统终端输入以下运行命令进行训练:python main.py - -input_height 96 - -input_width 96 - - output_height 48 - - output_width 48 - -dataset 7 - -crop - -train - -epoch 300 - -input_fname_pattern "*.jpg"
参数解释:input_height 96,input_width 96,表示将图像中心截取96 ×96 的小块.output_height 48,output_width 48 表示将截取到的图像缩放到48 × 48 像素.dataset 7 用来指定图像数据,epoch 300 表示进行300个epoch,1 个epoch 为使用训练集中的全部样本训练一次.input_fname_pattern "*. jpg"用来指定图片格式.
4 实验结果分析
4.1 实验结果展示
原始图像和利用DCGAN 生成的图像对比展示如下,其中图3 是原始数据图像,图4 是利用DCGAN 进行10 次循环输出的结果,图5 是300 次循环输出的结果,图6 是7200 次循环输出的结果.
图3 原始图像Fig.3 Original image
图4 20 次循环结果Fig.4 10 cycle results
图5 300 次循环结果Fig.5 300 cycle results
图6 7200 次循环结果Fig.6 7200 cycle results
4.2 生成样本可行性验证
为了验证DCGAN 生成的样本的可行性,本文基于TensorFlow 深度学习框架搭建LeNet -5 卷积神经网络模型用于数据验证.由于原始数据各类别图像数量相差较大,图像数量很少会导致模型无法判别少数类,影响模型识别结果.使用由DCGAN 生成的图像对图像数量较少的类别进行填充,使各类别图像数量大致相同.构建卷积层代码如下:
model.add(Conv2D(filters =20,kernel_size =(5,5),padding ="same",input_shape =inputShape,activation ='relu'))
卷层过滤器大小为5*5,会产生20 个图像,使用全0 填充,设置ReLU 激活函数.
加入Dropout 层避免过拟合,代码如下:
model.add(Dropout(0.5))
设置随机剔除神经元概率为0.5.
构建池化层代码如下:model. add(MaxPooling2D(pool_size =(2,2), strides =(2,2)))
最大池化层过滤器大小为2*2,长和宽的步长均为2,不会改变图像的数量(仍旧是20),会改变大小(32*32 变成16*16).
构建全连接层代码如下:
model.add(Dense(500))
Dense 表示全连接层,并设置500 个神经元.
建立输出层代码如下:
model.add(Dense(classes,activation ='softmax'))
Softmax 分类器可以将输出预测为每一个图像的概率,从而达到多分类的目的.
卷积神经网络模型搭建完成后,分别使用原始数据和经DCGAN 生成的样本填充后的数据进行训练,对比结果. 在迭代1000 次时,使用原始数据进行训练,模型准确率为89.82%,如图7 所示. 使用经DCGAN 生成的样本填充后的数据进行训练,模型准确率为94.02%,如图8 所示.准确率有明显上升.
图7 使用原始数据训练结果Fig.7 Use raw data training results
图8 使用经DCGAN 生成的额样本填充后的数据训练结果Fig.8 Data training results using the amount sample generated by DCGAN
5 总结与展望
本文介绍了生成对抗网络及其衍生模型深度卷积生成对抗网络的原理,然后使用原始样本对深度卷积生成对抗网络进行训练实现了图像的生产,并通过构建卷积神经网络对生产样本的质量进行测试.结果表明,利用深度卷积生成对抗网络能够为目前农业领域图像数据积累不足的现状提供解决方法.未来工作将研究如何优化训练过程并产生更清晰的图像样本.