一、论文解读
PointNet是第一个直接以三维点云作为输入的深度学习网络,点云的特点如下:
# 无序:无论点的顺序如何打乱,点云传达的内容不变。
# 组合表达:某个点需要结合附近的点才能表达局部信息,仅看单个点无任何意义。
# 变换无关:将点云中的所有点进行相同参数的平移、旋转,不改变点云传达的信息。
PointNet在结构设计时考虑了点云的上述特点,因此在输入点云中点的顺序发生改变时,其输出一定不会改变。此外在少量点缺失或者错误时,也能保证结果的稳定性。
PointNet 有两个网络,一是分类,二是分割,分类即输入点云,输出其表达的物体类别。分割即输入点云,将其表达的物体的不同部件分开。
1.1 分类网络
分类网络的结构如图1所示:
下面介绍每一步数据如何进行运算。
从第一个n×3到第二个n×3矩阵的计算过程如图2所示,该层主要使用input transformation这个3×3的矩阵对输入点云进行三维变换,比较简单。input transformation矩阵中数值需要通过一个T-Net进行学习,这个T-Net名为STN3d(代码中作者写的名字)。
T-Net(STN3d)的结构如图3所示。
Shared MLP 为1×1的卷积层,其计算过程如图4所示,图中以Shared MLP(3, m) 为例,输入通道数为3,输出通道数为m,因为输出通道为m个,所以有m个卷积核,每个卷积核对应其中一个通道,图中输入的尺寸为(1,3,n,1),括号内四个数依次表示批量、通道、行、列。因此输出的尺寸为(1,m,n,1)。图中
分类网络的第二层计算过程如图5所示,Shared MLP的计算参考图4。
分类网络第三层计算过程如图6所示,是将n×64的矩阵乘一个64×64的矩阵,该矩阵由T-Net(STNkd)生成,STNkd的结构和STN3d类似,不过多了个正则化项,使输出倾向于得到正交矩阵,加速收敛。
分类网络第四层计算过程如图7所示,和第二层类似。
第五层为最大池化层,第六层为全连接层,其计算过程如图8所示。输出结果为一个长度为k的向量,向量中的每个数代表点云所表示的物体属于某类的概率。