详解两阶段 3D 目标检测网络 Voxel R-CNN:Towards High Performance Voxel-based 3D Object Detection

date
Apr 4, 2022
Last edited time
Mar 28, 2023 08:03 AM
status
Published
slug
详解两阶段3D目标检测网络Voxel_R-CNN
tags
DL
CV
3D
summary
转载,原链接已给出
type
Post
origin
Field
Plat
详解两阶段3D目标检测网络 Voxel R-CNN:Towards High Performance Voxel-based 3D Object Detection_自动驾驶小学生的博客-CSDN博客_两阶段网络
本文介绍一篇两阶段的3D目标检测网络: Voxel R-CNN,论文已收录于 AAAI 2021。 这里重点是理解本文提出的 Voxel RoI pooling 。 论文链接为: https://arxiv.org/pdf/2012.15712.pdf 项目链接为: https://github.com/djiajunustc/Voxel-R-CNN 这里先给出本文摘要 : 3D目标检测的最新进展在很大程度上取决于如何表示3D数据,即 基于体素(voxel-based)或 基于点(point-based)的表示。 许多现有的高性能3D检测器都是 基于点的表示,因为这种结构可以更好地 保留点的精确位置。 尽管如此,由于点云的无序存储,往往会导致很高的计算开销。 相反, 基于体素的结构更适合于特征提取,但由于输入数据被划分成网格,往往会产生较低的精度 。 在本文中,作者提出了一个稍微不同的观点,作者发现: 对原始点的精确定位对于高性能的3D目标检测来说并不是必不可少的,粗体素粒度也可以达到很高的检测精度。 考虑到这一点,作者设计了一个简单但有效的 基于体素的目标检测网络,即 Voxel R-CNN。通过在两阶段方法中充分利用体素特征,最终获得了与最先进的基于点的模型 (PV-RCNN)相当的检测精度,但计算开销减少了许多。 Voxel R-CNN由3D主干网络、2D鸟瞰网RPN以及检测头组成。作者在本文中设计了一个 voxel RoI pooling,可直接从体素特征中提取RoI特征,以便进一步处理。在 KITTI数据集和 Waymo数据集上的实验结果表明,与现有的基于体素的方法相比,Voxel R-CNN在保持实时帧处理速率的同时(即在NVIDIA RTX 2080Ti GPU上以 25FPS 的速度)提供了更高的检测精度。 ( 本文的 引言部分和第二部分对 3D目标检测的思考部分
notion image
本文介绍一篇两阶段的 3D 目标检测网络:Voxel R-CNN,论文已收录于 AAAI 2021。 这里重点是理解本文提出的Voxel RoI pooling

0. Abstract

这里先给出本文摘要
3D 目标检测的最新进展在很大程度上取决于如何表示 3D 数据,即基于体素(voxel-based)基于点(point-based)的表示。 许多现有的高性能 3D 检测器都是基于点的表示,因为这种结构可以更好地保留点的精确位置。 尽管如此,由于点云的无序存储,往往会导致很高的计算开销。 相反,基于体素的结构更适合于特征提取,但由于输入数据被划分成网格,往往会产生较低的精度
在本文中,作者提出了一个稍微不同的观点,作者发现:对原始点的精确定位对于高性能的3D目标检测来说并不是必不可少的,粗体素粒度也可以达到很高的检测精度。 考虑到这一点,作者设计了一个简单但有效的基于体素的目标检测网络,即Voxel R-CNN。通过在两阶段方法中充分利用体素特征,最终获得了与最先进的基于点的模型(PV-RCNN)相当的检测精度,但计算开销减少了许多。Voxel R-CNN由3D主干网络、2D鸟瞰网RPN以及检测头组成。作者在本文中设计了一个voxel RoI pooling,可直接从体素特征中提取 RoI 特征,以便进一步处理。在KITTI数据集Waymo数据集上的实验结果表明,与现有的基于体素的方法相比,Voxel R-CNN 在保持实时帧处理速率的同时(即在 NVIDIA RTX 2080Ti GPU 上以25FPS的速度)提供了更高的检测精度。

1. Introduction & Reflection on 3D Object Detection

( 本文的引言部分和第二部分对 3D 目标检测的思考部分这里就不详细介绍了,大家可以查看原文,我在这里大致总结下。)
首先是引言部分,现在的 3D 目标检测大致可以分为两类:基于体素(voxel-based)的检测方法有VoxelNet,SECOND,PointPillars基于原始点的(point-based)检测方法有STD,PointRCNN,3DSSD,PV-RCNN。从检测性能来看,基于点的检测精度更高,相应地计算效率还不是很快。随着检测算法的日益成熟,现在有一个新的问题出现了:我们是否能设计一个算法,既能达到基于点检测的高精度又能实现基于体素检测一样高的效率?
下面作者在文中回顾了SECONDPV-RCNN两类检测算法,可以看到SECONDPV-RCNN在检测精度上有着很大的差距。两个检测算法的主要差异在于:
  1. SECOND是一阶段检测算法,PV-RCNN是两阶段检测算法,PV-RCNN使用了检测头进行检测的进一步优化。
  1. PV-RCCN中的关键点保留了 3D 结构信息,而SECOND是在鸟瞰图 (BEV) 上进行检测。
