翻译:particle
编辑:点云PCL
欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文。
公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。文章未申请原创,请勿随意转载!侵权或转载联系微信cloudpoint9527。
摘要
在3D深度学习领域,主要的竞争在于体素(Voxels)与点(Points)之间。你会发现,这两种方法各有特点:一种相对保守、多才多艺且“安全”,而另一种则更具创新性、颠覆性且精准。
基于点的方法:从 PointNet 到Point Transformers
可以使用什么来自计算机视觉领域来在点云上使用深度学习?不是很多,但主要是多层感知器和 2D 卷积。但是点云比图像更难处理,图像具有固定的宽度和高度,它是一个矩形矩阵,其中每个像素都在 0 到 255 之间,附近的像素属于同一对象,并且都是平面 2D。另一方面,点云是混乱的。点之间没有顺序、没有颜色、也没有连续性,该结构是 3D 的,可以旋转或改变比例,并且点的间距不均匀。任何随机洗牌或数据增强都可能破坏卷积的输出。换句话说,就是混乱。
你无法在点云上应用传统的 CNN,这就是 PointNet 架构被发明的原因。当时PointNet 使用共享 MLP(通过 1x1 卷积实现)来从点云学习特征,而不是使用 2D 卷积。它还使用空间变换网络和最大池来对点云进行分类或分割。
2016 年的架构如下所示:
PointNet 架构
PointNet 可以对点云进行分类、分割,甚至分割其子部分。像这样:
因此,这相当于“VGG”。如果必须做一个类比的话:
自PointNet (2016) 和PointNet++ (2017)以来,许多其他提取器和架构也随之而来,例如PointCNN (2018)、DGCNN (2019)、PointNeXt (2022)、Point-MLP (2022),甚至是今天被视为状态的内容最先进的Point Transformers v3 (2023/2024)。这些是特征提取器,它们的目的只是直接从点云学习特征,不会用它进行 3D 对象检测或3D 跟踪,但可以将它们包含在 3D 对象检测器中。
将 PointNet 适配到 3D 架构中
以Point-RCNN (2019)为例,这是一个两阶段的 3D 深度学习算法,使用 PointNet++ 和精心设计的结构来实现 3D 对象检测:
高速公路场景中的 Point-RCNN
这就是我们正在寻找的。它使用 PointNet,但它不是 PointNet,而是它的扩展。当查看架构时,它类似于:
Point-RCNN 架构——两个阶段中的每个阶段都使用 PointNet++(PointNet 的演变)作为特征提取器——在编码器/解码器中,但也在学习特征的第二阶段中。
框架从点云开始,然后学习每个点的特征,最后添加算法,如前景/背景检测、边界框回归等,以达到你的目标......同样,存在许多方法,并且它们都使用提取器。CenterPoint (2021)使用 PointNet++,然后生成对象位置的中心。H3DNet (2020) 也使用 PointNet++。等等...
基于体素的方法
基于体素的方法不是直接的方法;因为它涉及“体素”。如果您听说过“VoxelNet”或“PointPillars”等名称,那就是这个。那么什么是体素呢?
当我们回到 2D 卷积不适用于点云的想法,我们看到点云本质上是非结构化的,每一帧的点数量都会变化,等等......但是有一种方法可以解决这个问题,除了发明PointNet......体素化。
打个比方,体素就是 3D 图像。当我们有点云时,我们的 3D 形状无法与 2D 卷积一起使用;但是当将此点云转换为一组“体素”时,我们可以使用 3D 卷积,而不是 2D 卷积。例如,可以将空间(是的,“空气”)分割成 50 *50*50厘米的网格,并将它们视为体素。然后取内部点的平均值并赋予它一个值,如果里面没有点,你就认为它是空的。
获取体素点并应用 3D 卷积
所以,这是第二种方法,它很棒,因为当空间被体素化时,你可以使用 3D 卷积。您甚至可以实现 3D 卷积神经网络,并且基本上将您所知道的有关图像卷积的所有内容复制到点云。
这个想法已经通过一种名为“Point Pillar”的算法在二维中得到了复制,并且多年来有很多变化。就像 PointNet 可以适合 Point-RCNN 一样,体素网络也可以适合 Voxel-RCNN。输出如下所示:
所以你现在得到了两种类型的方法:
但哪一个更好呢?
比较两种方法
想象一下有一个点云及其体素化版本,如下所示:
点与体素
两者中哪一个提供了更多信息?直观地说,点云没有经过转换过程,它没有我们对场景进行体素化时可能出现的“信息丢失”——它的边缘也更加“精确”。所以这对于基于点的方法来说是一个巨大的胜利!
在速度方面,基于点的方法没有这种额外的体素化过程,它们直接使用原始点,甚至可以适应、生成图表、处理稀疏数据等等……基于点的方法确实是创新的解决方案。但是体素使用卷积,我们非常清楚如何将卷积堆叠在一起,如何使其高效,如何在多尺度上使用金字塔架构,如何可视化所学到的特征,等等,我们拥有令人惊叹的众所周知的方法来使用体素创建令人惊叹的架构。换句话说,“保守”的方式就是这个。
起初,研究人员只知道如何使用体素。然后在 2016-2019 年时期,自从 PointNet 出现以来,人们转向了基于点的方法。与此同时,在体素方面发布了像 PointPillars 这样的有趣方法。现在拥有针对这两种方法的最先进的方法,甚至是基于点体素的方法!
示例#1 :Point-Transformer
Point Transformer
该架构直接作用于点,可以看到重复的 3 个不同的块:
这只是为了让您“了解”我们可以在点云上应用的操作类型......
示例#2:VoxelNet
第二个示例更容易理解,但它是“支柱”之一,非常好地展示了基于体素的方法中发生的一切:
VoxelNet
正如你所看到的,它从一个特征学习网络开始,它不仅仅涉及“体素化”,还涉及 VFE(体素特征提取)、将体素堆叠在一起、运行完全卷积网络等……然后,使用 3D 卷积在使用区域提议网络生成边界框之前的中间层。
难道就没有其他办法吗?鸟瞰图怎么样?
是的,还有其他方法!基于点和体素的方法是使用 3D 深度学习处理点云的 2 种“主要”方法,至少还有 3 种:
还要别的吗?可以使用图神经网络,但这其实是着回到直接处理点的方法,也可以使用占用网络,但这些实际上是体素。
可以使用 3D 深度学习处理点云的 5 种方法
总结
来源:
https://www.thinkautonomous.ai/blog/voxel-vs-points/