APP下载

基于改进UNet++模型的葡萄黑腐病病斑分割和病害程度分级

2023-12-03茹佳棋徐达宇李颜娥

浙江农业学报 2023年11期
关键词:病斑损失葡萄

茹佳棋,吴 斌,翁 翔,徐达宇,李颜娥,*

(1.浙江农林大学 数学与计算机科学学院,浙江 杭州 311300; 2.浙江省林业智能监测与信息技术实验室,浙江 杭州 311300; 3.林业感知技术与智能装备国家林业和草原局重点实验室,浙江 杭州 311300; 4.浙江农林大学 光机电工程学院,浙江 杭州 311300)

葡萄不仅营养丰富,而且具有特殊的药理作用,是世界上最重要的经济作物之一。据联合国粮食及农业组织(FAO)统计数据,2020年全球葡萄总产量达7 750.5万t,我国葡萄产量达1 431.4万t,居世界首位。葡萄病害是影响葡萄产量和质量的重要原因之一,每年由葡萄病害引起的减产给农户带来巨大的经济损失。准确分割病害并实现病害分级是针对病害种类和严重程度准确决定用药种类和用药量的前提,在葡萄病害的诊断和防治中具有重要意义。

葡萄感染疾病后,病症主要显现在叶片表面,发病部位通常伴随各种病原物形成的特征构成各类病斑,如霉状物、粉状物、粒状物和脓状物等。这些病症是识别病害的重要依据。通过观察叶片表面的病斑特征可判断叶片病害发生的类别和程度。葡萄病害种类繁多,各种病害的特征多样,传统的人工识别方法存在效率低、误诊概率高、人力资源消耗大等问题。近年来,随着计算机视觉技术的不断发展,利用计算机自动诊断植物病害已成为发展趋势。通过采用智能化的分析和挖掘技术逐渐代替人工判断,可减少人为误判的发生,节约人力资源。

植物病害分割方法有很多种,主要可分为传统的图像分割方法和基于深度学习的图像分割方法。传统的图像分割方法,如阈值法[1-2]、边缘法[3-5]、区域法[6]、图论法[7]和能量泛函法[8-9]等更注重人工设计特征,根据图像灰度、颜色、纹理和形状等信息来设计分割方法,让区域间显现差异性,区域内呈相似性。虽然人工精心设计的分割方法在某一种特定病害上能取得一定的效果,但在其他病害的分割上难以取得较好的效果。针对不同病害,每次都需要重新进行人工特征设计,泛化能力较差。

随着深度学习技术[10]的快速发展,卷积神经网络(convolutional neural network, CNN)已广泛应用于植物病害分割领域。CNN模型可以从高维特征空间中自动化提取特征,相较于传统的手工设计特征提取方法,具有明显的进步。2015年,Shelhamer等[11]提出了一种基于全卷积神经网络(fully convolutional network, FCN)的图像分割方法,该方法将传统CNN中的全连接层替换为卷积层,取消了CNN中全连接层对输入神经元个数的限制,可以接收不同尺度图像的输入。FCN采用转置卷积对最后一个卷积层的特征图进行上采样,可以获得与输入图像相同尺寸的上采样特征图,并最终对像素点实现逐一分类。赵兵等[12]采用FCN实现自然条件成像下的葡萄病害叶片分割,马修斯相关系数达0.821。SegNet在FCN的基础上,设计了编码器-解码器的对称结构,采用最大池化索引优化边界轮廓,引入更多的跳跃式连接结构,可实现端到端的像素级图像分割[13]。王振等[14]采用级联卷积神经网络分割方法,结合多尺度卷积和SegNet,实现了对病斑区域的精准分割。UNet是一个包含压缩路径和扩展路径的对称U型结构的全卷积网络[15],该网络将压缩路径每一特征层通过中心裁剪的方式与扩展路径相同尺寸的特征图拼接在一起,联合高层语义和低层的细粒度表层信息,将低层特征和高层特征有效融合在一起。赵小虎等[16]在UNet的基础上结合多尺度特征提取和注意力机制对番茄病害进行分割,分割准确率达92.9%。UNet++是在UNet基础上结合DenseNet的网络特点设计的,通过跳跃式连接在解码器中可实现更灵活的特征融合[17]。2022年,Bhagat等[18]提了Eff-UNet++网络模型,该网络在UNet++的基础上,采用EfficientNet-B4[19]作为网络的编码器,通过重新设计的跳跃式连接结构提升了网络的性能并降低了参数量,最后用解码器将低级到高级的特征进行聚合。

