APP下载

基于多粒度特征的点云物体的分割与分类

2023-10-09岳晨珂

计算机应用与软件 2023年9期
关键词:集上粒度卷积

王 勇 岳晨珂

(重庆理工大学两江人工智能学院 重庆 400054)

0 引 言

3D数据通常可以用几种不同的格式表示,如RGB-D、深度图、点云等。作为一种常用的3D数据表示形式,由于点云将原有的几何信息保存在3D空间当中,并且不会进行离散化,因此在许多场景理解当中成为首选的表示形式。基于这些优势,三维点云物体识别逐渐成为一个研究热点,在生物识别、自动驾驶、场景理解、激光遥感等众多领域都有广泛的应用[1-2]。

点云物体的分割与分类任务是点云处理领域非常重要的任务。传统的方法[3]利用数据点的特征权值构成多维特征向量,其中包括数据点的坐标、法矢量、高斯曲率和平均曲率,利用多层自组织特征映射网络SOFM对多维特征向量来聚类,达到了区域分割的目的。Chua等[4]提出了一种点签名法(Point Signature),该方法根据每个点的球半径邻域与物体的交线L所拟合平面的法向量与参考矢量定义旋转角,从而计算签名距离,即每个点的签名。通过对所有模型的所有点的签名进行预处理和存储,可以实现有效的对象识别。目前点云很多的功能是针对特定的任务,手工提取相应的特征完成的[5]。而仅仅依靠手工提取很难提取到完整的几何特征,很多时候无法对于某种特定的任务提取到最佳的特征组合,从而无法提高精度问题。随着深度学习的快速发展,很多研究者都开始寻找使用深度神经网络来自动学习点云特征的方法[6]。近年来深度学习也广泛应用于点云识别领域,2015年Su等[7]采用三维物体多视角(Multi-view)的二位渲染图片作为训练数据,基于CNN对三维物体进行识别。Charles等[8]提出了一种基于体素CNN点云识别方法,该方法将点云数据进行栅格化处理,形成体素结构,然后再通过3D卷积操作进行处理,并且引入辅助的训练任务来减小过拟合。还有一些利用树形结构来规则化点云数据如OctNet[9]用输入数据中的稀疏性,使用一组不平衡的八叉树来对空间进行分层划分,修改并实现了卷积运算,以适应混合网格-八叉树数据结构。Klokov等[10]在2017年提出的Kd-Net利用Kd树对点云空间进行划分,其层次结构用作不同的特征形式。

目前主流的点云分割与分类网络模型是Charles等[11]在2017年提出的PointNet网络模型,首次使用深度网络模型端到端地直接处理原始的无序点云数据。PointNet将原始全部点云数据的集合作为输入,通过和一个T-Net网络结构学习到的转换矩阵相乘来对齐,保证了模型对于特定空间转换的不变性,之后在特征的每个维度上使用MaxPooling操作得到全局特征,再根据不同结构完成分类和分割等任务并且在很多数据集上取得了不错的效果。但该模型简单粗暴地利用MaxPooling操作把所有点池化成了一个全局特征,而损失了每个点的局部特征信息,这使得识别局部点云问题的能力和对于复杂场景的泛化能力较差。

为了解决PointNet所存在的问题,设计一个基于多粒度特征的网络分类模型,利用KNN(K-Nearest Neighbor)和FPS(Farthest Point Sampling)算法对点云数据进行多层次粒化操作,在对于不同粒度层进行特征提取,通过MaxPooling使得不同粒度层的特征进行结合以完成相应的分类和分割任务,并且取得了较好的效果。

1 相关工作

1.1 基于卷积的方法

卷积神经网络(CNN)在2D图像领域大放异彩,在许多的图像处理任务中都达到了最先进的性能。使用离散化卷积的优势在于,它能充分利用了数据的网格结构,而点云数据不具备这种网格结构。要想在点云上使用卷积操作有两种方案:第一种是将点云数据转换成适合离散卷积的数据形式,如体素[12];第二种是创建一种新的卷积形式来处理无结构的点云数据。最近,Boulch[13]在2020年提出的ConvPoint就利用卷积概念,使用多层感知机(MLP)学习到每个点中邻近点的连续权重函数,计算出每个点的密度(Density),来解决点云采样不均匀问题。图1所示为CovnPoint 分类网络框架图。

图1 CovnPoint 分类网络框架图

1.2 PointNet

