APP下载

利用空间结构信息的三维点云模型分类

2021-04-12溯,杨

小型微型计算机系统 2021年4期
关键词:邻域空间结构视图

张 溯,杨 军

1(兰州交通大学 自动化与电气工程学院,兰州 730070) 2(兰州交通大学 电子与信息工程学院,兰州 730070)

1 引 言

近年来,随着Kinect、RealSense和Tango等小型三维传感器的出现,降低了人们获取三维模型的门槛,对日益增长的三维模型数据进行高效地分析和处理成为计算机视觉领域的研究热点.在深度学习领域中,VGGNet[1]、GoogleNet[2]、ResNet[3]等网络及其衍生网络[4-7]的不断提出,使卷积神经网络(Convolutional Neural Network,CNN)在解决二维图像的分类识别、语义分割等问题时取得了显著的成效,研究者开始关注如何将CNN在二维图像上的研究成果应用到三维模型的分析与处理上,如三维目标的检测与识别、协同一致分割等.

三维点云模型因具有良好的形状表达能力,在机器人、自动驾驶、场景重建等领域有着广泛的应用.已有的研究大多采用多视图[8-10]或体素化[11-15]的方法处理点云数据,并将其输入到卷积神经网络中进行分析,然而,经过多视图投影处理的模型数据会在一定程度上丢失原模型的空间结构信息,而经过体素化处理的点云数据,分辨率明显降低,直接影响模型的分析处理结果,于是研究者开始尝试直接将点云数据输入到卷积神经网络中进行分析.利用深度学习网络直接处理点云数据面临着3方面挑战:1)点云模型由三维空间中的点组成,在几何结构上具有无序性,而卷积操作对于输入数据的顺序比较敏感;2)当点云模型经过刚性变换后,如平移或旋转,点的三维坐标会发生改变,这要求卷积网络要对刚性变换的模型具有不变性;3)点云模型具有隐含的空间几何信息,因此深度学习网络要有捕捉空间几何信息的能力.

文献[16]提出的PointNet使用对称函数解决点云数据的无序性对卷积操作的影响,将原始点云模型直接作为深度学习网络输入,通过提取模型的全局特征,完成三维模型分类和分割任务.随后提出的PointNet++[17]对点云模型分层采样,能够获取模型的局部特征,得到更好的分类结果.而这些方法仅仅将每个点的三维坐标作为网络的输入,并未考虑模型自身空间结构信息.为此,本文提出一种新的三维点云模型分类框架,充分考虑模型的空间结构信息,构建能够提取表征三维模型空间结构信息的转换网络,以获得更好的模型分类结果.主要创新点及贡献有:1)构建转换网络提取模型的空间结构信息,并通过多层感知机(Multilayer Perceptron,MLP)映射为特征权重;2)构建模型分类网络,将网络提取的浅层特征与特征权重相乘,输出能够表征模型空间结构的高维特征,并通过反向传播算法更新特征权重,使分类网络能够学习模型的空间结构信息.

2 相关研究工作

研究三维模型的分类识别、分割等问题的核心在于模型特征的选择和处理.根据模型特征的提取方式,三维模型分类识别的方法通常分为两类:人工设计特征描述符和深度学习方法提取特征描述符.

人工设计特征描述符的方法通常基于三维模型特定性质的先验知识,其典型代表有波核签名[18](Wave Kernel Signature,WKS)、热核签名[19](Heat Kernel Signature,HKS)、尺度不变特征变换[20](Scale Invariant Feature Transform,SFIT)、旋转图像法[21](Spin Image)、点特征直方图[22](Point Feature Histograms,PFH)、方向直方图签名[23](Signature of Histograms of OrienTations,SHOT)等.但人工设计的特征描述符仅从特定角度出发,不能包含模型的所有特征和属性,无法精确、完备地表征模型,普适性较差,难以推广至不同的研究问题.

深度学习已广泛应用于二维图像的分析中,并逐渐向三维模型的研究领域延伸.早期研究中深度学习作为从低级特征学习高级特征的工具.Shu等人[24]提出的无监督形状分割方法,首先对输入模型进行分解,计算局部特征,然后使用自动编码器学习高级特征并进行模型分割.Guo等人[25]计算模型表面每个三角形的不同尺度局部特征,通过卷积神经网络对模型及其部件的类别进行预测,并标注标签.尽管这些算法使用深度学习从模型低级特征中学习高级特征,但仍旧无法摆脱低级特征通过人工设计所带来的局限性,并未充分发挥深度学习的潜力.

