APP下载

基于深度学习和遥感影像的松材线虫病疫松树目标检测

2021-10-20张辉辉乐继旺

关键词:松材松树样本

汪 晨,张辉辉,乐继旺,赵 帅

(义乌市勘测设计研究院,浙江 义乌 322000)

松树在我国广泛分布,是森林生态系统的重要组成部分. 松材线虫病是一种极具危险性的森林病害,松树一旦感染,在几个月内即可死亡[1]. 松材线虫病传播速度极快,防治困难,造成极大的生态灾害和经济损失[2].

在控制松材线虫病传播过程中,早期的监测、评估起着重要的指导作用[3]. 传统的基于遥感影像的监测方法以目视解译为主,效率较低[4-5],而光谱分析[6]、软件模板匹配[7-8]等方法都是利用图像的低级语义,其在复杂场景中的效果并不理想. 染病松树在遥感影像中具备一定的辨识度,其颜色、纹理、局部特征甚至一些更深层的信息(见图1),都存在着进一步挖掘的可能.

图1 染病松树现场照片(左)与遥感影像图片(右)Fig.1 Photograph of diseased pine trees(left) and remote sensing images(right)

深度学习是当前计算机视觉领域的研究热门,它可以看作是机器学习的一个分支,它的“深度”是指通过对输入数据多层级信息的挖掘,自动提取所有特征,从而达到有意义的表示[9-10]. 特别是在图像目标检测工作中,相比人工特征提取,深度学习能自动对样本从最浅层的颜色、波段,到形状、纹理,再到一些局部特征、隐藏特征进行提取,逐步进行信息蒸馏、提纯,通过大量的训练循环,得到接近目标值的训练网络,在检测结果上显著优于包括机器学习在内的传统算法,对遥感影像中的油罐、飞机、田径场等目标的识别达到了很高的准确率[11-12].

当前存在两大类主流的深度学习目标检测算法:一类是基于区域建议的算法,即先给出大量的预选框,利用卷积神经网络对每个预选框进行二分类,判别是否为检测目标,代表算法有R-CNN、Fast R-CNN算法等[13];另一类是无区域建议算法,它直接把整幅图像输入神经网络,检测目标类别及坐标,直接给出检测结果[14-15],代表算法有YOLO系列、SSD算法等. 前者检测精度更高,但检测速度较慢;后者能在保持较高的检测精度与小物体的检测能力的基础上,快速完成检测,适用于遥感影像的目标检测[16-17]. 当前,已有多个研究案例基于YOLO算法实现了对遥感影像中飞机[18]、火灾烟雾[19]、海上船舶[20]等目标的检测,达到了较高的检测精度.

为满足管理部门对松材线虫病害防治大区域范围、快速识别、高精度定位的应用需求,本文尝试采用YOLO算法,对基于大幅度、高分辨率无人机遥感影像的松材线虫病疫树木目标检测技术进行研究.

1 研究方法

本研究首要考虑的是遥感影像的目标检测问题,包括精度、效率等,其次,需解决整幅影像的裁切、重复目标消除、坐标换算等问题. 研究路线如图2.

图2 研究路线图Fig.2 Research roadmap

研究首先采集病疫松树样本,在样本训练中通过对YOLO框架的一系列参数调整、算法优化,最终得到较高识别精度的算法模型. 使用滑窗算法将遥感影像按设定尺寸裁切,利用模型对每一块影像进行目标检测. 合并检测成果,使用NMS算法消除重叠区域的重叠框,再按公式进行坐标转换,最终得到研究区染病松树的数量及其精确坐标.

该研究路线保证了较高的检测准确率和效率,同时对大幅影像如何输入模型进行检测提出了解决方法.

1.1 YOLO简介

YOLO全称是You Only Look Once(你只需看一次),意为它在检测时观察整张图像,并通过单一网络评估,而不是像其他网络那样进行多次预测[21-22]. 这是一种能实现实时、多目标的检测算法,由Jeseph Redmon在华盛顿大学攻读博士学位期间提出. 截止2019年9月,YOLO算法已发展到了第3版本,本文选取该版本算法作为研究算法.

图3 预测框与实际框的交并比Fig.3 IOU of prediction box and object box

每一网格需要分别对C个类别进行概率预测,记为Pr(classi|object),由此可计算各类别的置信度,公式如下:

检测时,设置置信度阈值,Pr(classi|object)大于阈值即可认定为检测结果.

