论文链接:http://openaccess.thecvf.com/content_cvpr_2017/papers/Qi_PointNet_Deep_Learning_CVPR_2017_paper.pdf
代码地址:https://github.com/fxia22/pointnet.pytorch
PointNet首次将点云数据直接拿来做端到端的训练。而在此之前,「体素化(Voxelization)+3d卷积」和「将点云投影到二维平面」是处理三维数据的常见方法。但3d数据最初始的形态就是点云,因此体素化和投影会造成一些问题,且3d卷积的代价较大;而且映射到2d会损失一些3d信息。
点云数据最大的一个问题就是无序性,有三种方法处理这个问题:(1)对无序数据进行排序;(2)将其看成一种序列,用RNN处理;(3)采用一种简单的对称函数,消除无序数据的影响,如max,sum,乘法等等。
作者采用了max pooling这一对称函数(Symmetric function),来解决点云数据的无序性特征。也就是说,无论输入数据的序列是否相同,经对称函数变换得到的结果都是一致的。
下面分析一下这个max pooling是怎么作用的,先贴一个PointNet模型结构图: