刘慧,王秀丽,沈跃,徐婕
(江苏大学 电气信息工程学院,江苏 镇江 212013)
我国是世界上林业面积最大的国家之一,病虫害的防治是林业管理的重要部分,繁重的农药喷洒作业需求使得喷雾机器人技术的应用显得尤为重要[1-4].喷雾机器人实现自主作业的前提是精确感知并检测到目标,随后是执行精准对靶喷雾的作业[5-6].
农业领域常用算法大多基于二维图像.早期的研究主要采用传统图像处理的方法,Chen 等[7]利用梯度直方图和支持向量机训练初始树干分类器,提取直方图特征,提高分类器识别精度.白帆等[8]利用最大熵阈值和GrabCut 算法分割花朵图像.传统算法虽然应用在特定场景效果好,但是泛化能力以及鲁棒性较差.基于图像的深度学习目标检测方法具有强大的特征学习能力、自适应性和鲁棒性,能够达到很高的检测精度,常用的目标检测网络包括SSD[9]、YOLO 系列[10-12],已经广泛应用于农业领域.刘慧等[13]采用改进的SSD 方法实现果园行人的实时检测.蔡舒平等[14]采用改进型的YOLOv4 网络实现了对果园障碍物的实时检测.
图像数据的采集易受光照、拍摄角度的影响,导致获取的有效信息有限,不能准确反映目标的特征,影响识别效果.与二维图像相比,三维点云不受外部环境因素的影响,具有丰富的空间信息,因此基于三维点云的方法被引入目标分类中.基于点云的分类方法主要分为传统的机器学习方法和深度学习方法.传统的机器学习方法主要包括基于随机森林(RF)[15]、支持向量机(SVM)[16],基于深度学习的点云分类方法分为间接基于点云的方法和直接基于点云的方法.间接基于点云的方法包括基于多视图、体素方法[17-20],这些方法均通过将不规则的三维点云数据转换为其他规则化的格式来实现分类,会丢失点云的三维空间信息和固有的几何属性,还会增加计算的复杂度,因此只能用于小型或特定的场景,难以满足大范围复杂场景下的分类要求.直接基于点云的方法能够充分利用点云数据的几何特性,最大程度上保留了原有的空间特征.PointNet[21]是这类方法的先驱,它通过直接对原始点云数据进行处理,将未处理的无规则点云数据输入网络,避免了信息的丢失,缺点是只考虑了全局特征,忽略了局部特征.Qi 等[22]提出PointNet++网络以最远点采样的方式将输入点集划分局部区域,在局部区域上使用PointNet 捕获局部特征,提高了点云分类精度.基于深度学习的点云分类方法效果显著,在农业领域得到进一步应用.王浩云等[23]使用KinectV2相机获取绿萝叶片点云数据,提出基于多分辨率编码点云深度学习网络和自编码器模型,估测了绿萝叶片的外形.Jayakumari 等[24]对PointNet 框架进行改进,提出CropPointNet 深度卷积神经网络,对蔬菜作物进行了分类.Qian 等[25]增加了PointNet网络的跨层次特征连接结构,以便更好地提取水稻种子的表面结构特征,实现了水稻品种的高效分类.以上研究表明,直接基于点的深度学习方法可以充分利用数据特征,对目标进行较为准确的分类.
由于采用直接基于点的深度学习方法对苗圃场景进行多目标分类的研究较少.为了实现苗圃场景多目标分类任务,本研究提出基于融入卷积块注意力模块的PointNet++多目标分类网络.以PointNet++网络为基础,通过在特征提取层中嵌入注意力机制模块,从通道、空间2 个维度筛选特征,加权输出特征来提取关键特征,在降低参数量的同时增强网络的特征学习能力.引入LeakyReLU激活函数避免负值时梯度消失问题.采集6 类苗圃中的常见目标制作数据集,来验证所提方法的多目标分类准确性,给农业机器人的分类作业任务提供参考.
数据集采集地点为江苏省镇江市的一处苗圃,采集方式为大疆激光雷达Livox Horizon 扫描,采集时间为2021 年11 月至2022 年5 月,采集数据包含冬季和春季不同状态的树木,数据采集的场景如图1 所示,激光雷达参数见表1.每次从不同角度、不同位置扫描目标样本,分别采集不同类别的样本点云数据.考虑到农业机器人在苗圃中进行作业时可能会遇到的各种靶标(不同高度、不同形态的树木) 和非靶标(如指示牌、行人、其他),将靶标根据树木高度与冠层密度划分为高树、灌木、枯树,冠层密度不同设置的喷药量不同,非靶标则避开不进行作业.苗圃点云数据集分为高树、灌木、枯树、行人、指示牌和其他(不含树木的种植盆) 6 种类别标签.
表1 Livox Horizon 激光扫描仪的设备参数Tab.1 Specifications of Livox Horizon laser scanner
图1 苗圃点云数据采集场景Fig.1 Nursery point cloud data acquisition scene
1.2.1 点云处理 通过CloudCompare 软件对采集的数据文件进行预处理.考虑到点云近密远疏特性,处理数据时一般取雷达扫描范围为[0, 10] m的、密度合适的点云数据.原始点云的大小不一,通过点云预处理可以增强网络对目标物体的识别能力.利用CloudCompare 软件对原始点云数据进行滤除背景、地面点云操作,仅保留感兴趣区域点云,并手动标注点云标签.PointNet++网络输入的样本点数固定,通过对点云密度高的下采样(随机下采样法)至10 000 个点和对点云密度稀疏的上采样(移动最小二乘法)至10 000 个点来保持输入一致,再对获得的各个样本点云进行归一化处理,将点坐标归一化到[-1, 1].数据集部分样本如图2 所示,对应预处理后点云如图3 所示.
图3 苗圃数据集预处理后的样本点云Fig.3 Pre-processed sample point cloud of nursery datasets
1.2.2 数据增强 一般而言,神经网络需要大量数据进行训练,训练的数据越多,精度就越高;数据量较少可能会导致训练模型过拟合,网络泛化能力差,从而影响分类精度.在实际工程应用中,往往存在样本数量不足的问题,采集新的数据会耗费大量的成本.本研究采用数据增强的方法来获得更多的数据.通过随机抖动的方式对已有的点云数据进行数据扩增,可以增强网络的鲁棒性,使得网络模型具有更好的泛化效果.将扩充后的数据按7∶3 随机划分为训练集和测试集,其中训练集包括2 349 个样本点云,测试集包括1 008 个样本点云.数据抖动后的样本及点云xyz坐标变化示例如图4 所示,数据扩增前、后的不同类别样本数量na、nb如表2 所示.
表2 扩增前、后不同类别样本数量Tab.2 Number of different types of samples before and after amplification
图4 抖动前、后点云变化Fig.4 Point cloud changes before and after jittering
PointNet 作为直接处理原始点云的先驱可以直接进行3D 点云数据分类,但无法获得局部特征.PointNet++作为PointNet 的后续改进网络,通过对输入点集进行区域划分,以分层的方式提取点的特征.借鉴卷积神经网络(convolutional neural network,CNN)的思想,PointNet++在不同尺度提取局部特征,从小的点云邻域中捕获点的特征,并沿着层次结构在越来越大的邻域中获得越来越高的特征.如图5 所示,PointNet++利用多个集合采样层构造多层次结构来提取点云特征,每组集合采样层都由3 个部分组成:采样层、分组层和特征提取层.采样层使用最远点采样法从输入点云中选择一组点作为局部区域的质心点.其中N为点数,d为维度,C为特征维数,K为局部区域最大采样点数.分组层根据质心点以球查询方式进行局部区域的划分.特征提取层使用小型PointNet模块作为特征提取器,捕获局部区域近邻点对质心点的特征关系.提出多尺度分组(multi-scale grouping,MSG)和多分辨率分组(multi-resolution grouping,MRG)方法,当输入点云密度不均时,该方法能够学习不同尺度区域的特征,有效解决点云密度近密远疏的问题,克服PointNet 在复杂场景的适用性差的缺点.
图5 PointNet++分类网络模型Fig.5 PointNet++ classification network model
注意力机制在机器视觉领域具有广泛应用,很多学者尝试在目标检测算法中添加注意力模块,在增加少量成本的同时提高目标检测精度[26-28].注意力模型本质上是对目标特征数据进行加权变化,生成不同的权重,有选择性地对信息进行筛选.Woo 等[29]提出卷积块注意力模块 (convolutional block attention module, CBAM),与SENet[30]不同,注意力机制使用单独的通道注意力模块,仅在通道维度上提升检测性能,CBAM 沿着通道和空间这2 个维度来提取特征信息,以较低的算力实现了较高的性能改进.作为轻量级的通用模块,CBAM可以嵌入任意已有的卷积神经网络中进行训练.
CBAM 包含通道注意力机制模块(channel attention module, CAM) 和空间注意力机制模块(spatial attention module, SAM).这2 个模块以2 种不同的维度压缩特征图,并利用平均池化和最大池化提取特征图中的关键信息,计算过程为
式中:MC(F) 为特征F经过通道注意力的输出权值,MC(F′)为F′经过空间注意力的输出权值, ⊗ 为矩阵的逐点相乘,F′′为最终的优化输出.CAM从通道维度对点云特征信息进行筛选加以不同权重,有选择性地增强目标区域的特征权重.具体方式:通过执行平均池化(AvgPool)和最大池化(MaxPool)对目标点云的特征信息进行增强,得到平均池化特征和最大池化特征.2 种池化方式得到的特征信息可以相互补充,再将特征送至由多层感知机和隐藏层组成的共享网络,生成通道注意力MC∈RC×1×1(C为通道数),计算式为
式中:σ 为sigmoid 激活函数;MLP 为多层感知机;W0∈RC/r×C,W0为MLP 的隐藏层权重,r为降维系数;W1∈RC×C/r,W1为MLP 的输出层权重.空间注意力作为通道注意力的补充,沿着通道进行平均池化和最大池化操作,将获得的特征进行拼接,再通过7×7 的卷积操作Conv 和sigmoid 归一化得到空间注意力特征图MS(F)∈RH×W, 计算式为
本研究在PointNet++网络的每个集合采样层(set abstration,SA)的特征提取模块中添加卷积块注意力模块CBAM,经过注意力模块后,新的特征结合通道和空间维度上的注意力权重,提高了各个特征在通道和空间上的联系,增强了网络对目标点云关键特征的提取,同时弱化了无关信息,通过注意力里的卷积操作极大地减少了参数和计算量.改进后的PointNet++多目标分类网络结构如图6 所示.其中N、N1为 输入点的数量,C、C1为特征维度.输入点云先通过集合采样层(SA)模块的采样和分组操作得到多个局部点集,再通过PointNet 模块对点集进行特征提取,通过特征提取模块中嵌入的注意力机制对输入特征进行加权强化目标点云信息,可以提高网络的特征学习能力.通道注意力对不同特征图按通道权重进行划分,学习不同通道之间的关系,可以增强提取目标点云的轮廓特征的能力,空间注意力可以提高网络对目标点云的关注,减少噪点的干扰.使用最大池化层对点云特征进行压缩,并输出到下个集合采样层进行重复的操作,再通过全连接层输出分类结果.添加注意力机制的网络在训练过程中能够根据通道和空间维度特征的不同重要程度,给点云加以不同注意力权重来强化有用特征并降低无用特征的干扰,最大程度上学习目标点云的关键特征,从而提升网络分类精度,实现苗圃多目标分类.
图6 改进的PointNet++多目标分类网络Fig.6 Improved PointNet++ multi-object classification network
学习苗圃中多种目标特征,选择合适的激活函数可以提高网络的效率.PointNet++网络中使用的是ReLu 激活函数,该函数只有在输入为正时导数不为0,在当输入为负值时,函数值等于0 处于硬饱和状态,神经元不会更新权重.本研究选择LeakyReLu 函数作为具有良好性能的激活函数,以缓解梯度消失问题,方程式为
式中:系数ɑ的取值范围为(0,∞).LeakyReLu 函数当输入小于0 时梯度也不会为0,而且推理速度与ReLu 功能基本相同,避免了梯度消失问题.选取 LeakyReLu 激活函数在一定程度上加快了训练速度,提高了网络的效率.
实验的操作系统为Windows10,以Pytorch 为框架,显卡为NVIDIA Quadro RTX4000 GPU,处理器为Intel(R)Core(TM)i9-10900K CPU @ 3.70 GHz.训练阶段使用Adam 优化器,batchsize 为18,设置epoch=150,学习速率为0.001.
主流的点云分类精度衡量指标包括总体精度OA 和平均分类精度mAcc.OA 指场景中正确预测类别的点数与场景总点数的比值,是多类别分类问题中常用的指标;mAcc 指评价模型所有类别分类精度取平均.为了评估分类网络对样本的分类性能,使用OA、mAcc 和每个类别的精度Acc 作为评判标准,计算式分别为
式中:TP 为正确预测结果的数量,FP 为错误预测结果的数量,W为数据集中点云的总数,n为类别数.
3.3.1 苗圃数据集上的各个网络分类结果对比 为了探究改进算法在苗圃场景中的多目标分类效果,使用自制的数据集进行分类实验验证,分别计算每个类别的分类精度作为额外的指标来评估改进后网络的性能.如表3 所示为PointNet、PointNet++以及改进PointNet++在林果园场景数据集中6 个类别的分类准确率.可以看出,与PointNet++网络相比,改进后网络对大多数类别的预测精度都有着不同程度的提高,各个类别的分类准确率均超过90%.其中高树、灌木、枯树和其他4 个类别的准确率在改进网络中更高,分别比PointNet++网络高出1.54、0.74、2.28 和4.13 个百分点,表明融入注意力机制在很大程度上提升了网络的分类精度,特别是对不同形态树木的分类,有利于为农业机器人的靶标精准识别提供参考信息.行人、指示牌这2 个类别的准确率相比原网络有所下降.可能是由于在采集点云数据时,采集树的类别和数量占据的比重较大,导致分类精度相对较高,而其他类别所占的比重较少,对分类结果的精度有一定的影响.苗圃中的农业喷雾机器人主要是对不同形态的靶标进行作业,改进方法对不同种形态树木的分类精度都比改进前有一定的提高,能够更好地分类识别出靶标,更有利于为机器人的对靶作业提供参考.
表3 不同网络在苗圃数据集上的标签分类结果对比Tab.3 Comparison of classification results of different networks for labels in nursery datasets
在PointNet++中相同的位置插入SENet 注意力进行分类实验对比.如表4 所示,插入SENet 注意力的网络的总体精度和平均精度略有提升,分别达到94.53% 和94.08%,相比于原网络提高0.24 和0.44 个百分点.本研究使用的CBAM 注意力机制改进网络的总体精度和平均精度相比于原网络提高2.09 和2.22 个百分点.说明改进网络对苗圃场景的目标分类性能提升更加明显,更符合本研究的需求.将训练阶段的准确率和损失函数Loss 的变化进行了可视化处理,曲线变化如图7所示.除分类精度外,网络运行速度v也是衡量网络性能的重要指标.如表4 所示,PointNet 的分类速度最快达到0.01 帧/s,总体精度最低只有88.36%;PointNet++的分类速度为0.07 帧/s,精度达到94.29%;插入SENet 注意力改进后的网络分类速度为0.06 帧/s,总体精度为94.53%;改进网络的分类速为0.04 帧/s,分类精度最高达到96.38%.实验结果表明,改进网络的分类精度在参与对比的模型中表现最好,且分类速度也有一定提升.综合精度和速度考虑,本研究使用的注意力模块改进后的网络更适于应用在苗圃多目标分类任务中.
表4 不同网络在苗圃数据集上的分类结果对比Tab.4 Comparison of classification results of different networks in nursery datasets
图7 各网络在苗圃数据集上的训练准确率和损失函数曲线Fig.7 Training accuracy and loss function curve of each network in nursery datasets
3.3.2 ModelNet40 数据集上的分类结果对比 在点云分类领域权威的公共数据集ModelNet40 上对PointNet、PointNet++以及改进网络分别进行分类训练与测试.ModelNet40 共包含40 个类别对象的12 311 个网格CAD 模型,其中9 832 个模型作为训练数据,2 468 个模型作为测试数据.训练阶段的准确率和损失函数的变化如图8 所示,随着迭代次数的增加,准确率不断增加,损失函数值不断减小.在训练开始阶段损失值下降幅度很大,准确率曲线上升明显.当迭代次数达到50 次时,损失曲线趋于平稳,准确率曲线变化缓慢,当训练迭代次数达到150 次时基本收敛,网络逐渐趋于稳定,准确率也达到最高.在整个训练过程中,改进网络的损失值一直小于原网络,精度也是高于原网络.对训练好的模型进行测试.PointNet、PointNet++以及改进网络的分类测试结果对比如表5 所示.与PointNet 网络相比,改进网络的总体精度提高了2.90 个百分点,平均精度提高了3.99 个百分点;与PointNet++网络相比,改进后PointNet++网络的总体精度提高了0.96 个百分点,平均精度提高了1.21 个百分点.实验结果表明,所提方法的分类精度与速度在原网络良好的基础上还有提高,证明改进网络具有一定的优越性.
表5 各网络在ModelNet40 数据集上的分类结果对比Tab.5 Comparison of classification results of each network in ModelNet40 datasets
图8 各网络在ModelNet40 数据集上的训练准确率曲线和损失函数曲线Fig.8 Training accuracy curve and loss function curve of each network in ModelNet40 datasets
3.3.3 综合性能的消融实验 为了进一步验证同时采用的CBAM 和选用LeakyReLu 的有效性,将注意力模块和激活函数分别单独加入网络中设计4 组消融实验,在自制苗圃数据集和ModelNet40数据集上进行分类训练和测试,结果如表6 所示.消融实验的结果表明,单独使用任一模块时,网络分类精度的提升有限,将CBAM 与LeakyReLu配合使用时的分类性能最好,网络的总体精度和平均精度也是最高的.
表6 苗圃数据集与ModelNet40 数据集上的消融实验Tab.6 Ablation experiments in nursery datasets and Model-Net40 datasets%
提出基于融合卷积块注意力模块的PointNet++多目标分类方法.采用基于点云的深度学习方法,利用PointNet++和CBAM 构建分类网络模型,将注意力机制嵌入PointNet++主干网络的特征提取层中,对特征进行加权,增强对关键特征的提取,降低无关特征的干扰,引入LeakyReLu 激活函数解决梯度消失的问题.根据苗圃中的不同靶标与非靶标种类制作数据集,该数据集包含不同形态的树木、行人、指示牌等6 个标签类别.在分类实验中,将改进网络与PointNet 和PointNet++的分类结果进行比较.结果表明,改进网络在苗圃数据集上准确率达到96.38%,分类速度达到0.04 帧/s,在ModelNet40 数据集上的分类准确率达到92.87%,均高于PointNet 和PointNet++.实验结果表明,所提方法具有更高分类精度和更快的分类速度,能够较好实现多目标分类,有利于农业机器人的靶标识别,为机器人的分类作业提供参考.如何进一步提高网络性能并将网络部署至农业机器人平台上有待更深层次研究.