[论文阅读]Voxel R-CNN——迈向高性能基于体素的3D目标检测

news2024/12/24 21:36:24

Voxel R-CNN

Voxel R-CNN: Towards High Performance Voxel-based 3D Object Detection
迈向高性能基于体素的3D目标检测
论文网址:Voxel R-CNN
论文代码:Voxel R-CNN

简读论文

该论文提出了 Voxel R-CNN,这是一种基于体素的高性能 3D 对象检测框架。作者认为,原始点的精确定位对于准确的目标检测并不重要,粗体素粒度可以提供足够的检测精度。Voxel R-CNN 由 3D 主干网络、2D 鸟瞰 (BEV) 区域提议网络 (RPN) 和检测头组成。该框架利用两阶段方法中的体素特征,实现了与最先进的基于点的模型相当的检测精度,但计算成本仅为其一小部分。作者在 KITTI 数据集和 Waymo 开放数据集上进行了大量实验,证明 Voxel R-CNN 在保持实时帧处理速率的同时提供了更高的检测精度。

Voxel R-CNN前向传播过程

Voxel R-CNN
Voxel R-CNN网络的前向传播过程可以总结如下:

  1. Voxelization:原始点云数据被划分为规则的体素,体素是表示物体空间占用情况的3D网格单元。

  2. 3D骨干网络:体素化数据被输入到3D骨干网络中,该网络逐渐将体素抽象成3D特征体积。该网络从体素数据中提取高级特征。

  3. 2D骨干网络和RPN:3D特征体积被转换为鸟瞰图(BEV)表示。2D骨干网络和Region Proposal Network(RPN)被应用于在BEV空间中生成密集的区域建议。这些建议表示潜在的物体位置。

  4. Voxel RoI池化:为了从3D特征体积中提取感兴趣区域(RoI)特征,进行Voxel RoI池化操作。该操作从体素特征体积中聚合空间上下文。它利用邻居感知属性提取相邻体素特征,并使用局部特征聚合模块进行加速。

  5. 检测头:从Voxel RoI池化获得的RoI特征被输入到检测头中,该头部进一步细化边界框的预测。这一步提高了物体检测的准确性。

总体而言,Voxel R-CNN网络将体素化表示的优势与点云模型的准确性相结合。它通过利用体素特征体积中的3D结构上下文,并使用Voxel RoI池化从体素数据中直接提取RoI特征,实现了这一目标。

摘要

3D 目标检测的最新进展在很大程度上依赖于 3D 数据的表示方式,即基于体素或基于点的表示。许多现有的高性能3D 检测器都是基于点的,因为这种结构可以更好地保留精确的点位置。然而,由于无序存储,点级特征会导致较高的计算开销。相比之下,基于体素的结构更适合特征提取,但由于输入数据被划分为网格,因此精度通常较低。本文采取了略有不同的观点 - 本文发现原始点的精确定位对于高性能 3D 目标检测来说并不是必需的,并且粗体素粒度也可以提供足够的检测精度。考虑到这一观点,本文设计了一个简单但有效的基于体素的框架,名为 Voxel R-CNN。通过在两阶段方法中充分利用体素特征,本文的方法实现了与最先进的基于点的模型相当的检测精度,但计算成本仅为其一小部分。 Voxel R-CNN 由 3D 主干网络、2D 鸟瞰(BEV)区域提议网络和检测头组成。体素 RoI 池化旨在直接从体素特征中提取 RoI 特征以进行进一步细化。在广泛使用的 KITTI 数据集和更新的 Waymo 开放数据集上进行了大量的实验。结果表明,与现有的基于体素的方法相比,Voxel R-CNN 提供了更高的检测精度,同时保持了实时帧处理速率,即在 NVIDIA RTX 2080 Ti GPU 上的速度为 25 FPS。

引言

