胡永东,张正文,李 婕
(湖北工业大学 电气与电子工程学院,湖北 武汉430068)
传统的点云分类方法是通过人工设计一系列的特征,然后使用合适的分类器对三维点云直接进行分类[1]。这种分类方法在很多特定场景中取得了成功,但该分类方法只能在特定数据集下实现不错的分类效果,应用到新的数据集中效果并不是很理想[2]。
近些年,深度学习在计算机视觉领域快速发展。常用的方法是先将三维点云数据进行体素化,使其变成规则的三维网格结构[2],然后使用三维卷积神经网络对规则化后的数据进行操作。但是随着点云密度的增长,这种方法所需要的内存和计算量将会随分辨率的提高呈三次方增长。所以该方法只适用于较浅的三维网络模型。在2017年,Qi 等提出了PointNet 网络[3],通过使用多层感知器(MLP)学习每个点的高维特征,同时,将最大池化层作为对称函数,实现了对无序点云的直接处理,网络获得了不错的分类效果。但PointNet 无法获取每个点的邻域几何信息,所以在复杂的点云场景中使用时,表现不佳。之后,Qi 等又提出了PointNet++[3],该网络使用欧氏距离差值法对点进行上采样,并将插值计算得到的语义特征与低层学习的语义特征融合,从而获取到每个点更加丰富的语义特征,但该方法对局部空间内每个点进行的依旧是单独处理,仍有部分结构信息的损失。
近些年,由于图卷积在二维图像处理领域获得了较好的效果。在2018年,Wang 等人提出了一种动态图卷积神经网络DGCNN[2],通过引入边缘卷积模块来获取到点云数据的局部特征,获得较好的分类效果。然而,该方法只能捕获到有限邻域内的边缘特征,缺少多尺度特征,最终还是损失了部分局部几何信息[4]。
针对以上问题,本文在提出一种可以获取多尺度点云局部特征的深度学习网络。通过获取不同范围内等间隔采样的k个邻近点,将点云数据构造成包含顶点和边信息的图结构数据,然后使用图卷积模块学习其高维度特征。该网络的多尺度图卷积结构,既保证了点云的置换不变性,又可以获取到多个尺度的局部几何信息和全局特征。本文网络通过在ModelNet40[5]数据集上进行实验,结果显示,网络在点云分类准确度上有所提高。
由于点云本身存在的无序性、稀疏性,很多网络在构建大型邻域图时,通常会使用KNN 邻近算法获取距离最近的k个邻近点,从而提取到点云中固定大小的单尺度局部特征信息。然而很多点云数据中的物体是以多尺度形式呈现的,所以,这种网络并不能获取到足够的特征,分类性能相对较低。本文提出一种M-KNN 多尺度邻近算法,通过对不同范围内的邻近点进行等间隔采样获取到k个点,用来表示点云数据不同尺度的局部特征信息,而且该方法不会增加网络的计算量。
将一个具有n个点的D 维点云表示为:
其中X 表示一个点云集合,Xi表示每一个点。每个点具有D 维特征,当D=3 时,表示每个点只包含三维坐标信息,即xi=(xi,yi,zi)。以点xi为中心,计算它与每个点的欧式距离,然后进行排序。传统KNN 邻近算法是将距离xi最近的k个点提取出来作为其邻近点,本文为了达到提取多尺度局部特征的目的,提出M-KNN 邻近算法,即在距离xi点最近的前n/m个点中进行等间隔采样,获取到k个邻近点。m 值的大小表示对点云集合不同程度的划分,越小的m 值对应获取到的k个邻近点所表征的邻域范围越大。
点云的局部结构可以用一个有向图表示:
其中,V={1,...,n} 表示图结构的顶点,E⊆V×V 表示图结构的边。
首先,通过xi及其邻近点构建点云的图结构G。对于点xi,其k个邻近点(用xji1,...,xjik表示),与邻近点之间的定向边为(i,ji1),...,(i,jik)。定义有向图的边缘特征为:
其中,xj-xi代表邻近点构成的局部块信息。hθ是由可学习参数θ 构成的非线性激活函数,这里使用多层感知器(MLP)对中心点xi的局部信息进行提取和学习。然后再用一个最大池化层MaxPooling 来聚合特征,用来完成RD×RD→RD′,即输入具有n个点的D 维点云,通过图卷积后输出具有D′维点云特征的n个点。图卷积模块(GraphConv)的数学表达式如下:
本文中提出的多尺度图卷积点云分类网络结构的框架如图1 所示。网络中所有卷积核参数设置为(1×1),k取值为16。网络读取到点云数据后,首先使用两个通道数都为64 的图卷积模块提取点云的局部特征,此时设置m=n/k=64,即以距离xi最近的k个点作为邻近点。然后再对提取到的点云数据的高维特征进行多尺度特征提取,分别设置m=64、32、16、8,逐步扩大邻域范围,每个尺度的特征提取都包含两个图卷积模块,通道数分别为64、128。然后使用concat 操作将多个尺度的特征融合,接着再添加一个通道数为1024 的卷积层。使用MaxPooling获取到点云集合中最大的1024 维特征值。
最后再引入三层全连接层,通道数分别为:(512,256,c),其中c 表示数据集的类别数,即网络的最终输出为c个类别的语义标签。为了防止网络过拟合,在全连接层中加入了dropout 层,阈值设置为0.5。
训练过程中使用交叉熵损失函数,表示为:
其中:M 表示数据集中的类别数;yic为指示变量,若该类别和样本i 相同则为1,否则为0;pic表示样本i 属于类别c 的预测概率。
图1 多尺度图卷积网络模型
图2 分类准确率随迭代次数的变化趋势
本文网络使用ModelNet4 数据集进行训练和测试。ModelNet40 中包含40个类别的人造物体,共12311个模型。参照PointNet,均匀采样1024个点,并且仅将采样点的坐标作为模型的输入。本文使用Ubuntu18.04 作为系统环境,Python 版本为2.7,TensorFlow 版本为1.15。
网络通过200 轮迭代学习,获得的总体分类准确度、平均分类准确度变化趋势如图2 所示。网络的总体分类准确度随迭代次数的增加维持在92.8%附近,平均准确率维持在90.2%附近。
对比本文网络与现有点云分类网络在测试集上的分类准确度,结果如表1 所示:
表1 ModelNet40 数据集上的分类实验结果对比
根据表1 结果显示,在总体分类准确度和平均分类准确度上,本文所提出的网络都获得了较好的性能。在平均分类准确度上,本文网络比PointNet 高出4.2%,比DGCNN 高出1.1%,比GAPNet 高出0.5%。在总体分类准确度上,本文网络比PointNet 高出3.6%,比DGCNN 高出0.6%,比GAPNet 高出0.4%。
本文针对传统点云分类网络在进行特征学习时存在的局部特征不足、多尺度信息缺失等问题,提出一种基于多尺度图卷积的点云分类网络,通过获取不同范围内等间隔采样的k个点,以搭建不同尺度的图卷积模块来学习点云数据的多尺度局部特征,最后再将这些特征进行融合处理获得点云分类的结果。实验结果表明,本文所提出的网络总体分类准确度能达到92.8%,平均分类准确度能达到90.2%,相比于其他网络,本文提出的网络分类准确度更高。