本发明涉及农业病虫害识别技术领域,尤其涉及一种基于改进全卷积神经网络(fcn)的大田作物病虫害识别方法。
背景技术:
植物病虫害一直是农业生产领域的重大自然灾害之一,及时检测到病虫害的发生可以减少大量的经济损失。传统的病虫害检测主要依靠人工目测进行判断,这种方法耗时耗力且准确率较低。随着计算机视觉技术的发展,许多研究人员利用机器学习的方法对不同植物病虫害的类别进行识别,但算法复杂度较高而且模型的泛化能力较差。近年来深度学习技术在计算机视觉领域得到了许多应用,但现有的基于深度学习的植物病虫害识别方法在复杂背景下识别率较低,而且需要大量的内存空间和较长的模型训练时间。
技术实现要素:
为了克服上述现有技术的缺点,本发明的目的在于提供了一种基于改进全卷积神经网络的大田作物病虫害识别方法,具有较高的识别准确率,而且减少了网络模型的所需内存和训练时间。
为了达到上述目的,本发明采取的技术方案为:
一种基于改进全卷积神经网络的大田作物病虫害识别方法,包括以下步骤:
步骤1:利用在大田间布置的高清摄像机对作物进行每隔30s拍照一次,实时采集大田作物的病虫害图像;将病虫害图像利用图像标注工具进行人工标注得到标注图像,大田作物像素标注为1,背景像素标注为0;
步骤2:对标注图像进行预处理,使标注图像能够裁剪为整数子图像,先对标注图像进行边缘补黑操作,再对补黑后的标注图像进行裁剪得到裁剪图像,将所有裁剪图像划分为训练集和验证集;
步骤3:对训练集和验证集进行数据增广操作,每一张裁剪图像经过亮度调整、颜色抖动、图像反转以及角度变换4种操作得到增广训练集和增广验证集;
步骤4:对所有增广训练集和增广验证集图像求平均,再从所有增广训练集和增广验证集图像的输入中减去对应像素位置的均值,然后对得到的所有图像进一步作置乱处理,形成最后增广训练集和最后增广验证集;
步骤5:建立改进的全卷积神经网络模型:改进的全卷积神经网络是在vgg-16卷积神经网络模型的基础上修改而成,将原有vgg-16网络模型中的全连接层替换为卷积层,将原有的relu激活函数替换为elu激活函数,取消原有的softmax分类器,使用svm分类器作为分类层,在使用分类层完成对输入图像的像素分类后,利用反卷积恢复图像分辨率,得到精细化分类结果;改进的全卷积神经网络基本结构包括8个卷积层conv1~conv8、3个池化层pool1~pool3、1个反卷积层;为了保证网络各层输出的非线性,每个卷积层都要经过一个非线性激活函数elu,全卷积神经网络fcn要学习的参数来自于每个卷积层的卷积核;
步骤6:利用步骤4得到的最后增广训练集图像对步骤5建立的改进的全卷积神经网络模型进行预训练,通过预训练得到模型的初步权重参数和病虫害图像轮廓图;将初步权重参数和病虫害图像轮廓图和步骤4得到的最后训练集图像再次输入改进的全卷积神经网络模型中进行二阶训练得到最终的全卷积神经网络模型;最终的全卷积神经网络模型中的卷积层得到输入图像的特征图,非线性激活函数得到输入图像的非线性特征图;
步骤7:利用步骤4得到的最后增广验证集图像对步骤7得到的最终的全卷积神经网络模型进行评估,评估时采用损失函数衡量全卷积神经网络模型的训练效果;
步骤8:使用全尺寸的作物叶片图像作为输入,在评估过的最终的全卷积神经网络模型输出的特征图上检测病害。
所述的损失函数为:
本发明的有益效果为:
在本发明构造的改进的全卷积神经网络中,利用卷积层代替传统的cnn中的全连接层,去掉传统cnn中的全连接层,使得网络的输入分辨率是任意的,减少了网络的参数。改进后的fcn使用了3个池化层,增加了网络的感受野,有助于降低中间特征图的维度,节约计算资源,有利于学习到更加鲁棒的特征。增加反卷积的过程可以提升模型对大田作物病虫害类型的识别率。改进的全卷积神经网络的流程简单,实现了真正意义上的端对端、像素对像素的训练。在训练好的改进的全卷积神经网络上进行微调,使得在没有任何的预处理和后处理的情况下得到了很好的检测结果,避免了人工检测病害的局限性。
附图说明
图1为本发明实施例的流程图。
图2为本发明实施例的全卷积神经网络模型。
图3为本发明实施例的反卷积过程。
图4为本发明实施例对两种大田作物病虫害所检测到的病斑图像,图(a)、图(b)中左图为原始病虫害叶片图像;右图为检测到的病斑图像。
具体实施方式
下面结合附图和实施例对本发明进行详细描述。
如图1所示,一种基于改进全卷积神经网络的大田作物病虫害识别方法,包括以下步骤:
步骤1:利用在大田间布置的高清摄像机对作物进行每隔30min拍照一次,实时采集大田作物的病虫害图像,共采集50张病虫害图像;将病虫害图像利用图像标注工具进行人工标注得到标注图像,大田作物像素标注为1,背景像素标注为0;
步骤2:对标注图像进行预处理,使标注图像能够裁剪为整数子图像,对标注图像进行边缘补黑操作,对补黑后的标注图像进行裁剪得到裁剪图像,将所有裁剪图像划分为训练集和验证集;
本实施例具体为将1971×1815像素标注图像的边缘对称地补黑,补黑后标注图像为2160×1920像素;将每张标注图像不重叠且无间隔地裁剪成24张360×480像素的裁剪图像,作为fcn的输入图像;将步骤1采集的50张病虫害图像裁剪为1200张裁剪图像,将裁剪后的1200张裁剪图像按照4:1的比例随机划分训练集和验证集;
步骤3:对训练集和验证集进行数据增广操作,每一张裁剪图像经过亮度调整、颜色抖动、图像反转以及角度变换4种操作得到增广训练集和增广验证集图像,具体为:
步骤3.1,亮度调整:对每一张裁剪图像均进行亮度调整,保持图像h分量和s分量不变,v分量增大、减少20%,用于模拟大田环境中的光照变化,提高网络模型的泛化能力;
步骤3.2,颜色抖动:首先提取训练集和验证集图像的r、g和b三个颜色分量,将三个分量像素值相加后取平均;然后使用三个分量值乘以平均值,将相乘后的图像整合为原始rgb图像;
步骤3.3,图像反转:将训练集和验证集图像以图像中心点为基准,进行随机的水平和垂直反转操作;
步骤3.4,角度变换:将训练集和验证集图像在0o~180o范围内进行随机角度变换;
步骤4:对所有增广训练集和增广验证集图像求平均,再从所有增广训练集和增广验证集图像的输入中减去对应像素位置的均值,然后对得到的所有图像进一步作置乱处理,形成最后增广训练集和最后增广验证集;
步骤5:建立改进的全卷积神经网络模型:改进的全卷积神经网络是在vgg-16卷积神经网络模型的基础上修改而成,将原有vgg-16网络模型中的全连接层替换为卷积层,将原有的relu激活函数替换为elu激活函数,取消原有的softmax分类器,使用svm分类器作为分类层,在使用分类层完成对输入图像的像素分类后,利用反卷积恢复图像分辨率,得到精细化分类结果;如图2所示,改进的全卷积神经网络基本结构包括8个卷积层conv1~conv8、3个池化层pool1~pool3、1个反卷积层;为了保证网络各层输出的非线性,每个卷积层都要经过一个非线性激活函数elu,使用激活函数elu可以极大缩短fcn的训练时间,并且在一定程度上可以缓解过拟合现象。在图2中每个层右边的数字表示该层的输出通道数,箭头左边的数字为卷积核的大小;全卷积神经网络fcn要学习的参数来自于每个卷积层的卷积核,采用小通道数能够减少网络参数,降低网络复杂度;
步骤6:利用步骤4得到的最后增广训练集图像对步骤5建立的改进全卷积神经网络模型进行预训练,通过预训练得到模型的初步权重参数和病虫害图像轮廓图;将初步权重参数和病虫害图像轮廓图和步骤4得到的最后训练集图像再次输入改进的全卷积神经网络模型中进行二阶训练得到最终的全卷积神经网络模型;最终的全卷积神经网络模型中的卷积层得到输入图像的特征图,非线性激活函数得到输入图像的非线性特征图;池化层对卷积层参数进行维数约简,减少参数数量同时增加改进的全卷积神经网络模型的泛化能力;使用svm分类器对输入图像的特征图进行像素归类;利用反卷积的操作过程恢复原始输入图像的分辨率;
模型的训练过程包括卷积、池化、卷积、池化、卷积、卷积、卷积、池化、卷积、卷积、卷积、反卷积,具体为:
步骤6.1:最后增广训练集图像大小为256×256×3,作为输入图像,在前四层conv1、pool1、conv1和pool2上依次进行卷积、最大池化、卷积、最大池化操作,得到的特征图大小分别为:112×112×96、56×56×96、56×56×256、28×28×256;
步骤6.2:在三个连续的卷积层conv3、conv4和conv5上,对步骤6.1得到的特征图依次进行三次不同的卷积操作,得到的特征图大小分别为28×28×384、28×28×384、28×28×256;
步骤6.3:在池化层pool5上,对步骤6.2得到的特征图进行最大池化操作,得到的特征图大小为14×14×256;
步骤6.4:在三个连续的卷积层conv6、conv7和conv8上,对步骤6.3得到的特征图依次进行三次不同的卷积操作,得到的特征图大小分别为9×9×4096、9×9×4096、9×9×2;
步骤6.5:对步骤6.4得到的特征图进行反卷积操作得到的特征图大小为319×319×2;
步骤6.6:依次使用最后增广训练集图像多次重复步骤6.1~步骤6.5中的操作训练改进的全卷积神经网络模型fcn,直到改进的全卷积神经网络模型的损失收敛,即损失降到一定程度后不再降低,获得可准确检测病害的最终的全卷积神经网络模型fcn;
所述的反卷积操作过程如图3所示:反卷积的基本操作是卷积操作的逆向操作,通过插值算法恢复图像尺寸,可以使输入图像的尺寸大小和输出图像相同;将通过改进的全卷积神经网络模型得到的输入图像特征图输入到反卷积中,特征图通过反卷积中的(conv1~conv7)和(pool1~pool5)然后在反卷积中的pool3、pool4和pool5中选择不同的池化层,分别可以得到fcn-32s、fcn-16s和fcn-8s网络模型。
所述的损失由损失函数计算,损失函数为:
所述的步骤6.1至步骤6.6中的卷积操作过程为:第l个隐层中卷积操作的输出表示为xl=f(wlxl-1+bl),其中xl-1为第l-1个隐层的输出,xl为第l个隐层中卷积层的输出,x0为输入层的输入图像,wl表示第l个隐层的映射权值矩阵,bl为第l个隐层的偏置,f()为elu函数,其表达式为f(x)=max(0,x)。
所述的步骤6.1至步骤6.6中的最大池化操作是将卷积层后经过激活提取出来的特征图上以步长为2依次取2×2区域中的最大值,组成特征图,最大池化窗口为2×2,步长为2。
步骤7:利用步骤4得到的最后增广验证集图像对步骤7得到的最终的全卷积神经网络模型进行评估,评估时采用损失函数衡量全卷积神经网络模型的训练效果;
步骤8:使用全尺寸的作物叶片图像作为输入,在评估过的最终的全卷积神经网络模型输出的特征图上检测病害,本实施例对两种大田作物病虫害所检测到的病斑图像如图4所示,图(a)、图(b)中左图为原始病虫害叶片图像;右图为检测到的病斑图像,由图4可以看出模型可以准确的检测出大田作物的病虫害区域。