深度学习模型直接处理三维点云

 

雷锋网 AI 科技评论按:虽然CVPR 2017已经落下帷幕,但对精彩论文的解读还在继续。下文是Momenta高级研究员陈亮对此次大会收录的 PointNet:Deep Learning on Point Sets for 3D Classification and Segmentation 一文进行的解读。

随着激光雷达,RGBD相机等3D传感器在机器人,无人驾驶领域的广泛应用。针对三维点云数据的研究也逐渐从低层次几何特征提取( PFH, FPFH,VFH等)向高层次语义理解过渡(点云识别,语义分割)。与图像感知领域深度学习几乎一统天下不同,针对无序点云数据的深度学习方法研究则进展缓慢。分析其背后的原因,不外乎三个方面:

1.点云具有无序性。受采集设备以及坐标系影响,同一个物体使用不同的设备或者位置扫描,三维点的排列顺序千差万别,这样的数据很难直接通过End2End的模型处理。

2.点云具有稀疏性。在机器人和自动驾驶的场景中,激光雷达的采样点覆盖相对于场景的尺度来讲,具有很强的稀疏性。在KITTI数据集中,如果把原始的激光雷达点云投影到对应的彩色图像上,大概只有3%的像素才有对应的雷达点。这种极强的稀疏性让基于点云的高层语义感知变得尤其困难。

3.点云信息量有限。点云的数据结构就是一些三维空间的点坐标构成的点集,本质是对三维世界几何形状的低分辨率重采样,因此只能提供片面的几何信息。

面对以上困难,来自斯坦福大学的学者提出了PointNet,给出了自己的的解决方案。PointNet是第一种直接处理无序点云数据的深度神经网络。一般情况下,深度神经网络要求输入信息具有规范化的格式,比如二维的图像,时序性的语音等。而原始的三维点云数据往往是空间中的一些无序点集,假设某一个点云中包含N个三维点,每一个点用(x,y,z)三维坐标表示,即使不考虑遮挡,视角等变化,单就这些点的先后顺序排列组合,就有 N! 种可能。因此,我们需要设计一个函数,使得函数值与输入数据的顺序无关。实际上,在代数组合学中,这类函数被称为对称函数。PointNet 中,作者使用了Max Pooling 层做为主要的对称函数,这种处理虽然简单,但是实验证明效果较好。

上图是PointNet的网络架构,输入是包含n个点的三维点云(nx3) , 原始数据通过一个3D 空间变换矩阵预测网络 T-Net(3),估计出3x3的变换矩阵T(3) 并作用在原始数据上,实现数据的对齐。对齐后的数据会以点为单位,通过一个共享参数的双层感知机模型进行特征提取 。每个点提取出64维的特征,再通过特征空间变换矩阵预测网络 T-Net(64) 预测64x64的变换矩阵,作用到特征上,实现对特征的对齐。然后继续利用三层感知机(64,128,1024)进行以特征点为单位的特征提取,直到把特征的维度变为1024,继而在特征空间的维度上进行Max Pooling,提取出点云的全局特征向量。

在点云分类任务中,可直接利用特征向量训练SVM或者多层感知机来进行分类,而在以点为单位的点云分割或者分块任务中,需要结合每一点的局部特征和全局特征进行特征融合和处理,实现逐点的分类。PointNet中把经过特征对齐之后的64维特征看成是点的局部特征,把最后的1024维特征看成是点的全局特征,因此通过一个简单的拼接,把局部和全局的特征捆绑在一起,利用多层感知机进行融合,最后训练分类器实现逐点的分类。

PointNet是第一个可以直接处理原始三维点云的深度神经网络,这种新颖的网络设计可以直接对原始点云进行处理,进而完成高层次的点云分类和语义分割的任务,而且完全依赖于数据。从实验验证的结果来看,其效果和当前最好的结果具有可比性,在一些方面甚至超过了state-of-the-art,值得进一步挖掘和研究。

论文作者问答:

Q:输入的原始三维点云数据需要做归一化吗?

A:和其他网络的输入一样,输入点云数据需要做零均值的归一化,这样才能保证比较好的实验性能。

Q:深层神经网络处理三维离散点云的难点在哪里?PointNet是如何解决这些难点的?

A:深度神经网络处理三维离散点云数据的难点主要在于点云的无序性和输入维度变化。在本篇文章中,我使用了深度神经网络中的常用对称函数 :Max Pooling 来解决无序性问题,使用共享网络参数的方式来处理输入维度的变化,取得了比较好的效果。

Q:是否可以使用RNN/LSTM来处理三维点云数据?

A:RNN/LSTM可以处理序列数据,可以是时间序列也可以是空间序列。因此从输入输出的角度来讲,他们可以用来处理三维点云数据。但是点云数据是无序的,这种点和点之间的先后输入顺序并没有规律,因此直接使用RNN/LSTM效果不会太好。

Q:T-Net在网络结构中起的本质作用是什么?需要预训练吗?

A:T-Net 是一个预测特征空间变换矩阵的子网络,它从输入数据中学习出与特征空间维度一致的变换矩阵,然后用这个变换矩阵与原始数据向乘,实现对输入特征空间的变换操作,使得后续的每一个点都与输入数据中的每一个点都有关系。通过这样的数据融合,实现对原始点云数据包含特征的逐级抽象。

