陈健昌,陈一铭,刘正军
(1.兰州交通大学 测绘与地理信息学院,兰州 730070;2.中国测绘科学研究院,北京 100036;3.地理国情监测技术应用国家地方联合工程研究中心,兰州 730070;4.甘肃省地理国情监测工程实验室,兰州 730070)
激光雷达(light detection and ranging,LiDAR)是一种能精确、快速获取研究对象坐标、反射强度的主动遥感技术[1-2],已被应用于三维重建[3]、自动驾驶[4]、电力巡线[5]、农业规划[6]、室内定位[7]等研究领域,并取得理想效果。
近年来LiDAR也被应用于林业树种分类识别,许多学者通过获取的树木激光点云提取结构、纹理、冠型等典型特征参数,利用机器学习模型实现树种分类。陈向宇等[8]提出基于地基激光雷达点云的树种分类,通过提取水杉、柳树、女贞、竹子和苹果树的结构特征参数、纹理特征参数、冠形特征参数,使用支持向量机(support vector machine,SVM)分类算法进行树种分类研究,精度可达85%。Cao 等[9]使用机载点云基于体素的复合波形方法提取全波形指标,并利用随机森林分类器对六种亚热带树种进行分类,结果表明分六类时精度为68.6%,四类为75.8%,只分针叶树和阔叶树为86.2%。王佳等[10]使用地面激光雷达点云提取立木胸径、枝下高、树高、冠高、最长冠幅、垂直最长方向冠幅六个测树因子,同时提取冠长树高比、胸径树高比、冠高树高比、分枝角、冠长最大冠幅之比、最长冠幅与垂直方向冠幅之比参数,采用SVM、分类回归决策树和随机森林的方法,根据大量参数对树种冠幅自动识别。实验结果表明,组合特征参数法识别精度高于测树因子法,随机森林算法与其他算法相比效果最好。Sothe等[11]使用无人机影像密集匹配生成的点云和高光谱数据并将其提取的特征参数相结合,通过SVM对亚热带森林中的树种分类,实验结果表明树种分类的总体精度为72.4%,Kappa系数为0.7。Terryn等[12]提取树木的17个结构特征,根据这些结构特征使用KNN(k-nearestneighbor)、逻辑回归算法和SVM进行树种分类。Harikumar等[13]提出一种基于树冠量化的树种分类方法,将整个三维树冠量化为更小的体积元,从而有效地捕捉树冠的茎、枝、叶和空冠体积的空间分布,最后使用SVM进行分类,实验结果表明该方法更容易识别树冠特征,进而更容易识别树木种类。现有研究多采用遥感影像与激光雷达数据联合进行树种分类,方法适用于大范围样区,但机载激光雷达难以准确获取树冠下层数据。而地基LiDAR存在难以获取完整树冠信息的问题,树种分类主要基于机器学习算法,需要提取并输入大量的树木结构特征参数,增加了数据预处理的时间和难度。
近年来,深度学习技术已被广泛应用于图像分类和点云分类研究,但用于激光点云树种分类的研究较少。本文提出一种基于点云深度学习模型的地基激光雷达点云数据林区树种分类识别方法PointNet-GS(pointnet geometric sampling)。与PointNet使用均匀采样法进行数据下采样不同,本文提出的PointNet-GS使用几何采样法对数据下采样处理,对局部特征的提取更有优势。
深度学习算法在图像分类识别、目标检测、语义分割等领域取得显著效果,大量研究结果表明深度学习算法可解决常规方法无法解决的问题。于是研究人员尝试使用深度学习方法处理点云数据,方法可分为三类:基于多视图的方法[14]、基于体素的方法[15]、点云端到端直接学习方法[16]。将点云数据转为多视图或体素数据均存在转换繁琐、特征丢失、计算复杂的问题。本研究为解决林业单木点云数据难以直接作为训练样本输入深度学习模型和数据转换过程中存在的特征丢失问题,使用点云数据端到端直接学习的方法进行模型训练。通过对PointNet采样方法的改进,提出PointNet-GS,实现了树种精确分类。PointNet-GS主要由三部分组成:输入点云样本的采样处理、聚合特征信息处理、输入特征对齐网络,如图1所示。
图1 PointNet-GS设计图
首先,计算单木点云样本每个点的K邻域,因为分割后的单木组成样本点数量不一致,邻域范围阈值可根据单木点云样本点数与网络输入特征点数的比值向上取整设置。假设曲面z=r(x,y)逼近该邻域点云,这个点的曲率可用该区域曲面的曲率来表示,因此只需提取该区域曲率即可。其次,使用最小二乘拟合曲面,表达如式(1)至式(2)所示。
z(x,y)=ax2+bxy+cy2
(1)
(2)
式中:a、b、c为曲面公式拟合系数;x、y、z为邻域内点的坐标;Q为残差;k为邻域内点的个数;i(1≤i≤k)为邻域内点的索引号。对式(2)求导可得式(3)。
(3)
式(3)中符号含义与式(1)和式(2)相同。求出曲面近似方程参数后,再求出平均曲率H,表达如式(4)所示。
(4)
输入的单木点云是由一定数量的三维离散点组成。通过卷积操作聚合每个点的特征,并将其升至更高维度空间,进一步提取特征。每个单木点云都是向量的无序集合,为保持输入模型排列不变性,将输入点云按照一定的规范进行排序。为减少损失几何点信息,采用多层感知机(multilayer perceptron,MLP)提取点特征并对特征点进行升维得到高维特征。最后使用对称函数来聚合每个点的信息,对称函数的实质如式(5)所示。
f({dv})=g(h(dv))
(5)
式中:dv(v=1,2,3…)为输入网络点数据;h(dv)为特征升维函数;g(h(dv))为最大池化特征聚合函数。
引入T-Net网络实现仿射变化矩阵的预测,将这个变化直接应用到输入点坐标上。T-Net网络结构与整体网络结构相似,由点特征提取、最大池化、全连接层组成。这个小型神经网络根据输入数据生成变换参数,输入数据与变换矩阵相乘。第一个T-Net生成3×3的点旋转矩阵,与输入矩阵相乘得到点对齐矩阵。经过MLP提取点特征后,数据输入第二个T-Net,生成64×64的特征旋转矩阵,与输入矩阵相乘再次得到特征对齐矩阵。之后通过最大池化操作得到全局特征,MLP进行分类预测。
教师在教学中通过实际例子导出概念、公理、性质和规律,充分利用这些实例,让学生亲自动手操作、体验、总结和归纳,从而得到结论;充分利用教材中的练习题、想一想、选做题、复习题等习题,注意“阅读材料”,课堂上适时运用,逐步使学生体会到数学应用社会实践,进而将实践操作变为学好数学的自觉行动;重视学具制作,把数学与学生实际相联系,在课外活动中感到生活中处处有数学,唤起学习数学的激情,培养的实践能力,达到学知识用知识的目的。
具体流程如下。先将每个单木点云经PointNet-GS中的几何下采样处理保留1 024个点,每个点的维度均是三维(x,y,z),整个单木点云构成1 024×3的特征矩阵,与T-Net生成3×3矩阵相乘,得到1 024×3的对齐矩阵。经过MLP将每个特征点映射到64维空间。用另一个T-Net生成的64×64的矩阵与之相乘,得到1 024×64的特征对齐矩阵。再次通过MLP将每个特征点映射到1 024维,得到1 024×1 024的特征矩阵。最后通过最大池化操作,对称函数得到1×1 024维的全局特征,再经过一个MLP后,使用softmax函数计算单木树种类别概率,选概率最大的作为预测结果,表达如式(6)所示。
(6)
式中:r表示类别数;yw为输出概率;yu为输入神经元值;e为自然常数。使用交叉熵计算各分类损失,评估真实样本与预测样本之间差距,表达如式(7)所示。
(7)
式中:qn为真实单木样本;pn为预测概率;N为批次样本数;n为样本索引。
实验设计如图2所示。对获取的原始数据进行预处理主要包括数据去噪、分离地面点、点云归一化等操作。之后单木分割、挑选训练和测试样本,制作数据集。最后训练模型,完成树种分类,评估模型精度。
图2 实验流程图
本文研究区是河北省塞罕坝机械林场(117°23′50.420 4″E,42°22′0.404 4″N),实验数据是2020年8月份采集的落叶松和白桦两个树种。由于树木之间遮挡影响架站通视性,将样地分为四个小样地,待每个样地扫描结束后将其拼接为整个研究区域。地基激光雷达扫描数据范围较大,远超过所划定的样地范围,因此在样地四个角点树干上缠旗子作为标志,便于样地数据裁剪。
林区激光雷达数据获取时,地形环境相对复杂,易产生大量离群点。高斯滤波算法根据距离均值和方差消除范围以外的离群点适用于此环境,因此选择高斯滤波消除噪声[17]。林地存在大量杂草和低灌丛,会影响地面点分离效果。地面点和非地面点临界区域也非常模糊,导致常规地面滤波算法参数设置困难,因此选择参数设置简单的点云地面点滤波(cloth simulation filter,CSF)算法分离地面点[18],对参数的设置要根据森林样地的现场勘察。树种识别分类的基础和前提是准确的单木分割。目前,常见单木分割算法包括分水岭分割算法[19]、影像与点云匹配分割算法[20]、图分割算法[21]等。由于分水岭算法在单木分割领域应用广泛,适合大多数单木分割场景,因此本文使用分水岭算法进行单木分割。分水岭分割算法主要利用图像分割技术进行单木分割,具体如下:①将点云数据经过投影转为图像;②设置滑动窗口提取图像局部最高点,将局部最高点作为树顶;③通过种子点区域增长法提取单木。单木分割效果取决于滑动窗口设置大小。当窗口设置过大,局部最高点漏检,出现漏分割现象;滑动窗口设置过小,局部最高点过多则出现过分割现象。因此,参数设置应考虑样地面积和单木数量,单木分割流程如图3所示。
图3 单木分割流程图
从所有样本中选出分割完整的落叶松300棵、白桦260棵,按照训练数据集和测试数据集比例8∶2划分。单木点云样本从多个角度转为图像,为保持其他模型与PointNet-GS的训练和测试样本数量一致,挑选落叶松图像300张、白桦260张,同样划分比例为8∶2。体素训练样本和测试样本也按照上述比例划分,各样本属性如表1所示。
表1 单木样本属性
使用PointNet-GS对落叶松和白桦单木点云数据下采样效果如图4所示。由于不同树种之间树木结构的差异性,各树种之间的外形轮廓差距明显,尤其是冠层和树干部分。突出其局部特征更易使网络进行特征提取。如图4所示,PointNet-GS在局部特征提取保留原始信息的效果非常明显。
图4 点云数据下采样
1)点云端到端。通过实验分析,PointNet-GS开始趋向稳定时,训练精度为0.781,对应的损失函数也在此范围内有明显变化。当训练结束时,模型训练精度到达0.887,损失函数为0.263。由于PointNet-GS提取了更加明显的特征,所以模型精度以及损失函数在后期出现的波动相对较小。PointNet与PointNet-GS几乎同时开始趋向稳定,随着模型的继续训练其损失函数波动相对较大。造成波动的原因有两方面:①数据训练样本数量相对较少,使用均匀采样保留样本局部特征信息较少;②参数设置问题,学习率设置过大,样本批次设置过小,使得梯度和训练精度出现震荡,模型收敛困难。当训练结束时,模型的训练精度达到0.874,接近本文所提出的方法,损失函数为0.41。
2)点云转体素。体素数据的特征取决于体素网格原点、分辨率、方向,通过卷积、池化、全连接层等操作提取特征。经过单木分割提取的单木点云数据,将其转为三维体素数据,本文使用VoxNet对树种进行分类识别。与PointNet-GS和PointNet相比,VoxNet训练开始逐渐趋向稳定比较缓慢。由于点云数据体素化会造成几何信息缺失,描述的对象不具有完整性,并且体素数据计算成本又远高于点云数据,因此需要更多的训练才能趋向稳定。训练数据集的样本数量受限使得VoxNet模型训练趋向稳定的过程中损失函数变化较大。当训练结束时,模型训练精度为0.886,与上述两种方法的模型训练精度相近,损失函数为0.102。
3)点云转图像。点云数据转为二维图像后,按之前划分的样本比例分别输入AlexNet、Vgg19、ResNet101。AlexNet网络层数少,结构简洁,参数量较少,开始趋向稳定时模型训练精度为0.72,训练结束时模型训练精度为0.75,训练模型精度已难以提升,此时损失函数为0.193。使用Vgg19对同样的图像数据进行训练,模型训练精度持续波动,训练结束时模型训练精度为0.795。在模型训练过程中,损失函数也出现了较大波动,但其波动连续性较短,之后趋向于收敛,训练结束时损失函数为0.263。与前两种模型相比,ResNet101结构相对复杂,卷积神经网络层数较多,模型训练趋向稳定时的精度为0.855。随着模型继续训练,ResNet101也出现了与Vgg19同样的现象,训练精度出现较大幅度波动,训练结束时模型训练精度为0.895,与AlexNet和Vgg19相比,模型训练精度提高了0.145和0.1。
总结以上三种方法,AlexNet模型精度难以提升的原因是单木分割样本较少,转为二维图像数量有限,训练样本较少,模型通过卷积操作提取特征较少;Vgg19和ReNet101出现同样问题,主要原因是模型结构较为复杂,网络层数和参数较多,而训练样本受单木提取样本数量和特征的限制,又为保持实验训练样本与三维深度学习模型训练样本数量一致性,训练样本较少,从而出现这种现象。
本文引入准确率(accuracy)、精确率(precision)、召回率(recall)以及Kappa系数来评估各模型性能。提取两种树的胸径、树高、冠幅参数,使用SVM、KNN、随机森林(random forest,RF)机器学习算法,根据提取的参数对树种进行识别分类,与深度学习模型精度进行比较。
用训练模型对测试数据集进行树种分类。通过表2可知,本文使用的PointNet-GS方法对落叶松精确率达到0.914,白桦的召回率为0.904,树种识别分类准确度达到0.893,Kappa系数为0.785,均为所有模型最高。与PointNet相比,模型测试精度高出0.027,Kappa系数高出0.054,其他精度评估指标均低于本文方法,说明几何采样更加适用于树种分类中的单木样本下采样。VoxNet树种分类精度评估指标均低于PointNet-GS和PointNet,证明数据类型转换使数据丢失了特征信息,模型无法提取更多特征,因此将点云直接训练得到模型树种分类效果优于转为三维体素的效果。ResNet101在分类中,测试精度为0.875,Kappa系数为0.748,与Vgg19相比分别高出0.027和0.054,与AlexNet相比分别高出0.107和0.216。其他树种分类精度评估指标也均高于这两种模型,证明ResNet101依靠其强大的网络可从图像中提取更多特征,提高了树种分类精度。ResNet101与本文所提出的PointNet-GS相比,树种分类精度低0.018,与PointNet相比高出0.009,但前期需要将点云转为图像,数据预处理较为繁琐。Vgg19和ResNet101的Kappa系数和树种分类精度均高于VoxNet,而AlexNet则低于VoxNet。当网络层数多,特征提取能力强时,将点云转图像进行树种分类的效果优于点云转体素;网络层数少,特征提取能力较弱以及数据量样本受限时,点云转体素树种分类效果优于转图像。机器学习树种分类算法中,SVM树种分类精度和Kappa系数优于其他算法。总结以上模型测试效果,本文提出的基于点云深度学习PointNet-GS树种识别效果优于PointNet、点云转体素和点云转图像方法,树种识别平均精度高出0.06。从整体分类效果分析,基于深度学习方法对于树种分类识别效果优于机器学习方法,平均精度高出0.1,Kappa系数高出0.2。
表2 各模型精度评估指标
本文基于深度学习方法实现树种识别分类,基于PointNet提出PointNet-GS。与PointNet均匀采样方式不同,PointNet-GS使用几何采样,保留更多的点云数据局部特征。PointNet-GS训练精度和测试精度均高于原始PointNet方法,其中模型测试精度为89.3%,Kappa系数为0.785。与其他基于深度学习树种识别方法相比,本文方法可将点云直接作为训练样本输入网络模型,无需前期数据类型转换,避免了数据特征丢失。将点云转为二维图像后输入深度学习网络模型训练,出现模型训练精度、损失函数波动,表明存在过拟合效应,说明训练样本不足。由于不同树种之间差异性较小,树木自身复杂性较强,通过机器学习方法测试精度低于深度学习方法。本文提出的PointNet-GS模型为林区树种识别提供新的方法并展现出应用潜力。未来工作将研究单木分割算法,提取更多训练样本,优化网络结构,进而提高模型精度,实现多树种智能化识别。