点云深度学习系列4——PointNet分析

今天要聊的论文是斯坦福大学Charles等人在CVPR2017上发表的论文,提出了一种直接处理点云的深度学习网络——PointNet。这篇论文具有里程碑意义,标志着点云处理进入一个新的阶段。为什么会给这么高的评价呢?


因为在PointNet之前,点云没办法直接处理,因为点云是三维的、无序的,别说深度神经网络了,就是普通算法很多都不能奏效。于是人们想出来各种办法,比如把点云拍扁成图片(MVCNN),比如把点云划分成体素(类似游戏“我的世界”里的场景),再比如把点云划分成节点然后按顺序拉直(O-CNN)等等。总之,点云先要被处理成“非点云”。

这些想法怎么样呢?其实也挺不错的,也能取得不错的结果。比如MVCNN的有些指标就不输PointNet。

这时候我们就会觉得,冥冥中一定会有一种网络出现,摆脱上面这些操作。于是,PointNet出现了,从此点云处理领域分成“前PointNet时代”和“后PointNet时代”。接着,各种直接处理点云的网络也纷纷出现,如PointCNN、SO-Net,效果也是越来越好。

下面进入正题,看看PointNet有哪些创新点。

1、针对点云无序性——采用Maxpooling作为对称函数。最大池化操作就是对所有成员进行比较,把最大的留下来,其余舍弃掉,所以,不管顺序如何变化,最大值是不会改变的。

对称函数是什么意思?例如加法就是对称函数,1+2+3+4=10,换个顺序,2+4+3+1=10,不管顺序如何变化,对结果不会产生影响。

2、针对刚体变化——对齐网络T-net。T-net对性能的提升作用也还是有的,两个T-net加上regularization 贡献了2.1个百分点,但奇怪的是在PointNet++的代码中,已经看不到T-net了(这一点论文没有提及,github上也有人提问,但是作者没有回复)。

3、特征提取阶段采用MLP(多层感知机,说白了就是全连接层),这种结构用到的运算只有乘法和加法,都是对称函数,所以不会受到排序影响。

实验效果

1、分类

数据集是ModelNet40,包含40类物体的CAD,通过采样获得点云。这里作者没有把MVCNN列出来,因为精度没有比过它,不过后来的改进版已经超过了。

2、物体分割:

 

3、参数量与MVCNN的对比:明显占优。

 另外,关于PointNet的代码讲解,欢迎阅读我的另外两篇博客。

点云深度学习系列2——PointNet/PointCNN代码比较(变换矩阵部分)

点云深度学习系列3——PointNet/PointNet++代码比较

也欢迎关注公众号——3D点云深度学习。


猜你喜欢

转载自blog.csdn.net/qq_33278989/article/details/80410381