目前已经有了很多使用深度学习对于点云物体进行分割和分类方法,但大多数研究方法在处理点云时通常会将其转换成特定视角下的深度图像或者体素(Voxel)等更为规整的格式以便于定义权重共享的卷积操作。而PointNet[11]方法允许直接输入点云数据进行处理, 输入为三通道点云数据(x,y,z),也可以有额外的通道比如颜色、法向量等,输出整体的类别、每个点所处的部分、每个点的类别。对于目标分类任务,输出为k个分数,分别对应k个可能的类别。对于语义分割任务,输出n×m个分数,分别对应n个点相对于m各类别的分数。

在PointNet网络模型中,输入的点云数据先通过和一个T-Net网络学习到的转换矩阵相乘来对齐,保证了模型对于特定空间转换的不变性。通过多次MLP对各点云数据进行特征提取之后,再用一个T-Net对特征进行对齐操作,然后在特征的各个维度上执行MaxPooling操作来得到最终的全局特征。图2所示为PointNet的轻量级体系结构。n表示输入点的数量,m表示每个点的学习特征尺寸。

1.3 多粒度特征

粒计算(Granular Computing)[14]是当前计算智能研究领域中模拟人类思维和解决复杂问题的新方法。点云数据包含很多局部空间信息,而很多方法只是对于整个点云数据单一地提取其局部空间信息[15-16],没有完全利用点云数据的几何空间结构。多粒度特征可以提取到点云不同层次的粒度特征信息,相比于单一地对于整个点云数据进行局部特征提取来说,多粒度特征[17]可以获得更多的点云空间结构信息。

2 基于多粒度的点云分类分割模型

受到PointNet和粒计算思想和图卷积思想的启发,提出一种基于多粒度特征提取的分层网络模型。通过构造局部邻域图,对每个点所携带的信息进行重新编码,结合周围邻域和自身信息使得每个点携带局部信息,从而解决点云旋转和平移的不变性问题。完整算法流程如图3所示。

图3 基于多粒度的点云分类分割模型算法流程

基于多粒度的点云分类分割算法描述:

输入:点云数据(2 048, 3)。

输出:分类任务:k分割任务:(2 048, c)。

1) 使用KNN+FPS算法对原始点云数据进行迭代特征聚集采样至三个不同粒度层G1、G2、G3。

3) 对于每个粒度层提取到的特征图进行MaxPooling操作得到每一层的全局特征描述符U1、U2、U3。

4) 对于分类任务,把不同粒度层提取到的特征进行堆叠操作得到全局特征,然后利用全连接网络得到分类结果。

5) 对于分割任务,把不同粒度层提取到的特征分别进行repeat操作把每一粒度提取特征赋予所有点,然后进行维度叠加通过MLP得到最后分割特征图。

2.1 粒化采样层

(1)

边缘函数的选择对于每个点所携带的局部信息具有重要的影响,PointNet只对单个点进行编码,没有考虑到周围局部特征信息,导致其识别特征的能力受到限制。考虑到自身点和邻域点所携带的几何信息采用的边缘函数定义为:

hθ(xi,xj)=hθ(xi,xi-xj)

(2)

这样的结构同时结合了全局形状信息以及局部领域信息。

把点云M进行最远点采样(FPS)采样到N/2个点来传入下一层粒度层,再重新计算每个点的邻域信息进行特征提取。虽然越往下粒度层的点云会变得更稀疏,但其每个点所携带的信息更多,局部信息一层一层从上到下进行传递并且更加细化,每一层提取到的特征点也更加具体。实验表明采用三个不同粒度层结构能获得较好的性能。图4表示粒化采样层算法。

图4 粒化采样层算法

2.2 网络结构

为了获得更好的点云分割与分类效果,需要获得更为精细的点特征,因此采用多粒度特征提取思想,通过分层结构来更好地提取点云的局部特征信息,其网络结构可分为两部分,第一部分为多粒度特征提取结构如图5所示,特征提取过程包括:

图5 多粒度特征提取结构图

1) 输入层。具有N个点的点云模型N×S作为网络的输入,S=3每个点由xyz坐标组成。

2) 粒化采样层。把N个点的点云模型粒化采样成N/2×S×2形状的点云模型作为下一粒度层的点云输入。

3) MLP层。第一粒度层的MLP=(S,64,128,256)。第二粒度层的MLP=(2×S,64,128,256)。第三粒度层的MLP=(4×S,64,128,256,512)。

分类网络如图6所示。把每一粒度层提取到的点云特征进行池化操作(Pooling)得到三个一维向量,再把一维向量按照维度进行拼接成1 024维向量,输入到全连接网络当中进行分类操作。全连接层分为三层,每层的输出维度为(512, 256, 40),在最后一层后面加入了Dropout层。

图6 点云分类网络

