王书志,乔虹,冯全*,张建华
(1.西北民族大学电气工程学院,甘肃 兰州 730030;2.甘肃农业大学机电工程学院,甘肃 兰州 730070;3.中国农业科学院农业信息研究所,北京 100081)
病虫害是农作物减产的主要因素之一[1]。开发快速、准确的病虫害检测技术,及早识别病虫害类型,是减少损失的重要手段。叶片病害区域的分割是作物病害检测、诊断与发病程度评价的关键。常见的分割方法包括基于区域、基于边缘和基于各种优化的分割算法[2–4],但这些分割算法无法在不同天气和照明条件下稳定地分割不同病害对象,适应性较差。近年来,以深度学习为代表的新方法在开放图像数据集的图像识别、目标检测和图像分割等视觉任务中精度和可靠度已大幅提高。
目前作物病害图像分割大多采用全卷积神经网络(fully convolutional networks,FCN)[5]及改进算法,在训练数据充分条件下,分割效果远超传统分割算法[6],但当模型在与训练集样本分布差异大的数据上性能显著下降,实用性降低。为了克服这一缺点,通常采用结合显著性目标检测(salient object detection,SOD)的分割策略对叶片病害区域进行分割。笔者采用卷积神经网络构建SOD 网络[7–11]来提取全局特征和多种分辨率的局部特征并进行融合,提高显著性目标检测的精度;在计算图像显著性图后,采用自适应阈值法对显著性目标(病斑)进行分割,对自然条件下拍摄的葡萄叶片病害进行了病害显著性检测和分割。
葡萄叶部病害数据集包括 A 集和 B 集。2018年7 月到9 月葡萄病害高发季节,于甘肃农业大学葡萄园,用佳能公司 EOS1200D 相机(镜头 EF 75–300 mm Ⅲ),拍摄葡萄叶斑病和由于衰老而出现枯死的叶片图像,组成A 集,共1500 幅图像,原始尺寸均为2448×3264 像素,部分图像拍摄时没有刻意将镜头聚焦在叶片上,而是包括较多背景,模拟了监测摄像头在非人工控制下拍摄的效果。B 集葡萄病害图像主要从网络搜集,这些图像病斑明显,背景简单,照明均匀,包括葡萄白粉病、黑痘病、灰霉病、霜霉病、炭疽病和褐斑病等病叶图像,共122 张。B 集中的图像用来测试网络对未知病害图像显著性检测和分割的效果,评价算法的泛化性能。
采用图1 所示的SOD 网络架构,包含5 列和4行,每列都适用于特定输入比例的特征提取。模型输入352×352 像素图像,输出176×176 像素显著图,再用双线性插值调整回352×352 像素。图中每个方框中的第1 行是模块名称,其他行表示其主要组成。
图1 显著性检测网络的结构Fig.1 Achitechture salient object detection networks
1) 全局特征。图1 的第1 行包含CONV–1 到CONV–5 的 5 个卷积块,它们由 VGG–16[11]组成。这些卷积块包含步幅2 的最大池化层,可将它们的特征图{X1,X2,…,X5}进行 2 倍下采样,得到 5个不同尺度下的特征,即每个特征图的尺寸分别为176×176、88×88、…、11×11。CONV–5 模块用于抽取全局特征XG,该模块中通过3 个VGG 卷积层来计算全局特征XG,其中前2 个卷积层的内核大小为5×5,最后1 个为3×3,3 个卷积层特征通道数均为128。
2) 多尺度局部特征。模块CONV–6 到CONV–10连接到由 VGG–16 组成的 CONV–1 到 CONV–5 处理块,这些卷积层的目标是学习多尺度(5 种)局部特征图{X1,X2,…,X5},每个卷积层具有3×3 的内核大小和128 个通道。
3) 对比度特征。显著特征在整个前景中是均匀的,但同时在前景和背景区域之间是不同的。为了得到这种对比度信息,添加了与每个尺度的局部特征Xi相关联的对比度特征XCi,由第3 行的Contrast模块完成,该模块由平均池化层组成。通过从其局部平均值中减去Xi来计算每个对比度特征,平均池化层的内核大小为3×3。
采用数据集A 进行训练和测试,检测显著性。选择(DCL)[12]、RSDNet[13]、Multi–Context (MC)[14]3 种基于深度学习的SOD算法与本研究算法进行对比研究。在病斑分割方面,则选用与 FCN 算法进行对比,在A 集和B 集分别试验,B 集用于测试算法的泛化性能。
对于A 集,随机选择80%的图像(1200 幅)用于训练,剩余的20%(300幅)用于测试,训练图像的尺寸调整至352×352 像素。为了考察画面复杂度对显著性检测结果的影响,将测试图像分成了简单图像和复杂图像2 组,分别有730 幅和740 幅。简单图像(图2–a)基本只有1 张叶片,背景相对简单;复杂图像(图2–b)有2 张以上较完整叶片,背景杂乱或有明显的阴影。A 集中网络训练时不区分简单或复杂图像,只在测试时作区分。试验前,将A 集的图像先后分3 次随机选出3 组测试和训练图像,3 组测试图像中简单和复杂图像的数量均固定为150 张。用3 组训练样本分别训练出3 个检测模型,用这3个模型对3 组测试样本进行评估,用3 组评价指标的平均值作为衡量各算法性能的依据。
显著性检测算法性能的评价采用maxFβ和均值绝对误差(MAE)作为衡量检测性能指标[10],其中max Fβ越接近 1 越好,MAE 越小越好。
分割性能则采用马修斯相关系数(MCC)[15]作评价指标,MCC 取 1 时,表示预测与真实值完全一致,取0 表示预测结果等同随机预测。
计算机系统 CPU 为 E5–2620V3@2.4GHz,内存为64GB,GPU 为NVIDIA Tesla K40,操作系统为ubuntu 16.04。SOD 网络的开发语言为python,深度学习框架采用 Tensoflow。模块 CONV–1 至CONV–5 采用预训练的 VGG–16 初始化。其他权重系数用正态分布随机初始化,优化方法采用 Adam算法,初始学习率设为 10–6,β1=0.9,β2=0.999。分割试验中的对比算法 FCN 的训练和测试环境为matlab2018b,操作系统为Win10。FCN 训练中网络参数均设置为:初始学习率为 0.001,迭代次数为100,最小批量为8。
图2 A 集葡萄叶片病害样例的显著性检测结果Fig.2 Salience map examples in set A produced by proposed model
所建立算法的病害显著性图检测结果如图2 所示。从简单图像显著性图(图 2–c)可以看出,SOD所检测出的显著性区域(图中高亮部分)与肉眼观察到的病斑区域准确重合,印证所建立算法的有效性及对不同光照的适应性。从复杂图像显著性图(图2–d)检测结果来看,算法对杂乱背景有较强的抑制效果,能较准确检测图像中叶片的病害区域。说明SOD 对不同光照和复杂背景具有良好的适应性。
本研究所建立的算法与其他几种对比算法的量化统计结果列于表 1。可以看出,4 种算法在简单测试图像上maxFβ较接近; MAE 则相差较大,本研究算法均取得了最优结果。
表1 几种显著性检测算法在A 集上的对比Table 1 Experimental results of the proposed salience detection model compared with other models on set A
在复杂图像上,从maxFβ指标看,RSDNet 结果最好,本研究算法次之,但前者仅比后者高0.13%;而从MAE 指标看,本研究所建立的算法结果最佳。与简单图像测试结果相比,4 种算法的评价指标均下降,MC、DCL、RSDNet 和本研究算法在复杂图像上的max Fβ分别比简单图像下降了30.4%、18.6%、16.5%和16.8%,MAE 则分别上升90.1%、77.2%、70.6%和71.7%,这说明图像画面的复杂程度对于算法的检测结果有较大的影响。从 maxFβ的下降幅度与MAE 的上升幅度看,RSDNet 的变化最小,鲁棒性最好,本研究算法的次之,但两者接近。
从两类测试图像的指标平均值看,本研究算法均处于领先,DCL 次之,其次是RSDNet,MC 则最差,说明本研究算法综合性能最佳。
从单张图像测试的平均耗时看,本研究算法仅用0.14 s,说明基本可以实时进行显著性目标检测,只有DCL 算法的5.5%,与对比算法相比有明显的优势。
采用自适应阈值法分割,即对显著性图取阈值,大于某阈值T 的像素被赋予前景标签,小于则赋予背景标签。试验发现,参数k 值取4 左右时有较好的分割结果。由于显著性包含目标区域与周围的对比关系,从图 2 可以看出,部分叶尖和叶脉可能会被赋予较高的显著性,取阈值后这些部分也会被标识为前景(病害),从而降低分割精度。鉴于这些区域面积通常很小,采用了图像处理技术中经典的形态学中的开运算来消除这些微小区域。图 3 给出了葡萄叶部病害图像对应的分割结果,从图 3 中可看出,本研究算法和FCN 算法均能较好地分割出病害区域。
图3 2 种分割方法在A 集上的分割结果Fig.3 Segmental examples of proposed segmentation method and FCN on set A
在A 集和B 集的测试图像上对2 种算法分割效果进行测试,结果表明,本研究算法在A 集和B 集的 MCC 分别为 0.625 和 0.338,而 FCN 的 MCC 分别为 0.689 和 0.072。由于分割模型是用 A 集训练的,测试样本和训练样本均由同一相机在同一场景拍摄,2 种算法在A 集的测试样本上的MCC 值均较高,本研究算法分割方法的MCC 值比FCN 算法低0.064。从图3 可以看出,相比FCN,本研究算法会稍多分割出一些“虚假”的病害区域,它们是原图中剧烈变化的区域引起的,其中部分非病的突变区域面积较大,形态学处理没能将其滤除,这符合显著性检测算法对突变部分敏感的特点。在照明均匀和背景简单的场合,这个特点有助于找到叶片上的病斑,但A 集图像中存在大量阴影和杂乱背景,导致了本研究算法产生更多的假阳性区域,故而本研究算法的MCC 略低于FCN 算法的。
B集完全独立于A集,用来测试分割模型的泛化性能,但B 集图像与A 集图像的病斑特点相差甚远。本研究算法基本可将病斑区域赋予较高的显著性,分割结果也大体能将病斑区域分割出来,如图4所示,FCN 几乎不能正确分割出这些图像中的病斑区域,除了第6幅图像能准确分割外,其余图像分割效果都很差,对第 1 幅图像,FCN 完全分割不出任何病斑区域。
FCN 在B 集的MCC 值急剧下降,仅有0.072,接近随机分割的;本研究算法的 MCC 虽然出现了下降,但其值仍然达到0.338,是FCN 的4.69 倍,说明本研究方法的泛化能力强于FCN 的,这可能得益于显著性检测中加入了像素与周围平均灰度的对比,这在A 集分割试验中虽然增加了假阳性,但在“未见过”的 B 集病害图像上,这一特点却能提高前景的召回率,使得MCC 下降比FCN 算法小得多。
常规卷积神经网络分割模型分割叶片病害图像时不具备处理病斑的先验知识,在跨域图像上分割效果较差。笔者提出了基于显著性目标检测的有监督分割方法,从分割结果看,若训练集与测试集图像来自同一分布,本研究算法分割效果接近经典FCN 算法,但泛化性方面远好于FCN,这对于实际应用有重要意义:毕竟现实中采集训练样本,不可能覆盖各种情形,具有良好泛化性能的算法在实际中更能适应多种场合,因此,本分割方法在精度与泛化性能方面具有良好的平衡性。