梅 莹 尹艺璐 石称华 刘哲辉 常丽英
(1.上海交通大学农业与生物学院,上海 闵行200240;2.广西壮族自治区柳州市柳城县委办公室,广西柳州545000;3.山东省淄博市数字农业农村发展中心,山东 淄博255000;4.上海劲牛信息技术有限公司,上海 普陀200333)
霜霉病严重影响我国结球白菜、菠菜、莴笋等叶菜的生产。霜霉病危害严重时发病率近90%,蔬菜减产可达60%[1]。目前,目视观察是检测田间蔬菜霜霉病发生的主要方法,极易错过防治的最佳时期。基于图像识别的叶表深度学习比人工诊断更易实现病害的实时监测,将其应用于病害预测的无人报警系统,可降低劳动成本、实现病害的有效防控。
卷积神经网络(Convolutional Neural Networks,CNN)是对复杂过程进行建模,并在具有大量数据的应用程序中执行模式识别的强大技术之一。CNN是大、小型问题中最流行的图像识别分类网络模型,其图像处理、识别与分类功能强大,为克服有关图像识别技术难题的首选方法[2]。国内外研究表明,CNN已应用于诸多植物的病害识别,如小麦病害检测[3]、玉米不同病害图像的分类识别[4]、棉花病叶识别[5]、烟草病害识别分类[6]、番茄病害的识别分类[7-9]、黄瓜病害的识别分类[10-12]、茶叶病害的识别分类,并通过调整网络参数提高茶叶病害的识别精度[13]、运用AlexNET模型识别茶树不同病害[14]、苹果病害不同发病阶段[15]和不同病害的分类识别[16],运用两种不同CNN体系结构和改进AlexNET模型识别多种植物病害[17-18],以Keras为学习框架进行卷积神经网络的训练提高模型的识别成功率[19]等。
可见,CNN模型的研究多集中应用于大田作物如小麦、玉米、棉花,及茄果类蔬菜作物如番茄、黄瓜等,应用于叶菜类蔬菜作物的研究较少。本研究针对传统方法识别叶菜霜霉病难、识别精度低等问题,将CNN模型分别应用于结球白菜、菠菜、莴笋3种叶菜霜霉病的分类识别,通过构建VGG(visual geometry group,超分辨率测试序列)16网络模型,对叶菜霜霉病进行快速诊断,为实现叶菜霜霉病的实时监测奠定理论基础。
结球白菜、菠菜和莴笋霜霉病叶图像来自电子书籍图谱、农林病虫害防治网、农业病虫草害图文数据库和百度网站,共收集原始图片398张,其中结球白菜霜霉病图像175张、菠菜霜霉病图像110张、莴笋霜霉病图像113张(如图1所示),用于构建卷积神经网络模型并对其进行识别与分类。
图1 叶菜霜霉病的病叶图像
部分图像有文字水印等干扰,通过图像预处理简化图像内容,排除无关信息干扰,提升训练与测试的速度和效果。本研究首先通过图像裁剪方法去除部分无效信息,保留病害的主要特征,然后经过随机旋转、平移等处理方式扩增原图像数量,最终获得3种叶菜霜霉病的图像数据库。
1.2.1 图像裁剪
裁剪去除图像中无关信息,保留带有叶片病斑的区域,以提高图像信息质量。裁剪前后的部分图像对比如图2所示。
图2 叶菜霜霉病病叶裁剪前后图像
1.2.2 图像数据归一化
图像数据归一化处理,有利于降低计算量、提升CNN模型的收敛速度和精度。目前归一化方法种类较多,有特征标准化、min-max标准化、log函数转换、atan函数转换、模糊量化法等,其中最常用的是min-max标准化和特征标准化。
min-max标准化通过对原始图像数据进行线性变换,使其结果值均能缩放在[0,1]范围内,具有保留原始数据关系、消除量纲和数据取值范围的影响等优点。但是如果数据集中存在某个数值过大时,数据归一化后的各个结果值将趋近于0并相差很小。min-max标准化的转换公式为:
式中,max和min分别为样本数据的最大值和最小值,x和x*分别为数据归一化前后的值。
特征标准化又称z-score标准化,是目前使用最多的样本数据归一化方法,经以上公式处理过的数据均值为0,方差为0,标准差为1。这种方法最突出的优点就是计算简单,可以消除量级给分析带来的不便。其公式为:
式中μ为总体数据均值,σ为总体数据的标准差,x和x*分别为归一化前后的值。
特征标准化计算简单,建立的CNN模型效果较好,故本研究使用该方法进行图像归一化处理。
1.2.3 图像数据扩增
如样本数量少,CNN训练过程中易出现过拟合现象。为避免过拟合现象的发生,可通过随机旋转和平移的方式扩增原始图像数量,以提高CNN模型的泛化性。(1)图像平移。在原始图像平面上沿水平或竖直方向平移,改变叶菜霜霉病病斑的位置。结球白菜霜霉病病叶图像向左平移10个像素点的效果如图3所示。(2)图像旋转。以随机的角度旋转原始图像,改变叶菜霜霉病病斑的朝向。菠菜霜霉病病叶图像逆时针旋转90°的效果如图4所示。
图3 结球白菜霜霉病病叶图像向左平移10个像素点示意图
图4 菠菜霜霉病病叶图像逆时针旋转示意图
将所有原始图像进行编号分类并制作标签(标签1为结球白菜,标签2为菠菜,标签3为莴笋),随后将原图像分辨率调整为50×50。398张原图像经过随机旋转4次、随机平移3次(每次平移10个像素点)的操作后,原图像数量扩增7倍,扩增后的总图像数量为3 184张,其中结球白菜霜霉病病叶图像1 400张、菠菜霜霉病病叶图像880张、莴笋霜霉病病叶图像904张。然后按3∶1的比例将扩增后的图像分为训练集和测试集,即训练集2 388张、测试集796张。最后将所有的图像以jpg格式导入计算机,即完成3种叶菜霜霉病图像数据库的构建。此数据库的所有图像都将作为卷积神经网络的输入数据集,训练集和测试集中的图像均由计算机随机抽取。
1.4.1 卷积神经网络基本结构
卷积神经网络(CNN)是指一类至少在一层用卷积运算代替一般的矩阵乘法运算,且具有深度结构的前馈神经网络。CNN包含输入层、卷积层、池化层、全连接层和输出层等基本结构,卷积层与池化层一般交互出现[19]。CNN架构可以扩展并适应复杂性,以匹配任何给定任务和数据可用性所需的表达能力。
1.4.2 VGG16
VGGNET是一种基于AlexNET的堆叠体系结构,可应用于图像识别分类的网络模型。VGG16是VGGNET的变体,是一个16层网络,包含13个卷积层和3个全连接层。VGG16网络构架及参数可参考《卷积神经网络原理与视觉实践》[20],VGG16模型结构可参考《Convolutional neural networks》[21]。
1.4.3 CNN模型构建硬件环境
处理器为是Intel Core i7,内存32G;软件环境是Python 3.7编程语言和基于Python编写的keras 2.1.2高级神经网络API,选择Tensorflow1.6作为运行后端。
结合3种叶菜霜霉病病害的特点,对卷积神经网络中的VGG16模型进行修改,构建可识别3种叶菜霜霉病的CNN网络识别模型,并将修改后的模型命名为VGG16-1。VGG16-1模型与VGG16一样由卷积层、池化层和全连接层等卷积神经网络的基本结构构成。VGG16-1模型将传统的VGG16模型中的13个卷积层改为2个卷积层、5层池化层改为1层、3层全连接层数变为2层,并在其中加入2个Dropout层,以避免模型过拟合现象的发生。除此之外,VGG16-1模型虽未改变传统VGG16模型使用的Softmax分类器,但传统的VGG16网络用于识别1 000类物体,而本研究涉及的叶菜霜霉病图像识别分类仅有3类图像,所以将Softmax的输出分类标签类编由1 000类改为3类。传统VGG16模型使用的ReLU激活函数具有加快模型训练速度、防止梯度弥散、增加模型非线性、使网络更快收敛等优点,故VGG16-1模型沿用了ReLU激活函数。VGG16-1模型构建流程如图5所示。
图5 VGG16-1模型构建流程图
VGG16-1模型共有8层,设置输入层1个、卷积层2个、池化层1个、Dropout层2个和全连接层2个。卷积层中,kernel_size=3,padding=′same′;池化层中,pool_size=(2,2),strides=(2,2);激活函数选择ReLU,BATCH_SIZE=32。每层的具体处理过程为:(1)输入尺寸为50×50×3的图像至VGG16-1模型的第1层输入层;(2)第2层是卷积层,此层里的图像会经过32个3×3大小的卷积核,用于提取图像特征,输出的特征图像尺寸为50×50×32;(3)第3层是Dropout层,输出的特征图像进入丢失率为0.2的Dropout层,可减少特征图像的数量,从而减少冗余;(4)第4层是卷积层,使用的卷积核为3×3,用于提取图像特征,此层里输入和输出的特征图像的尺寸均为50×50×32;(5)第5层是池化层,此层采用Max⁃pooling,Pool尺寸是2×2,输入和输出的特征图像分别为50×50×32和25×25×32,最大池化后的特征图像尺寸缩小了1/2;(6)第6层是全连接层,该层里的特征图像与一层网络进行全连接,主要功能是对由一系列卷积层和池化层检测和提取的特征进行分类;(7)第7层是丢失率为0.5的Dropout层,该层减少的特征图像的数量更多,能有效降低模型过拟合现象的发生概率;(8)第8层是全连接层,该层使用Softmax分类器,将卷积层和池化层提取的特征图像进行非线性组合后分类输出。VGG16-1模型各层输入与输出的结果如图6所示。
图6 VGG16-1模型结构
一般卷积神经网络模型中的浅层卷积层主要用于图像低维特征的提取,深层的卷积层则用于提取图像的高维特征。在卷积层中输入图像数据,经过网络中一系列的卷积、池化和激活操作后,不同的特征被检测与学习。随着卷积神经网络模型深度的增加,各层提取的特征越来越抽象,无关信息被剔除,有用的信息得到放大和细化。但CNN模型的深度并非越深拟合效果越好,过深的卷积神经网络反而可能降低精度,同时大大增加计算耗时,出现严重的过拟合。本研究中的VGG16-1模型中两层卷积层输出的特征图像如图7所示。由于两层卷积层卷积核数量均为32个,故每个卷积层输出的特征图数量均为32张。
图7 VGG16-1模型的特征图
不同网络模型适用的CNN模型参数(迭代次数Epoch、BATCH_SIZE、卷积核尺寸等)不同。本研究通过微调VGG16-1模型中的部分参数,以模型的测试集识别准确率和模型训练用时作为评估指标,探究不同参数对VGG16-1模型识别分类效果的影响。
2.2.1 迭代次数(Epoch)
迭代次数Epoch是一个超参数,用于定义训练卷积神经网络模型时通过完整训练集的一次传递。不同CNN模型所适用的迭代次数不同。本研究将模型的迭代次数分别设置为30、50和70,固定模型中的BATCH_SIZE=32,卷积核尺寸为3×3。此时VGG16-1模型的训练集损失函数变化曲线如图8所示。
图8 不同迭代次数下VGG16-1模型的损失函数变化曲线
由图8可以看出,初始VGG16-1模型的均损失率较高,70迭代次数的模型损失函数下降速度最快,且模型损失率最低点低于30和50迭代次数的模型。
不同迭代次数训练用时和测试集识别准确率差异见表1。
表1 不同迭代次数训练用时和测试集识别准确率
由表1可知,随着迭代次数的增加,模型训练用时也随之增加,识别准确率也相应提升。模型迭代30次,训练用时为10 min,但模型测试集识别准确率较低(77.00%),未达到预期效果;模型迭代50次和70次的测试集识别准确率差异不大,但70次迭代的训练用时较50次增加了5 min。综上所述,在保证较高识别准确率的情况下,迭代50次处理训练用时最短。因此,迭代次数为50时,VGG16-1模型结果最优。
2.2.2 BATCH_SIZE
在CNN模型中,训练集是分批次输入模型中进行训练的,每批次输入模型中的图像数量即BATCH_SIZE(批次数),也就是说BATCH_SIZE是训练数据集的子集。不同CNN模型所适用的BATCH_SIZE不同。本研究将模型的BATCH_SIZE分别设置为32、64、128和256,模型中迭代次数为50,卷积核尺寸为3×3。此时VGG16-1模型的训练集损失函数变化曲线如图9所示。
图9 不同BATCH_SIZE下VGG16-1模型的损失函数变化曲线
由图9可知,初始VGG16-1模型的损失率相对较高,随着BATCH_SIZE值的增大,模型的损失函数下降速度减缓;当BATCH_SIZE=32时模型损失函数下降速度最快,波动最少,且模型损失率最低点明显低于BATCH_SIZE值为128和256时的模型。
不同BATCH_SIZE训练用时和测试集识别准确率差异见表2。
表2 不同BATCH_SIZE训练用时和测试集识别准确率
由表2可知,随着BATCH_SIZE的增大,训练用时逐渐减少,VGG16-1模型识别准确率也下降;BATCH_SIZE为32时,模型训练用时最长,测试集识别率最高。所以对于VGG16-1模型而言,BATCH_SIZE值越大,训练用时短,泛化能力越弱,模型识别精度越低。由此可见,BATCH_SIZE为32时,模型识别效果较好。
2.2.3 卷积核尺寸
不同CNN模型所适用的卷积核尺寸不同,由于卷积核尺寸大于1×1时才能提升感受野,且卷积核尺寸为奇数时便于后续的池化操作。所以本研究将模型的卷积核尺寸分别设置为3×3、5×5、7×7和9×9,模型中BATCH_SIZE=32,迭代次数为50次。此时VGG16-1模型的训练集损失函数变化曲线如图10所示。
图10 不同卷积核尺寸下VGG16-1模型的损失函数变化曲线
由图10可知,初始VGG16-1模型的损失函数相对较大,随着卷积核尺寸的增大,模型的损失函数下降的速度减缓;卷积核尺寸为3×3时模型损失函数下降速度最快,波动最小。
不同卷积核尺寸训练用时和测试集识别准确率差异见表3。
表3 不同卷积核尺寸训练用时和测试集识别准确率
由表3可知,尺寸为3×3的卷积核识别准确率较高(95.67%),训练用时为20 min;随着卷积核尺寸的增大,模型识别准确率下降,训练用时先减少后不变。可见,对于VGG16-1模型而言,3×3的卷积核最适用。尺寸较小的卷积核对叶菜霜霉病局部病害的细小特征提取能力更强,当叶面上存在较多的霜霉病病斑时,较小尺寸的卷积核可提高模型识别的准确率。
本研究基于传统VGG16网络,构建了识别结球白菜、菠菜、莴笋霜霉病的卷积神经网络VGG16-1模型。从模型的构建方法来看,VGG16-1模型相较于传统的机器学习,省去了手动提取和筛选特征参数的步骤,模型构建更便捷,同时避免了因提取手段不同而导致的特征参数标准不同的问题[22]。VGG16-1模型直接输入整张图像,图像信息损失量少,神经网络能用于计算分析的信息更多,预测精度有更大的提升空间。
已有研究表明,通过改进卷积神经网络结构可提高作物病害识别的精确率。张善文[23]基于改进深度卷积神经网络识别苹果病害,能克服模型过拟合问题,提高病害识别率;张建华[5]通过改进VGG16网络模型,实现了棉花不同病害的分类识别,识别率达到89.51%;邱靖等[19]以keras为学习框架,通过设置不同的卷积核尺寸和池化函数,实现了水稻3种常见病害的分类识别;鲍文霞[24]基于VGG16网络模型,使用预训练模型初始化瓶颈层参数,采用SK卷积块及全局平均池化,提高了识别微小病斑的能力,提升了苹果叶部病害识别的准确率。本研究通过改进传统VGG16网络模型构建的VGG16-1模型可以有效识别3种叶菜霜霉病。
另外,本研究在借鉴丁瑞[25]的图像搜集方法的基础上,加入了电子书籍图谱收集原图像。与网络检索图像相比,该方法获取到的图像无关信息少,图像质量更高、数量更多。但本研究所获得的样本数据量依旧较小,后期的研究应增加霜霉病病菌侵染植株试验,以尽量获取更多的样本数据。
本研究通过图像搜集、图像预处理和图像扩增,构建了白菜、菠菜、莴笋霜霉病图像数据库,并将数据库运用于构建的VGG16-1模型中。通过微调模型中的部分参数,探究了迭代次数、BATCH_SIZE和卷积核尺寸3种模型参数对VGG16-1模型分类识别效果的影响。试验结果表明,迭代次数为50次、BATCH_SIZE为32、卷积核尺寸为3×3时,VGG16-1模型效果较好,训练用时为20 min,模型识别的准确率为95.67%。