notion image
notion image
从表 1 可以看出添加了检测头之后,SECOND的检测精度提升了 0.6%,但是仍然远低于PV-RCNN,这表明两阶段检测能提高检测精度,但是鸟瞰图仍然不足以对 3D 物体进行准确表示。表 2 可以看出,PV-RCNN中作者提出了VSA模块,这是一个点-体素(point-voxel)特征交互操作,基本消耗了整个运行时间的一半,直接导致检测效率大幅下降。
简单总结下:
  1. 3D结构对于 3D 检测器来说至关重要,而鸟瞰图表示不足以精准预测 bounding-box。
  1. point-voxel特征计算非常耗时,影响着检测效率,最终作者在本文提出了一个voxel-only的 3D 检测器。

2. Voxel R-CNN Design (重点)

notion image
Voxel R-CNN是基于体素的用于 3D 目标检测的两阶段网络,网络结构图如上图所示。可以看出Voxel R-CNN由三部分组成:
  • 3D骨干网络
  • 2D骨干网络(RPN)
  • Voxel RoI poolingDetect Head
Voxel R-CNN中,首先将原始点云划分为有规则的体素然后利用3D骨干网络进行特征提取。 然后将稀疏的3D体素转换为BEV表示形式在其上应用2D骨干网和RPN生成3D区域方案。 最后使用Voxel RoI Pooling提取RoI特征,将提取的特征输入 Detect Head 以进行进一步优化。下面详细讨论这些模块。由于本文的主要创新在于Voxel RoI pooling,因此首先对其进行介绍。

2.1 Voxel RoI pooling

Voxel Volumes as Points: 这里先给出了 volumes 的表示,由非空voxel中心坐标 和特征向量 组成。
Voxel Query: 如下图所示。在之前的最近邻 voxel 查找方法中,使用最多的是Ball Query,这里作者提出了Voxel Query,使用曼哈顿距离来进行查找,通过设置曼哈顿距离阈值来采样 个 voxels。
假设有两个 voxels : ,两个 voxels 之间的曼哈顿距离计算公式为:
假设有 个非空 voxels,使用Ball Query则时间复杂度为 ,使用voxel query时间复杂度则为 ,最近邻 voxels 查找效率上得到了有效改善。
notion image
Voxel RoI Pooling Layer:
首先将候选方案划分为 个子体素(sub-voxels)。其中心点就是网格点,由于 3D 特征 volumes 是很稀疏的,非空 voxels 大约只占 3% 空间,不能直接对每个 voxel 使用最大池化操作。这里作者设计了一个 PointNet模块,将近邻 voxels 特征融合到网格点,模块如下:
其中 表示相对坐标, 是网格点坐标, 是 voxel 特征向量 表示多层感知机 是融合的特征向量。在具体实现上,作者在 3D 主干网最后两层提取了 voxel 特征,并且在每一层使用了两个不同的曼哈顿距离进行 voxel 融合,最后将这些不同层不同距离的 voxel 特征进行融合来获得 RoI 特征。
Accelerated Local Aggregation: 在这里作者还提出了一个加速PointNet模块。如下图所示,在图(a)中,假设有 个网格点,每一个网格点需要查找 个 voxels,每个 voxel 特征向量为 ,融合后的特征向量为 。则时间复杂度为
在图(b)中,将 voxel 特征和相对坐标进行拆分,由于特征向量和网格点是相互独立的,我们对每个 voxel 进行特征变换,则此时间复杂的为 ;进行 voxel query 后,我们对相应 voxel 进行位置特征转换,此时间复杂度为 ,最终时间复杂度为 ,由于 高出 一个数量级,所以其时间复杂度小于
notion image

2.2 Training Objectives

( 本节的主干网和区域方案部分以及检测头这里就不详细介绍了,大家可以查看原文,这里对损失函数进行介绍。)
Losses of RPN: RPN 损失函数为分类损失和回归损失,函数为:
其中 为前景 anchors 数量, 是分类和回归输出 是对应分类和回归目标。 表示只计算前景 anchors 的回归损失。分类损失函数为Focal Loss,回归损失函数为Huber Loss
Losses of detect head: 第二阶段置信度函数为:
其中 是第 个方案和对应真值框的 是前景 和背景 的阈值。置信度预测为二分类交叉熵函数,回归损失为Huber Loss,最终的损失函数为:
其中 是训练阶段的采样区域方案数量, 表示只计算 大于 的区域方案。

3. Experiments

实验部分,作者分别在KITTIWaymo数据集上进行了验证,实验细节这里不介绍了,可以查看代码和论文,下面几张表是实验结果。
notion image
notion image
notion image
notion image
下表是 Voxel R-CNN在 KITTI 数据集上的排名情况,在开源项目中目前暂列第一(截至 2021-03-01)。
notion image
最后作者做了一些分析实验,对本分提出的 voxel queryaccelerated PointNet进行了实验分析,下面对表格中的 5 种方法实验结果进行总结:
  • 在 BEV 特征上进行一阶段检测,效率很快,但精度不高。
  • 添加检测头,精度得到了提高,但使用了ball querry原始PointNet Module,效率下降很多。
  • 使用voxel query,效率得到提高。
  • 使用加速PointNet Module,效率进一步提高。
  • 本文提出的 Voxel R-CNN,取得了最好的检测性能,同时也取得了voxel-based 方法中最快的检测效率。
notion image

© Lazurite 2021 - 2024