现有的基于深度学习技术的分割模型虽然比传统的图像分割方法实现了更好的分割效果,但是仍存在病斑边缘分割模糊和病斑发病初期分割难的问题。针对上述问题,本文提出一种改进的基于UNet++的葡萄病斑分割模型。该模型采用自适应软阈值方法解决葡萄病斑边缘模糊的问题,利用多尺度特征融合方法提高特征提取效率识别小病斑。根据模型分割结果,可进一步评估作物的病害危害程度,并实现病害分级。

1 材料与方法

1.1 数据集

1.1.1 数据来源

选取PlantVillage数据集(https://www.kaggle.com/datasets/abdallahalidev/plantvillage-dataset)中的葡萄黑腐病叶部病害图像用于实验。经过筛选,共获得270张葡萄黑腐病原始图片。图1给出葡萄黑腐病叶部病害样本的示例。通过图示观测发现,实现病斑和叶片分割的难点主要包括:1)受光照带来的噪声干扰,叶片和病斑边缘存在阴影,导致叶片和病斑边缘模糊;2)部分病斑处在发病初期,病斑面积小,颜色纹理暗淡,增大了分割难度。

图1 病斑原始图像

1.1.2 病斑标注

PlantVillage数据集中的葡萄黑腐病图像可用于训练病害检测模型,但要训练分割模型,还需要对病斑和叶片进行像素级标注(图2)。像素级标注费时费力。病斑目标小、数量多,给标注带来极大的困难。本文按照样本类别多元、分布平均和成像清晰的原则对病害图像进行数据筛选,使研究数据集尽可能包含大病斑、相连病斑、密集小病斑和暗淡病斑等分割难易不同的样本图片,并让各类样本数量相对平均。对原始葡萄黑腐病病害图片使用语义分割标注工具LableMe进行标注。

图2 病斑原始图像(a)和经过标注的图像(b)

1.1.3 数据增强

过少的训练集会使模型出现过拟合现象。为了提高模型的泛化能力,常采用数据增强技术扩充数据集[20]。本文主要采用以下数据增强技术扩充数据集:1)颜色抖动,即通过明暗处理改变图像亮度,确保参数符合自然环境状态,避免图像失真,分别模拟强光和弱光拍摄状态,进行增加20%亮度和降低10%亮度的处理;2)旋转,对图像分别进行90°和180°的旋转,模拟采集样本时拍摄角度的随机性。经数据增强,获得扩充图像1 080张。最终的样本集中,原始图像与扩充图像总计1 350张。将部分数据增强的示例照片列于图3。

1.2 基于改进的UNet++的葡萄病斑和叶片图像分割模型

本文采用五折交叉验证进行模型的训练与测试。首先,将原始图像与对应的人工标注图像分为5组,每组包括原始图像54张,对其中4组进行数据增强,将这4组原始图像(共216张)及其扩充图像(共864张)作为训练集,共1 080张图像,剩余一组原始图像(共54张)作为测试集,如此循环训练5次,直到所有270张原始图像均经过测试为止。

1.2.1 改进的UNet++网络模型

