基于目标检测算法的松材线虫病染病松树检测
2022-04-06刘顺利刘昌华
刘顺利 刘昌华
(河南理工大学测绘与国土信息工程学院,河南 焦作 454003)
引言
松材线虫病具有极强的传染性,传播途径主要通过传播媒介(主要以松墨天牛为主)进行扩散传播[1]。松材线虫病的防治手段主要是通过实地调查[2],及时发现、确定疑似染病松树的位置,但该方法费时费力,受主观因素影响较大。借助高分辨率遥感影像[3]虽可提取受害松树位置,但易受云雾等天气影响,存在时间滞后性、成本高、分辨率难以达到单株识别的问题。无人机影像[4,5]因获取灵活、分辨率高、时效性强、成本低等优势,在单株染病松树的检测方面得到广泛应用。
基于无人机影像的染病松树检测,主要有面向对象技术和目标检测算法。李卫正等[6]基于无人机影像,采用目视判读的方法进行染病松树的识别,但该方法存在判读效率低和识别精度低的问题;陶欢等[7]对目视解译的人工判读低下问题进行改进,提出基于HVS阈值划分方法识别染病松树,提高人工判读的效率;刘遐龄等[8]提出了模板匹配和面向对象分类相结合的方法,有效提高染病松树识别的效率,同样也存在识别精度较低的问题。针对上述问题,目标检测算法能够提高染病松树检测效率和精度,使得目标检测算法结合无人机影像,在染病松树检测研究日益火热;张瑞瑞等[9]基于U-Net网络松材线虫病变色木识别相比随机森林方法,提高了识别效率;李凤迪等[10]基于改进YOLO v3算法的松材线虫病树检测方法,提升了病树检测的效率和速度。此外,FasterR-CNN应用于立交桥自动识别与定位[11]、铁道扣件定位[12]、茶叶嫩芽图像识别[13]和遥感影像船舶识别检测[14],SSD应用于遥感影像小目标检测[15]、轨道扣件[16]都有着良好的检测效率和识别精度。考虑我国南方每年春秋2次的松材线虫病普查,染病松树砍伐处理措施(择伐为主,皆伐为辅);结合松材线虫病诱发松树感染致死周期(检测范围遴选),以及王震、徐华潮等[17,18]对染病松树光谱特征的研究,将染病中后期阶段的松树作为检测范围,因为该范围内的松树针叶颜色为黄褐色和红褐色与健康松树针叶墨绿色的颜色对比明显,易于检测。
本文采用FasterR-CNN、SSD和YOLO v4这3种典型的目标检测算法,检测松材线虫病普查的无人机影像中的染病松树,通过对模型的评价指标和检测精度进行分析,并引入面向对象的VEG-OSTU方法对比试验,探讨目标检测算法替代面向对象方法应用于染病松树检测的可行性以及最佳模型的确定,为松材线虫病普查工作提供一种新方法。
1 研究区概况
研究区位于广东省阳山县(N24°29′26″~24°29′50″,E112°36′29°~112°37′07″),如图1所示。研究区域面积为0.5902km2,海拔落差179.3m,正射影像图分辨率为0.0653m×0.0653m;该地区属于山地,林区树种是以马尾松为主的松林,气候类型为亚热带季风气候,降雨充沛,最冷月平均温度为18℃,非常适宜松材线虫的生存,在2018年[19]和2021年[20],该地区是广东省松材线虫病爆发的重要监测区域。
图1 研究区概况
2 材料与方法
2.1 数据获取与预处理
本文采用携带RGB相机的大疆精灵4Pro无人机,数据获取时间为2020年11月18日15∶00,考虑研究区域的海拔落差为179.3m,因此将无人机飞行的相对高度设置为200m,飞行的航向重叠率和旁向重叠率分别设为80%和60%,共获取84张影像。利用Pix-4Dmapper软件自动获取数字正射影像图(Digital Orthophoto Map,DOM),使用ArcGIS软件基于像素对数字正射影像图进行栅格数据分割,生成尺寸大小为256×256像素的栅格数据集,获取携带染病松树的训练区图像300张和验证区图像43张。由于深度学习的模型训练需要大量的样本数据,而本文研究区染病松树的数据量较少,所以采用Lightroom软件中图像旋转、图像增强等方法,实现对染病松树训练样本数据的扩充,最终获取携带染病松树的1000张训练图片,共有染病松树1423株。
2.2 数据集制作
染病松树与健康松树的针叶在颜色和形态上的差异,便于区分;但研究区存在部分土壤、其它枯死木、被砍伐的松树以及建筑物等地物,干扰染病松树的检测;干扰地物,如图2所示。为了目标检测算法模型能够训练,首先需要对训练样本数据进行标注;使用LabelImg对染病松树区域进行标注,生成染病松树区域范围的可扩展标记语言(XML)文件,制作Pascal VOC数据集;标注完成后,按训练集∶测试集为9∶1的比例进行随机分配,获取900张图片分为训练集,100张图片分为测试集;此外,验证集图片43张,共有染病松树92株。
图2 研究区内干扰地物类型
2.3 目标检测算法模型
目标检测算法框架主要分为One-stage和Two-stage 2类;基于One-stage的目标检测算法框架能够同时完成回归和分类过程,如YOLO、SSD等,这一类算法的整体检测速度更快,识别精度较低;基于Two-stage的目标检测算法框架主要将检测分为回归和分类2个过程,如Fast RCNN、Faster R-CNN等,整体识别精度更高,检测速度较低。
Faster R-CNN[21]是基于Fast R-CNN算法的基础上,引入区域建议网络(Region Proposal Network,RPN)取代选择性搜索算法,RPN将区域建议提取集成到DCNN,与整个检测过程共享所有图像的卷积特征。RPN在每个位置同时预测目标边界框和类别置信度分数,实现目标检测端到端的训练,提升网络的计算速度。Faster R-CNN使用VGG-16骨干网络,网络由卷积层、RPN、RoI Pooling层、分类和回归部分构成。Faster R-CNN对染病松树的检测流程,如图3a所示。
YOLO v4是在YOLO v3的基础上进行改进,在保证速度的同时,提升了模型的检测精度。该模型主要做出以下改进:采用CSPDark Net53主干网络代替Dark Net-53;SPP+PAN(Path Aggregation Network)代替FPN来融合不同尺寸特征图的特征信息;引入Cut Mix数据增强和Mosaic数据增强;Drop Block正则化。YOLO v4对染病松树的检测流程,如图3b所示。
SSD借鉴了YOLO的网格化和Faster R-CNN的anchor机制的一种目标检测算法,平衡算法的检测精度和检测速度。SSD使用VGG16骨干网络进行特征提取,使用2个分别为3×3和1×1的卷积核的卷积层代替F6和F7,取消VGG16的Dropout层和F8全连接层,增加4个新卷积层,实现网络的全卷积。算法采用分层提取特征,将单级网络划分为6级,每个阶段提取不同语义层次的特征图进行目标分类和边界框回归,多尺度特征图与Anchor机制相结合提升算法对不同尺度目标物的检测能力。SSD检测染病松树的流程,如图3c所示。
图3 目标检测算法检测流程
2.4 评价指标
2.4.1 实验平台
表1 实验环境配置
模型训练时消耗大量的时间,本文主要目的是探讨目标检测算法在松材线虫病疫情普查工作中替代人工踏查和面向对象方法,确定染病松树的株数和位置信息。综合考虑时间成本和经济成本,本文设定的实验环境配置如表1所示。
2.4.2 评价指标
本文算法模型的评价指标采用精确率P(Precision)、召回率R(Recall)、总体精度Fl、每秒检测图片数量FPS(Average Per Second)和平均精度AP(Average Precision)等指标对网络模型的检测与识别结果进行评估;其中P、R、Fl和AP的值越高,代表检测与识别结果越准确;FPS值越高,代表检测速度越快。相关公式:
(1)
(2)
(3)
(4)
(5)
式中,Pt表示检测结果和真实情况相符,均为染病松树区域;Pf表示检测结果和真实情况不相符,误将其它区域当作染病松树区域;Nf表示检测结果和真实情况不相符,误将染病松树区域当作其它区域;T表示每张图片检测所需时间。
3 实验结果与分析
3.1 实验方法
由于实验数据集样本较少,使得模型的泛化能力和稳定性不能有效发挥,模型训练时出现过拟合问题。为了解决该问题,采用5折交叉验证。将训练集样本分成5份,分别将不同的4份样本用于训练、1份用于测试,得到模型的5个损失值;将平均损失值作为最终的模型评价指标。在相同硬件条件下,算法结构越复杂训练速度越慢,影响模型的训练进度。训练参数的设定十分重要;Batch_size大小决定单次训练迭代(Epochs)时间和迭代梯度的平滑程度;学习率(Learning rate)大小影响模型是否收敛及收敛程度。结合实验环境分别对3种模型进行参数调试,最终确定不同模型的最优训练参数,如表2所示。
表2 模型框架训练参数设置
3.2 实验结果与分析
不同的目标检测算法对染病松树这一目标物进行训练,得到各个算法最佳权重文件,对模型性能进行评估。由于本次实验的检测目标只有染病松树,算法模型对染病松树优劣的评价指标有精确率(Precision)和召回率(Recall)、AP、F1和FPS。算法模型的IOU阈值为0.50,其评估结果如表3所示。当不同模型的IOU阈值为0.5时,针对染病松树检测其AP和F1由高到低分别为SSD、YOLO v4、Faster R-CNN;3种模型的精确率由高到低分别为YOLO v4、SSD、Faster R-CNN,即YOLO v4将其它地物检测为染病松树的比例最小;3种模型的召回率由高到低分别为SSD、Faster R-CNN、YOLO v4,即SSD对染病松树的检测效果最佳;造成这一现象的原因可能是样本尺寸为256×256像素,使得尺寸较小的染病松树在图像上的相对尺寸放大,能够被SSD检测出来。
表3 松材线虫病枯死木在不同模型下的准确率、召回率、AP、F1和FPS值
为了验证这3种算法对染病松树的检测效果,在同一验证集上进行染病松树的检测识别,选取涵盖典型地物的原图及检测结果,如图4所示。图4显示,对于较大尺寸的染病松树,Faster R-CNN和SSD都有良好的检测精度和识别效果,甚至存在SSD对于部分染病松树的检测精度高于Faster R-CNN;然而对于较小尺寸的染病松树,Faster R-CNN相比SSD具有更好的检测精度和识别效果;YOLO v4检测染病松树时,尺寸大小不同的染病松树都存在漏检现象。
为了验证不同目标检测算法检测染病松树的性能,引入面向对象VEG-OSTU方法进行染病松树检测对比,基于不同方法的染病松树检测统计结果如表4所示。由表4可知,面向对象的VEG-OSTU方法的F1值为57.9%,基于深度学习的目标检测算法的F1值都在75%以上。此外,SSD算法相比Faster R-CNN和YOLO v4对染病松树有更好的检测效果,SSD的F1值为82.1%,分别比YOLO v4和Faster R-CNN高出5%和3%,表明SSD算法检测染病松树的效果最佳。
表4 验证集染病松树的检测结果统计
4 结论
本文采用Faster R-CNN、SSD和YOLO v4这3种目标检测算法检测感染松材线虫病的染病松树,并引入面向对象的VEG-OSTU方法进行对比实验。实验结论如下。
采用目标检测算法进行松材线虫病染病松树验证,相比VEG-OSTU阈值分割方法的验证时的总体精度57.9%,YOLO v4、Faster R-CNN和SSD分别高出19.2%、21.2%和24.2%;表明使用目标检测算法替代面向对象方法检测染病松树,统计染病松树的株数是可行的。
在相同数据的前提下,采用不同目标检测算法检测染病松树时,SSD比Faster R-CNN和YOLO v4的F1值分别高出3%和5%,其精准率和召回率分别为87.65%和77.17%;相比Faster R-CNN和YOLO v4,SSD算法更能满足森林工作人员对松材线虫病疫情防控的需要,更适合应用于松材线虫病疫区染病松树的检测。