这篇文章介绍了 KPConv:用于点云的灵活可变形卷积。KPConv 的灵感来自图像卷积,但不是使用具有固定位置的离散图像核,而是使用一组连续的核点来定义卷积区域。KPConv 可用作深度 3D 神经网络架构的基本构建块,该架构可以使用整个点云进行分类和分割任务。
NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割
1、简介
点云是 3D 空间中的点的集合,其中每个点都由一组笛卡尔坐标 (x, y, z) 定义。点云稀疏且无序,这与图像的网格状结构不同。
点云中的每个点都通过其坐标进行空间定位,这意味着我们可以通过查看 (x, y, z) 处点的邻居来识别相似的点。我们可以添加一些偏移量(x ± r, y ± r, z ± r),这样就可以在原始点周围形成一个球体,而球体中则包含它的邻近点。直观地讲,我们可以在球体中执行一些操作,从而得到一些代表原始结构的低维结构。这个概念对于构建卷积网络至关重要,因为它使我们能够通过网络传播和下采样点云的底层结构 [1, 2]。
每个点都可以具有强度或颜色等相关特征。例如,LiDAR 可以生成具有颜色和强度的物体点云,这是物体反射率的特征 [3]。除了结构特征之外,在神经网络架构中利用这些特征将是一个很大的好处,而 KPConv 提供了一种实现这一点的方法。图 1 显示了从无人机获得的点云。
图 1. 科罗拉多州 Fountain Creek 上空无人机激光雷达点云。
2、动机
直观地讲,点云是某种真实 3D 形状的近似值,因此具有代表真实对象的结构。点云的结构及其特征可用于了解它们所代表的对象。
我们可能想问,我们到底想了解什么?这取决于应用程序,但通常我们可能想知道对象是什么(分类),对象由哪些子组件组成(语义分割)。
在地质学中,LiDAR 生成的点云用于了解有关地球表面的更多信息 [4]。在自动驾驶中,LiDAR 是一种有用的传感器,有助于促进 3D 物体检测,在某些情况下还有助于分割。知道物体存在不仅很有用,物体类型的信息(汽车、自行车还是行人)还会影响车辆对其存在的反应。参见图 2 中的分类示例。
图 2. 自动驾驶的 3D 物体分类
3、KPConv 概述
在深入介绍细节之前,我们先快速了解一下 KPConv。本节的目的只是从高层次介绍主要概念,以便我们在正式介绍 KPConv 时能够深入了解。
对于图像,卷积区域由离散核定义,核像素严格定义。另一方面,KPConv 在连续的 3D 空间中运行,半径内的点称为核点(kernel points)。
图 3 显示了 2D 示例,其中核点在圆内的特定位置对齐。这称为刚性核(rigid kernel),我们也可以通过学习每个核点的移位来定义可变形核(deformable kernel),从而使核符合局部结构。
图 3. 刚性和可变形内核
现在让我们关注刚性核。请注意刚性核的中心有一个点,KPConv 在执行操作之前实际上将核集中在单个点 x 上。该操作仅定义在核半径内的点上,这些点称为邻居(neighbors)。
使用半径来定义邻居而不是 K 最近邻 (KNN) 的原因是半径邻域对变化的采样密度更具弹性。例如,KNN 将包含对于稀疏区域来说太远的点,而对于密集区域来说只包含太近的点。有了半径,我们可以获得更一致的局部结构表示。
每个核点都有一个关联的权重矩阵,该矩阵支持从 Dᵢₙ 到 Dₒᵤₜ 的特征映射,其中 Dᵢₙ 是每个输入点的特征数量。此映射使特征和 3D 结构都可以使用。下面显示了一个二维示例,其中权重为我们提供了过滤值,方式类似于图像卷积:
图 4. KPConv 的 2D 示例
在这个例子中,我们可以看到核点能够将邻居映射到输出中的单个点。现在我们对发生的事情有了大致的了解,让我们仔细看看。
为了澄清起见,术语邻居和点始终指点云点,而核点将用于明确指核点。
4、KPConv正式介绍
KPConv 定义为特征 F 与点 x 处的核 g 的点卷积:
邻居 Nₓ 的正式定义为以 x 为中心、位于半径 r 内的所有点 xᵢ
我们现在将邻居称为 yᵢ
我们将核函数 g 的定义域定义为一个半径为 r 的球
核点被限制为仅存在于球内,我们将它们与其权重矩阵一起定义为
其中 K 是定义的最大核点数。现在我们将核 g 定义为任意邻居 yᵢ 的函数
其中 h 是邻居 yᵢ 与每个核点 xₖ 之间的线性相关性(linear correlation):
4.1 线性相关性
这种相关性非常重要,但为什么呢?
在任何给定点,我们的邻居数量都是可变的,因此邻居与核点之间没有一一对应的关系。这使得将邻居与核点关联起来的任务变得非常困难。为了减轻困难,使用相关性度量来量化每个邻居和核点的关联。这种关联取决于局部结构,也就是说,如果核点在空间上靠近邻居,那么它们将高度相关,反之亦然,如果我们查看线性相关函数 h,远处邻居的相关性为 0。本质上,相关性只是将核点的空间位置与邻居联系起来的空间相关性。这使得所有邻居和核点能够相互作用,空间相关性决定了相互作用的强度。
所有邻居和核点相互作用,空间相关性决定了这些相互作用的强度。
4.2 权重矩阵
在相关性之后,我们将其乘以可学习权重矩阵或核权重 Wₖ。除了相关性之外,权重矩阵实际上还增加了另一个影响范围,可以改变每个相应的核点 xₖ 与每个邻居 yᵢ 之间的关系。
4.3 把各个部分放在一起
总结一下,我们已经看到空间相关性可以衡量邻居与核点的结构相似程度。现在我们已经看到权重矩阵如何为 KPConv 操作增加一个新的影响范围,从而通过可学习参数提高操作的表达能力。
现在让我们看一个 2D 示例来澄清这一点:
图 5. KPConv 操作的 2D 示例
这里我们有一个以点 x 为中心的核,我们考虑对邻居 yᵢ 进行操作,其中每个邻居都有 Dᵢₙ 特征。我们将这个 yᵢ 与所有核点关联,然后将所有关联值与相关权重矩阵相乘。然后将这些乘积相加,得到一个具有 Dₒᵤₜ 特征的新点。
我们可以从下面扩展的 KPConv 定义中看到,特征乘以所有权重矩阵的总和,并按关联强度 h 缩放。这使我们能够将特征从 Dᵢₙ 缩放到 Dₒᵤₜ。
扩展了 KPConv 定义,其中术语已被排列以匹配维度
由于相关性对每个核权重矩阵施加了权重,因此它反过来决定了特征如何在网络中传播。例如,如果核点的相关性较低,则其对应的权重矩阵对输出特征 Dₒᵤₜ 的影响很小。
5、刚性和可变形核
内核点位置决定了特征如何通过卷积在网络中传播。这意味着它们的位置对卷积操作和整体网络性能很重要。
5.1 刚性核
到目前为止,我们只讨论了刚性核,其中每个点都固定在由球定义的域中的预定义位置。如何选择 K 个核点位置来优化性能?
事实证明,可以通过解决优化问题来找到这些位置,其中每个点彼此施加排斥力,并且所有点都被约束在具有吸引力的球内。
一个点也被限制在球的中间。这些点被随机初始化,并通过梯度下降最小化总能量来找到解决方案。
这提供了在球内有规律地放置的点,如图 6 所示:
Figure 6. Rigid Kernel Point Positions
然后可以将周围的点重新缩放到平均半径 1.5σ,这在每个核点的影响区域和核的整体空间覆盖之间提供了小的重叠。
5.2 可变形核
刚性核在分割和分类任务上表现出了高效且有效的性能,但事实证明,我们可以通过学习每个核点的最佳位置来提高容量。这被称为可变形 KP 卷积。直观地说,我们希望核能够适应每个卷积位置的局部结构。
由于核 g 相对于核点是可微的,我们实际上可以将核点作为参数进行学习。在可变形 KP 卷积中,我们从刚性核开始,并学习每个卷积位置 x 的 K 移位 Δ(x)。
可变形核定义为:
偏移量(或偏移量)Δ(x)是刚性KPConv将Dᵢₙ特征映射到3K偏移量(每个维度一个)的输出。在训练过程中,刚性核通过反向传播学习偏移量Δ(x),而可变形核则生成新特征。
图 7.可变形核点卷积的 2D 示例
因此,实际上学习的是核点偏移(kernel shifts)。
为了帮助防止偏移逃离核区域,核点偏移 Δ(x) 的学习率设置为全局学习率的 0.1 倍。然而,仅此而已实际上是无效的,并会导致性能不佳。为了克服这个问题,使用特殊的正则化将可变形核点约束到核区域。正则化由拟合项和排斥项组成。
拟合项确保每个核点与输入邻居保持足够近的距离。排斥项确保核点不会相互坍缩,并确保它们的影响区域不重叠(即我们希望核点覆盖相对均匀)。
可以证明可变形核能够符合输入点云的局部几何形状:
图 8. 刚性核(左)与无正则化核(中)和有正则化核(右)之间的差异
在图 8 中我们可以看到,左侧的刚性核不符合局部几何形状。中间的可变形核没有经过正则化,有许多点远离局部几何形状,这些点被称为丢失点。在右侧,我们可以看到正则化策略不仅可以防止丢失点,还可以使核符合局部几何形状,从而最大化活动核点的数量。其中活动是指非零空间相关值。
6、结束语
在这篇文章中,我们了解了 KPConv,这是一种专为点云设计的新型卷积。它利用由半径定义的核区域,在不同密度的区域中实现高性能。KPConv 使用简单的线性空间相关性,使其能够处理可变数量的局部输入点。它还能够为每个核点学习权重矩阵,从而以类似于基于图像的卷积神经网络的方式提高 KPConv 的表达能力。
KPConv 有两种取决于核类型的类型:刚性核和可变形核。刚性核具有预定义结构,计算效率高。可变形核能够符合局部结构,在更复杂的任务上往往表现出更高的性能。
KPConv 是一种模块化操作,可用于创建深度神经网络架构,该架构可以直接使用点云,而无需进行太多数据预处理。这些架构可以满足点云分类和分割的需求。
原文链接:KPConv 点云卷积 - BimAnt