赵小虎,李 晓,叶 圣,李 晓,冯 伟,尤星懿
1.矿山互联网应用技术国家地方联合工程实验室(中国矿业大学),江苏 徐州 221008 2.中国矿业大学 信息与控制工程学院,江苏 徐州 221008
为实现农业生产智能化、现代化,很多学者将图像分割技术应用于农业领域,实时分割病害并进行识别,减少人工成本,实现病害的诊断和防治[1]。大多数农作物的病变最初是从叶部开始蔓延,因此分析叶部病斑是及时防治病害的有效措施之一。
近年来针对农作物病斑分割技术层出不穷,主要有基于传统方法和基于深度学习方法的分割。传统的语义分割方法包括基于图像纹理、色彩、几何形状和空间位置等信息对目标进行分割,并将其分割为互不相交的区域,且每一区域具有相同的语义像素信息。传统语义分割方法可分为基于阈值的分割、基于聚类的分割、基于边缘的分割和基于区域的分割等方法。张武等[2]针对小麦条锈病等提出将K-means聚类分割和Otsu算法结合的方式,逐步分割小麦的病害。Ma等[3]提出一种使用综合颜色特征方法对蔬菜病害叶斑分割,实现病斑和噪声背景的强识别。孙俊等[4]改进Otsu算法,利用粒子群优化算法寻找最优阈值并用于生菜叶片分割。王昌龙等[5]基于K-means聚类与LBP(local binary pattern)特征相结合实现南瓜叶片病害的识别,并满足了精准施药的要求。Wang等[6]提出一种基于K-means聚类的农作物病害图像自适应分割方法,通过自适应学习初始聚类中心,将每两个聚类间的距离作为聚类分割结果的效果。但是传统图像分割方法需要有针对性的预处理以及大量人工标注数据集,成本高,耗时长,因而网络的灵活性不高,应用范围有所限制。
随着深度学习的出现,图像分割技术突破传统模式得到飞速发展。凭借深度神经网络较强的学习能力和自我训练能力,多角度获取图像信息,对病害预测、防治起到十分积极的作用。2015年Ronneberger等在FCN(fully convolutional networks)[7]基础上提出了基于小数据集的网络模型U-Net[8],此网络包括收缩和扩展路径[9],通过跳跃连接将低层全局特征与高层语义信息结合,泛化性较强,实现了端到端的网络结构。随后各种分割网络迅速发展,不同程度地实现了空间上下文信息完整性和多尺度提取特征等目标,提高模型的精度和分割速度。段凌凤等[10]对子图进行基于改进的SegNet网络的分割操作,并将分割处理后的子图拼接,实现稻穗和背景的二分类,该网络结构简单,运行速度快。方晨晨等[11]提出一种基于改进深度残差网络的番茄病害图像识别方法,引入深度可分离卷积方法降低模型参数。孔德峰[12]提出一种基于Inception-v3和迁移学习相结合的图像分类算法,实现将健康和患病番茄的分类。Jiang等[13]提出一种基于深层卷积神经网络的模型,通过引入Inception结构和Rainbow进行串联,实现苹果叶片病害的检测。王振等[14]使用了编-解码结构网络进行玉米病斑分割,编码器部分通过改进VGG-16网络,结合池化索引,并在解码阶段由池化索引进行上采样,最终得到密集的特征图。此法避免了传统的人工特征提取,且比现有的分割网络结构简单。张善文等[15]提出了由编码-解码器构成的多尺度融合神经网络,创造性地在解码阶段使用九点双线性插值算法对黄瓜特征图进行上采样,该模型的MIoU达到91.36%。
综上所述,通过卷积神经网络(convolutional neural network,CNN)方法对农作物病害进行病斑特征提取,利用反卷积、非线性插值或结合空洞卷积等方式进行解码,实现准确分割农作物病斑的目的。然而,以上方法针对真实田间农作物的病斑分割易受复杂环境影响,分割边缘模糊,特征提取效率低,难以实现实时分割病害的目的,并且当数据集较少时,模型容易产生过拟合。为了解决以上问题,本文基于U-Net网络,分别在收缩和扩展路径引入多尺度特征提取,在解码阶段加入注意力机制(attention mechanism,AM),使模型更关注病斑区域。此外,将基于PlantVillage数据集[16-18]的改进U-Net网络进行预训练,增强模型特征提取能力,节省再训练田间番茄数据集的时间,加速模型收敛,提高特征提取的准确度。
本实验中番茄叶片病害图像样本来自某现代农业产业示范园科技创新示范基地。由于番茄生长环境复杂,环境背景、日照光线、拍摄设备等会对图像拍摄效果产生影响,为降低模型敏感度,图像采集时间分布在2019年4—6月,分别选择清晨、中午、下午进行采集,包含晴天、阴天情况下的番茄叶片图像,反映了真实场景情况。本文共采集了番茄叶片50张,从采集图像中截取有效区域图像块以减少复杂背景信息对图像分割效果的影响,并将图片统一处理为256×256分辨率的图像。其次,使用labelme对示范基地的番茄叶片数据集进行区域标注,每张图像含有两个数据标签:1代表目标,具体为番茄叶部病斑区域;0代表背景。标注数据以json格式存储,并使用labelme_json_to_dataset命令将数据标签转换为二值化png图,如图1所示。
图1 数据集标注示例图Fig.1 Dataset annotation example graph
由于本实验使用真实田间农作物数据集,图像数据匮乏,直接使用原始数据进行训练容易使模型产生过拟合的问题。因此,本文对数据集进行数据增强处理。CVPR细粒度视觉分类挑战赛中使用随机增强光照、翻转等操作对原始数据集进行数据增强,证明使用该类方法以增强模型泛化能力的有效性。其次本实验采集的图像易受光照等因素影响,而图像具有平移翻转不变性等特性,结合挑战赛方法对原始数据集进行随机增强光照、平移、裁剪、翻转操作,分别扩增3、2、2、2倍,共计24倍,构建番茄叶片病斑数据集(tomato leaf diseased dataset,TLDD),其中840张作为训练集,360张作为测试集。图2为部分数据增强图像。
图2 数据增强示意图Fig.2 Data-enhanced image
为减少环境噪声和计算复杂度,平滑图像、去除椒盐噪声的同时保留图像边缘信息,对番茄叶片图像进行中值滤波降噪处理,如式(1):
其中,x(i)为滑动窗口中心的像素点值,med参数为该像素邻域值,y(n)为中值滤波输出值。实验表明,降噪处理后的图像可提高图像识别精度。
针对番茄农作物病斑分割因数据集较小、易受光照等复杂背景的影响,导致模型分割精度低,表现为过分割或欠分割的问题,本文构建了一种基于改进的U-Net网络模型,整体结构如图3所示。模型包括两部分:多尺度特征提取编码部分、注意力机制解码部分。网络输入图像尺寸256×256,为避免由单一通道提取特征无法准确提取边缘信息的问题,编码部分首先将图像进行4次Inception多通道卷积,加强非线性表达。在每次卷积后将各通道融合的特征图送入2×2最大池化层,使特征图尺寸缩小为原来的一半,防止模型过拟合,同时降低计算量。注意力机制解码阶段包括Inception模块、上采样、注意力模块,其中上采样是大小为3×3的反卷积层。然而,上采样过程中会引入噪声,丢失番茄叶片病斑边缘信息,因此加入注意力模块SENet,通过空间和通道两个维度恢复在编码阶段损失的信息,并有效缓解权重分散问题。最后通过SoftMax函数对番茄病斑和背景进行二分类,输出分割结果。
图像分割效果的好坏关键在于图像特征提取是否良好,获取准确的图像特征信息,得到更多图像属性[19],进而精确识别物体的位置和区域,实现番茄叶片病斑的有效分割和检测。但编码阶段选取单一尺寸卷积核进行提取特征,当感受野选取不合适时会产生空间上下文信息提取准确度低的问题,导致分割区域模糊、分类错误的现象。因此,为解决以上问题,本文基于U-Net网络引入Inception[20]结构将不同大小的卷积核并行,对输入图像进行逐像素卷积。本实验前三层直接采用经典的Inception结构即1×1、3×3、5×5以及3×3最大池化,当特征图缩减为32×32时开始使用将标准的卷积核转换成两个非对称的卷积核[21],即将3×3转换成1×3与3×1,5×5转换成的1×5与5×1的方式增强非线性,保持网络稀疏性,同时极大地压缩网络参数量[22]。解码阶段与之对应。多尺度特征提取中的非对称卷积模块结构图如图4所示。
图4 非对称多通道卷积特征提取模块Fig.4 Asymmetric multi-channel convolution feature extraction module
针对网络训练层数参数大、不方便实际应用的问题,采用Inception多尺度提取特征,处理更加丰富的空间特征,小尺度卷积核关注小病斑区域,大尺度卷积核关注上下文信息,增强特征多样性。采用非对称卷积进行多通道特征提取减少约33%参数量,提高了实时分割病斑的效率,增强了网络的旋转鲁棒性以及泛化和表达能力。
编-解码网络提取低层特征时获得更多精确的细节和位置信息,提取高层特征时则更关注语义上下文,而U-Net网络利用跳跃式连接将低层细节与高层语义相结合,实现目标特征准确提取。但在解码阶段进行上采样操作会丢失一部分位置空间等信息,从而导致病斑分割不精确。为使以上问题得到有效解决,本文加入注意力机制模块AM。AM通过直接级联对应编码层和下一反卷积层,融合其互补特征信息[23],抑制上采样产生的噪声,增强模型鲁棒性。本文综合比较卷积块注意模块(convolutional block attention module,CBAM)[24]与挤压和激励网络(squeeze and excitation networks,SENet)[25],CBAM在本实验数据集上准确度比SENet略低,且SENet参数量比CBAM少约1.7%。因此最终选择SENet,其结构如图5所示。
图5 Attention Mechanism结构示意图Fig.5 Schematic diagram of Attention Mechanism
图5中,V为输入X经过Ftr变换后的特征图,X∈ℝH′×W′×C′,V∈ℝH×W×C,M=[m1,m2,…,m C]表示第c个滤波器的参数,则Ftr过程公式如式(2)所示:
其中,*表示卷积操作。在Squeeze进行全局池化,通过压缩每个feature map从而获取全局特征信息,并得到1×1×C的数列,Fsq过程公式如式(3)所示:
其中,统计量s∈ℝC,V为局部描述符的集合。最后进行Excitation激励操作,通过两个全连接层构成Bottleneck结构融合通道信息,利用Sigmoid门函数获取通道间非线性关系。此模块类似于循环神经网络(recurrent neural network,RNN)中的门机制。激励过程公式如式(4)所示:
为加速模型收敛并缓解过拟合现象,本模型加入归一化。批归一化(batch normalization,BN)[26]以图像数量N为单位进行批量处理,如图6所示,容易受batch size设置的影响。本文TLDD数据量有限,当batch size设置过小时会导致均值、方差计算不准确性升高。因此,本模型采用分组归一化(group normalization,GN)[27],以通道C为单位,计算每个group的均值和方差(同图6),当batch size设置较小时,也可以正确归一化,公式如下:
图6 Group Normalization结构示意图Fig.6 Structure diagram of Group Normalization
其中,a=(a N,a C,a H,aW);ε为常数;γ和β为可学习变量;C为通道数;G为分组数,本文G取32。式(6)为归一化公式,式(7)、(8)为每组方差和均值,式(9)为变换重构过程,主要作用为加强非线性表达能力,防止其饱和时使网络收敛变慢。
模型通过随机梯度下降(stochastic gradient descent,SGD)[28]优化算法对损失函数进行优化,对TLDD进行二分类(1病斑,0背景)交叉熵损失函数(Two-class cross_entropy loss)计算,表达式如式(11)所示:
番茄叶部病害图像分割的目的是将图像中每个像素进行判定类别,从而明确病害范围。为评价模型分割效果,并从多个角度说明本文算法的性能,本文选用了准确率(Accuracy)、召回率(Recall)、平均交互比(mean intersection over union,MIoU)[29]三个指标,具体的计算公式如下三个式子:
式中,Pacc为准确率;Prec为召回率;PMIoU为平均交互比;KTP为真正例,正确将病斑分类的像素点;KFP为假正例,将背景错分成病斑的像素点;KTN为真负例,正确将背景分类的像素点;KFN为假负例,将病斑错分成背景的像素点。
本实验采用深度学习Pytorch框架,实验环境硬件设备采用i7 6700k CPU,GPU为GTX 2080Ti,运行内存为32 GB,优化器采用SGD,学习速率为0.001,动量设置为0.9,迭代次数设为100。基于CNN网络的模型可以较好地达到图像分割目的。首先对数据集进行数据扩增;然后为了增强模型敏感度,对数据集进行图像预处理;在模型训练阶段,为增强模型图像特征提取能力和训练速度,本文将PlantVillage数据集作为改进UNet网络算法模型的输入,并且保留预训练的参数,将预训练网络作为本文创建的TLDD训练模型。通过预训练提高模型训练速度,有效增强网络的拟合能力,实现在有限数据集上提高病斑分割的准确度,本文方法最终准确率达到0.929。整体番茄叶片病害分割模型具体流程如图7所示。
图7 番茄叶片病害分割模型流程图Fig.7 Flow chart of tomato leaf disease segmentation model
将预训练完成的模型在TLDD训练,每次迭代训练结束后,记录训练准确率。由图8可知,随着训练迭代次数的不断增加,模型的准确率不断上升,损失值不断下降。当迭代次数达到88时准确度稳定在0.92,浮动变化稳定在1个百分点以内,损失值稳定在0.042,上下浮动在0.01以内,模型准确率较高,鲁棒性较好。由此分析可知,本文对U-Net网络的改进可以使模型达到一个较好的分割水平。
图8 模型准确率与损失值变化曲线Fig.8 Change curve of model accuracy and loss value
为衡量本文模型的有效性,基于真实田间环境番茄病害数据集TLDD,使用改进后的U-Net分别与传统UNet、FCN8s、SegNet、Inception+U-net、U-Net+AM进行实验对比,样本总数1 200张,随机选取数据集70%作为训练样本,30%作为测试样本。如表1所示,表中InU表示基于U-Net网络引入多尺度Inception特征提取网络的模型,UAM表示在U-Net网络中引入注意力模块的模型。将U-Net、InU、UAM模型与本文方法进行Pacc、Prec和PMIoU参数比较,同时为衡量模型训练图像的速度,对每个模型的训练时间进行记录。由表1数据可知,从评价指标上看,六种模型的准确率分别为88.2%、86.4%、89.2%、92.1%、91.3%,92.9%。其中,FCN8s在整体上看效果最差,准确率偏低,其次U-Net网络分割效果在FCN8s的基础上有所改善,SegNet在U-Net网络基础上准确率上升3.2%。此外,InU和UAM的模型与U-net相比,准确率分别提高约4.4%、3.5%,召回率提高了3.9%、4.4%;而同时加入多尺度特征提取和AM的模型效果最佳,准确率为92.9%,召回率为91.1%,平均交互比为93.6%,分别比U-Net模型升高5.3%、6.0%、6.6%,则表明被正确分割的像素比例升高,正确分割率升高,整体表现为基本分割出番茄叶片的病斑区域。从训练时间上看,基于FCN8s网络模型速度最慢,其次是U-Net、SegNet、UAM模型,分别为2.20 h、2.12 h、2.17 h、2.11 h,而UAM模型训练时间较慢是因为加入的注意力模块会增加一定参数和计算量。本文方法为均衡该部分影响,加入GN层有效降低训练时间,加速模型收敛,最终训练时间为1.97 h。图9为本文方法不同迭代次数下的分割预测结果,由其可知本文方法可准确将病斑分割并接近真实值。
表1 实验对比结果Table 1 Experimental comparison results
图9 迭代过程效果图Fig.9 Effect diagram of iterative process
此外,为验证通过在PlantVillage数据集上预先训练对本文方法的有效性,基于TLDD将改进U-Net模型与预先训练的图像分割模型进行对比,实验结果如表2所示。
表2 预训练模型实验对比Table 2 Pre-training model experiment comparison
表中Imp-U-Net表示直接将TLDD输入本文改进的U-Net网络,预训练+Imp-U-Net表示先经过预训练,再基于改进网络对TLDD进行训练。由表2可知,Imp-UNet网络比U-Net模型准确度提高约3.9%,主要是因为本文加入的多尺度卷积模块和注意力模块准确提取了病斑特征;而基于预训练+Imp-U-Net分割模型准确度比U-Net模型提高约5.3%,比Imp-U-Net网络准确度提高1.3%,训练速度也明显提高,充分证明在本文加入两个模块后,结合预训练的方法在准确度和训练速度上均有所提升,同时也减少了网络模型对硬件的需求,可在现实实验训练中被使用,以此节省训练时间。图10为不同模型架构的病斑分割效果图。由图可知,采用FCN8s网络模型分割的效果与采用U-Net网络进行分割效果相差不大,均能分割出病斑的大致区域,但仍然存在分割不准确现象。其中,FCN8s分割不准确主要是因为在下采样过程中对特征提取不够准确,尤其是对小病斑区域的分割效果较差。SegNet主要通过空洞卷积在不增加参数量的情况下扩大感受野,但该方法对病斑边缘分割效果较差;InU模型由于多尺度提取特征,导致部分区域存在过分割现象;UAM分割模型由于提取图像属性特征不充分,使模型存在病斑欠分割或过分割的问题;而将二者结合的模型效果最好,平衡了多尺度提取特征和注意力关注病斑区域两种方法,预测结果基本与真实值相对应,可较好地应用于番茄病斑识别。
图10 不同图像分割方法效果对比图Fig.10 Comparison of effects of different image segmentation methods
因此由实验分析可得,通过引入多尺度特征提取,能全面获取病斑区域和边缘信息;通过引入AM使模型更加准确地关注病斑像素;相较于传统分割、InU和UAM模型图像分割方法,本文模型在衡量指标上的分割效果更好。
叶片出现病斑是番茄及大多数农作物开始出现病变最直接、最明显的表现。为了有效防止番茄病情恶化,及时识别病斑区域,本文基于改进的U-Net网络实现真实田间番茄病害分割,将采集番茄叶片数据进行扩充和预处理,并在此数据集上验证了本文方法在图像分割任务中的有效性。与经典的U-Net、FCN8s、SegNet进行对比,本文分割效果最好;与引入Inception和AM方法相比,本文通过多尺度提取图像低级与高级语义信息,同时加入注意力机制关注局部特征,结合模型预训练,在降低模型训练时间的同时有效增强了其表达能力。然而,基于CNN的图像分割算法仍然有一定局限性,不适用于小数据集分割,难以在现实场景中应用。未来将进一步研究小数据集图像分割与分类,以及实现真实复杂环境下不同病害的识别。