旦真旺姆,全淼儿*,钱婷婷,石称华,刘哲辉,常丽英**
(1 上海交通大学农业与生物学院,上海 200240;2 上海市农业科学院,上海 201403;3 上海劲牛信息技术有限公司,上海 200333)
黄瓜白粉病是一种发生较为普遍的瓜类蔬菜病害,发生时间为苗期到结瓜期,当发生在黄瓜生长的中后期及植株生长衰弱时,易产生流行性危害。 露地栽培的黄瓜较多在夏季发生白粉病,而温室栽培的黄瓜在四季均能可发生。 发生白粉病时,黄瓜一般减产10%左右,而在流行年份则可减产20%—40%。在高温干旱年份,黄瓜白粉病极易大面积发生。 在病害发生极严重时,植株中下部叶片大量枯死。 在温室大棚中,一旦发生白粉病,则发展迅速,严重时可造成叶片干枯甚至提早拉秧。 因此,加强瓜类作物白粉病的监测及防治工作对瓜类蔬菜种植至关重要[1]。
卷积神经网络(Convolutional neural networks,CNN)是对复杂过程进行建模并在含有大量数据的应用程序中执行模式识别的强大算法之一。 CNN 是最流行的图像识别分类网络模型,适用于大、小型问题,在图像处理、识别与分类方面有出色的能力,故其迅速成为了克服各种图像识别技术难题的首选方法[2]。利用卷积神经网络智能识别农作物病害已经成为农业研究的热点,如李凯雨[3]使用3 种CNN 模型对小麦、花生、烟草3 种作物的多种病害进行分类识别,探究了不同模型、算法和不同迭代次数对病害识别的效果;龙满生等[4]利用深度CNN 模型对大规模数据集进行训练并采用微调方法进行油茶病害图像识别;张建华等[5]改进了VGG16 模型,改进后的VGG16 模型可以识别棉花患病叶和正常叶,其分类效果优于AlexNet、GoogLeNet 等模型;孙云云等[6]用AlexNet 模型对茶树的不同病害进行分类识别;Liu 等[7]构建不同深度CNN 架构和新的CNN 网络用于苹果病害不同发病阶段和不同病害的分类识别;Ma 等[8]基于CNN系统改进VGG16 模型,对不同黄瓜病害进行分类识别;Mohanty 等[9]运用两种CNN 体系结构和改进的AlexNet 模型对多种植物病害进行识别。
以上研究大多通过对传统卷积神经网络进行改进,以实现对农作物病害较为准确的识别,但对于黄瓜白粉病识别算法的研究相对较少。 本试验以黄瓜白粉病为研究对象,通过分析4 种卷积神经网络模型的性能,以期选择出能够准确识别黄瓜白粉病的最佳模型,为黄瓜白粉病快速识别、实时监测和预防提供依据。
挑选温室中患有不同程度白粉病的黄瓜,人工对其叶片逐一拍照,获取黄瓜白粉病叶片图像,并采用4 种CNN 模型对4 个病害级别的图像进行识别与分类。
黄瓜白粉病叶片按病斑占叶面积的百分率进行为害程度的分级[10]。 1 级:病斑面积占整叶面积小于等于10%;2 级:病斑面积占整叶面积大于10%小于等于25%;3 级:病斑面积占整叶面积大于25%小于等于50%;4 级:病斑面积占整叶面积50%以上(叶片变为黄色,叶表大部分布满白粉)。
按不同发病级别进行图像获取,经过筛选,最终获得1 级病害图像2 474 张,2 级病害图像3 468 张,3级病害图像3 069 张,4 级病害图像2 616 张,共11 627 张原始图像(图1)。
图1 不同为害程度级别的黄瓜白粉病叶片Fig.1 Cucumber powdery mildew leaves of different damage levels
自然条件下拍摄的黄瓜叶片白粉病病害图像容易受光照、背景、角度等多个因素的影响,导致图像质量不佳,干扰卷积神经网络训练与测试的信息,为了研究结果的准确性,需要进行图像的预处理。 图像预处理过程见图2。
图2 图像预处理过程Fig.2 Image preprocessing process
将预处理好的图像数据按照9∶1的比例分为训练集和测试集,即训练集10 441 张,测试集1 159 张;然后将所有jpg 格式的图像导入计算机即完成了病害图像数据库的构建。 此数据库中的所有图像都将作为卷积神经网络输入数据集,训练集和测试集中的图像均由计算机随机抽取。
1.4.1 卷积神经网络
卷积神经网络(CNN)是一种常见的深度学习模型,其通过多层网络互联并相互传递数据信息,其中每一层都具有独特的特征来处理输入数据并将数据再发送到下一层。 CNN 从输入待处理图像到输出分类识别结果的过程包括用于获取数据并进行预处理的输入层、提取图像高级特征的卷积层、降采样的池化层、提高模型非线性的ReLu 激活层、整合卷积层提取的高级图像特征的全连接层以及在模型最后部分输出各类别预测概率的Softmax 层。 CNN 的基本架构可参考文献[11]。 当前比较成功的CNN 模型有AlexNet、GoogLeNet 和VGG16 等模型,都能够对广义物体进行精确识别。
1.4.2 AlexNet 模型
AlexNet 模型由Alex Krizhevsky 提出,使用ReLu 处理非线性的部分,是第一批采用比传统方法更大的步幅来提升ImageNet 分类准确率的深层网络之一,在图像分类领域上获得了很好的成果。 卷积网路是由5 个卷积层、3 个全连接层共同组成。 AlexNet 网络模型结构如图3 所示,模型参数和网络结构具体设计可参考文献[12]。
图3 AlexNet 模型结构Fig.3 AlexNet model structure
1.4.3 VGG16 模型
VGGNet 基于AlexNet 模型,为堆叠体系结构,是一种可以应用于图像识别分类的网络模型。 VGG16模型是VGGNet 的一个变体,有16 层网络,包含13 个卷积层和3 个全连接层。 VGG16 模型结构如图4 所示,模型参数和网络结构具体设计可参考文献[13-14]。
图4 VGG16 模型结构Fig.4 VGG16 model structure
1.4.4 GoogLeNet 模型
GoogLeNet 模型设计了一个inception 模块,该模块的一个重要特点是拥有一个所谓的瓶颈层,它可以大幅减少计算开销。 另一个改变是,使用一个简单的全局平均池化层(Global average pooling,对2D 特征图的通道值取平均)取代位于网络末端的全连接层(在卷积层之后),大大减少了参数的总数。 GoogLeNet inception 模块结构如图5 所示,模型参数和网络具体设计可参考文献[15]。
图5 GoogLeNet inception 模块Fig.5 GoogLeNet inception module
1.4.5 ResNet50 模型
该模型的架构和VGGNet 模型类似,分为5 个stage(阶段),其中Stage 0 可视为对INPUT 的预处理,结构比较简单;后4 个Stage 均由Bottleneck 组成,有相似结构。 Stage 1—4 分别包含3 个、4 个、3 个和6个Bottleneck。
本试验训练系统采用pytorch 学习框架和Ubuntu 16.04.7 64 位操作系统,CPU 为Intel i7-6850K-3.60 GHz,内存为64 G,优化器使用SGD,试验采用的4 个模型的主要训练参数如表1 所示。
表1 4 个模型的训练参数Table 1 Training parameters for the 4 models
学习率每过10 个epoch 下调到前值的10%,调3 次不再变化,迭代次数为100 次。
在每个卷积层,数据都是以三维形式存在的,可以把数据看成许多个二维图片叠在一起,其中每一个称为一个特征图。 在输入层,如果是灰度图片,说明仅有一个特征图;如果是彩色图片,则一般为3 个特征图(红绿蓝)。 层与层之间有数个卷积核(Kernel),上一层每个特征图和每个卷积核做卷积,均会产生下一层的一个特征图。
从特征图中可以更直观地看到每层的特征。 图6 给出了黄瓜白粉病特征图,为方便可视化,只列出64 个通道特征图。
图6 黄瓜白粉病害叶片特征图提取结果Fig.6 Extraction results of leaf feature map of cucumber powder disease
卷积神经网络含有多个模型参数,如BATCH_SIZE、迭代次数Epoch、卷积核尺寸等,不同的网络模型适用的模型参数不同[16]。 本研究以模型的测试集识别准确率和模型训练用时作为评估指标,探究黄瓜白粉病识别的最佳卷积神经网络模型。
2.3.1 迭代次数Epoch
迭代次数Epoch 是一个用于定义训练卷积神经网络模型时通过完整训练集的一次传递的超参数。在不同卷积神经网络模型中,适用的迭代次数不同,本研究将模型的迭代次数设置为20 次、40 次、60 次、80 次、100 次,此时固定模型中的BATCH_SIZE 为最优值,观察不同迭代次数训练下测试集识别准确率变化曲线(图7)及各模型的训练集损失函数变化曲线(图8)。
图7 4 种模型的测试集识别准确率变化曲线Fig.7 Test set identification accuracy change curves of the 4 models
从训练次数角度看,在一定范围内,模型的识别准确率随迭代次数增加而提高,而超过一定范围时,网络模型的识别正确率不会再继续提高,甚至有可能出现一定幅度的降低。 因此,为获得更优异的网络模型参数,选择合适的迭代次数至关重要。 从黄瓜白粉病识别模型的训练结果看,迭代次数为20 次左右时,识别准确率变化小;迭代次数为40 次左右时,识别准确率高且波动小,可以获得较好的训练效果。
由图8 可知,在初始阶段4 种模型的损失率均较高。 迭代次数为10 次左右的模型损失函数下降速度最快,但测试集识别的准确率仅为83.30%,未能达到预期效果。 在迭代次数为40 次和60 次时,损失函数波动较小,测试集的识别准确率高,但由于迭代次数与训练时间呈正相关关系,60 次迭代用时比40 次多。 综合来看,在保证较高识别准确率的情况下,迭代次数为40 次时,损失函数波动较小,训练用时最短,即模型的训练结果最优。
图8 4 种模型的训练集损失函数变化曲线Fig.8 Change curve of training set loss function for the 4 models
2.3.2 BATCH_SIZE
在CNN 模型中,训练集就是分批次输入模型中进行训练的数据,每批次输入模型中的图像数量即为BATCH_SIZE(批次数),即BATCH_SIZE 是训练数据集的子集。 不同的BATCH_SIZE 适用于不同的CNN模型,AlexNet、VGG16、GoogLeNet 和ResNet50 模型的BATCH_SIZE 分别设置为50、128、128、90,此时模型损失函数下降速度最快,波动最少,达到最优值。
本试验选择相同的数据集对4 种模型进行识别准确率和训练时间的对比。 试验数据集选取拍摄的黄瓜白粉病各个时期共11 627 张原始图片,且均随机选取每类图像的90%作为训练集,10%作为测试集来进行试验。 设置4 种模型的迭代次数为100 次,此时各自最优值为固定模型中的BATCH_SIZE,对比结果如表2 所示。
表2 4 种模型的识别准确率和训练时间Table 2 Recognition accuracy and training time of the 4 models
由表2 可知,不同CNN 模型的识别准确率、训练时间存在较大差异。
①相比于AlexNet 和GoogLeNet 模型,从识别准确率来看,ResNet50 模型在相同数据集上的识别准确率最高,比AlexNet 模型识别准确率高出33.84%,比GoogLeNet 模型识别准确率高出6.79%。
②相比于VGG16 模型,虽然ResNet50 模型和VGG16 模型在识别准确率上没有明显差异,但ResNet50 模型仅需24 min,而VGG16 模型需要72 min 来达到同样的准确率,说明Resnet50 模型不仅识别准确率高,而且速度快、效率高。
基于图像识别的卷积神经网络比人工诊断更容易实现病害的实时监测,且随着深度学习和图像技术的不断发展,使得卷积神经网络在目标检测和图像识别分类方面取得了很大的进步,改进了传统的图像识别分类方法中存在的提取图像特征能力差等问题。
本研究通过不同模型性能对比,探究迭代次数、BATCH_SIZE 参数对4 种模型分类识别效果的影响。结果表明:VGG16 模型的识别准确率较高为89.74%,但训练用时多,与刘宝洋[17]研究结果相似。 通过4种不同CNN 模型性能对比,发现ResNet50 模型的识别准确率最高,对黄瓜白粉病不同级别病害具有更好的识别和分类性能,与龙吟[18]以及杨明欣等[19]研究结果相一致。
本试验通过黄瓜白粉病图像获取、预处理,并将处理好的图像数据库运用于AlexNet、VGG16、GoogLeNet 以及ResNet50 等4 种不同的卷积神经网络构架模型中,探究迭代次数、BATCH_SIZE 参数对4种模型分类识别效果的影响,通过4 种不同CNN 模型性能对比,选择出应用于黄瓜白粉病不同病害级别智能识别算法研究中的最佳识别模型。 试验表明:当迭代次数为40 次,BATCH_SIZE 为90 时,ResNet50模型结果为最优,训练用时为24 min,模型识别准确率为91.30%,对黄瓜白粉病不同级别的病害具有更好的识别和分类性能。