为了解决葡萄病斑目标小和边缘模糊,易使模型出现过分割或欠分割现象的问题,设计了一种基于UNet++的改进的网络模型,该模型主要由编码器、解码器和跳跃式连接3部分组成,整体结构如图4所示。输入图像的尺寸为256 pixel×256 pixel。为了提高模型精度、增强模型稳定性,将图像随机缩放到原图像的50%~200%,经随机翻转、裁剪和标准化处理,获得224 pixel×224 pixel的图像。编码器结构由多个卷积收缩块(convolutional shrinkage block, CSB)和下采样模块共同组成。其中,卷积收缩块可加强特征识别能力,消除噪声影响;下采样模块将特征图的尺寸缩小为上层的一半。解码器部分同样包含CSB和上采样模块,其中,上采样模块采用双线性插值法将特征图的尺寸增加1倍。密集式跳跃连接结构包含长连接和短连接,通过特征重用加强特征图信息的传递。不同尺度的特征图包含的信息不同:小尺度特征图能很好地表达语义信息,但分辨率较低;大尺度特征图分辨率更高,但语义信息较弱。横向输出层将不同尺度的特征图拼接在一起,使融合后的特征图既具有高的分辨率又具有较强的语义信息。

1.2.2 卷积收缩块

消除噪声对准确获取图像特征信息具有重大作用。CSB能够加强图像特征提取,削弱噪声影响,从而实现对病斑和叶片更有效的分割。

软阈值化(soft thresholding)是一种过滤噪声的常见方法,如式(1)所示。

(1)

式(1)中:x表示输入特征,y表示输出特征,τ表示阈值。该方法将有用的信息转换为正负值很大的特征,负数特征同样获得保存,而噪声信息则转换为接近0的特征被过滤掉。在式(1)中,阈值τ不能是一个太大的正数,过大的正数会使得有用的信息也被当作噪声,从而导致输出特征只能为0。软阈值化函数的导数为0或者1,可以很好地防止梯度消失和梯度爆炸的问题。

在传统的去噪方法中,如何人工设计一个合适的阈值是值得思考的问题。CSB将软阈值化和深度学习结合起来,通过自动学习代替人工设计提供一个自适应软阈值[21]。

UNet++结构中的每一层下采样前都会堆叠2个卷积层来调整特征图通道。本文在原结构基础上增加1个收缩层,在改变特征图通道的同时加强特征提取。改进后的CSB如图5所示。

Conv(3×3)表示3×3大小的卷积,BN表示批标准化,Relu表示激活函数ReLU,Absolute表示特征图的绝对值,GAP表示全局平均池化,FC表示全连接,Sigmoid表示激活函数Sigmoid。

输入特征图首先经过2个卷积层调整图像尺寸和通道,然后输入到收缩层中。在收缩层中,特征图的绝对值先经过全局平均池化降维成一维向量,然后连接2个全连接层,其中,第二个全连接层的输出神经元个数等于输入收缩层的特征图通道数。接着,对每一个神经元进行Sigmoid处理,防止阈值过大,使得该尺度向量参数的每一个值都处在0、1之间。为了避免阈值为负数,将尺度向量参数与收缩层输入特征图的绝对值的通道平均值相乘,得到每一个通道的阈值τ。最后,对输入特征图做软阈值化处理,过滤噪声,剔除冗余信息,获得加强特征图。

1.2.3 改进的跳跃式连接结构

UNet++结构中的跳跃式连接使得每一个节点之间都相互连通,提供了丰富的语义特征;但这些密集式的连接使得模型具有大量的参数,计算复杂度高。改进的跳跃式连接在不丢失语义信息的情况下降低了计算复杂度,将输出映射到横向输出层中,经过上采样,将不同尺度的高层和低层特征图聚合在一起,实现最后的分割(图6)。其特征图Xi,j的计算方法如下:

图6 UNet++(a)和改进后(b)的跳跃式连接结构

(2)

式(2)中:Xi,j表示节点特征图的输出,上标i表示跳连深度,上标j表示跳连宽度;Conv( )表示卷积运算;D( )表示下采样运算;Up( )表示上采样运算;[]表示特征图拼接操作。

1.2.4 组合损失函数

在深度神经网络的迭代过程中,损失函数常被用来计算前向计算结果与真实值的差距,可表示模型预测值与样本真实值之间的差异程度,损失函数越小,模型越稳健。

交叉熵主要用于度量两个概率分布间的差异性信息。多类别交叉熵损失函数(CE loss,LCE)的表达式为

