点云深度学习系列:PVRCNN——point-voxel融合的分割模型
文章目录
一 摘要
二 资源
三 内容
一 摘要
作者提出了一种新颖的高性能 3D 对象检测框架,名为 PointVoxel-RCNN (PV-RCNN),用于从点云中准确检测 3D 对象。提出的方法深度集成了 3D 体素卷积神经网络 (CNN) 和基于 PointNet 的集合抽象,以学习更多的判别性点云特征。它利用了 3D 体素 CNN 的高效学习和高质量建议以及基于 PointNet 的网络的灵活感受野。具体来说,所提出的框架通过新颖的体素集抽象模块将带有 3D 体素 CNN 的 3D 场景总结为一小组关键点,以节省后续计算并编码代表性场景特征。鉴于体素 CNN 生成的高质量 3D 建议,提出了 RoIgrid 池化,通过具有多个感受野的关键点集抽象,将特定于建议的文本特征从关键点抽象到 RoI 网格点。与传统的池化作相比,RoI 网格特征点编码了更丰富的上下文信息,用于准确估计对象置信度和位置。在 KITTI 数据集和 Waymo Open 数据集上的广泛实验表明,文章提出的 PV-RCNN 仅使用点云就以显着的超越了最先进的 3D 检测方法。
二 资源
文章:PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection
代码:https://github.com/open-mmlab/OpenPCDet.
日期:2021年
三 内容
1)摘要
作者提出了一种新颖的高性能 3D 对象检测框架,名为 PointVoxel-RCNN (PV-RCNN),用于从点云中准确检测 3D 对象。提出的方法深度集成了 3D 体素卷积神经网络 (CNN) 和基于 PointNet 的集合抽象,以学习更多的判别性点云特征。它利用了 3D 体素 CNN 的高效学习和高质量建议以及基于 PointNet 的网络的灵活感受野。具体来说,所提出的框架通过新颖的体素集抽象模块将带有 3D 体素 CNN 的 3D 场景总结为一小组关键点,以节省后续计算并编码代表性场景特征。鉴于体素 CNN 生成的高质量 3D 建议,提出了 RoIgrid 池化,通过具有多个感受野的关键点集抽象,将特定于建议的文本特征从关键点抽象到 RoI 网格点。与传统的池化作相比,RoI 网格特征点编码了更丰富的上下文信息,用于准确估计对象置信度和位置。在 KITTI 数据集和 Waymo Open 数据集上的广泛实验表明,文章提出的 PV-RCNN 仅使用点云就以显着的超越了最先进的 3D 检测方法。
2)创新点
①提出了 PV-RCNN 框架,该框架有效地利用了基于体素和基于点的方法进行 3D 点云特征学习,从而提高了 3D 对象检测的性能,并具有可管理的内存消耗。
②提出了体素关键点场景编码方案,通过体素集抽象层将整个场景的多尺度体素特征编码为一小组关键点。这些关键点功能不仅可以保留准确的位置,还可以编码丰富的场景上下文,从而显着提高 3D 检测性能。
③在每个提示中为网格点提出了一个多尺度 RoI 特征抽象层,它聚合了来自场景中更丰富的上下文信息,具有多个感受野,用于准确的框细化和置信度预测。
④提出的方法 PV-RCNN 以显着的优势优于以前的所有方法,在竞争激烈的 KITTI 3D 检测基准中排名第一,并且在大规模 Waymo Open 数据集上也以较大的优势超越了以前的方法。
3)算法结构
在本文中,提出了 PointVoxel-RCNN (PVRCNN),这是一个两阶段 3D 检测框架,旨在从点云中更准确地检测 3D 对象。最先进的 3D 检测方法基于稀疏卷积的 3D 体素 CNN 或基于 PointNet 的网络作为主干网络。一般来说,具有稀疏卷积的 3D 体素 CNN 效率更高,并且能够生成高质量的 3D 对象建议,而基于 PointNet 的方法可以通过灵活的感受野捕获更准确的上下文信息。文中的 PV-RCNN 深度融合了两种网络的优势。如下图所示,PV-RCNN 由一个 3D 体素 CNN 组成,稀疏卷积作为高效特征编码和提示生成的主干网络。给定每个 3D 对象提示,为了有效地池化其来自场景的相应特征,提出了两种新颖的操作:体素到关键点场景编码,它将整个场景带有特征的体素汇总为少量特征关键点,和点到网格 RoI 特征抽象,它是将场景关键点特征有效地聚合到 RoI 网格中,用于提示框置信度预测和位置细化。
具体可描述为:首先对原始点云进行体素化,以馈送到基于 3D 稀疏卷积的编码器中,以学习多尺度语义特征并生成 3D 对象提示框。然后,通过新颖的体素集抽象模块,将多个神经层上学习到的体素特征卷总结为一小组关键点。最后,将关键点特征聚合到 RoI 网格点,以学习提示框特定特征,从而进行细粒度的提示框细化和置信度预测。
A 3D体素CNN用于特征编码和提示框生成
3D Voxel CNN是将点云快速转换成稀疏3D特征体的一种state-of-the-art的3D检测器。
3D voxel CNN:首先将输入点集 P 划分为空间分辨率为 L × W × H 的小体素,其中非空体素的特征直接计算为所有内部点的逐点特征的平均值。常用的特征是 3D 坐标和反射强度。该网络利用一系列 3 × 3 × 3 的3D稀疏卷积,逐渐将点云转换为具有 1×、2×、4×、8× 缩减采样大小的特征体。每个级别的这种稀疏特征体可以看作是一组逐体素的特征向量。
3D 提示框生成:将8x下采样的3D特征编码成2D鸟瞰特征图,并利用基于anchor的方法生成高质量的3D提示框。主要是将体素Z轴方向的3D特征进行堆积作为其鸟瞰图对应像素的特征向量。
然而,这些3D特征体存在以下几个方面的限制:(i)这些特征体通常空间分辨率低,因为其做了八倍的下采样,从而阻碍了对象在场景中的精确定位;(ii)即使能够通过上采样将其分辨率提高,但仍然非常稀疏。RoIPooling/RoIAlign 运算中常用的三线性或双线性插值只能从非常小的邻域(即双线性和三线性插值分别为 4 个和 8 个最近邻)中提取特征。因此,传统的池化方法将获得大部分为 0 的特征,并浪费大量计算和内存。
另一方面,在 PointNet的变体中提出的集合抽象操作已经显示出从任意大小的邻域中编码特征点的强大能力。因此,文章建议将 3D 体素 CNN 与一系列集合抽象操作集成,以进行准确和稳健的第 2 阶段提示框优化。
使用集合抽象操作来池化场景特征体素的解决方案是将场景中的多尺度特征体积直接聚合到 RoI 网格。但是,这种直观的策略占用大量内存,并且在实践中使用效率低下。例如,KITTI 数据集中的常见场景可能会导致 4× 下采样特征体积中有 18,000 个体素。如果每个场景使用 100 个提示框,并且每个提示框有 3 × 3 × 3 个网格。即使利用距离阈值约束,也无法有效计算 2,700 × 18,000 成对距离和特征聚合。
为了解决这个问题,作者提出了一种两步法,首先将整个场景不同神经层的体素编码为少量关键点,然后将关键点特征聚合到 RoI 网格以进行提示框优化。
B Voxel-to-keypoint场景编码
提出的框架首先将代表整个场景的多个神经层的体素聚合成小批量的关键点,充当 3D 体素 CNN 特征编码器和提示框细化网络之间的桥梁。
Keypoints Sampling:采用最远点采样(FPS)
Voxel Set Abstraction(VSA) Module:对从 3D CNN 特征体到关键点的多尺度语义特征进行编码。体素特征体的聚合采用集合抽象操作。关键点的周围点现在是由 3D 体素 CNN 从多个级别编码的具有多尺度语义特征的规则体素,而不是具有从 PointNet 学习的特征的相邻原始点。
具体来说,将表示为 3D 体素 CNN 的第 k 级中的体素级特征向量集,
作为它们的 3D 坐标,由第 k 级的体素索引和实际体素大小计算得出,其中 Nk 是第 k 级中非空体素的数量。对于每个关键点 pi ,作者首先在半径 rk 内的第 k 级识别其相邻的非空体素,以检索体素方向特征向量的集合,如下所示:
其中,作者将局部相对坐标连接起来,以表示语义体素特征
的相对位置。然后,pi 的相邻体素集
中的体素特征由 PointNetblock转换以生成特征:
其中 M(·) 表示从相邻集合中最多 Tk 体素的随机采样,G(·) 表示多层感知器网络,用于编码体素方向的特征和相对位置。尽管相邻体素的数量因不同的关键点而异,但沿通道最大池化作 max(·) 将不同数量的相邻体素特征向量映射到关键点 pi 的特征向量 。通常,作者还在第 k 级设置多个半径 rk,以聚合具有不同感受野的局部体素特征,以捕获更丰富的多尺度上下文信息。
上述体素集抽象在三维体素 CNN 的不同层次进行,可以将不同层次的聚合特征连接起来,生成关键点 pi 的多尺度语义特征:
其中,生成的特征结合了来自体素特征
的基于 3D 体素 CNN 的特征学习和来自体素集抽象的基于 PointNet 的特征学习。此外,pi 的 3D 坐标还保留了准确的位置信息。
扩展VSA模块:作者通过进一步丰富来自原始点云 P 和 8× 下采样 2D 鸟瞰特征图的关键点特征来扩展 VSA 模块,其中原始点云部分弥补了初始点云体素化的量化损失,而 2D 鸟瞰图沿 Z 轴具有更大的感受野。原始点云特征也通过pointNet进行聚合。对于鸟瞰特征图,作者将关键点 pi 投影到 2D 鸟瞰坐标系,并利用双线性插值从鸟瞰特征中获得特征,因此,通过连接其所有相关特征,可以进一步丰富 pi 的关键点特征:
具有很强的保留整个场景的 3D 结构信息的能力,还可以大幅提升最终检测性能。
预测关键点的权重:在将整个场景编码为少量关键点后,它们将被下一阶段进一步用于进行提示框优化。关键点由 Further Point Sampling 策略选择,其中一些可能仅表示背景区域。直观地说,属于前景对象的关键点应该对建议的准确优化贡献更大,而来自背景区域的关键点应该贡献较小。
因此,作者提出了一个预测关键点权重 (PKW) 模块,通过点云分割的额外监督来重新加权关键点特征。分割标签可以通过 3D 检测框标注直接生成,即检查每个关键点是否在真实 3D 框内或外,因为自动驾驶场景中的 3D 对象在 3D 空间中是自然分离的。每个关键点特征的预测特征权重可以表示为:
其中 A(·) 是一个三层 MLP 网络,具有 sigmoid 函数来预测 [0, 1] 之间的前景置信度。PKW 模块由焦点损失训练,具有默认的超参数,用于处理训练集中不平衡的前景/背景点数量。
C Keypoint-to-grid Rol 特征抽象用于提示框细化
在上一步骤中,将整个场景归纳为具有多尺度语义特征的少量关键点。给定 3D 体素 CNN 生成的每个 3D 提示框 (RoI),需要从关键点特征 聚合每个 RoI 的特征,以实现准确和稳健的提示框细化。作者提出了基于多尺度 RoI 特征编码的集合抽象操作的关键点到网格 RoI 特征抽象。
ROI-grid Pooling via Set Abstraction:给定每个 3D RoI,如上图所示,作者提出了 RoI 网格池化模块,将关键点特征聚合到具有多个感受野的 RoI 网格点。作者在每个 3D 提示框中统一采样 6 × 6 × 6 个网格点,这些网格点表示为 G = {g1, · · · , g216}。采用集合抽象操作,从关键点特征中聚合网格点的特征。具体来说,作者首先将网格点 gi 在半径 r ̃内的相邻关键点确定为:
其中 Pj − gi 用于指示特征与关键点 Pj 的局部相对位置。然后采用 PointNetblock 聚合相邻的关键点特征集 Ψ ̃ 以生成网格点 gi 的特征为:
作者设置了多个半径 r ̃并聚合了具有不同感受野的关键点特征,这些特征连接在一起以捕获更丰富的多尺度上下文信息。
从周围关键点获取每个网格的聚合特征后,同一 RoI 的所有 RoI-grid 特征可以通过具有 256 个特征维度的两层 MLP 进行矢量化和转换,以表示整体提示框。
与之前工作中的点云 3D RoI 池化作比较,作者提出的针对关键点的 RoI-grid 池化作能够捕获具有灵活感受野的更丰富的上下文信息,其中感受野甚至超出 RoI 边界,用于捕获 3D RoI 之外的周围关键点特征, 而以前的 State-of-the-art 方法要么简单地将提示框中的所有逐点特征平均为 RoI 特征,要么将许多无信息的零汇集为 RoI 特征。
3D提示框细化和置信度预测:给定每个提示框的 RoI 特征,提示框细化网络学习预测相对于输入 3D 提示框的大小和位置(即中心、大小和方向)残差。细化网络采用 2层 MLP,具有置信度预测和框细化两个分支。
对于置信度预测分支,作者采用 3D RoI 及其相应的真实框之间的 3D 交并 (IoU) 作为训练目标。对于第 k 个 3D RoI,其置信度训练目标 yk 被归一化为介于 [0, 1] 之间,即:
然后训练作者的置信度分支,以最小化预测置信度目标时的交叉熵损失。
4)实验
数据集:KITTI和Waymo。
训练集:KITTI
测试集:KITTI和Waymo。
对于汽车级别最重要的 3D 对象检测基准,作者的方法以显着的差距优于以前的最新方法,即在简单、中等和困难难度级别上分别将 mAP 提高了 1.58%、1.72%、1.73%。对于 car 类的鸟视检测,作者的方法在简单和中等难度级别上也实现了新的状态性能,同时在困难难度级别上略有下降。对于骑行者的 3D 检测和鸟瞰检测,作者的方法优于以前的仅使用 LiDAR 的方法,在中等和困难难度级别上具有很大的余量,同时在简单难度级别上实现了相当的性能。请注意,作者训练一个模型来同时进行汽车和骑行者的检测,而不是像以前的方法 那样为每个类训练单独的模型。
截至 2019 年 11 月 15 日,作者的方法目前在包括 RGB+LiDAR 方法和仅 LiDAR 方法在内的所有方法中排名汽车 3D 检测排行榜第一,在所有已发布的仅 LiDAR 方法中排名第一。显著的改进体现了 PV-RCNN 的有效性。
上表显示,作者的方法明显优于以前的state-of-the-art方法,3D 目标检测的 mAP 增益为 7.37%,鸟瞰目标检测的增益为 2.56%。结果表明,作者的方法在所有感兴趣的距离范围内都实现了明显更好的 mAP,其中 30 − 50m 范围内的 3D 检测的最大增益为 9.19%,这验证了作者提出的多级点体素集成策略能够有效地捕获更准确的上下文信息,以提高 3D 检测性能。作者的方法在 mAPH 方面也取得了卓越的性能,这表明作者的模型预测了车辆的准确航向。其中还报告了 LEVEL 2 难度级别的结果以供参考,作者可以看到,即使对于内部点少于 5 个的对象,作者的方法也表现良好。
为了评估作者的多类检测方法的性能,作者进一步对最新的 Waymo Open Dataset(2020 年 3 月发布的 1.2 版)进行了实验。在这里,提示框的数量从 100 个增加到 500 个,因为作者只训练一个模型来检测所有三个类别(例如,车辆、行人和骑自行车的人)。如上表所示,作者的方法在这三个类别的所有难度级别上都明显优于以前的方法。
5)结论
作者提出了 PV-RCNN 框架,这是一种从点云中准确检测 3D 对象的新方法。作者的方法通过新提出的体素集抽象层将多尺度 3D 体素 CNN 特征和基于 PointNet 的特征集成到一小组关键点中,然后将学习到的关键点的判别特征聚合到具有多个感受野的 RoI 网格点,以捕获更丰富的上下文信息,用于细粒度的提示框细化。在 KITTI 数据集和 Waymo Open 数据集上的实验结果表明,与以前的最先进方法相比,作者提出的体素到关键点场景编码和关键点到网格 RoI 特征抽象策略显著提高了 3D 目标检测性能。