使用点云的 3D 目标检测在自动驾驶汽车、机器人和增强/虚拟现实领域受到了广泛关注。尽管深度学习的最新发展使得二维图像目标检测的效果激增,但它仍然是不能直接将这些 2D 方法应用于 3D 点云,特别是在处理点云的稀疏性和非结构化特性时。此外,这些应用通常要求检测系统具有高效率,由于 3D 空间更大,因此设计 3D 检测器变得更加困难。
现有的 3D 检测方法可大致分为两类,即基于体素的和基于点的。基于体素的方法将点云划分为规则网格,这更适用于卷积神经网络(CNN),并且由于其优越的内存定位性,在特征提取方面更为高效。然而,其缺点是体素化通常会导致精确位置信息的丢失。当前最先进的 3D 检测器主要是基于点的,它以原始点云作为输入,并通过迭代采样和分组抽象出一组点表示。先进的基于点的方法在各种基准上排名最高。因此,这导致了一种流行的观点,即原始点云中的精确位置信息对于准确的目标定位至关重要。尽管检测精度较高,但基于点的方法一般来说效率较低,因为用点表示法搜索近邻进行点集抽象的成本较高。
随着检测算法的成熟,本文已经准备好将这些算法部署在现实系统上。这里,出现了一个新的挑战:能否设计出一种与先进的基于点的方法一样准确、与基于体素的方法一样快的方法?在这项工作中,为了实现这一目标,采用基于体素的框架并尝试提高其准确性。本文首先认为原始点云的精确定位很好但没有必要。本文观察到,基于体素的方法通常在鸟瞰图 (BEV) 表示上执行目标检测,即使输入数据是 3D 体素。相比之下,基于点的方法通常依赖抽象的点表示来恢复 3D 结构上下文,并根据逐点特征进行进一步细化,如图 1 (a) (b) 所示。通过仔细研究底层机制,本文发现,现有的基于体素的方法的主要缺点在于,它们将三维特征体积转换为 BEV 表示,但却没有恢复三维结构上下文。
在这里插入图片描述
考虑到这一点,本文建议从 3D 特征体中聚合 3D 结构上下文。具体来说,引入了一种新颖的基于体素的检测器,即Voxel R-CNN,以充分利用两阶段pipeline中的体素特征(见图 1 ©)。 Voxel R-CNN 由三个核心模块组成:(1) 3D 主干网络,(2) 2D 主干网络,后跟区域提议网络 (RPN),以及 (3) 具有新体素 RoI 池化操作的检测头。 3D骨干网络逐渐将体素抽象为3D特征体。密集区域提案由 2D 主干和 RPN 生成。然后,通过体素 RoI 池化直接从 3D 特征体中提取 RoI 特征。在设计体素 RoI 池化时,利用邻居感知属性(有利于更好的内存局部性)来提取相邻体素特征,并设计一个局部特征聚合模块以进一步加速。最后,采用 3D RoI 特征进行进一步的框细化
这项工作的主要贡献源于 Voxel R-CNN 的设计,它在准确性和效率之间取得了谨慎的平衡。 Voxel R-CNN 令人鼓舞的实验结果也证实了本文的观点:原始点的精确定位对于高性能 3D 目标检测并不重要,较粗的体素粒度也可以为此任务提供足够的空间上下文线索。请注意,本文的 Voxel R-CNN 框架作为一个简单但有效的基线,有助于进一步的调查和下游任务。

对3D目标检测的思考

本节首先回顾两种代表性的基线方法,即 SECOND 和 PVRCNN ,然后研究开发高性能 3D 物体检测器的关键因素。

Revisiting

SECOND. : SECOND是一种基于体素的单阶段目标检测器。它将体素化数据馈送到 3D 主干网络以进行特征提取。然后将 3D 特征体积转换为 BEV 表示。最后,应用 2D 主干和区域提议网络 (RPN) 来执行检测。
PV-RCNN. : PV-RCNN 通过添加关键点分支来保留 3D 结构信息来扩展 SECOND。引入体素集抽象 (VSA) 将多尺度 3D 体素特征集成到关键点中。通过 RoI 网格池化从关键点进一步提取每个 3D 区域提案的特征以进行框细化。

Analysis

SECOND和PV-RCNN在检测性能(即准确率和效率)方面存在很大差距。这两种方法有以下不同点。首先,SECOND 是一种单阶段方法,而 PV-RCNN 采用检测头进行框细化。其次,PV-RCNN 中的关键点保留了 3D 结构信息,而 SECOND 直接对 BEV 表示进行检测。为了验证框细化和 3D 结构信息对检测性能的影响,本文在 SECOND 的 2D 主干网络顶部添加了一个检测头。由于 BEV 框未与轴对齐,因此利用旋转 RoI 对齐进行 RoI 特征提取。
在 BEV 特征之上直接添加 BEV 检测头可使 KITTI 汽车适度数据的 AP 提高 0.6%,但迄今为止仍落后于 PV-RCNN 的准确性。这验证了边界框细化的有效性,也表明BEV表示的能力相当有限。通常,PV-RCNN 通过体素集抽象将体素特征集成到采样关键点中。关键点作为中间特征表示来有效保留 3D 结构信息。然而,点-体素交互几乎占据了整体运行时间的一半,这使得 PV-RCNN 比 SECOND 慢得多。
Summary. 总之,通过分析 SECOND 中鸟瞰图(BEV)特征表示的局限性以及 PV-RCNN 中每个组件的计算成本,观察到以下几点:(a)3D 结构对于 3D 目标检测器非常重要,因为仅 BEV 表示不足以精确预测 3D 空间中的边界框; (b)点-体素特征交互非常耗时并且影响检测器的效率。这些观察结果促使本文直接利用 3D 体素张量并开发仅体素的 3D 目标检测器。

Voxel R-CNN Design

Voxel R-CNN 是一种基于体素的 3D 目标检测两阶段框架。如图 2 所示,体素 R-CNN 包括:(a) 3D 主干网络,(b) 2D 主干网络,后跟区域提议网络 (RPN),以及 © 体素 RoI 池化和检测头框细化。在 Voxel RCNN 中,首先将原始点云划分为规则体素,并利用 3D 主干网络进行特征提取。然后,将稀疏 3D 体素转换为 BEV 表示,并在其上应用 2D 主干网络和 RPN 来生成 3D 区域提案。随后,使用体素 RoI 池化来提取 RoI 特征,并将其输入到检测头中进行框细化。下面详细讨论这些模块。由于创新主要在于体素RoI池化,所以首先讨论它。
Voxel R-CNN

Voxel RoI pooling