之后的研究方法着手将三维数据转换成规则的表示形式,如体素化和多视图.VoxNet[13]及其衍生网络[26,27]将三维模型转化为体素模型,使用卷积神经网络得到分类或分割结果.然而,体素化会导致部分模型信息丢失,体素分辨率的增加使内存占用和计算消耗过大.KD网络(KD-Net)[28]和基于八叉树的卷积神经网络(Octree-based Convolutional Neural Networks,O-CNN)[29,30]使用树形结构划分模型的体素表示.该类方法利用树形结构可直接寻址的优势,计算时跳过空单元,集中处理信息单元,降低了计算复杂度,然而网络性能仍依赖于体素分辨率,难以处理高分辨率的三维模型.

Su等人[10]首次将多视图卷积神经网络(Multi-view Convolutional Neural Networks,MV-CNN)引入三维模型识别.首先将三维模型投影到多个视图中,并使用基于二维图像的卷积神经网络处理视图,然后将从视图中提取的特征通过最大池化层进行组合,最终通过网络来预测模型标签.Le等人[31]提出一种多视图递归神经网络(Multi-view Recurrent Neural Networks,MV-RNN),将模型的各个视图转化为时间序列,并使用递归神经网络进行处理.尽管基于多视图的方法产生不错的分类和识别结果,但它仍存在局限性:1)将三维模型投影至二维空间,得到的每个视图只包含部分信息,在视图之间进行关联不容易;2)多视图方法仅限于对模型表面建模,不能捕捉其内部结构.

Qi等人提出的PointNet[16]使得深度学习与点云数据紧密结合.该网络通过在模型的每个点上独立提取特征,并使用最大池化将其聚合为全局特征,然而该方法忽略了模型的局部结构信息.为了解决这一问题,Qi等人又提出了PointNet++[17],该网络将PointNet分层应用于点云的多个子集,以获得模型的局部信息.此外,Su等人[32]提出的稀疏网格网络(Sparse Lattice Networks,SPLATNet)将输入点映射到稀疏网格上,使用双边卷积进行处理.文献[33]提出的PCNN将点云上的函数扩展为外围空间的连续体积函数,将点云映射到高维空间,以方便经典CNN的应用,但仍会导致模型结构信息的丢失.

综上所述,目前主流算法趋向于直接处理点云模型,不再将模型转换为投影视图或体素表示.但在提取特征的过程中,仍然将模型上的点独立处理,导致无法完整地捕获模型的空间结构信息,所提取的特征表征模型形状的能力较差.

3 空间结构信息表示

3.1 模型的空间结构信息

三维点云模型由离散点组成,每个点具有不同的属性,如三维坐标、颜色、法向量等.类比二维图像,当三维模型上所有的点缺失颜色、法向量等属性,仅保留坐标信息时,外界仍能获取模型所表达的形状含义.因此,点集所形成的空间结构是三维模型向外界传递信息的关键,点与点之间的位置关系包含着模型的空间结构信息,其可以表达模型的形状含义.通常,可以使用欧氏距离、模型表面的测地距离、空间向量、空间坐标等几何特性表示离散点之间的空间结构信息.

由于计算测地距离要先获得模型的形状表示,过程过于复杂,并且使用过多的几何特性会重复表示相同的空间结构,加大网络的计算难度,本文使用欧氏距离和三维坐标表示点集N的空间结构信息.定义空间结构信息gi,j如式(1)所示:

gi,j=[di,j,xi,yi,zi,xj,yj,zj]

(1)

其中,di,j为点pi,pj之间的欧氏距离,xi,yi,zi和xj,yj,zj分别为点pi和pj的三维坐标.

3.2 特征映射

研究三维点云数据模型分类问题的一般过程是将三维模型上每个点的坐标作为输入,提取其浅层特征,将其逐级映射为高维的特征表示,并将得到的高维特征聚合得到全局特征以完成三维模型分类任务.点pi的浅层特征fi通过映射得到高维特征Fi的过程如式(2)所示:

Fi=M(fi)=ai×fi

(2)

其中,M为映射过程,ai为特征权重.