1.2 模型训练

依据样本采集原则进行样本采集[18]. 首先在影像中确定样本点,然后以样本点为中心,裁剪416×416像素图片,按照Pascal VOC数据集格式进行目标标记. 标记完成后形成与图片同名的xml文件,文件记录样本照片的目标像素坐标、标签等属性.

本研究共采集制作了718张病疫松树的样本数据集,其中646张用于训练,60张用于验证,12张用于测试.

YOLOv3网络采用预先设定的锚框作为先验框来进行目标检测,锚框是根据已标注的样本数据通过聚类统计得出的最可能的检测目标的形状. 原始的锚框尺寸是根据VOC和COCO数据集聚类得到的,不符合本研究的目标尺寸,需对采集样本数据重新进行聚类分析. 本文采用K-means算法,对样本数据集进行聚类统计,计算得出新的锚框尺寸为(27,28)、(41,38)、(46,50)、(60,69)、(60,58)、(79,84)、(101,89)、(115,116)、(180,163).

训练开始前,引入预训练模型. 预训练模型是卷积神经网络对公开数据集浅层通用特征的提取参数,它能提高训练效率,加强模型的稳定性,有助于提高训练精度. 训练轮次设定为200个epochs,设置初始学习率为0.001,在迭代50次、100次时,学习率分别下降为初始值的1/10、1/100;批处理设为8;学习动量设为0.9;权重衰减正则项系数设为0.000 5. 训练中保留中间过程模型,并通过判断是否有精度提升来决定是否跳出训练.

使用GEFORCE RTX 2060显卡(6G显存),在Windows10操作系统下安装Cuda10.0,以Keras平台下的YOLOv3算法实现作为深度学习框架.

1.3 影像裁切、重复框消除及坐标转换

图片在输入检测模型之后会经历一些缩放处理,如果输入分辨率太高会在压缩过程中损失信息. 综合考虑裁切效率、YOLOv3算法的最小可检测目标、影像分辨率、病疫松树的实际尺寸等要素,确定裁切图片大小为512×512像素;另一方面,需要考虑同一目标刚好坐落在相邻图像边界的情况. 本文采用滑窗算法,以研究区左下角为原点,从下往上,从左往右,按滑动步长为384像素、相邻图像的重叠率为25%进行裁切.

采用非极大值抑制算法(non-maximum suppression,NMS)来消除重叠部分影像的重叠检测框,IOU阈值设置为0.4. 当检测框两两之间交并比大于阈值时,只保留置信度更高的检测框. NMS处理效果见图4.

图4 NMS处理前后效果对比Fig.4 Comparison of effects before and after NMS operation

每一块裁切影像,都在数据库中记录影像名称及其左上角像素中点的平面坐标(xorigin,yorigin). 检测完成后,经NMS处理,将目标的像素坐标(pxpredict,pypredict)换算为平面坐标(xpredict,ypredict). 公式如下:

xpredict=pxpredict*Rresolution+xorigin-Rresolution/2,

ypredict=-pypredict*Rresolution+yorigin+Rresolution/2,

式中,Rresolution代表影像分辨率.

2 实验

本文以义乌市作为研究实验区,义乌位于我国东南沿海的浙江省中部,隶属金华市管辖,市域面积约1 100 km2,在北纬29°02′~29°33′、东经119°49′~120°17′之间. 义乌地处金衢盆地内,地形以丘陵岗地为主,北、东、南三面环山,东阳江自东向西南穿过,在市域中部形成平坦的冲击平原. 气候类型属亚热带季风气候,四季分明,降水丰富. 义乌植物资源丰富,林地以次生林为主,马尾松林群系为市域内分布最广的次生植被群系,占地面积约29 547 hm2,约占全市乔木林面积的59%,其次为阔叶林,面积占比为39%[23].

义乌市自2013年发现首例松材线虫病以来,疫情逐年扩散蔓延,目前全市已有数十万棵松树被感染,林业管理部门急需对全市林区进行疫情调查评估.

2019年9—10月,在夏末秋初松材线虫病高发期,利用纵横大鹏CW-15无人机搭载的索尼a7r相机对测区范围进行航摄. 因航空管制及天气原因,拍摄从2019年9月初开始,持续45 d. 相片经纠正配准后,融合形成宽1~3 km的影像条带,共512幅条带组成覆盖全市域的影像镶嵌数据集(图5),空间分辨率为8 cm,数据格式为tiff,3波段组成,位深为8位整型.

