计算机科学很大程度上是权衡“现实”和“理想”的方法学 — David 9
3D图像的分类与分割问题,虽然理想上可以用3D卷积构造深度网络,但事实上, 其巨大计算开销不允许我们直接使用卷积对3D云图集进行训练. 试想2D卷积(GoogleNet, ResNet, Alexnet)训练时间就已经让人捉急了, 何况样本是3D云图:
幸运的是现实再残酷, 人类总能找到暂时解决问题的方法, PointNet就是一个权宜之计:它实现端到端3D图像(点集)分类与分割:
论文不使用3D卷积, 而是用深度网络模拟通用对称函数:
输入总共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问题上很有启发意义的文章。
参考文献:
- PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
- https://github.com/charlesq34/pointnet
- https://en.wikipedia.org/wiki/Voxel
本文采用署名 – 非商业性使用 – 禁止演绎 3.0 中国大陆许可协议进行许可。著作权属于“David 9的博客”原创,如需转载,请联系微信: david9ml,或邮箱:yanchao727@gmail.com
或直接扫二维码:
David 9
Latest posts by David 9 (see all)
- 修订特征已经变得切实可行, “特征矫正工程”是否会成为潮流? - 27 3 月, 2024
- 量子计算系列#2 : 量子机器学习与量子深度学习补充资料,QML,QeML,QaML - 29 2 月, 2024
- “现象意识”#2:用白盒的视角研究意识和大脑,会是什么景象?微意识,主体感,超心智,意识中层理论 - 16 2 月, 2024
改天真的得请你喝咖啡☕️
客气啥 多转发就是对我们的最大支持~~~
大哥,你好!有几个问题想问一下,谢谢!
1. 文章中“对齐”是什么意思呢?点云的transformations为什么会改变结构呢?
2. 在训练对齐矩阵的时候,对点云进行对齐之后,为什么还要对特征点进行对齐呢?还有这个特征点的提取是怎么提取的呢?
3. 对称函数中,x集合中的s代表什么意思呢?没有看懂,还有就是γ是什么呢?在网络中,f函数近似的那个不等式中,h函数输入的是1024维的向量xi,还是三维的呢?
对于深度学习和点云,只了解一点,因此对于论文,感觉看的很吃力,问题可能比较低级。谢谢你的回答
非常谢谢你的回复!
第三个问题,我当时看应该是3维的,前两个问题不是很明白你说的“对齐” ?
如需进一步交流可以加我微信:david9ml