0
点赞
收藏
分享

微信扫一扫

【CVPR2017】PointNet: 深度学习之3D点集分类与分割

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_分类


文章目录

  • ​​PointNet: 深度学习之3D点集分类与分割​​
  • ​​做了什么​​
  • ​​问题阐述​​
  • ​​深度学习于点集​​
  • ​​相关工作​​
  • 【CVPR2017】PointNet: 深度学习之3D点集分类与分割_3d_02中点云的特性​​
  • ​​PointNet架构​​
  • ​​工作流程简述​​
  • ​​PointNet的三个关键模块​​
  • ​​理论分析​​
  • ​​实验​​


【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_03

PointNet: 深度学习之3D点集分类与分割

做了什么

点云是不规则的,大多数研究人员将这些数据转换为规则的三维体素网格或图像集合。然而,这会使数据冗余。

该论文设计了一种新型的直接处理点云的神经网络——PointNet,它很好考虑到了点云的置换不变性。PointNet为点云分类、部件分割和语义分割等应用提供了一个统一的体系结构。虽然简单,但PointNet是高效的。从实验上看,它的表现相当出色,甚至达到当时的SOTA。

该论文还提供理论分析,证明PointNet具有对任意连续集函数的逼近能力,以及网络对于输入含噪和缺失是鲁棒的。

问题阐述

点云用3D点集合【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_04表示,其中每一个点【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点集_05为坐标向量【CVPR2017】PointNet: 深度学习之3D点集分类与分割_分类_06,还可以有附加的通道,如颜色、法线等。

分类:

对于分类任务,输入的点云可以直接从形状中采样,也可以从场景中预分割。模型输出的是所有【CVPR2017】PointNet: 深度学习之3D点集分类与分割_分类_07个候选类的【CVPR2017】PointNet: 深度学习之3D点集分类与分割_分类_07个分数。

分割:

对于语义分割,输入可以是用于零件区域分割的单个对象,也可以是用于对象区域分割的三维场景的子体积。模型将为【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点集_09点和【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_10种语义子类别输出【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_11个分数。

深度学习于点集

相关工作

Volumetric CNNs:是将3D卷积神经网络应用于体素化形状的先驱。然而,体素表示受到其分辨率的限制,因为体素数据具有稀疏性且三维卷积的计算成本很高。

FPNN、Vote3D:提出了处理稀疏问题的特殊方法;他们的操作仍在稀疏体素上,这对于于处理非常大的点云很有挑战性。

Multiview CNNs:尝试将三维点云渲染为二维图像,然后应用二维卷积网络对其进行分类。通过精心设计的图像CNN,这一系列方法在形状分类和检索任务上取得了卓越的性能。然而,这很难扩展到场景理解或其他3D任务(如点云分割和形状补全)。

Spectral CNNs

仅适用于流形网格。

Feature-based DNNs:

首先通过提取传统形状特征将三维数据转换为向量,然后使用全连接网络对形状进行分类。这样可能受到所提取特征的表示能力的限制。

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点集_12中点云的特性

欧几里德空间【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点集_12中点云有三个主要特性:

  • 无序性:与图像中的像素阵列或体积栅格中的体素阵列不同,点云是一组没有特定顺序的点。换句话说,一个输入大小为【CVPR2017】PointNet: 深度学习之3D点集分类与分割_3d_14的3D点集的网络需要对数据输入顺序上的【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_15种排列应该有同样的输出。
  • 相邻点的相互影响:这些点来自具有距离度量的空间。这意味着点不是孤立的,相邻点形成一个有意义的子集。
  • 变换不变性:作为一个几何对象,点集的学习表示应该对某些变换保持不变。例如,旋转和平移所有点不会改变全局点云的类别,也不应改变点云的分割结果。

PointNet架构

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_分类_16

工作流程简述

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点集_17

分类网络(classification network)以【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点集_09个点为输入,应用输入和特征变换(input and feature transformations),然后通过最大值汇聚(max pool)聚合点特征。最后输出为【CVPR2017】PointNet: 深度学习之3D点集分类与分割_分类_07类的分类分数(output scores)。

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_分类_20

分割网络(segmentation network)是分类网络的扩展。它将全局(global feature)和局部特征连接,输入mlp并最终输出每点的分数。

图中mlp代表多层感知器,括号中的数字是mlp每一层大小。每一层的mlp都用了ReLU激活函数以及Batchnorm。最后一个mlp使用了Dropout。所有点以及特征都共享一个mlp。

PointNet的三个关键模块

(1)无序输入的对称函数:

为了使模型对输入具有置换不变性,存在三种策略:

1) 将输入按规定顺序排序;

2) 将输入作为一个序列来训练RNN。用数据的所有排列做数据增强。

3) 使用简单的对称函数聚合每个点的信息。

这里,对称函数指的是:以【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点集_09个向量作为输入,并输出一个新的向量,输入顺序不影响输出。例如,【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_22【CVPR2017】PointNet: 深度学习之3D点集分类与分割_3d_23 运算符是对称的二元函数。

