张 毅,林云汉,3,刘双元
(1.武汉科技大学计算机科学与技术学院,武汉 430065;2.智能信息处理与实时工业系统湖北省重点实验室,武汉 430065;3.武汉科技大学 机器人与智能系统研究院,武汉 430081)
三维数据是一种空间立体图像,其不仅包含二维数据具有的颜色信息,而且还携带独有的深度信息,在自主导航[1-2]、增强现实[3]、物体识别[4-5]、机器人[6-7]等众多领域都有着广泛的应用。近年来,随着基于深度学习的方法在二维数据处理方面取得重大突破,众多研究者开始尝试利用深度学习算法来替代传统的算法实现高效的三维数据处理。不同于二维图像数据的规则排列方式,三维的点云数据是无序的,因此直接进行卷积时存在以下三个问题:一是点云的无序性,点云数据对数据的顺序不敏感,导致点云分布不规律;二是点云数据的排列不变性,不同的矩阵可以表示相同的点云数据;三是点云数量的差异性,对于同一幅图像,不同的传感器获取的点云数量可能存在很大差异。
现有基于深度学习处理点云数据的方法主要可以分为基于多视图、基于体素和直接处理三类。其中,直接处理点云的方法很好地解决了对点云数据直接进行卷积时存在的问题,受到了广泛的关注与研究。对点云进行直接处理的一系列网络主要由采样、分组和融合三个模块组成。其中,采样的算法包括最远点采样(Farthest Point Sampling,FPS)和随机采样(Random Sampling,RS)两种。例如,PointNet++[8]和RSCNN[9]使用FPS 进行采样,RandLA-Net[10]则是利用RS 进行采样。经过FPS 采样的点会均匀覆盖到物体表面,但是在点云密度分布不均匀的情况下,采样点不具有代表性,而且由于采样点对异常值敏感,在采样时会选中原始点云中距离物体表面较远的噪点作为采样点。此外,FPS 的时间效率也较低,特别是在大规模场景下,采样效率无法满足网络实时性的要求。在普通电脑配置下,对10 万个点进行采样,FPS 所需时间量级是秒级,而RS 的时间量级则是毫秒级,RS 比FPS 快至少1 000 倍以上。对于RS,其应用前提是原始点云数据中点云被选择的概率相同。相比于FPS,虽然RS 的速度很快,但是由于随机采样过程中所有点被选择的概率是相同的,因此最终采样的结果中会包含一些关键特征的点或者离群点,造成物体关键特征信息的缺失和算法对噪声点敏感。
为解决FPS 算法时间效率和RS 算法关键特征丢失问题,本文参考人类观察事物的注意力模式,提出一种基于注意力机制的采样网络。设计注意力采样(AS)模块用于收集语义和任务信息,有效提取原始点云数据中的关键点。在此基础上,提出一种易于合并到不同backbone 中的注意力采样架构,构成面向低采样率的点云数据处理网络AS-Net。
AS-Net 网络结构如图1 所示,将n个点输入到网络,然后通过两个抽象阶段和一个任务阶段,再使用对称函数融合点的特征后,最终输出k个类的分类分数。其中,抽象阶段由注意力采样(AS)模块、分组(GP)模块和融合模块组成。
图1 AS-Net 网络架构Fig.1 Network architecture of AS-Net
2015 年起,很多研究将处理二维图像过程中使用卷积神经网络的方式[11-12]应用到点云的处理中,其核心思想是使用很多不同视角的二维图像来代替三维点云数据,之后再进行处理,例如MVCNN[13],该方法在ModelNet40 上的分类准确率达到90.1%。GVCNN[14]在MVCNN 的基础上加入了对各视图间关系的考虑,在ModelNet40 上的分类准确率达到93.1%。这类处理方法虽然具有大量的视角图像,但依然会丢失信息,无法将三维模型完全表示出来。而使用这类方法应考虑的另一个问题是如何聚合多个视图的特征以实现提取特征的利用率最大化。
基于体素的点云处理方法将点云转为体素网格来表示,以体素为单位进行卷积,使用三维滤波器来训练卷积神经网络,例如VoxNet[15]。然而,当三维点云数据十分庞大时,三维卷积神经网络会处理得十分缓慢。因此,为保障网络的正常训练,通常会选择使用低分辨率的体素网格进行训练,但这样会带来大量的点云信息丢失,最终导致很大的误差。对于这类方法,如果体素化的数据分辨率设置过低,会给后续任务带来误差,而如果分辨率设置过高,则会导致计算复杂度太大,因此,很难在这两者之间取得平衡。
无论是基于多视图的方法还是基于体素的方法,都需要对原始数据进行转换,这种转换不仅会导致模型复杂度过高,而且还会造成三维几何信息的丢失。
2017 年,斯坦福大学的QI等[16]提出了一种直接处理点云数据的神经网络PointNet,实现了对点云的直接特征提取。PointNet 利用设计的T-Net 处理点云的置换不变性问题,通过对称函数来获取全局的特征信息,解决点云的无序性问题,针对物体分类、部件分割以及场景语义分割等任务提出了统一框架。然而,虽然这种设计十分简单高效,但是却忽略了点云中的局部信息。同年,QI 等[8]在PointNet 的基础上提出 了PointNet++,通过学习不同尺度的上下文信息来融合局部特征。该算法的核心是多层次的特征提取结构。首先在输入点中选择一些点作为中心点,然后围绕每个中心点选择一个区域,再将每个区域作为PointNet 的一个输入样本,得到一组区域特征。之后中心点不变,扩大区域,把上一步得到的区域特征输入PointNet,依此类推,最终得到一组全局的特征,用于后续任务。此外,PointNet++还使用了多尺度的方法,解决了样本不均匀的问题,在样本稀疏时具有鲁棒性。2019 年,LIU等[9]提出了RSCNN,其为一种基于点云之间几何关系的卷积神经网络,核心是建立点云间的拓扑约束关系,利用点云的形状关系数据学习出卷积核里面的参数。学习后的卷积核参数包含了点云的形状关系信息,可使整个网络对点云刚体变换更具鲁棒性。2020 年,ZHAO 等[17]提出了基于Transformer 的点云处理网络PAT,利用Transformer 的置换不变性在不同的实验任务中取得了较好的效果。同年,朱威等[18]提出了一种基于动态图卷积的深度学习网络,将PointNet 中的特征学习模块替换为动态图卷积模块,提高了整个网络对局部信息的学习能力,在分类和分割的任务上具有很高的精度。2021 年,顾砾等[19]在PointCNN 的基础上提出了一种基于多模态特征融合的网络模型[20],在对点云直接特征提取前提下,融入了投影图的特征信息,该网络模型在ModelNet40 数据集上分类精度达到96.4%。2021 年,田钰杰等[21]提出深度神经网络RMFP-DNN,利用自注意力模块和多层感知机提取点云的局部特征和全局特征,并将提取的特征互相融合,提高了分类分割的鲁棒性。
在三维视觉的实际应用中,不仅要处理完整均匀且数据量较少的CAD 数据集模型,而且还要处理数据量多的实际点云数据。PointNet++[8]和RSCNN[9]可以很好地处理像ModelNet40 这样的CAD 数据集,但是直接处理点云的三维神经网络大多包含了采样这个核心步骤,例如PointNet++和RSCNN 中都包含最远点采样(FPS),对大规模实际点云的处理效率低下。除了高复杂度以外,FPS 与三维网络训练是分开计算的,这意味着仅基于点云低级信息来选择关键点而不考虑对象语义和任务消息。本文主要的设计思想便是设计一个可以代替独立采样过程的采样层,并将该采样过程集成到其他任务网络中进行基于数据驱动的端到端训练。在此基础上,提出一种基于长短期记忆(Long Short-Term Memory,LSTM)网络和注意力机制的采样层AS Layer,然后将注意力采样层连接起来,形成一个可以设置采样率的注意力采样模块AS Module。将其他网络模型中的采样模块替换为AS Module,形成最终的网络AS-Net,即AS-Net由其他网络的backbone和AS Module组成。
LSTM 网络是一种特殊结构的循环神经网络,能够很好地解决长期依赖的问题,在语音识别、文本建模、翻译、行为预测、视频理解等领域取得了成功应用。然而,LSTM 存在一定局限性,当输入序列较长时,难以得到最终合理的向量表示。为了解决这个问题,注意力机制被提出。在注意力机制中,LSTM 的中间结果被保留,然后通过新模型进行学习,最后与输出相关联以实现对信息的筛选[22]。近年来,基于注意力机制的网络也被应用于三维数据的处理,例如:3D2SeqViews[23]利用层次注意力的方法来处理视图中的海量信息以及视图之间的空间关系,有效融合了序列视图;SeqViews2SeqLabels[24]引入了注意力机制以提高网络的判别能力并为每种形状类别添加相应的权重;Point2Sequence[25]通过使用注意力机制将权重分配给不同的区域比例。在现有的3D 网络中,注意力机制用于对网络中的特征信息进行加权,而基本方案还是基于二维多视图的图像处理。
本文提出的AS-Net 是一种直接处理点云的三维网络。注意力机制用于构建下采样模块,对点云进行加权以获得原始点云数据的加权特征。经过本文设计的下采样模块采样的点,可以保留更多关键信息,特别是在处理大规模场景时可以保证网络的准确性。
AS-Net 网络结构如图1 所示,其中包括由本文设计的AS Layer 构成的AS Module 和其他网络的backbone。
AS Layer 主 要由LSTM 组成,如图2 所示。
图2 AS Layer 结构Fig.2 Structure of AS Layer
AS Layer 的目的是生成点云的注意力图,这张注意力图将会引导之后的分组层和融合层专注于更加重要的点。采样方法如式(1)所示:
其中:Pt是采样后的点集;Pt-1是输入的原始点云数据或者是上一层采样后的点云数据;Ht-1和Ct-1是上一层的隐藏层特征和细胞状态特征;N为LSTM 的循环次数。在训练过程中,Ht-1和Ct-1的初始值均为0,N表示的是经过AS Module 采样后的点云数目,可以手动设置为任意值。
本文使用LSTM 网络中的“门”结构来对原始点云数据进行特征提取,并生成原始点云数据的注意力特征图。注意力特征图的大小和输入的原始点云的大小相同,通道数为1,经过Sigmoid 激活函数之后,得到了每个点相对于后续任务的重要性,也就是注意力强度。本文设计的AS Layer 包含以下4 个主要的步骤:
步骤1确定需要丢弃的信息,如式(2)所示:
其中:Ft指的是遗忘门输出;Ht-1和分别是上个隐藏层的特征信息和输入点云的特征信息;Wf表示权重;bf表示偏差。
步骤2确定需要保留的信息以及状态的更新方法,如式(3)和式(4)所示:
首先,通过输入门保留数据并更新状态值。然后,计算上一层的状态Ct-1与遗忘门ft的乘积以放弃不必要的信息,例如离群点或者NaN 点。最后,计算输入门与tanh 激活层所构建的新候选向量的乘积,从而更新状态Ct。
步骤3确定输出值,如式(5)和式(6)所示:
利用上一个隐藏层的特征信息和输入点云的特征信息,先计算出输出门信息,然后根据输出门Ot和经过tanh 激活层的状态Ct的乘积得到最终的输出值Ht。
步骤4将输出值激活并映射到0 到1 之间,如式(7)所示:
其中:A值越大,表示该点对于后续任务的相关性越高,最终得到一份全局点云信息的注意力图。
AS Module 由多个AS Layer 连接而成,每层Layer可以根据其输出的注意力图选择若干关键点,并将选择的关键点作为采样结果提供给下一层。AS Layer的层数和每层后的选择点数可根据实际需要设置。在本文中,综合考虑网络的时间性能和采样性能,经实验验证,采用两个AS Layer 组成的AS Module 性能最佳。AS Module 结构如图3 所示。本文设计的AS Module的采样率是一个变量,这意味着可以根据实际采样需求手动设置不同的采样率。
图3 AS Module 结构Fig.3 Structure of AS Module
本文通过分类实验和抗噪实验验证AS Module的有效性,设计消融实验验证AS Module 中Layer 参数选择的合理性,并在物体分类任务和大场景分割任务上验证AS-Net 模型的准确性。对于AS Module的验证,在同一基准网络PointNet 上执行不同的采样方法,以验证AS Module 对物体分类的精度和对高斯噪声的鲁棒性。对于AS-Net 的验证,包括三维物体分类和大场景分割两个方面的实验测试。本文实验使用Tensorflow 框架,在11 GB 内存的NVIDIA GeForce GTX 1080 Ti GPU 上进行,操作系统为Ubuntu 16.04。
在本节中,以PointNet为基准网络架构,分别使用FPS 方法、RS 方法以及AS Module 对原始点云进行采样处理,测试不同的采样方法对原始数据的采样效果,以物体分类的精度作为评价指标。测试数据集为ModelNet40 数据集,数据集包含40 类物体的12 311 个CAD 模型,其中9 843 个用于训练,2 468 个用于测试。
本文使用FPS 方法、RS 方法和AS Module 对原始数据进行下采样,将原始数据下采样到原始数据的1/2、1/4、1/8、1/16 和1/32。然后,将采样点作为PointNet 的输入来测试分类精度。测试结果如表1和图4 所示,表中最优数据以加粗标注。
表1 不同采样率下各采样方法的分类精度对比Table 1 Classification accuracy comparison of each sampling method under different sampling rates
图4 本文方法与FPS、RS 方法的分类精度对比Fig.4 Classification accuracy comparison among FPS,RS methods and the proposed method
表1 和图4 表明,当采样数据为原始数据的1/4时,基于FPS 和RS 的网络分类准确率分别为82.0%和75.0%,而基于AS Module 的分类准确率仍达到87.1%。此外,当采样数据为原始数据的1/32 时,基于FPS 和RS 的网络已经不能对物体准确分类,而AS Module 的分类精度仍然在80%以上(81.6%),证明了基于AS Module 的网络具有很强的鲁棒性。整体的实验结果表明,AS Module 可以在无序点云中准确地找到与后续任务相关性高的采样点。
图5~图7 展示了ModelNet40 数据集中人型模型利用不同采样方法的可视化结果。可以看出,本文方法可以更好地保留原始模型中比较突出特征的关键点,准确分辨出球、头部以及四肢的形状。
图5 人模型采用RS 方法的可视化结果Fig.5 Visualization results of humanoid model using RS method
图6 人模型采用FPS 方法的可视化结果Fig.6 Visualization results of humanoid model using FPS method
图7 人模型采用AS Module 方法的可视化结果Fig.7 Visualization results of humanoid model using AS Module method
在每个点上添加均值为0、标准差为0.05 dB 或0.1 dB 高斯噪声,然后对比不同的采样方法对于PointNet 分类准确率的影响,结果如表2 所示,表中最优数据以加粗标注。可以看出,在不同的采样率下,在标准差为0.05 dB 或0.1 dB 的高斯噪声下,AS Module 都获得了更高的物体分类准确率。
表2 不同采样方法对扰动噪声的鲁棒性测试结果Table 2 Robustness test result of different sampling methods to disturbance noise
以上两个实验的结果证明,本文提出的AS Module 可以很好地从原始点云数据中挑选出含有更多信息的关键点,可在整个三维网络中实现高精度的物体分类提供可靠保证。
将主流的直接处理点云的网络中的采样方法替换成AS Module,形成不同的AS-Net。本节实验证AS-Net在三维物体分类上的性能,实验设定与PointNet 一样,在ModelNet40 数据集上进行评估并利用分类准确率作为评价指标。表3 对比了AS-Net与其他基于点的方法在物体分类任务上的准确率。可以看出,利用AS Module改进的RSCNN-ssg得到的AS-Net(RSCNN-ssg)优于其他所有网络,分类准确率从原始的RSCNN-ssg的92.2%提高到了92.54%,且投票后准确率可以达到92.77%。需要说明的是,RSCNN 的多尺度模型目前还不稳定,作者没有公布源码,所以,本文仅对RSCNN 的单尺度分类模型进行对比和分析。同样将PointNet++-ssg中的FPS换成ASModule得到AS-Net(PointNet++-ssg),将分类准确率从90.7%提高到了91.34%,证明了本文的采样方法相比于其他同类方法具有更好的采样性能。
表3 ModelNet40 数据集上的物体分类精度Table 3 Object classification accuracy on ModelNet40 dataset
在大场景分割中,由于点云数量过多导致计算效率低下,因此,采样算法在大场景中具有重要的作用,可以在一定程度上缩短整个分割的时间。本节主要对AS Module 在大场景分割下的效率和性能进行分析,其中大场景分割是在ScanNet 上进行测试和评估,该数据是一个大规模的RGB-D 数据集,其中包括1 513 个扫描和重建的室内场景。
在测试过程中,输入点云数量为8 000,实验过程中测试并记录网络所需要的推理时间和浮点数数据量,通过测试的分割准确率来评估性能,以及记录的推理时间和浮点数数据量来评估网络的效率。由于GPU 准备需要时间,因此忽略第一批测试时间,最终结果如表4 所示,其中最优数据以加粗标注。
表4 ScanNet 数据集上的语义分割结果Table 4 Semantic segmentation results on ScanNet dataset
如表4 所示,通过将PointNet++中采样算法进行替换(将原来的FPS 替换为本文提出的采样方法),在ScanNet 数据集下的测试结果表明:替换前后的分割准确率虽然提高不明显,其参数数量和浮点数数量与原始的PointNet++-ssg 基本相同。然而AS-Net将推理时间减少了50%,显示了其在大规模场景分割方面的巨大潜力。
在消融实验中,通过改变AS Module中AS Layer的层数进行分析和验证。利用改变后的AS Module 对原始点云数据进行采样,之后将采样点作为分类网络的PointNet 的输入,测试物体的分类精度和时间效率。
不同层数下的分类准确率和测试时间如表5和表6所示,其中测试时间是通过计算ModelNet40 测试集运行一次的时间。可以看出,当AS Module 中Layer 的层数为1 时,低采样率下的分类准确率明显低于层数为2 或3 的AS Module,说明当Layer 层数过低时,提取的特征信息不足以在后续过程中选择关键的采样点。当AS Module 中的Layer层数的范围在2~4 层且采样的点云数目相同时,不同的层数对最终的分类准确率的影响不超过1%。反而随着Layer层数增多,AS Module 更加复杂,测试时间变慢。当Layer 层数达到5 层时,由于层数过多,深层Layer 没有很好地学习到点云特征,难以优化。综上所述,建议将AS Module 中的Layer 层数设置为2 层。
表5 不同层数下的分类精度对比Table 5 Comparison of classification accuracy under different layers
表6 不同层数下的测试时间对比Table 6 Comparison of test time under different layers
本文构建一种面向低采样率的点云数据处理网络,将注意力机制应用于三维网络对原始点云数据进行下采样,并提出AS-Net,其核心是本文设计的AS Module,可以有效地从原始点云数据中提取出有利于后续任务的关键点。在分类实验中,本文所提出的基于AS Module的AS-Net 的分类准确度均高于其他网络。在分割任务中,也展现了对大场景点云任务进行高效处理的潜力。此外,AS Module 是一种灵活的采样结构,可以很容易地集成到不同的backbone 中,实现端到端的网络训练。下一步研究将把本文方法应用于更多包含采样的网络模型中,针对实际的应用领域或者实际的点云场景进行更全面的测试与验证。