(3)

式(3)中:N为样本总数,P为输出灰度图的像素总数,i表示第i个训练样本,j表示第j个像素,tji表示第i个训练样本第j个像素的真实值,yji表示第i个训练样本经过网络输出后第j个像素的预测值。

Dice损失函数(Dice loss,LD)直接使用预测概率而非阈值将每个类别分开计算,然后平均得到最后结果。Dice损失函数的表达式为

(4)

式(4)中:P为输出灰度图的像素总数,i为第i个像素,ti表示第i个像素的真实值,yi表示第i个像素的预测值。

Dice损失函数是一种区域相关的损失,更关注对前景区域的挖掘。某像素点的损失和梯度值不仅与该点的标签和预测值相关,还与其他点的标签和预测值相关;因此,Dice损失函数容易出现损失饱和的问题。交叉熵损失函数平等计算每个像素点的损失,当前损失只和当前预测值和真实值有关,如果正样本占比较小时,就会被更多的负样本淹没,使得预测效果较差。病斑像素通常在图像中的占比较小,像素类别不平衡;因此,单独使用上述两种损失函数中的任意一种都不易取得较好的结果。将Dice损失函数和交叉熵损失函数进行线性加权组合,可在关注整体图像损失的同时,更注重前景目标的损失,有效提升模型的预测能力。

L=α*LCE+β*LD。

(5)

式(5)中:L表示构建的损失函数;α和β分别为LCE和LD的权重系数。

1.3 评价指标

为了评价模型的分割效果,引入像素准确率(pixel accuracy, PA),交并比(intersection over union, IoU),平均交并比(mean intersection over union, MIoU),Dice系数(Dice coefficient)4个评价指标。

PA是指预测正确的像素个数占总像素的百分比;交并比是指某类别像素真实值和预测值的交集除以像素真实值和预测值的并集;平均交并比是指对所有类别交并比求平均值;Dice系数是一种用于评估两个样本相似性的度量函数,取值范围在0、1之间,取值越大表示越相似。

1.4 病害程度分级

病害等级划分在植物病害程度分级和植物病害防治上具有重要作用。一般,采用病斑占叶面积的比例来进行病害等级划分[22]。

用训练过的模型对病害图像进行预测,获得对应图像像素点预测分类后的矩阵,每一个像素点取值为0、1、2其中之一,0代表背景,1代表叶片,2代表病斑。计算病斑占叶面积的比例后,依据国家标准GB/T 17980.47—2000《农药 田间药效试验准则(一) 除草剂防治根菜类蔬菜田杂草》进行病害等级划分:0级,无病斑;1级,病斑占比≤5%;3级,病斑占比5%~<10%;5级,病斑占比10%~<25%;7级,病斑占比25%~50%;9级,病斑占比>50%。样本图像中不包含0级和9级。

1.5 实验配置与模型参数

利用Pytorch框架在Windows 10系统下进行模型实验。硬件配置为:Intel(R) Xeon(R) CPU E3-1225 v5处理器,主频3.31 GHz,硬盘2 T,内存16.0 GB, Nvidia GTX 1080Ti型显卡。软件环境为:Python 3.7.13,Pytorch 1.10.0,Cuda 10.0,Cudnn 7.6.3。

在网络模型的训练过程中:优化器为SGD(stochastic gradient descent,随机梯度下降),学习率为0.001,动量为0.9,权值衰减率为0.000 01,训练次数1 000次,批尺寸大小为4。

2 结果与分析

2.1 参数优化与消融实验

2.1.1 参数优化

为了测试损失函数中的权重系数对实验结果的影响,对改进模型分别采用权重系数α和β的不同组合进行实验。当α保持不变,β逐渐增加时,病斑的IoU不断提升,叶片和背景IoU先增加后减小(表1);当β保持不变,α逐渐减小时,病斑IoU下降,叶片和背景IoU先增加后减小。为了能够准确实现病害程度分级,叶片和病斑的分割效果同等重要,综合考虑,采用如下组合方案,令α=0.8,β=1.0。