图5 实验区航摄影像条带Fig.5 Stripes of aerial photography in the experimental area

实验过程中,将判别出的目标用红色方框框出,并在上方标记目标类别、置信度. 检测框的置信度取值在0~1之间,置信度越高,代表检测目标的可能性越大、范围框越准. 在分类预测精度上,由于地形起伏、太阳照射角度等原因,同样状态的病疫松树在不同区域的影像上表现不同;在预测框范围准确度上,不同于轮船、飞机等目标具有明确的边界和突出的纹理,目标松树的边界更加模糊,遮挡情况也普遍存在. 因此,本文将置信度的阈值设为0.3.

3 结果与讨论

以准确率Pprecision和召回率Rrecall作为精度评价指标,公式分别如下:

式中,TP为正确检出的病疫松树数目,FP为误检的病疫松树数目,FN为未检出的病疫松树数目.

外业核查小组从北往南依次挑选了7块区域,利用遥感影像与外业调绘软件实地调查,记录染病松树位置与数量,与检测模型精度进行对比. 结果如表1.

根据表1可知,在全部595个病疫松树中,共检测出486个,漏检109个,误检87个,检测模型的准确率为84.8%,召回率为81.7%,接近目视解译方法的检测精度[8].

表1 检测结果统计表Table 1 Statistics table of the detection result

图6示例了单张图片的检测结果,可以看出:检测模型能准确识别出大小不同的染病松树并且框出松树范围(图6(a)、(b));模型具备较强的抗干扰能力,即使影像亮度不足、周围树木颜色形态与目标接近,也能准确识别(图6(c)、(d));当影像质量不佳时,模型易出现错检与漏检(图6(e)绿框);小目标、被遮盖目标也存在一定比例的漏检(图6(f)绿框).

图6 检测结果Fig.6 Detection results

相比飞机、轮船等目标检测90%以上的准确率与召回率,本研究的准确率与召回率较低,这因为一些因素对检测精度产生了一定的负面影响:检测目标所在的背景环境如起伏的地形、针阔林混杂、树冠叠盖等情况普遍存在,远比机场、公路等复杂,而且松树的边界相比人造物更加模糊、难以界定;松材线虫病的病程发展过程中,松树从染病初期到完全枯死,颜色、纹理会产生一系列变化,本研究的样本大多集中在特征最明显的中期,前期、后期样本数较少;由于机场空中管制、天气状况差等原因,研究区部分区域的影像质量较差.

在检测效率上,样本采集与标记、模型训练调参、脚本编写等共花费约100 h,模型训练完成后,平均每平方千米检测仅需3 min,遥感影像裁切、NMS处理、检测成果坐标转换等中间过程全部由脚本批量自动完成,无需耗费人力,检测完成后还需人工二次检查,平均每平方千米耗时约12 min;而经验估算目视解译方法平均每平方千米需耗时1.5 h. 效率对比如图7.

对比可知,除了前期模型训练期进度落后于目视解译,随着检测区域面积的增长,深度学习方法的优势越发明显,其斜率仅为目视解译的1/6. 完成研究区全域检测目视解译需1 600多h,而深度学习方法仅需不到400 h.

4 结论

本文主要研究了深度学习在大幅遥感影像中对松材线虫病疫松树的目标检测及定位问题. 利用高分辨率航摄影像,建立样本数据集,使用K-means 算法对样本数据集进行聚类统计,重算锚框尺寸;采用 YOLOv3 算法训练样本,得到目标检测模型;滑窗裁切大幅遥感影像,逐个检测,经 NMS 处理、坐标转换等步骤后,最终得到研究区枯死松树的数量及其精确坐标. 通过验证,本模型对影像中病疫松树的检测准确率为 84.8%,召回率为 81.7%,达到较高的检测精度. 相比传统的目视解译方法,本模型在检测效率上优势明显,尤其适用于较大范围的检测项目,更能满足管理部门对松材线虫病害防治高精度、快速识别的要求,具有积极的现实意义.

猜你喜欢

松材松树样本
我国启动松材线虫病防控五年攻坚行动
松树郁郁 松树苍苍
用样本估计总体复习点拨
松材线虫病的侵染循环以及病原与病媒的综述
《松材线虫病生态灾害督办追责办法》出台
规划·样本
松树
松树
随机微分方程的样本Lyapunov二次型估计
浙闽两省联防联治松材线虫病