Q:PointNet 与 MVCNN 的实验结果比较中,有些指标稍差,背后的原因是什么?

A:PointNet提取的是每一个独立的点的特征描述以及全局点云特征的描述,并没有考虑到点的局部特征和结构约束,因此与MVCNN相比,在局部特征描述方面能力稍弱。面对这样的问题,我们基于PointNet已经做了一些改进和提升,新的网络命名为 PointNet++,已经上传到Arxiv,欢迎大家阅读并讨论交流。

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要制作三维点云深度学习模型,您可以遵循以下步骤: 1. 数据准备:收集和准备三维点云数据集。您可以使用各种传感器(例如激光雷达、结构光)来获取三维点云数据,然后对其进行预处理,例如去噪、点云配准等。 2. 特征提取:选择合适的特征提取方法来从点云数据中提取特征。例如,您可以使用voxel-based方法将点云数据转换为体素网格,并使用卷积神经网络(CNN)对其进行处理。 3. 模型构建:基于您选择的特征提取方法,构建深度学习模型。您可以选择传统的CNN、循环神经网络(RNN)、图神经网络(GNN)等方法来构建模型。 4. 模型训练:使用训练数据集对深度学习模型进行训练。在训练过程中,您需要选择合适的损失函数和优化器,以最小化模型预测值和真实值之间的差距。 5. 模型评估:使用测试数据集对模型进行评估,并计算模型的性能指标,例如准确率、召回率、F1值等。 6. 模型应用:将模型应用于实际场景中。例如,您可以使用模型来进行目标检测、物体识别等任务。 ### 回答2: 三维点云是一种表示物体或场景几何形状的数据结构。三维点云深度学习模型是使用深度学习方法对三维点云进行处理和分析的模型。下面是一般的三维点云深度学习模型设计步骤: 1. 数据预处理:首先,需要将原始三维点云数据进行预处理。这包括去噪、采样和规范化等步骤。去噪可以通过滤波算法去除噪声数据。采样则可以通过保持点云的形状特征的同时减少点云数据的数量,以降低计算复杂度。规范化可以将点云数据映射到标准坐标系中,方便后续处理。 2. 特征提取:在三维点云深度学习中,常常需要将点云数据转换为可供深度学习模型使用的特征表示形式。这可以通过手工设计的特征提取算法,如局部几何特征描述符或深度学习方法,如卷积神经网络等。特征提取的目标是提取出含有有用信息的表征,以便后续的分类、分割等任务。 3. 模型设计:根据任务的不同,可以选择不同的深度学习网络架构进行建模。常见的三维点云深度学习模型包括PointNet、PointNet++、DGCNN等。这些模型主要使用了卷积神经网络结构,以实现对点云的自动特征学习和模式识别。 4. 模型训练:在模型设计完成后,需要使用标注好的数据对模型进行训练。这包括将点云数据输入到模型中,通过反向传播算法更新模型的权重参数。在训练过程中,可以使用一些优化算法,如随机梯度下降(SGD)或Adam,来最小化损失函数并提高模型的性能。 5. 模型评估和应用:在模型训练完成后,需要对模型进行评估和测试。可以使用一些评估指标如准确率、召回率等来评估模型的性能。模型训练好后,可以使用它来进行诸如分类、分割、配准等各种不同的三维点云处理任务。 总之,建立三维点云深度学习模型的关键步骤包括数据预处理,特征提取,模型设计,模型训练和模型评估。通过这些步骤可以提高三维点云处理效果和精度,进而实现更多的应用需求。 ### 回答3: 三维点云深度学习模型是为了处理三维点云数据而设计的深度学习网络。以下是创建三维点云深度学习模型的一般步骤: 1. 数据准备:首先,需要收集或生成三维点云数据集。这可以通过使用激光雷达扫描物体或环境来获得点云数据,并将其转换为合适的格式,如ASCII或二进制文件。 2. 数据预处理:对点云数据进行预处理是必要的,以确保其适用于深度学习模型。常见的预处理步骤包括去除离群点、点云采样、坐标归一化等。 3. 特征提取:为了使深度学习模型能够有效地处理点云数据,需要将点云转换为适用于深度学习算法的特征表示。常见的方法包括使用体素化(Voxelization)将点云表示为三维体素(voxel)表示,或者使用图卷积网络将点云表示为图结构进行处理。 4. 模型设计:选择合适的深度学习模型处理点云数据。常用的模型包括PointNet、PointNet++、PU-Net等。这些模型可以用于分类、分割或生成任务。可以根据具体任务需求选择最合适的模型。 5. 模型训练:使用标注的点云数据对模型进行训练。训练过程中,需要定义合适的损失函数来评估预测结果与真实标签之间的差异,并使用优化算法(如随机梯度下降)来更新模型的参数以最小化损失。 6. 模型评估:使用测试数据集对训练好的模型进行评估。常见的评估指标包括分类准确率、分割IoU等,根据具体任务需求选择合适的评估指标。 7. 模型应用:训练好的模型可以用于各种三维点云相关的任务,如目标检测与分类、物体分割、点云重建等。根据实际需求,将模型应用到实际场景中。 总结来说,要设计一个三维点云深度学习模型,需要进行数据准备、数据预处理、特征提取、模型设计、模型训练、模型评估和模型应用等步骤。这些步骤需要根据具体任务需求和数据特点进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值