PointNet
- 一、动机和贡献
- 二、点云特性
- 三、PointNet网络结构
-
- 分类网络
- 分割网络
一、动机和贡献
- 动机:大多数研究人员选择将不规则的点云数据转换成规则的3D体素网格或特征投影,导致大量的点云信息缺失。
- 贡献:设计了一种直接消耗点云的新型神经网络PointNet,考虑点云的无序性、点间关系、排列不变性;训练PointNet网络用来执行三维形状分类、形状部分分割和场景语义分析任务,提供了统一的体系结构。
二、点云特性
-
无序
点云数据是一个集合,对数据的顺序是不敏感的。这就意味这处理点云数据的模型需要对数据的不同排列保持不变性。目前文献中使用的方法包括将无序的数据重排序、用数据的所有排列进行数据增强然后使用RNN模型、用对称函数来保证排列不变性。由于第三种方式的简洁性且容易在模型中实现,论文作者选择使用第三种方式,既使用maxpooling这个对称函数来提取点云数据的特征。
-
点与点之间的空间关系
一个物体通常由特定空间内的一定数量的点云构成,也就是说这些点云之间存在空间关系。为了能有效利用这种空间关系,论文作者提出了将局部特征和全局特征进行拼接的方式来聚合信息。
-
不变性
点云数据所代表的目标对某些空间转换应该具有不变性,如旋转和平移。作者提出了在进行特征提取之前,先对点云数据进行对齐的方式来保证不变性。对齐操作是通过训练一个小型的网络T-Net来得到转换矩阵,并将之和输入点云数据相乘来实现。
三、PointNet网络结构

分类网络
以n个点作为输入,三层通道表示(x,y,z)三维坐标,先后经过输入点云变换、MLP点云处理、点云特征变换、MLP特征处理、全局最大池化、MLP(Dropout层),最终输出k类分数向量。(Batchnorm用于所有带有ReLU的层;MLP实际为卷积层)
具体的网络子模块:
-
输入点云对齐(变换):T−Net是一个微型的PointNet网络,接收原始点云数据,生成一个3×3尺寸的仿射变换矩阵,来对点云的旋转、平移等变化进行规范化处理;
(1)T−Net第一步:获得高维特征
(n,3)–>conv(1,1,64)–>(n,64)–>conv(1,1,128)–>(n,128)–>conv(1,1,1024)–>(n,1024)–>max-pool(n,1)–>(1,1024)–>fc(512,1024)–>(1,512)->fc(256,512)–>(1,256)
(2)T−Net第二步:获得点云旋转矩阵
assert K=3;
weights=(256,3K);biases=(1,KK);
biases=biases + [1,0,0,0,1,0,0,0,1];
transform=(1,256)×(256,KK)+biases=(1,KK)–>reshape(K,K)=(3,3)
(3)矩阵乘法:(n,3)点云与(3,3)变换矩阵相乘,输出(n,3)特征;
-
MLP点云特征提取
(n,3)–>conv(1,1,64)–>(n,64)–>conv(1,1,64)–>(n,64)
-
点云特征对齐:T−Net类似于输入点云变换,生成一个64×64尺寸的仿射变换矩阵;
(1)T−Net第一步:获得高维特征
(n,64)–>conv(1,1,64)–>(n,64)–>conv(1,1,128)–>(n,128)–>conv(1,1,1024)–>(n,1024)–>max-pool(n,1)–>(1,1024)–>fc(512,1024)–>(1,512)->fc(256,512)–>(1,256)
(2)T−Net第二步:获得点云旋转矩阵
assert K=64;
weights=(256,3K);biases=(1,KK);
biases=biases + [1,0,0,0,1,0,0,0,1];
transform=(1,256)×(256,KK)+biases=(1,KK)–>reshape(K,K)=(64,64)
(3)矩阵乘法:(n,64)特征与(64,64)变换矩阵相乘,输出(n,64)特征;
-
MLP点云特征提取
(n,64)–>conv(1,1,64)–>(n,64)–>conv(1,1,128)–>(n,128)–>conv(1,1,1024)–>(n,1024)
-
全局最大池化
对于(n,1024)尺寸特征矩阵,每个特征通道执行全局最大池化,n个特征输出一个最大特征,共输出(1,1024)尺寸特征向量;
(n,1024)–>max-pool(n,1)–>(1,1024)
-
MLP(含Dropout层)
对于(1,1024)尺寸特征向量,通过三层感知机得到1024–>512–>256–>k,输出k类分类向量;
(1,1024)–>fc(512,1024)–>(1,512)–>dropout(keep_prob=0.7)–>(1,512)–>fc(256,512)–>(1,256)–>dropout(keep_prob=0.7)–>(1,256)->fc(k,256)–>(1,k)
分割网络
分割网络是分类网络的扩展,它连接全局和局部特征,并输出m类分数向量。
-
局部特征(n,64)与池化后的全局特征拼接(1,1024)
对于n个点的每个点特征(1,64),将全局特征(1,1024)拼接在后面,构成拼接特征(1,1088),n个点共有(n,1088);
-
MLP特征处理
(n,1088)–>conv(1,1,512)–>(n,512)–>conv(1,1,256)–>(n,256)–>conv(1,1,128)–>(n,128)–>conv(1,1,128)–>(n,128)–>conv(1,1,m)–>(n,m)
由于点云的分割问题可以看做是对于每一个点的分类问题,需要对每一个点的分类进行预测。在通过对全局+局部特征学习后,最后将每一个点分类到50类(m=50)中,并输出n*50的输出。