点云分割如图7所示,把每一粒度层池化得到的一维特征向量复制给每个点,使得每个点都携带局部和全局的特征信息,通过拼接操作把不同粒度层提取到的不同特征信息拼接起来,通过MLP(512,256,128,k)对每个点进行分类操作,其中k为每个点所对应的类别数。

3 实验与结果分析

3.1 训练与参数

使用PyTorch深度学习框架,在ModeNet40和ShapeNet数据集上进行训练和测试。实验在Ubuntu 18.04.5系统下进行,配置显卡微星GeForce RTX 2080 SUPER, Python 3.6, PyTorch-GPU 1.5.1。

在实验中,采用ModeNet40数据集,该数据集一共9 843个训练样本,每个样本有2 048个点,每个点由xyz三维坐标组成。ShapeNet数据集有12 137个训练样本,每个样本有2 048个点,每个点由xyz三维坐标组成。对于邻域图中的k值分别选取了15、20、25进行实验对比,实验结果表明当k为20时模型效果最好。通过先前实验对比,当粒度层数为三层时且点云数对半递减时,效果明显好于其他层数。根据先前工作研究,本文选取迭代次数200次,学习率为0.01,批训练次数为32,使用ReLU激活函数,优化器采用自适应矩阵估计优化器(adam)。为了防止训练过拟合,对于全连接层采取DropOut操作。

3.2 数据集

1) ModelNet40。

ModelNet40数据集包含40个类别的12 311个CAD模型,其中有9 843个模型用于深度网络的训练,2 468个模型用于测试。

2) ShapeNet。

ShapeNet数据集包含16物体类别,分别为Airplane、Bag、Cap、Car、Chair、Earphone、Guitar、Knife、Lamp、Laptop、Motorbike、Mug、Pistol、Rocket、Skateboard、Table。其中训练样本数为12 137个3D形状,测试样本数为2 874个3D形状。物体分割中,16类物体总共标注了50种零部件。

3.3 实验结果分析

1) 点云分类。

将模型在ModelNet40数据集上进行分类准确率与其他三维模型分类网络作对比如表1所示。

表1 几种模型在ModelNet40上的分类精度对比

可以看出本模型在ModelNet40数据集上的分类准确率更高,比PointNet的精度高出约5百分点,也远高于PointNet++,并且本模型的训练速度要优于PointNet++。当k=20的时候模型精度远好于k为其他值。

在ShapeNet训练集上进行分类准确率与其他模型做对比如表2所示。本模型在ShapeNet数据集上的分类精度也优于PointNet和PointNet++。跟分类实验相同,当k取20时,实验结果要好于其他值。

表2 几种模型在ShapeNet上的分类精度对比

2) 点云分割。

ShapeNet数据集上评估了点云分割模型的性能。物体分割结果分别与Kd-Net、PointNet++、PointNet的分割结果通过所有形状的总平均交并比(mIOU)和每个类的平均交并比(mIOU)的评价标准进行比较,结果如表3所示。比较Kd-Net和PointNet,由于本模型采用多粒度思想,通过邻域图有效地提取了点云的局部信息导致精度得到了较大提升,平均交并比提高了将近4百分点。对比PointNet++,本模型也略优,且速度上本模型也优于PointNet++。分割比较效果图如图8所示。

表3 ShapeNet数据集上的分割效果对比(%)

图8 点云分割效果比对图

4 结 语

采用多粒度思想,结合点云空间几何结构设计出一种基于多粒度思想的深度学习点云识别网络。该模型充分利用点云局部空间结构信息,对每个点的局部信息进行重新编码,采用分层结构逐层提取点云特征,更有效地进行点云识别任务。在自动驾驶领域中,点云处理技术可以对传感器获取的点云地图进行分析。本方法可以将先前技术所构建的点云地图进行分割,可以把背景和前景实物区分开来,仅将前景点用于后续模块处理,该方法可以显著降低目标检测的计算量,提高目标检测的精度。本方法还可以用于识别3D道路中的交通线和路标等重要信息。

在ModelNet40和ShapeNet数据集上的实验表明,本模型可以很好地提取点云的局部特征,在分割和分类任务上性能优于PointNet和PointNet++,并且对大规模点云数据表现出较好的识别潜能。

猜你喜欢

集上粒度卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
粉末粒度对纯Re坯显微组织与力学性能的影响
基于矩阵的多粒度粗糙集粒度约简方法
Cookie-Cutter集上的Gibbs测度
链完备偏序集上广义向量均衡问题解映射的保序性
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
复扇形指标集上的分布混沌
基于粒度矩阵的程度多粒度粗糙集粒度约简
一种基于卷积神经网络的性别识别方法