基于深度学习的松材线虫病害松木识别
2021-11-30李浩方伟泉李浪浪陈学永
李浩,方伟泉,李浪浪,陈学永
(福建农林大学机电工程学院,福州 350002)
松材线虫病被称作“松树的癌症”,自入侵我国以来已在多个省份暴发,造成了巨大的经济损失[1]。松材线虫主要以松褐天牛为中间宿主在林区中传播,具有危害性强、防治难度高的特点[2]。健康松木在感染松材线虫后,会在1~2个月内因树株脱水而逐渐枯死,被感染后的松木需要及时发现并就地砍伐掩埋,防止进一步扩散到周边松木。在广袤林区内及时、精准、有效地实现对病害松木的监测,一直是林业病害防治工作中的重点[3]。
而在病害松木监测方面,主要还是依靠护林人员的目测观察和地面普查,该方式存在着时效性差和误差较大的弊端,无法保证林区病害监测的时效性与准确性[4]。随着机器学习与无人机技术的不断发展,在林区病害监测方面的科研工作也取得了一定的进展,使得机器学习手段替代传统人力勘察成为可能[5]。李卫正等[6]利用小型无人机获取病区遥感影像,并结合GeoLink软件定位病害松木,该方法较传统地面普查方法在成本和效率方面具有一定优势。张学敏[7]利用3种支持向量数据描述的方式对遥感影像中的病害松树进行识别,实现了无人机在可见光与红外图像条件下对病害松树的分类识别。刘遐龄等[8]利用模板匹配法识别无人机遥感影像中的病害松木,并通过实地勘查方式证明了该方法在勘测效率和识别精度上均优于传统人工判读方法。刘金沧等[9]利用CRF方法完成了对可见光遥感图像中病害松木的高效判别,为小范围病害精准监测工作提供了切实可行的技术手段。陶欢等[10]提出基于“色调-饱和度-明度”(HSV)的阈值分割法,证明其效果优于RGB阈值分割法,有效提高了人工判读的效率。随着深度学习的出现,YOLO、R-CNN、SSD等基于深度学习手段的目标检测算法逐渐在病害识别和目标分类等领域大放异彩[11],深度学习技术也有效改善了传统机器学习中广泛存在的计算重复和效率低下的问题。
针对当下广泛存在的遥感影像背景复杂、数据获取处理难度高以及深度学习前期数据量较大的情况,笔者基于SSD、YOLO v3、Faster R-CNN深度学习目标检测算法,使用预训练模型调优(fine-tuning)技术减少深度学习网络前期数据量,引入深度残差网络(ResNet)代替VGG16以提高模型训练效率和识别精度,最终实现对林区遥感影像病害松木更加高效精准的判别。
1 图像采集与数据集制作
本次试验地点位于福建省东北部的建瓯市,该地区属于山区且交通不便,当地主要以种植马尾松(PinusmassonianaLamb)为主,属于中亚热带海洋性季风气候,非常适合松材线虫病暴发蔓延,是福建省松材线虫病暴发的重点监测区。为加强本试验的应用性,本次采集样张试验地点共3处,均是被当地林业局确定的松材线虫病暴发集中区域。3个地区地理坐标区间分别为27°3′0″~27°3′9″N,118°8′47″~118°25′38″E;27°0′50″~27°1′21″N,118°19′8″~118°19′38″E;27°14′39″ ~27°15′11″N,118°16′15″~118°16′45″E。病区森林总面积约为3 km2,林区中60%为松树,其余为毛竹以及少量桉树。为确保试验后期对病害松木进行有效验证,选用精灵Phantom 4 RTK无人机,该机搭载像素2 000 万的F1.8镜头,型号为fc6310,像素尺寸为2.41 μm×2.41 μm。由Phantom 4 RTK所拍摄样张中含有厘米级精度的GPS信息,后期可以实现对图像中任意像素GPS信息的提取,从而实现对单株病害松木的精确定位。
本次工作数据采集时间为2019年8—11月,根据病害松木的病情进展特点,采样期间以25 d为时间间隔进行连续性图像采集工作,在提高样张基础数据的同时进一步增强网络的范化性。工作时间设定在上午10:00—11:30,下午2:30—4:00,选择晴朗无风天气,避免航拍过程受强风以及过曝等因素干扰。本次工作拍摄原始图像1 067张,样张尺寸为5 472×3 648,因拍摄期间图像间重叠度较高,剔除不相关背景图像与多余重复图像后剩余423张,再通过裁切、旋转等操作增加321张,最终测试集单张尺寸为1 824×1 824,整体样张数量为744张。按照病害进展过程,松材线虫病理过程主要可以分为3个阶段,如图1所示。
注:a)针叶开始变色,松木蒸腾作用下降;b)松木大部分针叶变成黄褐色甚至红褐色,出现萎蔫;c)针叶大部分变成红褐色,部分病死松木出现干枯褪色,部分针叶出现脱落。图1 松木染病后各阶段进展Fig. 1 Progress in various stages after pine infection
针对林区中病害松木会在同一时期内呈现不同程度病害的情况,利用标记软件labellmg对图像中受到感染的病害松木进行标注,并将病害分为Leve1 1、Leve1 2、Leve1 3共3种标注策略,分别对应感染轻度、重度、病死的松木,并按照整体3∶7的比例随机将数据集分成测试集和训练集。图像采集与数据标注的整体流程如图2所示。
图2 试验区采集与数据集标注Fig. 2 Test area collection and data set annotation
为保证标记过程以及后期验证的准确性,标记分类过程也邀请福建省建瓯市林业局相关专家进行指导,并对后期测试集准确率进行统计,整体标记数据如表1所示。
表1 病害松木标注Table 1 Labeling of diseased pines
2 基于深度学习的目标检测
目前,基于深度学习的目标检测框架主要分为one-stage与two-stage两类,基于two-stage的深度学习框架主要将检测任务分为回归(location)和分类任务,如Fast R-CNN[12]、Faster R-CNN等,整体识别精度更高。基于one-stage的目标检测框架能够同时完成检测和回归任务, 如SSD、YOLO v3等,整体运行速度相对较快。
Faster R-CNN是在Fast R-CNN的基础上构建区域预测网络(RPN)并直接产生Region proposal来代替其他方法得到ROI,整体运行速度相比R-CNN、Fast R-CNN得到巨大提升。YOLO v3[13]是在YOLO,YOLO v2基础上对其缺点做出弥补与改进,显著提升网络的训练速度,可以实现任务的实时检测。相比YOLO与R-CNN系列,SSD[14]则是同时借鉴了YOLO的网格化与Faster R-CNN的anchor机制,SSD在最后以及高层特征层处均产生经过正负样本筛选的anchor,整体上兼具了快速与准确的识别特性。理论上,two-stage框架识别准确率更高,在速率上处于弱势;one-stage框架运行速度更快,但在识别精度上做出了一定的牺牲。综合而言,对于不同的环境条件和不同任务对象,3种框架均有各自的优劣。
在本次训练过程中,面对试验区较多,数据采集难度高、背景复杂、基础数据相对较少的情况,使用fine-tuning来提高模型性能,即使用较大型数据量网络中预训练好的模型参数初始化网络,可以显著提升网络训练的效率,节省训练时间,同时取得更好的识别精度[15]。考虑到本次工作主要用于辅助林场人员在后期实现对林区病害松木的判别和整体病情进展监测,结合技术的实现成本和普及性,最终确定选用台式计算机作为部署平台。硬件主要信息如表2所示。
表2 计算机软件硬件环境具体信息Table 2 Specific information of computer software and hardware environments
搭配好硬件与软件平台后,调整数据规模、设置训练参数对最终试验效果也有直接影响,要充分考虑训练模型的规模以及最终训练精度、训练速度之间的多重平衡。相同硬件条件下,模型规模较大的计算机训练速度变慢,严重影响训练进程。在训练参数方面,batch-size、epochs、learning_rate的设定尤为重要。在训练过程中,batch-size的大小决定了单次训练迭代(epochs)时间和迭代(iteration)之间梯度的平滑程度,1个iteration等于使用batch-size个样本训练1次;学习率(learning rate)的设置尤为重要,当学习率设置过大或过小时,会出现收敛过程异常缓慢甚至无法收敛的情况,最终导致试验失败。结合试验环境、数据类型和各框架特性,最终试验参数设置见表3。
表3 各框架参数设置Table 3 Parameter settings of each frame
3 不同框架性能分析
深度学习框架在训练过程中,损失函数与识别精度是评价模型准确与效果的重要指标,其中,损失函数主要用于估计模型预测与实际之间的差别程度。损失函数是一个绝对值,损失函数的值越小,说明该模型的拟合度越好。在本次试验中,SSD与Faster R-CNN框架选用网络程度更深、运算量更小的深度残差网络ResNet50[16]代替VGG16作为前置网络,并分别选用SmoothL1与CrossEntory;ObjLoss、BoxCenterLoss、BoxScaleLoss与ClassLoss进行验证;YOLO v3则以darknet作为前置网络,选用ObjLoss、BoxCenterLoss、BoxScaleLoss以及ClassLoss进行验证。作为机器学习中评价模型好坏的另一个指标,平均准确率(mAP,公式中记为mAP)的数值也至关重要。mAP即平均AP(average precision,公式中记为AP)值,是对多个验证集求平均AP值,如式1所示:
(1)
式中:QR为验证集个数;q为单个验证集。
处理过程的性能分析如图3所示。从图3中的运行过程可以看到,YOLO v3、SSD、Faster R-CNN随着迭代次数的不断提升,损失函数曲线的数值也在逐渐降低,在经过1 000次迭代训练之后,YOLO v3、SSD、Faster R-CNN的损失函数曲线都逐渐收敛并趋于平稳,验证了数据设置的合理性。在识别精度方面,整个训练过程中YOLO v3的震荡最剧烈,SSD整体状况居中,Faster R-CNN最出色,收敛情况较YOLO v3、SSD表现更好。通过对比,Faster R-CNN无论是在Level 1、Level 2、Level 3还是平均精度值上,均明显优于SSD与YOLO v3,在架构上对识别精度做出一定牺牲的YOLO v3则表现最差。经过统计,最终结果如表4所示。
表4 各框架对不同病害程度松木识别效果Table 4 Recognition results of each frame on diseased pine with different degrees
图3 各框架处理性能分析Fig. 3 Analysis of processing performance of each frame
凭借one-stage的架构优势,SSD与YOLO v3在图像处理速度上的优势十分明显,YOLO v3的处理速度是基于two-stage的Faster R-CNN的2.8倍,达到了7.40样本/s,但是识别精度表现最差;Faster R-CNN处理速度为2.60样本/s,相比于居中的SSD差距并不明显。基于two-stage的Faster R-CNN在运行速度上相比YOLO v3与SSD处于劣势,考虑到部署平台并非无人机,虽然整体运行速度相对较慢,但结合Faster R-CNN在识别精度上展现出的巨大优势,总体上依然是Faster R-CNN表现最佳。
4 结果分析
在本次试验处理中,同一试验环境下分别使用Faster R-CNN、YOLO v3和SSD 3种主流目标检测框架,将标记好的病害训练集进行训练,并对最终的识别结果进行分析对比,最终3种框架平台的训练识别效果如图4所示。
图4 各框架最终识别效果Fig. 4 Final recognition results of each frame
由最终识别效果可知,在相同的试验环境下,基于one-stage架构的YOLO v3最终识别效果最差,图像中许多明显已经病死的松木都未能被成功识别,对松木病害程度的判定也出现了较为明显的误差;同样基于one-stage架构的SSD框架表现较好,能够基本实现对病害松木的判别,但对于较为极端的情况,也存在对松木病害程度判别失准的情况;相比而言,Faster R-CNN模型实现了对病死松木更加准确的判别,对于病害松木存在不同程度病害的情况,检测框也通过颜色和数值做出了详细的分类,除了在个别样张中存在错检的情况,整体识别高效精准。经过最终识别与分析统计,Faster R-CNN、YOLO v3和SSD的整体识别正确率如表5所示。
表5 各框架最终识别结果Table 5 Final recognition results of each frame
试验结果表明,在测试的3种目标检测框架中,Faster R-CNN识别效果最佳,在整体测试的样本数量中正确率达到83.2%,相比SSD的66.2%以及YOLO v3的53.2%优势明显。而从时间成本上考虑,利用深度学习框架对数据量较大的图像进行识别时,相比传统的人工标记也具有明显优势,能够更快更好地完成对林区病害的监测。
5 结 论
从整体上看,基于ResNet网络的Faster R-CNN目标检测框架对遥感影像中的病害松木做到了高效自动识别,相比SSD以及YOLO v3的效果更好,对于遥感影像中容易出现的光线不均匀以及背景对比不明显的情况能够做到很好地克服,fine-tuning的加入使得在较少前期数据的情况也能达到较为理想的效果,高效快速地识别病害松木并判断其病害程度。该方法可以替代传统的人力勘测手段,满足林区遥感影像病害识别工作的任务要求,也为相关工作的深入研究奠定了技术基础。
对于识别过程中依然存在的个别误判现象,综合分析与图像采集区域较为分散、背景环境过于复杂以及计算机性能有限有关。相对于其他研究大都使用同一研究区数据进行测试和训练,本试验数据选自3个病害暴发区,数据本身存在更多差异性,但结果更具适用性。同时,计算机的性能相对有限也对最终试验结果有一定的影响。在后续可以着手于以下两方面的研究:1)适当提高样张数据的图像数量与质量,如无人机搭载高光谱传感器以获取更高精度的影像资料,能够实现对病害死亡和正常死亡松木的精准判别;2)采用更高性能、更强算力的计算平台提高网络的训练速度,彻底展现算法的能力,如设置更大的batch-size以取得更好的拟合效果。