樊东燕
(山西工程科技职业大学,山西 晋中 100048)
农作物生长过程中的各种叶片病害会显著降低农产品的数量和质量,人工诊断和识别方法费时低效。为了提高农业生产效率,及时发现和早期预防农作物病害对提高产量至关重要。由于田间的复杂性,从农作物图像中识别和诊断病害是一项高度复杂的任务。图像处理和机器视觉能够适应复杂多变的自然场景,为作物病害的识别和诊断奠定基础。利用计算机视觉和图像处理策略设计的植物叶片病害智能检测系统,可以快速、低成本和精确地对农作物病害进行诊断和识别,有助于建立病害预测机制,及时进行防控,具有重大的实用意义。
为了提升植物叶片病害智能检测系统的效能,准确识别农作物病害的类型,需要选择合适的数字图像处理算法。目前深度卷积神经网络(Convolutional Neural Network,CNN)在计算机视觉领域有诸多应用,文章通过采用CNN模型,设计图像处理算法并进行仿真试验,从农作物的叶子中识别和诊断疾病,实现高效、准确的疾病识别和诊断。
植物叶片病害智能检测系统的工作机制为:首先,创建植物叶片图像数据集,应用该数据集训练设计图像处理模型;然后,这个模型被保存并用于测试相机拍摄的图像;最后,被检测的植物叶片的图像由手机拍摄成图片文件通过网络传输到系统,进行相关图像处理,并把检测结果返回到手机端。
农作物生长容易受到多种因素的影响,包括环境、气候和土壤。这些因素使作物叶片图像的背景变得复杂。而在复杂背景下采集的叶片图像可能比较模糊,叶片经常相互重叠导致部分病叶被遮挡,或者由于不同角度、不同地方的光线条件不一样,导致叶片图片变形。为了准确识别作物病害,需要选择合适的图像分割、特征提取和特征优化方法。
系统的核心功能是数字图像处理,本文设计系统的功能模块结构见图1,其中核心的图像处理部分如下。
图1 系统核心处理功能模块及结构Fig.1 System core processing function module and structure
(1)图像分割:对于背景复杂的农作物病害图像而言,直接识别的效果并不好。为此,文章提出了一种先分割后识别的植物病害图像识别方式。采用K均值聚类算法(K-means)将图像的每个像素点的灰度或者RGB作为特征向量,分割后的图像只包含叶片图像中受感染的区域。从而改善识别效果,提高识别准确率。
(2)特征提取:特征提取是将大量不需要的数据重新定义为一组降维特征的技术,有助于将图像中观测的部分表示成一个紧凑的特征向量。对提高图像匹配和检索的速度有很大的帮助。因此该模块的功能是从测试样本图像中提取所需的特征,用于检测植物叶片病害的区域。使用的特征提取方法为:HOG(Histogram of Oriented Gradient)特征提取、局部纹理特征提取GLCM(Gray Level Co-occurrence Matrix)灰度共生矩阵。
(3)分类:系统图像处理阶段的最后一个阶段是对经过特征提取后的块图像进行分类。首先对数据集进行训练,并根据训练好的模型对目标图像进行测试。利用CNN模型进行图像分类,CNN方法的层架构可以深度提取植物叶片图像特征,算法的识别准确率高,易于实现。算法设计和数据训练是系统设计的重点和难点。
文章重点研究了CNN图像分类与识别算法,其算法流程设计见图2。
图2 CNN图像分类与识别算法流程Fig.2 CNN image classification and recognition algorithm flow
CNN的结构见图3,可以分为3层:卷积层、池化层、全连接层。通过卷积运算提取图像特征,利用池化层减少数据处理量,保留有用的特征,全连接层则负责通过权值矩阵将之前被忽略的局部特征重构为完整图像来做分类判断。
图3 CNN结构Fig.3 Structureof CNN
输入图片后,重复进行卷积、池化操作,得到深度为5的特征图,最后将这5个特征图(5个矩阵)按行展开连接成向量,传入全连接层。全连接层就是一个BP神经网络.图中的每个特征图都可以看成是排列成矩阵形式的神经元,与BP神经网络中的神经元大同小异。
卷积是卷积神经网络的核心,用一个K×K大小的卷积核(Filter),对大小为I×I的图像(Input)进行卷积操作时,假设每次卷积操作的步长(Stride)为S,如果卷积操作超出了图像边界,填充(Padding)像素数为P。那么经过此类卷积后输出(Output)的特征图大小计算公式见式(1):
卷积计算:第l层第j个featuremap的计算公式见式(2):
残差计算:第l层第j个feature map的残差计算公式见式(3):
仿真试验的运行环境为Windows 11(64位),使用Matlab 2020神经网络工具箱Neural Net Fitting app进行编程和数据数据训练,采用ImageNet图像大数据集和PlantVillage植物病害公共数据集作为试验图像样本资源。仿真试验以马铃薯(potato)植株叶片图片(3000幅图像)为例,马铃薯叶片常见病有早疫病(early blight)和晚疫病(lateblight)。
文章设计的CNN的结构类似于经典的AlexNet模型,AlexNet是一个非常典型的CNN模型,由5个卷积层、3个收敛层和3个全连接层组成。AlexNet吸收了LeNet-5网络的思想和原理,并进行了很多创新。其中包括使用ReLU函数代替sigmoid函数来解决梯度色散问题。在全连接层使用Dropout,以避免过拟合。
试验中,对于CNN架构的训练模型,使用kaggle网站的PlantVillage数据集训练参数,应用于马铃薯叶片的早疫病和晚疫病的自动检测。通过不断调整权值和阈值来训练CNN网络,获得最小性能函数;精度由CNN网络输出与实际输出之间的方差和均方误差(MSE)来衡量。提取数据的几个有效特征值并输入到神经网络中,将输出分为2类:早疫病和晚疫病。
仿真试验的结果见表1,与传统的SVM比较(在保证识别率>80%的前提下),不难发现文章的算法对于马铃薯叶片病害的识别结果具有教高的准确率和教小的平均时间,是一种理想的叶片病害识别工具。
表1 CNN算法与SVM算法的比较Tab.1 Comparison between CNN algorithm and SVM algorithm
文章提出了一种高效的农作物叶片病害识别方法,利用K-means算法分割叶片病害区域,利用CNN算法提取其颜色、形状、纹理特征并进行分类。基于Plant Village数据集的3 000幅图像进行仿真测试,通过与基于SVM的马铃薯叶片病害识别方法的对比试验,表明文章研究的方法性能较好,更适用于建立一套先进、高效的农作物叶片病害检测系统,助力精准农业增产增收。