Pointnet与Pointnet++论文笔记
近期由于课题需要,研读了Pointnet系列文章,在此总结个人心得,并结合了部分博客进行阐述,不足之处希望各位批评指正,也欢迎各位同学来进行学习交流。
论文地址:https://arxiv.org/abs/1612.00593(pointnet)
论文地址:https://arxiv.org/abs/1706.02413 (pointnet++)
1. 前言
图像数据在计算机中的表示通常编码了像素点之间的空间关系,与此不同的是,点云数据是由一组无序的点所构成一个集合。因此,在使用图像识别任务的深度学习模型处理点云数据之前,需要对点云数据进行一些处理。目前采用的方式主要有两种:
- 将点云数据渲染到二维平面
将点云投射到不同方向的二维图像上,并应用标准的二维CNN来提取特征。将从不同图像中学习到的特征通过视图池化层聚合到一个全局特征,然后利用该全局特征对对象进行分类。虽然基于视图的方法在分类任务中可以获得较高的精度,但该方法应用于点云分割存在难度,即点云很难将每个点分类到特定的类别。比较典型的算法有MV3D和AVOD。 - 将点云数据转换到voxel grid
通过分割三维空间,引入空间依赖关系到点云数据中,再使用3D卷积等方式来进行处理。然而,点云是稀疏的,并且使用三维网格来表示点云是很浪费的。此外,考虑到体积数据的高内存和计算成本,三维网格的分辨率通常很低,这可能会导致量化伪影。因此,利用体积方法来处理大规模的点云是有问题的。
不同于以上两种方法对点云数据先预处理再使用的方式,PointNet系列论文提出了直接在点云数据上应用深度学习模型的方法。
2. 初识点云
2.1 3D数据的4种表现形式
三维数据的表述形式一般分为四种:
- 点云:由N个D维的点组成,当这个D=3的时候一般代表着(x,y,z)的坐标,当然也可以包括一些法向量、强度等别的特征。
- Mesh:由三角面片和正方形面片组成。
- 体素:由三维栅格将物体用0和1表征。
- 多角度的RGB图像或者RGB-D图像