前言
3D视觉领域目前正蓬勃发展,针对原始三维点云数据的处理成为新的研究热点。本篇文章小小的陈述一下个人对这方面的一些理解。
三维点云处理的挑战
卷积在二维图像的处理中显示出了极大的优势,相比于人工构造feature,卷积拥有更加强大的信息描述能力,在分类、检测、分割等任务中,都具有优异的表现。自然而然的,人们开始尝试将卷积这一操作带入到三维点云中。但是却不是那么简单的,三维点云有不同于图像的数据形式:
- 点云具有稀疏性
不同于图像,三维点云在表示物体时,只有物体表面有点云数据,如果实在实际的场景下,往往只有面向雷达的一面才会有数据产生。而且限于雷达的工作原理,远处物体的点云数据更加稀疏。因而,在点云上直接进行三维卷积需要很大的计算量,而其中很大一部分资源都是在处理空数据。
- 点云具有无序性
三维空间中的点云不会像图像那样,规规矩矩的在一个个的像素点排好队,点云并没有顺序,这给处理上带来极大的困难。一个物体如果使用N个点云表示,那么它的排列方式具有N!种,但是表示的却是同一个物体,这是不可想象的处理难度。因而,点云的处理需要实现置换不变性。
- 点云具有几何变换问题
一个物体在图像上的显示并不会随着物体位置的改变而发生大的变化。但是点云反应的却是实实在在的位置坐标信息,不同位置处的同一物体所表现出的数据特征是很大不同的。
鉴于以上问题,三维点云在处理时,并不能简单的将图像上的方法直接应用。
三维点云处理的方法
近几年来,针对点云处理中的存在的上述问题,提出了如下解决方法:
- 多视角+2D卷积
这是早起使用的方法,将三维点云数据,通过多个视角的投影,转换成2D,进而转到图像方法上进行处理。该方法避开了处理三维点云数据,但是多视角投影的方法增加了计算量、损失了点云的三维空间信息。
- 体素化+3D卷积(voxel_base)
voxel_base的方法就是先将原始点云进行体素化处理,将无序的点云转为有序,并进而使用3D卷积进行处理。而且为了解决点云稀疏性带来的卷积计算量大问题,也提出了稀疏卷积的方法,舍弃那些空白体素,加快执行速度。
VoxNet
- 原始点云+MLP(point_base)
point_base是除了voxel_base之外另外一种优雅的处理方式,最开始是在2017年的CVPR论文PointNet提出。point_base不经过体素化过程,直接对原始数据进行处理,通过多层的mlp进行点云特征的描述,经过max pooling保证了点云的置换不变性。处理的方式很简单,效果确实很不错,并且已经成为三维点云处理中的一个重要理论和思想基础。
PointNet