为了直接聚合来自 3D 体素特征量的空间上下文,本文提出了体素 RoI 池化。
Voxel Volumes as Points. : 本文将稀疏 3D 体积表示为一组非空体素中心点及其相应的特征向量。具体来说,体素中心的 3D 坐标是通过索引、体素大小和点云边界来计算的。
Voxel Query. : 本文提出了一种名为体素查询的新操作,用于从 3D 特征体积中查找邻近体素。与无序点云相比,体素规则排列在量化空间中,易于邻居访问。例如,查询体素的 26 个相邻体素可以通过添加三元组偏移量来轻松计算体素索引 (i, j, k)。通过利用这一特性,本文设计了体素查询来有效地对体素进行分组。体素查询如图3所示。
在这里插入图片描述
首先将查询点量化为体素,然后通过索引翻译可以有效地获得邻近体素。本文在体素查询中利用曼哈顿距离,并在距离阈值内采样最多 K 个体素。具体来说,体素 α = (iα, jα, kα) 和 β = (iβ, jβ, kβ) 之间的曼哈顿距离 D(α, β) 计算如下:
D
假设 3D 特征体积中有 N 个非空体素,我们利用球查询来查找给定查询点的相邻体素,时间复杂度为 O(N)。然而,进行体素查询的时间复杂度仅为 O(K),其中 K 是邻居的数量。 Neighboraware 属性使得使用体素查询对邻近体素特征进行分组比使用球查询对邻近点特征进行分组更加有效。
Voxel RoI Pooling Layer. : 本文设计体素 RoI 池化层如下。它首先将区域提议划分为 G×G×G 规则子体素。取中心点作为相应子体素的网格点。由于 3D 特征量极其稀疏(非空体素占空间 < 3%),不能像 (Fast rcnn) 那样直接对每个子体素的特征利用最大池化。相反,将相邻体素的特征集成到网格点中以进行特征提取。具体来说,给定一个网格点gi,首先利用体素查询来对一组相邻体素进行分组 Γi = {vi1 , vi2 , ··· , vik }。然后,使用 PointNet 模块聚合相邻体素特征,如下所示:
在这里插入图片描述
其中 vi − gi 表示相对坐标,φk i 是 vk i 的体素特征,Ψ(·) 表示 MLP。沿通道执行最大池化操作max(·)以获得聚合特征向量ηi。特别是,利用体素 RoI 池化从 3D 主干网络最后两个阶段的 3D 特征体中提取体素特征。对于每个阶段,设置两个曼哈顿距离阈值以对具有多个尺度的体素进行分组。然后,将从不同阶段和规模汇集的聚合特征连接起来以获得 RoI 特征。
Accelerated Local Aggregation. : 即使使用本文提出的体素查询,体素 RoI 池化中的局部聚合操作(即 PointNet 模块)仍然涉及很大的计算复杂度。如图4(a)所示,总共有M个网格点(M = r × G3,其中r是RoI的数量,G是网格大小),每个网格点分为K个体素。分组特征向量的维度为C+3,包括C维体素特征和3维相对坐标。当应用 FC 层时,分组体素占用大量内存并导致大量计算 FLOP(O(M×K × (C + 3) ×C’))。
在这里插入图片描述
本文另外引入了加速的 PointNet 模块,以进一步降低体素查询的计算复杂度。通常,如图 4 (b) 所示,体素特征和相对坐标被分解为两个流。给定权重为W ∈ R(C’,C+3) 的FC 层,将其分为WF ∈ R(C’,C) 和WC ∈ R(C’,3)。由于体素特征与网格点无关,因此在执行体素查询之前,在体素特征上应用带有 WF 的 FC 层。然后,在体素查询之后,只需将分组的相对坐标乘以WC即可获得相对位置特征并将其添加到分组的体素特征中。本文的加速 PointNet 模块的 FLOP 为 O(N×C×C’ +M×K× 3×C’)。由于分组体素的数量(M×K)比N高一个数量级,因此加速后的PointNet模块比原始模块更高效。

Backbone and Region Proposal Networks

本文遵循类似的设计(Second ;PV-RCNN)来构建本文的骨干网络。 3D 主干网络逐渐将体素化输入转换为特征量。然后,输出张量沿 Z 轴堆叠以生成 BEV 特征图。 2D 主干网络由两个组件组成:一个具有两块标准 3×3 卷积层的自顶向下特征提取子网络,以及一个对自顶向下特征进行上采样和连接的多尺度特征融合子网络。最后,2D 主干网络的输出与两个同级 1 × 1 卷积层进行卷积,以生成 3D 区域提案。

Detect Head

检测头将 RoI 特征作为框细化的输入。具体来说,共享 2 层 MLP 首先将 RoI 特征转换为特征向量。然后,将展平的特征注入两个兄弟分支:一个用于边界框回归,另一个用于置信度预测。框回归分支预测 3D 区域提案到地面真值框的残差,置信分支预测 IoU-相关置信度得分。

Training Objectives

Losses of RPN. : RPN 的损失设计为分类损失和框回归损失的组合,如下所示:
losses of rpn
Losses of detect head. : 分配给置信分支的目标是 IoU 相关值,如下:

其中IoUi是第i个proposal和对应的groundtruth box之间的IoU,θH和θL是前景和背景IoU阈值。这里利用二元交叉熵损失进行置信度预测。框回归分支也像 RPN 中一样使用 Huber Loss。检测头的损失计算如下:
loss

结论

