采用YOLO算法和无人机影像的松材线虫病异常变色木识别
2021-10-12黄丽明王懿祥刘青华
黄丽明,王懿祥,徐 琪※,刘青华
(1.浙江农林大学环境与资源学院,杭州 311300;2.浙江农林大学,省部共建亚热带森林培育国家重点实验室,杭州 311300;3.浙江农林大学,浙江省森林生态系统碳循环与固碳减排重点实验室,杭州 311300;4.中国林科院亚热带林业研究所,杭州 311300)
0 引 言
松材线虫病(Pine Wilt Disease,PWD)是中国乃至全球森林生态系统中最具危险性、毁灭性的病害之一[1]。近年来,松材线虫病传播速度加快,危害日益加重,截至2020年,松材线虫病已在中国18个省726个县级行政区发生[2],危害对象由马尾松(Pinus massomiana)、黑松(Pinus thunbergii)扩大到红松(Pinus koraiensis)、落叶松(Larix gmelinii)等种类[3],疫情直接威胁中国近6 000万hm2松林资源安全。松材线虫病异常变色木的监测是松材线虫病防控的关键,通过监测可以及时掌握病害情况并据此做出相应的防治工作,有利于松材线虫病的治理。
在各县市的疫情防控中,异常变色木调查大部分采用人工地面调查的方法。人工地面调查耗时耗力,地势险要区域人员无法到达,不利于松材线虫病防治工作的开展。近年来随着无人机技术的发展与普及,无人机遥感开始运用到松材线虫病异常变色木监测中。无人机能够快速采集大面积的高分辨率影像,解决地面调查面临的人力资源不足、覆盖率低、效率低、不及时等问题[4],在松材线虫病的监测中展现了巨大的潜力。
松树受到温度、水分、营养等非生物因子的胁迫或遭遇病虫害侵袭等生物因子影响后,绿色的松针叶易发生变色(黄色、黄褐色或红色),呈现枯死状[5]。无人机遥感监测松材线虫病最关键的技术问题是如何高效、准确地从无人机影像上识别出松材线虫病异常变色木。目前,利用遥感影像识别异常变色木的方法主要有目视识别和自动识别。目视识别效率低,主观性大,故一些学者利用无人机影像开展了异常变色木自动识别的研究。刘遐龄等[6]基于研究区无人机影像,用模板匹配和面向对象的方法对松材线虫病异常变色木进行自动化识别,提升了监测效率。李浩等[7]用最大类间差和超绿特征因子相结合的方法,对研究区松木进行二值化,从而区分健康松木和病虫害松木,实现对无人机遥感影像中的松树病害木的有效提取。近两年有学者开始将深度学习算法运用到异常变色木的识别中。徐信罗等[8]利用Faster R-CNN算法,根据异常变色木冠幅的大小修改锚框尺寸,自动识别异常变色木并对异常变色木进行定位,考虑了红色阔叶树对识别的干扰,提高了精度的可靠性。张瑞瑞等[9]使用U-Net网络对无人机影像进行分割,并与人工绘制的变色木标记进行对比,用得出的混淆矩阵来评估分割精度,精度达到95.17%,进一步提高识别精度。目前现有的自动识别方法已经能够识别无人机影像上中晚期的松材线虫病异常变色木,但试验区域普遍较小,识别精度还有待进一步验证和提高,识别速度较慢,识别精度和效率还不适用于大范围的松材线虫病监测。
YOLO(You Only Look Once)是一种深度学习目标检测算法,通过一次检测,得到物体的所属类别和位置[10-13],相比于 RCNN(Regions with Convolutional Neural Networks)系列[14-16]物体检测方法,其运算时间短、速度快、成本低,更加适用于松材线虫病异常变色木的快速识别。很多学者运用YOLO算法在相关领域进行研究,Laroca等[17]对卷积神经网络CNN(Convolutional Neural Networks)进行微调,并采用一些数据增强方法,对车辆进行自动识别,提高车辆的识别精度。吕石磊等[18]提出了一种YOLOv3-LITE轻量化目标检测算法,采用GIoU损失函数和轻量化主干网络来提高柑橘的识别精度和效率。 Chen等[19]基于YOLO算法对电子部件进行检测,对模糊图像进行超分辨率重建,扩展了数据集,使得识别精度提高,鲁棒性和实时性增强。
目前的YOLO系列包含YOLOv1~YOLOv5,其中YOLOv4算法在检测速度和检测精度上的表现较为平衡,是目前应用最广泛的目标检测算法[20],因此本文基于YOLOv4算法进行研究。为了进一步提高松材线虫病异常变色木的识别效率和识别精度,本研究对YOLOv4算法进行改进,在主干特征提取网络中采用倒残差结构块(Inverted Residual Block),以提取更多的初步有效特征,提高识别的精度;在加强特征提取网络中使用深度可分离卷积块(Depthwise Separable Convolution),减少网络的参数量,减小模型;去除低层定位特征向上传递部分,简化了模型结构,提高识别速度。利用改进后的YOLO算法对松材线虫病异常变色木进行自动识别,以期提高异常变色木的识别精度和识别效率,从而达到对松材线虫病有效防控的目的。
1 研究区概况
研究区位于浙江省杭州市临安区(30.24°N,119.73°E),属于亚热带季风气候,雨量充沛,全年平均气温为16.4 ℃,平均相对湿度为70.3%,年降水量为1 613.9 mm[21],环境利于松墨天牛生存,是松材线虫病爆发的重要区域,疫情较为严重。如图1所示,将西径山和宝塔山作为研究区,其中,西径山面积5.5 km2,海拔在100~250 m之间;宝塔山面积2 km2,海拔在50~100 m之间,距离西径山5 km左右。两个研究区多为马尾松天然林,混交栎树和硬叶阔叶树,马尾松树种比例在50%~90%之间,大部分区域的林分郁闭度在0.7~0.9之间,松材线虫病比较严重。将研究区划分为1个训练区和2个测试区,其中训练区和测试区1位于西径山,测试区2位于宝塔山。训练区的图片用于算法模型的训练,测试区有格式用于测试训练模型在参与训练区域的异常变色木的识别精度,测试区 2的图片用于测试模型在未参与训练区域的识别精度。
2 数据与方法
2.1 数据获取
使用 CW-007型无人机获取西径山和宝塔山的无人机光学影像。CW-007无人机搭载的成像设备为 SONY ILCE-7RM2型相机,传感器尺寸为35.9 mm×24.0 mm(全画幅),相机像素为4 200万,相机焦距为35 mm。影像获取时间为2020年10月14日,采用等高垂直摄影的方式,飞行高度为525 m,旁向重叠率和航向重叠率为75 %,共获取1 349张影像,其中西径山有842张,宝塔山有507张,影像分辨率为6 cm。
2.2 数据处理
对每幅影像进行质量检查,将无效影像删除。松材线虫病异常变色木识别对颜色的饱和度和亮度要求较高,但由于受到空气中杂质的影响,原始影像色彩亮度不鲜明。使用暗通道去雾方法[22]对原始影像进行处理,去雾处理可以使影像颜色饱和,亮度提高,有利于松材线虫病异常变色木识别。由于原始影像像幅过大,如对原始影像进行降采样,会减少可用特征,为了更好地获得图像的特征信息,对去雾处理后的影像进行裁剪分幅,分幅大小为500×500,单位为像素。
分析研究区的影像并进行实地调查,可以发现感染了松材线虫病的松树树冠在无人机可见光影像上呈现黄绿色、红褐色和褐色,与健康松树存在明显区别。研究区中还存在红色阔叶树和枯死木,红色阔叶树树冠颜色呈现黄色或红褐色,枯死木树叶脱落,树枝颜色呈现浅灰色或者灰褐色,两者与松材线虫病异常变色木的颜色和特征较为相似。异常变色木、红色阔叶树和枯死木的影像如图2所示。枯死木和红色阔叶树不含有松材线虫,并不需要清理,但这两类树会对识别产生干扰,因此将识别目标分为3类:异常变色木、枯死木和红色阔叶树,同时进行模型训练和识别,提高模型对三类相似目标的区分能力。
根据影像判读和实地调查结果,利用LabelImg软件对裁剪后的训练区图片进行标注,共获取有目标标注图片4 208张。将标记好的样本以4:1的比例随机分为训练集和验证集,其中训练集包含3 366张图片,验证集包含842张图片。将测试区1中得到的7 129张裁剪后的影像作为测试集1,将测试区2中得到的5 412张裁剪后的影像作为测试集2。对研究区中的松材线虫病异常变色木、枯死木和红色阔叶树的数量进行统计,如表1所示,其中异常变色木有3 464棵,枯死木有1 565棵,红色阔叶树有310棵,可以看出整个研究区松材线虫病异常变色木的数量最多,疫情比较严重,除异常变色木外,枯死木的数量也比较多,经实地调查,多为往年未清理的松材线虫病异常变色木,但红色阔叶树数量比较少。
表1 数据集中异常变色木、枯死木和红色阔叶树的数量统计Table 1 Statistics of the number of abnormally discolored tree,withered or dead tree and broad-leaved tree with red foliage in the data set
2.3 改进的YOLOv4算法原理
YOLOv4 算法由输入(Input)、主干网络(Backbone)、颈部(Neck)和预测(Prediction)4个部分组成。本研究针对YOLOv4算法在松材线虫病异常变色木的识别中容易出现特征提取不足和识别效率低的问题,对YOLOv4算法的主干网络、Neck部分进行改进,改进的YOLO算法的结构图如图3所示。在主干特征提取网络中,用MobleNetV2替代 YOLOv4中的 CSPDarkNet53,MobleNetV2主要由3个6层、7层、4层的倒残差网络堆叠构成,并将其作为Neck部分的输入。倒残差结构先用扩展层来扩展维度,再用深度可分离卷积提取特征,最后使用投影层压缩数据,使网络变小。倒残差结构可以减少参数数量,增强梯度跨层传播能力,提高特征表达能力[23]。在Neck部分,用深度可分离卷积替代部分模块中的标准卷积。深度可分离卷积块可以通过两次卷积实现,首先对3个通道分别做卷积,输出3个通道的属性,然后用1×1×3的卷积核对3个通道再次做卷积。深度可分离卷积可以减少网络参数量,节约计算成本,提高识别效率[24]。松材线虫病异常变色木的识别重点在于确定是否有变色木,对定位精度要求不高,改进后的YOLO算法去除了Neck部分的低层定位特征向上传递部分,简化了模型结构,提高了识别速度。改进后的YOLO算法可以获取更多异常变色木的特征信息,又可以降低检测任务的计算成本,提高了异常变色木的识别精度和识别效率。
2.4 试验平台和参数设置
试验使用Windows10操作系统,电脑配备32 G内存,Intel(R)Core(TM)i7-8700k CPU@3.70 GHz,NVIDIA GeForce RTX 2080GPU,使用Pytorch作为深度学习框架,CUDAToolkit10.1,cuDNN7.5.6。参数设置如下:设置100个迭代周期(Epoch),初始的学习率为 0.001,学习率动量为 0.9,非极大值抑制 NMS(Non-Maximum Suppression)的阈值为0.6,置信度阈值为0.1,测试时 IoU(Intersection over Union)的阈值为0.5。
2.5 评价指标与方法
利用平均精度(Accuracy Precision,AP)、训练时间、参数大小和测试时间 4个评价指标来评估改进的YOLO算法的性能;利用准确率(Precision,P)、召回率(Recall,R)和F1分数[25]来评估改进算法的测试精度。平均精度是指在不同召回率下准确率的均值[26],F1分数表示准确率和召回率的调和平均数。
保持训练平台、配置信息和数据集等不变,将改进的 YOLO算法与常用的目标检测算法 Faster R-CNN、EfficientDet、YOLOv4和YOLOv5进行对比,采用不同算法分别对相同图片进行训练和检测,比较不同方法的平均精度、训练时间、参数大小和测试时间。为检验改进的YOLO算法在未参与训练的区域是否具有适用性,利用西径山训练区的训练模型对西径山测试区(测试区 1)和宝塔山测试区(测试区2)的异常变色木进行识别,对比未参与训练区域和参与训练区域的准确率、召回率和F1分数。
3 结果与分析
3.1 不同算法的性能对比
不同算法对测试区1影像的识别结果如表2所示。在平均精度上,改进算法的平均精度达到了80.85%,比Faster R-CNN、YOLOv4和YOLOv5分别提高了1.25%、3.02%和3.49%,但与EfficientDet相比,平均精度降低了0.42%;在训练时间上,改进算法每一个迭代周期的训练时间为164 s,比Faster R-CNN,EfficientDet和YOLOv4分别减少了187、172和115 s,但比YOLOv5增加了26 s;在参数大小上,改进算法的模型参数大小为44.23 MB,比 Faster R-CNN和 YOLOv4分别减小了 477.35和199.69 MB,但比 EfficientDet和 YOLOv5增大了 29.62和17.27 MB;在测试时间上,改进算法对于单张影像的测试时间为 17 ms,比 Faster R-CNN、EfficientDet和YOLOv4算法分别减少了68、33和7 ms,但比YOLOv5增加了9 ms。Faster R-CNN和YOLOv4在平均精度、训练时间、参数大小和测试时间上的表现都不如改进算法;在平均精度和参数大小上,EfficientDet优于改进算法,但在训练时间和测试时间上,EfficientDet已经不能满足高效识别的要求;YOLOv5在训练时间、测试时间和参数量大小上的表现优于改进算法,但测试的平均精度低于改进算法,在异常变色木识别任务中,对精度的要求更高,所以改进算法优于YOLOv5。综合比较平均精度、训练时间、参数大小和测试时间,改进的 YOLO算法具有更好的性能。
表2 不同目标检测模型的性能对比Table 2 Comparison of performances of different models for object detection
3.2 改进算法的性能评价
改进的YOLO算法在测试区1(建模区域)和测试区2(未建模区域)的识别结果如表3所示,在测试区1中,从633棵异常变色木中正确检测582棵异常变色木,误判109棵,漏检51棵,准确率和召回率分别为84.23%和91.94%,F1分数为87.92%;在测试区2中,从865棵异常变色木中正确检测出 708棵异常变色木,误判 109棵,漏检 157棵,准确率和召回率分别为 86.66%和81.85%,F1分数为84.18%。测试区2的准确率高于测试区1,表明改进算法在未建模区域也能正确地识别目标。测试区2的召回率低于测试区1,表明改进方法在建模区域识别目标更加全面。在F1分数上,测试区2略低于测试区1,但基本满足异常变色木的识别需求。
表3 测试区异常变色木的检测结果Table 3 Testing results of abnormally discolored tree in the testing area
测试结果表明改进的 YOLO算法具有良好的性能,训练后的模型具有良好的适用性,同一模型在“未参与训练”区域和“参与训练”区域均具有较高的识别精度,识别精度基本满足了松材线虫病异常变色木的识别需求,可以应用于不同地区的松材线虫病异常变色木的识别。
3.3 影响精度的因素分析
对检测结果进行分析发现,使用改进的YOLO算法对松材线虫病异常变色木进行自动识别能达到较好的检测精度,同时也会引起漏检和误判。在测试区中数量较多的模型检测示例如图4所示,在图4a中,正确检测出一棵松材线虫病异常变色木;在图4b中,正确检测出2棵枯死木,将1棵阔叶树误判为异常变色木;在图4c中,正确判定出2棵枯死木,将1棵枯死木误判为异常变色木;在图4d中,正确检测出3棵枯死木,但漏检了1棵异常变色木。
对不同类型的误判和漏检的数量进行统计,不同类型的误判和漏检的数量占总数量的比例如表4所示,在测试区1和测试区2中,红色阔叶树和枯死木造成误判的比例分别达到了51.88和28.20 %,异常变色木的漏检比例分别达到了 31.88和59.02%,这3类的比例之和分别达到了83.76和87.22%,是影响精度的主要类型,对精度的影响较大。
表4 不同误判和漏检类型的比例Table 4 Proportion of different types of misjudgment and missed detection %
统计分析测试区1和测试区2的异常变色木误判和漏检的情况,结果表明影响识别精度的主要因素如下:
1)相似地物。测试区中与异常变色木相似的地物主要有枯死木和红色阔叶树。由于相似地物与异常变色木的影像特征相似,颜色和纹理较接近,识别时容易造成异常变色木的误判,从而影响识别的精度。
2)林分郁闭度。统计结果显示高郁闭度的林地存在树冠重叠,会造成部分遮挡或完全遮挡,部分遮挡的变色木树冠形状不完整,形状特征发生变化,识别时容易产生漏检,完全遮挡的则无法识别。
3)坡向。阴坡区域缺少阳光照射,存在阴影,阴影区域的树冠影像亮度低,导致异常变色木树冠颜色昏暗,图像颜色和纹理特征不明显,识别时容易产生漏检。
4)分辨率。由于无人机飞行高度一致,地形起伏会造成分辨率大小的变化,地势高的地方分辨率高,树冠大而清晰,地势低会导致分辨率降低,较小的异常变色木的树冠特征会发生变化,识别时容易产生漏检。
4 讨 论
在松材线虫病异常变色木的监测方面,无人机遥感技术成本低、范围广、灵活性高、效率高,在异常变色木自动识别中得到了良好的应用[27]。本研究利用改进的YOLO算法对松材线虫病异常变色木进行自动识别,F1分数达到了87.92%,基本能够满足松材线虫病防控的需求。与陶欢等[28]提出的 HSV阈值划分方法的总体精度(60%~65%)相比,精度显著提高。本研究的识别精度略低于黄华毅[29]等提出的Fast R-CNN和无人机遥感相结合的方法的正确率(90%),但本研究考虑了红色阔叶树对松材线虫病异常变色木识别的干扰,精度的可靠性更高。本研究测试区域面积较大,使用方法在未参与建模区域也具有较高的识别精度,无需在未建模区域重新制作训练样本和训练模型,可以提高识别效率。
本研究根据松材线虫病传播速度快的特点,对YOLOv4算法进行改进,精简的目标检测框架可以加快检测速度。改进后的YOLO算法对单张影像的测试时间为17 ms,比YOLOv4少7 ms,当检测数量过大时,改进的YOLO算法在图像识别上花费的时间将比YOLOv4少的多,可以满足大范围监测的需求。改进的YOLO算法减小了参数量和模型大小,降低识别程序对硬件设备的要求,提高了识别的效率,可以实现松材线虫病异常变色木实时无人机监测,实时掌握林区病虫害情况,追踪疫情的发展,满足了松材线虫病防治对时效性的需求。
松材线虫病异常变色木的颜色变化是一个动态的过程,不同阶段的松材线虫病异常变色木的颜色不同[30-31]。感染了松材线虫病的松树早期针叶的颜色无明显变化,但到了中期,树冠颜色呈现黄褐色,后期树冠颜色呈现红褐色或褐色。本文提出的方法只能自动识别出中后期的异常变色木,无法有效识别早期颜色变化不明显的松材线虫病害木,也无法区分松材线虫病异常变色木和其他病害或自然环境胁迫导致的异常变色木。在今后的研究中可以利用多时相松树影像或高光谱影像数据,进一步研究早期松材线虫病害木识别和不同病害的区分。
5 结 论
本研究使用无人机遥感技术获取超高空间分辨率的松树影像,利用改进的YOLO算法对松材线虫病异常变色木进行识别,主要得到的结论如下:
1)使用改进的YOLO算法对松材线虫病异常变色木进行识别,平均精度达到了80.85%,每个迭代周期的训练时间为164 s,参数大小为44.23 MB,单张影像的测试时间为17 ms。Faster R-CNN和YOLOv4在平均精度、训练时间、参数大小和测试时间上的表现都不如改进算法;EfficientDet在平均精度上的表现优于改进算法,但在训练和测试时间上的表现已经不能满足高效检测的需求,而YOLOv5在训练和检测时间上的表现优于改进算法,但平均精度低于改进算法,因此相比于 EfficientDet和YOLOv5,改进算法在速度和精度上的表现更加平衡,具有更好的性能。综合比较平均精度、训练时间、参数大小和测试时间,改进的YOLO算法具有更好的性能。
2)采用同一训练区的训练模型对不同测试区的异常变色木进行自动识别,参与建模的区域与未参与建模的区域的异常变色木的F1分数分别为87.92%和84.18%,未参与建模区域的总体精度虽略低于参与训练建模的区域,但基本可以满足异常变色木的识别要求,表明改进方法的训练模型对不同地区异常变色木的识别具有一定的适用性。
3)相似地物、林分郁闭度、坡向和地势在自动识别时会导致特征获取不充分或特征识别错误,从而产生误判和漏检,会对精度造成影响,但影响较小。