虽然排序听起来像是一个简单的解决方案,但在高维空间中,实际上不存在一般意义上关于点扰动稳定的排序。如图5所示,直接在排序点集上应用MLP的性能很差,尽管略优于直接处理未排序的输入。

使用RNN的想法是将点集视为一个序列信号,并希望通过使用随机排列的序列训练RNN。经过实验,如图5,该论文得到基于RNN的模型的性能不如PointNet。

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_分类_24

PointNet的想法是通过对点集进行变换得到的元素应用对称函数来近似定义处理点集的一般函数:

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_3d_25

PointNet的基本模块非常简单:它用多层感知器网络来近似单变量函数【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_26,并与最大值汇聚函数组合来近似【CVPR2017】PointNet: 深度学习之3D点集分类与分割_分类_27

(2)局部和全局信息聚合

上述部分的输出是一个向量【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_28,它是输入集的全局信息。因此,我们可以很容易地在形状全局特征上训练SVM或多层感知器分类器进行分类。
【CVPR2017】PointNet: 深度学习之3D点集分类与分割_3d_29

对于点分割,则需要结合局部和全局特征。
【CVPR2017】PointNet: 深度学习之3D点集分类与分割_3d_30
我们可以通过简单而高效的方式实现这一目标:在计算得到全局点云特征向量后,将全局特征与每个点特征连接起来。然后,我们基于组合点特征提取新的点特征,那么,新的点特征就同时包含局部和全局信息了。

通过这种修改,PointNet能够预测依赖于局部几何和全局语义的量。例如,我们可以用PointNet准确预测每个点的法线:
【CVPR2017】PointNet: 深度学习之3D点集分类与分割_分类_31

(3)联合对齐网络(Joint Alignment Network)
【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_32

点云经过某些几何变换(如刚性变换),其语义标记应是保持不变的。因此,我们期望通过点集学习到的表示特征也是对这些变换是不变的。

首选的解决方案是在每一层特征提取之前将所有输入集对齐到规范空间。那么,我们可以通过一个迷你网络(T-Net)来预测这样的仿射变换矩阵,并将此变换直接应用于输入点的坐标。微型网络本身类似于大型网络,由点特征提取、最大值汇聚和全连接层等基本模块组成。

该思想还可以进一步扩展到特征空间的对齐。我们可以插入另一个对齐网络,处理点特征并预测特征转换矩阵,以对齐来自不同输入点云的特征。然而,特征空间中的变换矩阵比空间变换矩阵的维数要高得多(例如:图2中可以达到【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_33),这大大增加了优化的难度。因为PointNet还在softmax训练损失中还添加了一个正则化项,将特征变换矩阵约束为接近正交矩阵:

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_34

其中【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_35是由微型网络预测的特征对齐矩阵。正交变换不会丢失输入中的信息,因此是需要的。作者发现,通过添加正则化项,优化变得更加稳定,模型获得了更好的性能。

输入和特征转换的有效性:

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_36

理论分析

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_37【CVPR2017】PointNet: 深度学习之3D点集分类与分割_3d_38关于Hausdorff距离【CVPR2017】PointNet: 深度学习之3D点集分类与分割_3d_39的连续集函数。即:

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_40,对于任意【CVPR2017】PointNet: 深度学习之3D点集分类与分割_分类_41,如果【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_42,则【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点集_43。以下定理表明,如果在最大池层有足够的神经元,即公式(1)中的【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_44足够大,则【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点集_45可以由PointNet任意近似。

(1) 万能逼近:PointNet具有对任意连续集函数的逼近能力

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_3d_46

(2) PointNet对输入点的异常值如小噪声或点缺失数据具有高度鲁棒性。

定义【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点集_47【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点集_45的子网络,它将【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_49中的点集映射成【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_44维向量。以下定理告诉我们,输入集中的小缺失或额加噪声点不太可能改变网络的输出。

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_51

定理的含义:

(a)只要【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_52的损坏集【CVPR2017】PointNet: 深度学习之3D点集分类与分割_分类_53能保留【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_54中的所有点,则输出保持不变,即【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点集_55;对于含额外噪声点的【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_56,依然有【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点集_55

(b)【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_54包含的点数量,由(1)中的【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_44确定。

换句话说,【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_60实际上完全由小于或等于【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_44个元素的有限子集【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_62决定。因此,我们称【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_54【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_52的关键点集(critical point set),【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_44【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点集_45的瓶颈维数(bottleneck dimension)。

下图给出一些【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_52的关键点集(Critical points)【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_54和上限形状(upper bound shape)【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_69

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_70

更详细的内容见原论文 4.3. Theoretical Analysis、附录:G. Proof of Theorem

实验

物体分类:

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_分类_71

三维物体部件分割

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_点云_72

场景中的语义分割

【CVPR2017】PointNet: 深度学习之3D点集分类与分割_分类_73

鲁棒测试
【CVPR2017】PointNet: 深度学习之3D点集分类与分割_深度学习_74

时间和空间复杂度分析:
【CVPR2017】PointNet: 深度学习之3D点集分类与分割_分类_75


举报

相关推荐

0 条评论