CVPR 2017之#CNN论文精选, PointNet:端到端3D图像(点集)分类与分割

计算机科学很大程度上是权衡“现实”和“理想”的方法学 — David 9

3D图像的分类与分割问题,虽然理想上可以用3D卷积构造深度网络,但事实上, 其巨大计算开销不允许我们直接使用卷积对3D云图集进行训练.  试想2D卷积(GoogleNet, ResNet, Alexnet)训练时间就已经让人捉急了, 何况样本是3D云图:

幸运的是现实再残酷, 人类总能找到暂时解决问题的方法, PointNet就是一个权宜之计:它实现端到端3D图像(点集)分类与分割:

论文不使用3D卷积, 而是用深度网络模拟通用对称函数

来自:https://arxiv.org/pdf/1612.00593.pdf

输入总共n个点的无序云图点集({x1,x2 … , xn}), 通用函数f 输出该云图分类(汽车,书桌,飞机)。其中h函数用MLP网络模拟:

其中n就是云图的点个数,(64, 64)代表有两层mlp网络输出层,输出分别是64,64。

事实上mlp实现可以用2D卷积(shared局部临近点相关性)代替,见源码

# Point functions (MLP implemented as conv2d)
net = tf_util.conv2d(input_image, 64, [1,3],
                     padding='VALID', stride=[1,1],
                     bn=True, is_training=is_training,
                     scope='conv1', bn_decay=bn_decay)
net = tf_util.conv2d(net, 64, [1,1],
                     padding='VALID', stride=[1,1],
                     bn=True, is_training=is_training,
                     scope='conv2', bn_decay=bn_decay)

而上述通用对称函数中,g函数用最大池化层(max pool)模拟:

最后看看拼接在一起的PointNet分类网络架构全貌:

为了使输入云图对(平移,拉伸,翻转等)转换不敏感,文章在输入数据后,加入T-net转换网络:

实际上T-net也是一些2D卷积的堆叠, 见源码

至此, 该架构已经考虑到3D无序点集训练的以下3个特征:

1. 无序性,训练输入数据应该是3D无序点集

2. 相邻点之间的关联信息,3D云图中相邻点不是隔离无联系的,相邻点的交互信息必须考虑进去(通过共享的MLP或者2D卷积解决)

3. (平移,拉伸,翻转等)转换不不变性 (通过转换网络T-net解决)

这是3D图像分类的key idea,如果要实现图像分割还有一些小技巧在文中提到,这里就不一一分析。

总之,通过深度网络构造一个通用对称函数,模型最终学习到一些可以总结3D图像shape的散点,是2D卷积使用在3D问题上很有启发意义的文章。

 

参考文献:

  1. PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
  2. https://github.com/charlesq34/pointnet
  3. https://en.wikipedia.org/wiki/Voxel

本文章属于“David 9的博客”原创,如需转载,请联系微信: david9ml,或邮箱:yanchao727@gmail.com

或直接扫二维码:

发布者

David 9

David 9

邮箱:yanchao727@gmail.com 微信: david9ml

《CVPR 2017之#CNN论文精选, PointNet:端到端3D图像(点集)分类与分割》有2个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注