本文提出了 Voxel R-CNN,一种具有基于体素表示的新型 3D 目标检测器。以体素为输入,Voxel R-CNN 首先从鸟瞰图特征表示中生成密集区域建议,然后利用体素 RoI 池化从 3D 体素特征中提取区域特征以进行进一步细化。通过充分利用体素表示,本文的体素 R-CNN 在准确性和效率之间取得了谨慎的平衡。 KITTI 数据集和 Waymo 开放数据集的令人鼓舞的结果表明,本文的 Voxel-RCNN 可以作为简单但有效的基线,以促进 3D 对象检测和其他下游任务的研究。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1153067.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文读懂什么是新一代BPM

什么是BPM 业务流程管理 (Business Process Management&#xff0c;简称BPM)&#xff0c;是一门学科&#xff0c;它通过分析、建模、执行、监控、优化等流程来改进业务流程&#xff0c;使企业核心业务流程最优化。BPM系统即根据业务环境的变化&#xff0c;推进人与人之间、人与…

Modelsim 使用教程(1)——概述

目录 一、概述 二、设计优化&#xff08;Design Optimizations&#xff09; 三、基本仿真流程&#xff08;Basic simulation flow&#xff09; 3.1 创建工作库&#xff08;create a working library&#xff09; 3.2 编译设计&#xff08;Compiling Your Design&#xff09…

MAXENT模型的生物多样性生境模拟与保护优先区甄选、自然保护区布局优化评估

随着生物多样性全球大会的举办&#xff0c;不论是管理机构及科研单位、高校都在积极准备&#xff0c;根据国家林草局最新工作指示&#xff0c;我国将积极整合、优化自然保护地&#xff0c;加快推进国家公园体制试点&#xff0c;构建以国家公园为主体的自然保护地体系。针对我国…

电脑剪辑完成的视频怎么传到手机

现今手机基本上可以完成电脑的所有操作&#xff0c;甚至功能会更加丰富&#xff0c;但是对于需要剪辑视频的用户来说&#xff0c;电脑无疑仍然是最佳选择&#xff0c;毕竟屏幕大&#xff0c;对于视频细节的把控更到位&#xff0c;查看整体效果不容易出现问题&#xff0c;然而当…

Asset private data

其使用的java链码是基于gradle7.0的。相比于其他环境下的java代码&#xff0c;多了一些限制&#xff1a; (1)逗号后面必须有空格&#xff0c;花括号前面必须有空格&#xff0c;运算符前后必须有空格 &#xff08;2&#xff09;类里面的set方法参数不能和类里面的成员变量名字…

深入了解Python类与面向对象编程

在编程世界中&#xff0c;面向对象编程&#xff08;OOP&#xff09;是一种强大的编程范式&#xff0c;而Python是一门优雅而强大的编程语言。本文将带你深入探讨Python中的类与面向对象&#xff0c;为你揭示面向对象编程的奇妙世界。 类与对象的概念 1.什么是类&#xff1f; …

21款奔驰E300L升级HUD抬头显示 直视仪表信息

随着科技飞速地发展&#xff0c;从汽车领域就可以看出&#xff0c;尤其是汽车的抬头显示器&#xff0c;一经推出就吸引了很多的车主。 升级HUD抬头显示&#xff0c;HUD与汽车系统进行完整的数据信息连接&#xff0c;整合成大数据&#xff0c;然后将一些重要信息映射到车窗玻璃上…

Netflix app客户端有哪些优势?稳定奈飞安装包

Netflix app客户端软件是一款提供海量高质量影视内容的视频播放软件&#xff0c;用户可以轻松浏览和观看电影、电视剧、纪录片等&#xff0c;享受高清画质和个性化推荐服务&#xff0c;同时支持多设备使用&#xff0c;为用户带来优质的观影体验。 Netflix app客户端软件的优势…

如何用思维导图开会

在办公室和会议室使用思维导图会有无数好处。今天我们就聊聊思维导图在开会中的作用&#xff1f; 为什么要在会议中使用思维导图&#xff1f; 思维导图可以帮助我们整理思路。会议通常涉及到复杂的议题和讨论&#xff0c;使用思维导图可以帮助整合和梳理参与者的思路和观点。通…

minio 分片上传限制

引用官方文档&#xff0c;可以直接查看官方链接地址 Thresholds and Limits — MinIO Object Storage for Kubernetes

视频剪辑高手:画中画叠加批量处理技巧,剪辑更高效,更省心

随着数字媒体的普及&#xff0c;视频剪辑已经成为许多人的必备技能。然而&#xff0c;面对海量的视频素材和繁琐的剪辑工作&#xff0c;如何高效、省心地完成视频剪辑成为了一个重要的问题。本文将介绍云炫AI智剪“画中画叠加批量处理”的技巧&#xff0c;帮助你轻松提升视频剪…

Matlab中的app设计

1.窗口焦点问题&#xff1a; 窗口焦点问题&#xff1a;确保你的应用程序窗口正常处于焦点状态。有时&#xff0c;其他窗口的弹出或焦点切换可能导致应用程序最小化。点击应用程序窗口以确保它处于焦点状态。 窗口管理&#xff1a;确保你的 MATLAB 或操作系统没有未处理的错误或…

fastdfs实现防盗链功能

目录 一、实现原理 二、开启防盗链 三、重启nginx 四、 Java代码生成token 1、token生成规则 2、java生成token 五、测试 1 带正确token访问 2 带错误token访问&#xff0c;或直接访问 一、实现原理 fastdfs是一个分布式文件系统&#xff0c;如果我们的fastdfs部署在外…

超实用的企业防范数据泄露小技巧!

超实用的企业防范数据泄露小技巧&#xff01; 小技巧1、加强员工培训&#xff0c;提高防范思想 及时向员工传达有关安全信息&#xff0c;加强员工意识、认识和执行安全措施&#xff0c;以防止数据泄露发生。 小技巧2、建立安全政策&#xff0c;明确处理流程 企业应该建立安…

基于RFID技术的智能医疗柜管理系统解决方案

一、行业背景 当前&#xff0c;医疗机构面临着药物过期、召回、空货架、放错产品和库存缺失等问题&#xff0c;这些问题导致医院项目效率低下&#xff0c;患者护理不足&#xff0c;医护人员备受困扰。为了应对全球医疗体系面临的压力&#xff0c;医疗保健机构急需寻找新技术来…

C++中vec.size()-1的坑

问题描述&#xff1a;如下代码&#xff0c; #include <iostream> #include <vector>using namespace std;int main() {vector<int> vec {};for (int i 0; i < vec.size() - 1; i) {cout << "i " << i << ", vec[i] …

生成瑞利信道(Python and Matlab)

channel h k h_k hk​ is modeled as independent Rayleigh fading with average power loss set as 10^−3 Python import numpy as np# Set the parameters average_power_loss 1e-3 # Average power loss (10^(-3)) num_samples 1000 # Number of fading samples to …

「永不失联」产品创新与升级系列发布,预约直播“即将发车”

数字化浪潮下&#xff0c;北斗时空智能正成为我国重要的新型基础设施。 通过将卫星定位精度提升至厘米级乃至毫米级&#xff0c;时空智能满足了数字化时代智能驾驶、共享出行、智慧城市等多种智能终端对时空信息的爆发式增长需求&#xff0c;同步印证着测绘地理信息领域的技术应…

Sql 中的 Replace方法

最近需要改代码中写入db的一段content&#xff0c;但是已经存入的也不能删&#xff0c;就查了Replace下用法。记录 参考链接&#xff1a; What is Replace in SQL and How to Use Replace() Function 这是原来的table 然后把com换成simplilearn.org。 重点就是这里的用法 FI…

openEuler社区2023年度满意度调研

Hi&#xff0c;朋友们 一年一度的openEuler社区满意度调研来啦&#xff01;我们诚邀您参与问卷调研&#xff0c;反馈您在社区的使用情况。我们会持续吸纳建议&#xff0c;为您创造更好的用户体验&#xff01; 时间&#xff1a;2023年10月27日-2023年12月17日 。 链接&#x…