神经网络通过反向传播算法学习权重ai,使网络性能得到优化.但由于反向传播时ai的梯度仅与pi相关,将点孤立地看待,并未考虑点与点之间的相互关系.若权重ai能够学习空间结构信息gi,j的高维表示,将点pi与其它点相互连接,使得点pi的浅层特征fi通过映射M输出能够表示点之间空间结构信息的高维特征,可以获取更好的分类结果.因此,使用ai,j替换ai,重新定义权重ai,j如式(3)所示:

ai,j=S(gi,j)

(3)

其中,S为获得gi,j高维表示的映射,以此对点pi,pj之间的空间结构信息进行编码.由于MLP具有强大的映射能力,所以采用MLP来实现映射S.权重ai,j通过映射S获得点pi,pj间的高维结构信息,更新特征映射过程如式(4)所示:

Fi=M(fi)=ai,j×fi=S(gi,j)×fi

(4)

此时由于ai,j通过映射S学习点之间的空间结构信息gi,j,其梯度同时与点pi,pj相关,使得高维特征Fi具有点之间的结构信息,映射M具有捕捉空间结构信息的能力.

例如点pi关于pj的空间结构信息gi,j为[di,j,xi,yi,zi,xj,yj,zj],gi,j经过MLP逐层映射,输出的ai,j为[a1,a2,a3,…,a64].这里映射S通过MLP提取gi,j的高维表示形式ai,j,以此编码点pi,pj之间的空间结构信息.传统的特征映射过程中,权重ai通过网络初始随机生成,反向传播算法更新参数时ai的梯度仅与点pi相关.而ai,j为经过编码的空间结构信息,同时与点pi,pj相关,将权重ai替换为ai,j,使得反向传播算法更新参数时ai,j的梯度与点pi,pj同时相关,实现对点之间空间结构信息的学习过程.

3.3 空间结构信息转换网络

图1为本文构建的空间结构信息转换网络(Spatial Structure Information Transform Network,SSITNet)架构.首先将点集构建为以点po为球心,r为邻域半径的球形邻域,点pi为邻域内的任意点,在该邻域内提取点pi关于球心po的空间结构信息go,i,输入到MLP中,得到关于点pi的权重ao,i.球形邻域的半径r通过最远点采样算法(Farthest Point Sampling,FPS)确定,权重ao,i通过反向传播算法更新.

图1 空间结构信息转换网络Fig.1 Spatial structure information transform network

4 点云模型分类

传统CNN[1-7]通过分层不断地使用卷积核扫描二维图像上的像素并做内积操作,使得后面的特征图感受野不断扩大,同时每个像素包含的信息也越多.虽然卷积操作无法直接在三维模型上使用,但采用类似的思想,将三维点云模型以不同尺度划分为若干点云子集,在每个点云子集上提取局部特征,再将其聚合获得全局特征,可以同时保留局部和全局信息,得到良好的分类结果.

图2 邻域Nm的特征提取过程Fig.2 Feature extraction process of Nm

4.1 邻域特征提取

通过最远点采样和球查询(Ball Query)实现三维模型的采样分组过程,以获得模型N的点云子集的球形邻域N1,N2,…,Nm.在Nm中选定中心点po,提取邻域点pi的空间结构信息g.图2为构建的特征提取过程网络,MLP是通过共享权重的卷积实现的,np是邻域点pi的数量,提取点pi浅层特征的第1层卷积核大小是1×3×1,SSITNet第1层卷积核大小是1×7×1,之后的卷积核大小分别是1×1×64、1×1×128.SSITNet通过3层MLP得到含有空间结构信息的权重ao,i,其维度与点pi浅层特征fi的维度相等,权重ao,i与浅层特征fi经过映射M,使得输出的特征Fi包含空间结构信息,再经过MLP映射,对每一个点提取1024维特征,经过最大池化(MaxPool)输出该邻域的1×1×1024的全局特征F.

4.2 三维模型分类网络结构

基于构建的特征提取过程,将输入模型采样分组为多个尺度,逐层提取邻域特征,并聚合为全局特征,以此提出一种基于空间结构信息的三维点云模型分类框架,如图3所示.分组采样层通过特征提取过程获得各个邻域的特征,再将各个邻域的特征聚合为模型的全局特征传入下一个分组采样层,最终获得模型1×1024的全局特征,再经过全连接层得到分类结果.

图3 基于空间结构信息的三维点云模型分类框架Fig.3 Classification framework of 3D point cloud model based on spatial structure information

5 实验与分析

