王 振,张善文,赵保平
1.西京学院 信息工程学院,西安 710123
2.宝鸡市农业科学研究院,陕西 宝鸡 721000
作物病害是影响作物产量与质量的重要因素之一。由于大部分病害的症状主要表现在作物叶片上,所以通过观察作物叶片特征可判断病害发生和病害类型[1]。传统的通过人工观察方式判断病害类型,存在主观性、盲目性和效率低等问题[2]。近年来,随着计算机视觉技术的不断发展,使用自动化方式判断作物病害成为一种趋势,能够有效解决人工判断病害的缺点[3]。在基于病害叶片图像的病害识别过程中,病斑区域的精准分割直接影响病害识别的准确率。
作物病害叶片图像分割方法很多,病害叶片图像可以分为基于传统图像分割的方法和基于深度学习的分割方法。传统的作物病害图像分割方法可分为4类:基于阈值的分割方法[4-5]、基于聚类的分割方法[6-8]、基于分类的分割方法[9-10]和基于图论的分割方法[11-12]。第一类方法通过寻找关键阈值点进行作物病害叶片图像分割,该方法适用于简单背景下的病害叶片图像分割。第二类方法根据图像像素点的不同进行分类来完成病斑区域分割,但该方法在分割过程中需要进行多次迭代才能确定最优聚类点,降低了分割方法的时效性。第三类方法利用多种图像特征对分类器进行训练,使用训练后的分类器对像素点进行分类从而实现分割,由于在特征提取阶段需要设定较为复杂的特征提取算法,所以这种方法的实用性较差。第四类方法将原始图像映射为带权无向图,通过求解函数最优解完成图像分割,这种方法适用于背景简单或像素相似度较低的条件。以上基于传统的图像分割方法只适用于背景较简单的作物病害叶片图像,当作物病斑区域与背景颜色相似或界限模糊时,使用传统的图像分割方法难以将两者区分开,分割效果较差。
近年来得益于深度学习技术的发展,利用卷积神经网络(CNN)对图像进行语义分割成为一种趋势[13]。许多学者尝试将CNN用于解决作物病害叶片图像分割问题。刘立波等[14]将Markov与CNN相结合完成对棉花病斑图像分割,该方法利用CNN提取图像深层语义特征,结合特征图像素间的相对关系构建条件随机场能量函数并对其进行优化训练;段凌凤等[15]利用水稻病害数据集训练基于全卷积神经网络(FCN)的水稻病害叶片图像分割模型,完成了复杂背景下水稻病害叶片图像的分割;赵兵等[16]将FCN与CRF相结合进行葡萄病害叶片分割。该方法在分割过程中将CRF作为概率图描述图像的细节信息,所以需要网络模型的训练时间较长。Xiong等[17]将超像素分割与CNN结合,实现了不同生长时期的大田稻穗分割,其缺点是在复杂背景下的分割效果较差。马浚诚等[18]基于CNN设计了一种温室黄瓜病害识别系统,该系统在预处理阶段将复合颜色特征与CNN相结合,能够实现对不同病害的完整分割。杨晋丹等[19]基于Alex Net提出一种草莓叶部病害检测方法,在草莓病害叶片图像上的检测中效果较好,但对于有遮挡的情况效果较差。Pound等[20]利用CNN对小麦根尖、穗尖以及穗基等不同部位进行分割,取得了较好的效果。由于CNN需要对原始图像进行预处理操作,降低了该方法的普适性。以上基于深度学习的作物病害叶片图像分割方法在不同种类作物病害叶片图像分割问题上均得到较高的分割精度,但现有基于深度学习的分割方法只是针对单一的植物病害完成分割任务,不能解决多种植物病害的分割问题,降低了分割方法的实用性;而且部分方法的网络模型结构较为复杂,很难将其扩展为进一步的作物病害识别任务;许多方法所建立的网络模型需要进行大量的模型参数训练,难以满足作物病害分割的实时性需求。因此本文针对作物叶部病害分割难题,提出一种基于级联卷积神经网络的作物病害分割方法,并将其应用于不同环境下的作物病害叶片图像分割。
图1 部分作物病害叶片图像
实验图像采集于陕西省宝鸡市大田试验基地,采集时间为2018年4月—7月。为充分考虑自然光照对分割效果的影响,每日8:00、10:00、16:00和18:00时间段进行拍摄。主要作物病害叶片包括玉米大斑病、玉米圆斑病、小麦条锈病、小麦炭疽病、黄瓜靶斑病和黄瓜褐斑病,共拍摄900幅作物病害叶片图像,每种病害叶片图像150幅。采集设备为Cannon EOS650D数码相机,无任何补充光源,拍摄时距离作物叶片约15~30 cm。为提高网络模型的训练效率,利用Photoshop将图像统一裁剪为256×256像素大小。部分作物病害叶片图像如图1所示。
在裁剪后的作物病害叶片中随机挑选650幅组成训练集、125幅作为验证集、125幅作为测试集。将训练集图像输入分割网络模型中,对模型的权重参数进行训练;利用验证集确定模型结构,同时控制模型的复杂程度,对模型参数进行调优;选用测试集图像对模型的分割效果进行测试。
基于级联卷积神经网络(CCNN)的作物病害叶片图像分割方法的整体流程如图2所示。由于作物病害叶片图像中叶片的病害部分与正常区域的像素相似度较高,而且采集图像包含大量的背景噪声,为此将卷积层、全局池化层和SoftMax相结合,建立区域病斑定位网络(RD-Net),对叶片中的病斑区域进行检测,即对病斑区域进行定位,减少背景信息对分割效果的影响。基于Encoder-Decoder模型架构,建立区域病斑分割网络(RS-Net),进行病害叶片图像分割。在CCNN中,使用多尺度卷积核扩大原始卷积核的局部感受野,将RD-Net的输出结果输入到RS-Net,然后对定位的病斑区域进行分割。现有的基于深度学习的分割方法多数使用端到端的分割模型,这种方法直接对图像进行分割任务,无法定位图像中所要分割的具体位置,这种方式降低了分割效率。在本研究中使用RD-Net与RS-Net相结合的方法,提高了网络模型的分割精度,在经过RD-Net对图像中的病斑区域进行定位后,增强了CCNN网络模型对病斑区域的视觉显著性,加快了模型的分割速度。
图2 基于CCNN的作物病害叶片分割模型
图3 RD-Net网络模型结构
2.2.1 区域病斑检测网络模型(RD-Net)
RD-Net基于传统CNN网络构建,其结构主要包括卷积层、池化层以及全连接层。其结构如图3所示。在图3中,前半部分是基于传统VGG16网络进行构建,主要用来对输入图像进行深层特征提取;后半部分则由一个n×n的滑动窗口、一个分类层(cls)和一个回归层(reg)组成,用来产生区域检测框以及相应的类别和位置信息。
RD-Net网络主要包括13个卷积层(Conv1~Conv13)、4个池化层以及1个全局池化层组成。将所有卷积核设置为3×3大小,卷积层的滑动步长设置为1;为保持与输入图像的维数一致,通过边界扩充的方式将pad参数设置为1对卷积层边缘进行补全。池化层(Pooling1~Pooling3)大小设置为3×3,并采用最大池化操作,池化窗口设置为2×2,滑动步长设置为2。由于传统的VGG16网络在末端采用全连接层,导致网络模型需要进行大量的参数计算。为了减少模型的计算量,采用全局池化层代替全连接层。使用n×n的滑动窗口在卷积层前部分卷积层输出的特征映射图上进行卷积操作,将经过滑动窗口得到的卷积层映射为一个特征向量,并将特征向量输入到两个同级的分类层和回归层,分类层用于判别是否为叶片正常区域或病斑区域,利用回归层对病斑区域的具体位置进行定位。在具体的病斑区域检测过程中,将滑动窗口的中心点定义为锚点,窗口的每一次滑动都分别对应三种尺度和三种长宽比,由此每一次滑动都会产生n=9个锚点,同样产生相同数量大小的区域检测框。将检测后的病害叶片图像与原始手工标注图像做比较,通过使用两个不同的损失函数计算检测值与真实标注值之间的误差。分别对类别损失和位置损失利用反向梯度传播算法进行回传,使用随机梯度下降算法对每层网络的权重参数进行修正,使得网络的正确检测率更高,实现对病斑区域的精准定位。在损失函数的计算过程中,将类别损失函数表示为:
式中,R(x)为正则化损失函数,即
式中,λ为权重系数,pi表示检测区域属于病害的概率,为真实标注类别,其中表示背景类,表示病斑区域,Ncls和Nreg为用于避免过拟合的正则项,i是检测候选区域的索引值,ti为原始坐标框的位置参数为该候选区域的实际坐标。
2.2.2 区域分割网络模型(RS-Net)
RS-Net结构与SegNet[23]相似,主要由编码网络、解码网络和SoftMax分类器组成。其中编码网络是基于VGG16网络结构进行构造,但由于作物病害叶片的细节特征较为复杂,所以使用传统的卷积核难以提取复杂特征。为了提取病害叶片图像的复杂病斑特征,需要通过增加卷积层数量或引入多个尺寸卷积核,但仅仅使用简单的卷积层数堆叠会降低模型的非线性变化,使得每个卷积层提取的图像特征相同。而引入多个尺寸卷积核只会大量的增加参数计算量,导致模型训练时间增加,降低模型的效率。因此在编码网络中使用多尺度卷积核代替原始卷积核,通过在同一个卷积层引入不同尺度卷积核来获取图像的不同尺度特征,再将这些特征进行融合,得到原始图像的多尺度特征图。
SegNet网络能够得到精确的语义分割结果主要得益于其解码网络的设计,通过记录编码网络的最大池化层索引,并利用索引因子在解码网络中直接进行上采样,使得SegNet网络模型相比于全卷积神经网络(Fully Convolutional Neural network,FCN)具有更高的分割精度。使用与SegNet相同的解码网络,主要包括卷积层(Conv1~Conv14)和上采样层(Upsampling_1~Upsampling_5),通过卷积层对编码网络获取的多尺度特征图进行深度特征提取,并利用上采样层恢复图像分辨率。作物病害叶片的分割相当于一个二分类问题,分割的目的主要是区分叶片正常部分与病斑部分,因此将解码网络卷积层Conv14通道数设为2,并在其后面增加一个像素级分类器SoftMax,将分类器的分类个数也设置为2。
在以上分析的基础上,构建病斑分割网络RS-Net。其结构如图4所示,主要包括编码网络(Encoder Network)和解码网络(Decoder Network)两个子网络。其中编码网络和解码网络的卷积层数均为13,而且与池化索引对应的卷积层大小相同,每个卷积层的滑动步长(stride)设为1,为使输入与输出图像维度不变,将边界扩充Pad参数设置为1。池化层(Pooling_1~Pooling_5)均采用最大池化(Max Pooling)操作,池化层大小设为2×2,滑动步长设为2。上采样层(Upsampling_1~Upsampling_5)的采样尺度(scale)设为2。
图4 RS-Net网络模型结构
2.2.3 模型训练
在CNN训练过程中,需要利用大量的训练样本对网络模型参数进行更新,提高网络模型性能。使用构造的训练数据集图像对级联卷积神经网络(CCNN)进行训练,从而得到分割精度高、运行速度快的网络模型。但在训练样本数较少或训练集内容相似度较高的情况下,模型容易产生过拟合或分割效果差等问题。为提升网络模型的训练效率以及分割性能,CCNN采用迁移学习的方式对网络进行训练。利用迁移学习对模型参数进行初始化可以使模型提取特征具有级层特性,使用浅层网络提取图像的低层初级特征,使用深层网络提取图像的高层语义特征。其中低层特征主要包括颜色、边缘等初级信息,使用不同数据集对网络进行训练所得到的低层特征较为相似。因此当数据集规模较小时,利用迁移学习的方式将在大规模数据集上得到的低层信息移植到所要训练的网络模型中,不仅解决模型的过拟合问题,而且减少了模型训练时间[22]。
评定模型性能主要通过计算分割图像与标注图像之间的差异。通过计算标注图像与分割图像之间的交叉熵值来评定模型训练的效果。交叉熵函数是神经网络中常用的模型性能评价指标,当交叉熵值越小,表明模型的训练效果越好。在CCNN的训练过程中,将标注图像与分割图像的每一个像素点进行计算交叉熵并取平均值,利用平均像素交叉熵损失函数评定CCNN的训练效果。平均交叉熵损失函数如下:
式中,p(x)为标注图像的像素分类向量,q(x)为分割图像的像素分类向量,N为图像包含的总像素个数,X表示输入图像的特征向量,x为输入图像每个像素的特征向量。
由式(5)得到像素间损失值后,利用反向传播算法将损失值回传到网络模型的每一个卷积层中,对卷积层的权重参数进行更新,经过多次循环迭代,直到输出损失值稳定时结束训练。
在作物病害叶片图像数据集上验证所提出的物理模型,并与已有的模型Hseg、FCN8s、SegNet、JointSeg和DeepLab分割算法进行性能对比。实验软件环境为Ubuntu 16.04 LTS,使用Matlab编程,硬件环境为Intel®core™i7-7550k cpu@3.60 GHz处理器,RAM为32 GB,GPU为GTX1080Ti的PC机上进行实验。深度学习开发框架为Matconvent。
实验过程采用批量训练方式。将构建后的训练集、验证集和测试集图像以批次(Batch)的形式送入网络模型中,训练集中共包含650幅图像,将每10幅图像分为一个批次,完成模型的训练共需要65个批次。为保障模型的训练效率以及分割精度,使用训练集图像对模型进行700次遍历(Epoch),模型的迭代次数设置为250 000次。使用梯度下降和反向传播算法对模型的权重参数进行更新,将学习率设置为1×10−10。由于使用带动量的梯度下降算法,为防止模型出现过拟合现象,设置动量因子为0.99。利用验证集对模型权重参数进行局部修正。训练集和验证集的损失值和准确率变化曲线如图5所示。
图5 模型损失值和准确率变化曲线
从图5中看出,随着模型不断增加迭代次数,训练集和验证集的损失值在不断下降,但训练集的变化波动范围比较大,这是因为在模型参数的初始训练阶段需要进行大量的迭代训练,当次数不断增加时训练集loss值趋于稳定;验证集的变换曲线波动较小,而且随着迭代次数的增加,验证集loss值也逐渐减小,当迭代200 000次时,loss值趋于稳定,主要是因为验证集优化了模型参数提高了模型性能。准确率曲线总体趋于上升趋势,随着迭代次数的增加像素的分类准确率不断提高,其中top-1准确率是将像素分为两类的准确率,即叶片的正常区域和病斑区域被分为两类的准确率;top-5准确率表示将像素分为多类的准确率,即对叶片的病斑区域和正常区域产生误分的概率;从图5中可以看出像素的分割准确率在持续上升,当模型的loss值基本收敛时,模型的top-1准确率达到最高,表明模型达到了较好的训练效果。
卷积神经网络的训练过程中,卷积层用于对输入图像进行特征提取,而且不同卷积核所提取的特征不同[23]。其中浅层卷积核主要提取图像的初级特征,主要包括颜色和轮廓等;深层卷积核提取图像更多的语义特征,包括纹理和细节特征。为更好地显示不同卷积核所提取到的不同特征,将卷积核和特征图进行可视化。图6和图7分别为不同卷积层的卷积核和得到的特征图。从图6可以看出,卷积核(Kernel1~Kernel3)显示的信息较为粗糙,卷积核(Kernel4~Kernel5)显示更多的细节特征。由图7可以看出,卷积层(Conv1~Conv3)得到的特征图主要为图像轮廓特征,卷积层(Conv4~Conv5)得到的特征图主要包含图像的纹理特征。图6和图7的可视化结果充分体现了卷积神经网络的权值共享技术,随着卷积层数的不断增加,模型获取了输入图像更多的细节特征,同时说明模型训练过程中不同卷积核能够得到输入图像的不同特征,各卷积核分别关注图像的不同部分,能够充分学习各自关注部分的图像显著区域,为后续图像的精准分割打下基础。
图6 Conv1~Conv5的卷积核
图7 Conv1~Conv5的特征图
图8 不同分割方法的病斑分割效果
利用150幅自然场景的作物病害叶片图像作为测试集对网络模型分割效果进行测试。为了更客观地评价病害叶片的分割效果,引入分割精确度P、召回率R以及平均F值作为评价指标,衡量分割结果与实际标注图像之间的差异。其中分割精确度P是反应病害叶片区域与真实病斑区域之间的相符程度;召回率F是正确分割的样本数占总体样本数的比例;平均F值则将分割精度P与召回率R结合起来综合考虑,反映整体精度的评价指标。由于分割时间是评价模型实用性的关键技术指标,使用单幅图像分割时间作为衡量分割速度的时间指标。分割精度P、召回率R以及综合评价指标F值计算如下:
式中,TP为经过分割网络得到的分割结果与原始叶片病斑区域的重合部分;TN为分割出的叶片正常区域与原始叶片正常区域的重合部分;FP为分割结果中不属于病斑区域的部分,FN为不属于正常区域的部分。
不同分割方法得到的分割结果如图8所示。从分割结果中可以看出Hseg分割方法将大部分正常区域误分为病斑区域,无法完成叶片病害的分割任务;采用FCN8s网络模型进行分割时效果好于Hseg,而且从分割结果中不难看出该方法能够分割出病害的大致轮廓,但对细小病斑部分的分割效果较差;SegNet分割网络使用与所提出的RS-Net相同的网络结构,能够取得较好的分割效果,但该方法对于叶片的边缘病斑区域分割效果较差,分割精度有待提升;JointSeg网络模型对于边缘区域的分割效果优于SegNet,而且对病斑的细节部分能够实现完整分割,但分割结果受光照的影响较大,当分割光照较强的病斑区域时,出现了明显的误分割现象;DeepLab[24]网络模型能够完整分割出叶片中的病斑区域,而且对细小病斑区域的分割效果较好,但是当叶片中病斑出现粘连情况时,该方法不能将粘连病斑进行分割,产生较多的误分割现象。而方法首先通过RD-Net模型对叶片病斑区域进行定位,确定了叶片中病斑区域的具体位置;然后利用基于编解码网络架构的RS-Net模型对定位后的病斑区域进行分割,保证病斑区域分割的完整性;由于叶片中病害的边缘部分难以分割,而且容易产生误分割现象,因此利用形态学优化层对分割后结果进行优化,在保证病斑区域分割完整性的同时,增强了对细节部分的分割效果。
为量化不同分割方法的分割性能,分别对这些方法求取分割精确度P、召回率R、平均F值(F-measure)以及单幅图像分割时间,如表1所示。
表1 不同方法分割作物叶片图像的性能比较
从表1中看出,CCNN方法的分割精度P、召回率R以及F值最高,分别为80.21%、72.49%和88.72%。尽管DeepLab网络模型与CCNN使用相同的分割网络架构,但CCNN在性能评价指标上分别高出1.3%、1.64%和2.37%,主要是由于CCNN在模型的第一阶段构建了区域定位网络,对病害部分进行精确定位,大范围减小了模型的误分割现象。FCN8s使用反卷积过程恢复图像分辨率优化分割结果,但该方法的下采样操作弱化了模型的特征提取能力,导致其对小面积病斑区域的分割能力较差,因此其分割性能指标较差。CCNN与传统基于阈值分割方法的Hseg相比较,在分割性能上远优于Hseg分割算法,主要由于Hseg是通过设定固定阈值对图像进行分割,所以分割结果较差。SegNet和JointSeg都是基于空洞卷积的分割模型,空洞卷积能够扩大原始卷积核的局部感受野,但有些病斑区域在整体叶片中所占比例较小,所以这两种分割方法在性能评价指标上均落后于CCNN。根据以上结果能够判断CCNN具有较好的分割效果,对病斑区域的分割结果最接近于真实值,能够满足自然状态下对病害叶片图像分割的高精度要求。但由于作物叶片图像的病斑区域边界较为复杂且所占面积较小,同时部分病斑区域与正常区域的相似度较高,导致正常区域边界与病斑区域边界难以区分,所以从表1中看出算法的分割性能评价指标值仍然较低。
在单幅图像分割时间上,CCNN方法的分割时间小于其他分割算法。由于SegNet和JointSeg均是使用空洞卷积的方式对网络模型进行构造,所以网络模型需要耗费大量的训练时间,导致模型分割效率下降,对单幅图像的分割时间较长,分别为0.85 s和0.64 s。Hseg方法不需要对模型进行训练,但在分割后需要对每幅图像进行形态学操作,所以需要耗费分割时间;FCN8s在分割时需要进行反卷积操作恢复图像的分辨率,从而增加了单幅图像分割时间;方法采取级联的方式进行训练,将区域定位网络和区域分割网络进行分阶段训练,而且使用了迁移学习的训练方式,不仅减少网络模型对硬件的需求,而且减少模型训练时间。因此CCNN方法在单幅图像分割时间为0.29 s,能够满足对病害叶片图像病害叶片图像分割实时性的需求。
为验证所提出模型的鲁棒性,分别使用不同分割算法在多种复杂背景下的作物病害叶片图像上进行分割试验,其中复杂背景主要包括待分割图像中存在土壤背景、叶片遮挡、多个叶片、叶片残缺、病害粘连、光照条件复杂等情况。针对每种复杂背景选取20幅图像共120幅图像进行鲁棒性对比试验,分割效果如图9所示。表2为不同方法在不同复杂背景图像的分割结果。
图9 不同环境下作物病害叶片分割效果
表2 不同场景下分割方法性能对比
由图9所示,在多种复杂背景下的分割结果中,CCNN网络模型几乎不受环境的影响,能够有效地分割出作物叶片的病斑区域。在有土壤背景的分割过程中,SegNet分割方法将大面积的背景区域误分为病斑区域,DeepLab方法分割效果较好,但对于小面积病斑区域分割精度不够;当出现叶片遮挡情况时,几种分割方法均出现误分割现象,其中Hseg最为严重,无法对被遮挡部分的病斑进行分割;在多个叶片的分割环境下,几种分割方法均出现分割不完整现象,未能将多个叶片中同时出现的病斑区域分割出来;在叶片残缺的情况下,不同的分割方法均出现程度不一的误分割现象,其中Deep-Lab分割方法将部分病斑区域误分割为正常区域,而Hseg分割方法则将正常区域误分为病斑区域;在病害粘连图像中进行分割时,由于叶片中不同的病斑区域相似度较高,所以几种分割方法都无法将粘连的病斑分割开来;对于复杂光照下的叶片分割问题,由于光照强度的增强,加大了分割的复杂度,导致几种分割算法都将背景区域的病害部分误分为病斑区域。CCNN分割模型能够有效分割出不同场景下的叶片病斑区域,分割效果受自然条件影响较小,稳定性较高,能够满足不同场景下的作物病害叶片分割任务。
从表2看出,CCNN网络模型性能最佳,分割精度P的最大值与最小值之间的差值仅为0.81%,召回率R最大值与最小值之间的差异仅为1.07%,综合评价指标F值最大与最小之间的差值仅为0.79%,表明CCNN对于不同场景下的分割结果相差极小,该方法具有较强的鲁棒性。其他几种分割算法在包含土壤背景的条件下分割精度较高,表明土壤背景对不同分割方法的结果影响不大;在叶片遮挡、多个叶片和叶片粘连的分割场景中,指标值出现不稳定现象,但总体指标值波动范围较小,说明分割方法能够适应稍微复杂的分割场景;当对处于病害粘连和光照复杂场景的叶片进行分割时,几种分割算法指标值均出现下降现象,表明病害粘连和复杂光照对分割效果影响较大;在单幅图像分割时间上,CCNN均低于其他分割方法,多个场景下的单幅图像平均分割时间为0.24 s。
针对传统的作物病害叶片图像分割难题,提出了一种级联卷积神经网络(CCNN)的作物病害叶片分割方法。首先利用区域定位网络(RD-Net)对叶片中的病害部分进行精确定位,减少背景干扰;再利用基于Encoder-Decoder结构建立的区域分割网络对定位后的病斑区域进行精确分割。为验证算法的鲁棒性,将CCNN分割模型与其他分割方法在不同场景下进行分割试验,结果表明CCNN网络模型能够完成不同场景下的病害分割任务,而且所有评价指标均为最高。在分割时效性上,CCNN优于其他分割方法,单幅图像的分割时间仅为0.21 s,表明该方法能够满足对病害分割时效性的需求。实验结果表明,本文提出的病害叶片分割方法的分割精度高、运行速度快,能够完成对作物病害叶片分割的实时性要求。但该方法只能完成小范围场景内的分割任务,对于大范围场景或者恶劣环境下病害叶片分割问题有待研究,而且通常在自然场景下单个叶片中会包含不同的病害类型,或者有些病害在叶片中所占比例极小,这些情况都会给病害精准分割带来挑战,以后进一步对本文所提出的方法进行优化。