表1 不同权重系数组合对分割结果的影响

2.1.2 消融实验

为了进一步验证组合损失函数的效果,对改进模型分别采用以下3种损失函数训练模型:1)单独的交叉熵损失函数,2)单独的Dice损失函数,3)组合损失函数。对比发现,组合损失函数的IoU提升更快,模型收敛更快,分割精度更优(图7)。

IoU, Intersection over union.

2.2 模型性能对比

为了测试改进模型的效果,分别使用改进的UNet++模型和FCN、UNet、UNet++模型进行实验。改进后的模型在对小病斑和病斑边缘的分割效果上优于其他网络模型(图8),能分割出其他网络模型未分割出的小病斑,而且对病斑边缘轮廓的分割更加细致,能区分相连的病斑。

从评价指标(表2)上分析:FCN对病斑的分割效果最差;UNet的分割效果较FCN有所提升;UNet++在UNet的基础上平均交并比提升1.807百分点;在UNet++模型的基础上加入CSB后,模型的MIoU进一步提高4.251百分点。本文提出的改进的UNet++模型的PA为98.433%,MIoU为92.056%,Dice系数为0.941,相较于UNet++模型,上述指标分别提高1.289百分点、6.279百分点和0.055,其中,对病斑IoU的提升效果最明显,较UNet++提升14.514百分点,至81.230%。

表2 基于评价指标的不同模型分割效果对比

2.3 特征可视化

随机从葡萄病害数据集中选取3张病害图像,采用梯度加权的类激活映射(gradient-weighted class activation mapping, Grad-CAM)对改进的UNet++模型的最后一层卷积层进行特征可视化。采用Grad-CAM可以观察到网络所关注的高响应图像区域(图9),实验结果表明,本文提出的改进的UNet++模型在聚焦病害数据集的叶片和病斑特征上具有良好的性能。

A~c,原始图像;d~f,本文模型关注于叶片时的响应区域热力图;g~i,本文模型关注于病斑时的响应区域热力图。红色表示高贡献度,蓝色代表低贡献度,颜色越深,贡献度越高。

2.4 病害程度分级

病害分级实验结果显示,模型对叶面积预测结果的平均误差为2.17%,对病斑面积预测结果的平均误差为5.74%。用训练过的模型对样本图像中的病害等级进行划分(表3),平均准确率达97.41%,说明本文模型对葡萄黑腐病的识别、分级效果优异。

表3 病害等级分级结果

3 结论

实现叶片和病斑区域的准确分割是葡萄病害图像检测与评级的首要任务。本文针对葡萄黑腐病叶片病斑边缘模糊、病斑初期面积小且纹理暗淡的问题,提出了一种基于改进UNet++的图像分割模型。本文模型使用自适应软阈值细化病斑边缘,通过多尺度特征融合聚合低层特征图高分辨率信息恢复小病斑特征,并在模型训练过程中,采用加权组合计算损失。本文模型相较于FCN、UNet和UNet++取得了更好的分割效果,像素准确率为98.433%,平均交并比为92.056%,病斑交并比为81.230%,叶片交并比为96.772%,背景交并比为97.833%,Dice系数为0.941,有效提高了对病斑的分割精度。根据病斑占叶面积的比例对样本图像中的葡萄黑腐病病害程度进行分级,分级准确率达97.41%。然而,本模型主要面向小范围单一叶片进行研究,虽然在训练过程中通过模拟光照、调整角度等增强模型的泛化性,但自然环境中存在更多恶劣因素,如多叶片遮挡、单叶片多病害等。今后,还需针对这些问题做更深入的研究。

猜你喜欢

病斑损失葡萄
少问一句,损失千金
胖胖损失了多少元
葡萄熟了
当葡萄成熟时
改进自适应分水岭方法分割棉花叶部粘连病斑
玉米抽穗前倒伏怎么办?怎么减少损失?
一种桑轮纹病病叶发病程度的评价指数
9种药剂防治山核桃干腐病试验研究
一般自由碰撞的最大动能损失