实验采用ModelNet40数据集,其包含40个类别的CAD模型用于训练和测试,其中训练模型9843个,测试模型2468个.分类网络框架采用Python语言编写,Pytorch框架实现,Adam优化算法[34]对参数进行训练,设置Batch Size 为 32,初始学习率为 0.001,动量为 0.9,Dropout 丢弃率为 0.5,初始权重设为高斯分布的随机数.

使用分类准确度Accuracy将本文算法与其他针对点云模型的分类方法进行定量比较,其计算公式如式(5)所示:

(5)

其中,N为测试集的模型数量,TN为测试集中分类正确的模型数量.

表1 不同算法在ModelNet40数据集上的分类准确率Table 1 Recognition accuracy of different algorithms on ModelNet40 dataset

从表1的实验结果可看出,本文方法在ModelNet40数据集上分类准确率明显提高.基于空间结构信息的分类框架将模型分组采样,逐层提取特征,获得模型的局部信息和全局信息,比PointNet[16]分类准确率提高了3.6%.在分层提取特征的基础上,将空间结构信息融入网络,使得权重具有表征空间结构信息的能力,与PointNet++[17],PCNN[33]和KCNet[35]等算法相比,分类准确率均有提高.相比Kd-Net[28]使用大规模点集作为输入,本文方法仅使用1024个点,在分类准确率上提高了1%.当PointNet++[17]使用5000个点和法向量作为输入时,分类准确率为91.9%,而本文算法比其提高了0.9%.

本文还对不同采样分组尺度以及输入点数对网络性能的影响进行了实验探究,结果如表2所示.当采样分组尺度提升,即增加采样分组层数,得到模型的点云子集数量增多,点云子集中的点数减少,使得局部结构更加紧凑,SSITNet网络获得模型的局部信息更加细致,对模型的表征能力逐渐增强,分类准确率也随之提升.文中采用的采样分组尺度为3层.当模型的点数增加,模型的空间结构未发生明显变化,计算时会得到重复的空间结构信息,对模型空间结构的表征能力并无提升,所以输入点数的增多对于网络分类准确率的影响较小.

表2 不同分组采样尺度和输入点数对网络分类性能的影响Table 2 Influence of of different sampling scales and input point number on classification performance of the network

表3 不同MLP层数对网络分类准确率的影响Table 3 Influence of different number of MLP layers on classification accuracy of the network

本文继续探究了SSITNet结构中MLP层数和空间结构信息gi,j对分类准确率的影响.表3是SSITNet中MLP层数对分类网络框架性能的影响,当空间结构信息的高维映射S通过3层MLP实现时,分类准确度最高.其原因是两层MLP对于空间结构信息的拟合程度不足,而4层MLP有可能产生过拟合现象,从而导致准确率下降.空间结构信息gi,j的定义对于权重ai,j有着直接影响,如表4所示.仅使用三维欧氏距离定义空间结构信息gi,j,获得92.5%的分类准确率,但将对应点的坐标加入空间结构信息gi,j,准确率有所提升,表明更为详细的空间结构信息使网络对模型的描述能力有所提高.

表4 不同的空间结构信息对网络分类准确率的影响Table 4 Influence of different spatial structure information on classification accuracy of the network

6 结 论

本文提出一种能够提取三维模型空间结构信息的SSITNet,并以此实现三维点云模型的分类.首先对三维模型分组采样,得到若干球形邻域,计算每个邻域内点的浅层特征,并使用SSITNet将空间结构信息转换为特征权重,获得模型的浅层特征,再经过高维映射和聚合得到球形邻域的全局特征,在3个尺度内逐层迭代,最终输出分类结果.该框架能够有效地表征模型的局部和全局信息,并对于空间结构有着良好的刻画能力,比主流算法在分类准确率上都有所提升.然而对于模型空间结构信息的表征局限于欧氏距离,模型表面的测地距离有更好的刻画能力,但测地距离难以简单高效地计算,下一步的工作将模型的测地距离与SSITNet相结合,以期取得更好的分类结果.

猜你喜欢

邻域空间结构视图
基于混合变邻域的自动化滴灌轮灌分组算法
基于近邻稳定性的离群点检测算法
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
《投影与视图》单元测试题
国内历史文化街区研究综述
道路绿化带的不同空间结构对污染物扩散的影响
运用弗洛伊德人格结构理论浅析《被占的宅子》的空间结构
河北燕郊的空间结构规划
Django 框架中通用类视图的用法