【论文解读】VoxelNeXt: Fully Sparse VoxelNet for 3D Object Detection and Tracking

VoxelNeXt

  • 摘要
  • 引言
  • 方法
    • Sparse CNN Backbone Adaptation
    • Sparse Prediction Head
  • 3D Tracking
  • 实验
  • 结论

摘要

3D物体检测器通常依赖于手工制作的方法,例如锚点或中心,并将经过充分学习的2D框架转换为3D。因此,稀疏体素特征需要通过密集预测头进行密集化和处理,这不可避免地需要额外的计算成本。在本文中,我们提出了VoxelNext来进行完全稀疏的3D物体检测。我们的核心见解是直接基于稀疏体素特征来预测对象,而不依赖于手工制作的方法。我们强大的稀疏卷积网络VoxelNeXt完全通过体素特征检测和跟踪3D物体。它是一个优雅而高效的框架,不需要稀疏到密集的转换或NMS后处理。我们的方法在nuScenes数据集上实现了比其他主机检测器更好的速度-精度权衡。我们首次证明了一个完全稀疏的基于体素的表示可以很好地用于LIDAR 3D目标检测和跟踪。在nuScenes、Waymo和Argoverse2基准测试上进行的大量实验验证了我们方法的有效性。我们的模型在nuScenes跟踪测试基准上优于所有现有的LIDAR方法。代码和模型可在github.com/dvlab-research/VoxelNeXt上获得。

引言

锚点和中心首先是为规则和网格结构的图像数据设计的,不考虑3D数据的稀疏性和不规则性。这种方法将3D稀疏特征转换为2D密集特征,从而为有序的锚点或中心构建密集的检测头。尽管有用,但这种密集的头部传统会导致其他限制,包括效率低下和管道复杂。
在图1中,我们将CenterPoint中的热图可视化[57]。很明显,很大一部分空间的预测分数几乎为零。由于固有的稀疏性和背景点多,只有少数点有响应,即nuScenes验证集中Car类的平均响应不到1%。然而,密集预测头根据密集卷积计算的要求对特征映射中的所有位置进行计算。它们不仅浪费了大量的计算,而且由于冗余的预测而使检测管道复杂化。它需要使用非最大抑制(NMS),如后处理来删除重复检测在这里插入图片描述
在本文中,我们提出了VoxelNeXt。它是一个简单,高效,无后处理的3D物体检测器。我们设计的核心是一个体素到对象的方案,它通过一个强大的全稀疏卷积网络,直接从体素特征预测3D对象。
我们在图2中说明了主流3D探测器和我们的pipeline的区别。
在这里插入图片描述
高推理效率是由于我们的体素到目标方案避免了密集的特征映射。它只对稀疏和必要的位置进行预测,如表1所示,与CenterPoint[57]进行比较。这种表示也使得voxelnext可以很容易地扩展到使用离线跟踪器的3D跟踪。先前的工作[57]只跟踪预测的对象中心,这可能涉及到对其位置的预测偏差。在VoxelNeXt中,查询体素,即用于框预测的体素,也可以被跟踪以进行关联。
在这里插入图片描述
【NDS】在目标检测任务中,NDS(Normalized Detection Score)是一个综合评价指标,用于衡量模型在多种检测任务上的表现。NDS通常综合了多个指标,以便更全面地评估模型的性能。虽然具体的计算方式可能因不同的研究或竞赛而有所不同,但一般包括以下几个方面:

  • mAP(mean Average Precision):平均精度的均值,通常是目标检测中最常用的评估指标,衡量模型在不同
  • IoU(Intersection over Union)阈值下的检测精度。
  • AP(Average Precision):对不同类别的目标分别计算平均精度,然后取其平均值。
  • Precision(精确率)和Recall(召回率):精确率是正确检测出的正样本数占所有检测出样本数的比例,召回率是正确检测出的正样本数占所有实际正样本数的比例。
  • IoU(Intersection over Union):预测框与实际框的交并比,用于衡量检测框的准确度。
  • FPS(Frames Per Second):检测速度,表示模型每秒能处理的帧数。

NDS的具体计算公式可能会根据不同的任务和场景进行调整。例如,在自动驾驶中的目标检测任务中,NDS可能综合考虑不同类别的目标(如行人、车辆、交通标志)的检测精度和速度。
下面是一个假设的NDS计算示例:
NDS=α⋅mAP+β⋅Precision+γ⋅Recall+δ⋅FPS
其中,𝛼𝛽𝛾𝛿δ是权重系数,用于平衡不同指标的重要性。
总之,NDS作为一个综合指标,可以更全面地反映模型在目标检测任务中的整体性能,有助于选择和优化模型。

最近,FSD[16]利用了完全稀疏框架。受VoteNet[37]的启发,它对对象中心进行投票,并采用迭代细化。由于3D稀疏数据通常分散在物体表面上,因此这种投票过程不可避免地会引入偏差或误差。因此,需要改进,如迭代组校正,以确保最终的准确性。该系统因其对对象中心的强烈信仰而变得复杂。FSD[16]在大范围Argoverse2上很有前景,但其效率不如我们,如图3所示。为了证明VoxelNeXt的有效性,我们在nuScenes[3]、Waymo[45]、Argoverse2[52]数据集的三个大规模基准上评估了我们的模型。VoxelNeXt在这两个基准测试中都以高效的3D对象检测实现了领先的性能。它还具有最先进的3D跟踪性能。没有花哨的功能,它在所有仅使用激光雷达的nuScenes跟踪测试中排名第一[3]。在这里插入图片描述

方法

点云或体素不规则分布,通常散布在3D对象的表面,而不是中心或内部。这促使我们沿着一个新的方向进行研究,直接基于体素而不是手工制作的锚点或中心来预测3D盒子。为此,我们的目标是进行最小的修改,使普通的3D稀疏CNN网络适应直接的体素预测。在下文中,我们将介绍骨干自适应(第3.1节)、稀疏头设计(第3.2节)和对3D对象跟踪的扩展(第3.3节)。

Sparse CNN Backbone Adaptation

额外下采样:具有足够感受野的强特征表示是确保对稀疏体素特征进行直接和正确预测的必要条件。尽管普通稀疏CNN骨干网已被广泛应用于3D对象检测器[12,41,57],但最近的工作表明了它的弱点,并提出了各种方法来增强稀疏骨干网,例如使用设计良好的卷积[7]、大核[8]和变换器[25,26,35]。
与所有这些方法不同,我们只使用额外的下采样层,尽可能少地进行修改来实现这一点。默认情况下,普通稀疏CNN骨干网有4个阶段,特征步长为{1,2,4,8}。我们分别将输出稀疏特征命名为{F1,F2,F3,F4}。此设置无法直接预测,特别是对于大型对象。**为了增强其能力,我们只需添加两个额外的下采样层,即可获得{F5,F6}的步幅为{16,32}的特征。**这一微小变化直接对扩大感受野产生了显著影响。我们结合了最后三个阶段{F4,F5,F6}到Fc的稀疏特征。它们的空间分辨率都与F4对齐。对于第i阶段,Fi是一组单独的特征fp。p∈Pi是3D空间中的一个位置,坐标为(xp,yp,zp)。该过程如图4所示。值得注意的是,这种简单的稀疏连接不需要其他参数化层。稀疏特征Fc及其位置Pc可通过下式获得:
在这里插入图片描述
在这里插入图片描述
我们在图5中可视化了有效感受野(ERF)。通过额外的下采样层,ERF更大,预测框更准确。它足够有效,几乎不需要额外的计算,如表2所示。因此,我们使用这种简单的设计作为骨干网。
在这里插入图片描述

稀疏高度压缩:[12,41,57]的3D对象检测器通过将稀疏特征转换为密集特征,然后将深度(沿z轴)组合到通道维度中,将3D体素特征压缩为密集的2D图。这些操作需要占用内存和计算空间。在VoxelNet中,我们发现2D稀疏特征对于预测是有效的。VoxelNeXt中的高度压缩是完全稀疏的。我们只是将所有体素放在地面上,并在相同的位置总结特征。它的成本不超过1ms。我们发现,对压缩的2D稀疏特征的预测成本低于使用3D稀疏特征的成本,如表5所示。压缩的稀疏特征Fc及其位置Pc可通过以下方式获得:在这里插入图片描述其中S̄p={p|xp=x̄p,yp=ȳp,p∈Pc},包含放置在相同2D位置p上的体素。
在这里插入图片描述
**空间体素修剪:**我们的网络完全基于体素。3D场景通常包含大量冗余的背景点,对预测几乎没有好处。我们沿着下采样层逐渐修剪不相关的体素。遵循SPS Conv[32],我们抑制了特征量较小的体素的膨胀,如图6所示。在这里插入图片描述
将抑制比设为0.5,我们仅扩展特征量|fp|(在通道维度上的平均值)排名前半的体素,如表3所示,体素修剪在不影响性能的情况下大大节省了计算。在这里插入图片描述

Sparse Prediction Head

Voxel Selection
图4显示了体素NeXt模型的详细框架。我们不依赖于密集特征图M,而是直接基于3D CNN骨干网络V∈RN×F的稀疏输出来预测对象。我们首先预测K类体素的分数,s∈RN×K。在训练过程中,我们将最靠近每个带注释的边界框中心的体素指定为阳性样本。我们使用Focal loss[31]进行监督。我们注意到,在推理查询过程中,体素通常不在对象中心。它们甚至不一定在边界框内,例如图9中的行人。我们在nuScenes验证集的表7中统计了查询体素的分布。在这里插入图片描述

在推理过程中,我们通过使用稀疏最大池来避免NMS后处理,因为特征足够稀疏。类似于子流形稀疏卷积[19],它只对非空位置进行操作。这是基于预测的分数s,并针对每个班级单独进行的。我们采用稀疏最大池来选择具有空间局部最大值的体素。去除的体素将被排除在框预测中,这节省了头部的计算。
Box Regression
边界框直接从正或选定的稀疏体素特征v∈Rn×F回归。根据CenterPoint[57]中的协议,我们回归位置(∆x,y)∈R2,高度h∈R,三维尺寸s∈R3,旋转角度(sin(α),cos(α))∈R。对于nuScenes数据集或跟踪,我们通过任务定义对速度v∈R2进行回归。在训练期间,这些预测在L1损失函数下进行监督。对于Waymo数据集,我们还预测了IoU,并在IoU损失的情况下进行训练,以提高性能[22]。我们只需使用核大小为3的全连接层或3×3子流形稀疏卷积层进行预测,而无需其他复杂的设计。我们发现,3×3稀疏卷积比全连接层产生更好的结果,负担有限,如表6所示。

3D Tracking

我们的框架自然扩展到3D跟踪。CenterPoint[57]通过二维速度v∈R2跟踪预测的对象中心,该速度也受L1损失的监督。我们使用体素关联来包含更多与查询体素位置匹配的轨迹。
如图8所示,我们记录了用于预测每个框的体素的位置。与中心关联类似,我们计算L2距离进行匹配。查询位置是通过将其索引追溯到原始输入体素来选择的,而不是遍历8个位置。被跟踪的体素存在于输入数据中,其偏差小于预测的中心。此外,相邻帧之间的查询体素与框具有相似的相对位置。我们在表11中实证表明,体素关联改善了跟踪。在这里插入图片描述
在这里插入图片描述

实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结论

在本文中,我们提出了一种完全稀疏和基于体素的3D目标检测和跟踪框架。它技术简单,运行速度快,没有太多额外成本,并且在没有NMS后处理的情况下以优雅的方式工作。我们首次证明了基于体素的直接预测是可行和有效的。因此,基于规则的方案,例如锚或中心,以及密集的头部在我们的方案中变得不必要。VoxelNeXt在大规模数据集上展示了有前景的结果,包括nuScenes[3]、Waymo[45]和Argoverse2[52]。凭借其高效率,它在3D物体检测方面取得了领先的性能,并在nuScenes 3D跟踪激光雷达基准测试中排名第一。局限性理论FLOP和实际推理速度之间存在差距。VoxelNeXt的FLOP为38.7G,比CenterPoint的186.6G小得多[57]。实际的延迟减少很明显,但不如表1中的FLOP那么大,因为它在很大程度上取决于实施和设备。

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

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

相关文章

rabbitmq生产与消费

一、rabbitmq发送消息 一、简单模式 概述 一个生产者一个消费者模型 代码 //没有交换机,两个参数为routingKey和消息内容 rabbitTemplate.convertAndSend("test1_Queue","haha");二、工作队列模式 概述 一个生产者,多个消费者&a…

【Django】网上蛋糕商城后台-类目管理

1.类目管理列表实现 当管理员进入后台管理后,点击类目管理,向服务器发出请求 path(admin/type_list/,viewsAdmin.type_list), # 处理商品分类管理列表请求 def type_list(request):# 读取分页页码try:ym request.GET["ym"]except:ym 1# 查…

html2canvas + jspdf 纯前端HTML导出PDF的实现与问题

前言 这几天接到一个需求,富文本编辑器的内容不仅要展示出来,还要实现展示的内容导出pdf文件。一开始导出pdf的功能是由后端来做的,然后发现对于宽度太大的图片,导出的pdf文件里部分图片内容被遮盖了,但在前端是正常显…

Spring Boot1(概要 入门 Spring Boot 核心配置 YAML JSR303数据校验 )

目录 一、Spring Boot概要 1. SpringBoot优点 2. SpringBoot缺点 二、Spring Boot入门开发 1. 第一个SpringBoot项目 项目创建方式一:使用 IDEA 直接创建项目 项目创建方式二:使用Spring Initializr 的 Web页面创建项目 (了解&#…

【日常记录】【插件】excel.js导出的时候给单元格设置下拉选择、数据校验等

文章目录 1. 代码基本结构2. 导出的excel 某单元格的值设置为下拉选择3. 如何把下拉选择项设置为动态4. 单元格设置校验、提示5. 在WPS上的设置 1. 代码基本结构 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><…

如何在AWS上构建Apache DolphinScheduler

引言 随着云计算技术的发展&#xff0c;Amazon Web Services (AWS) 作为一个开放的平台&#xff0c;一直在帮助开发者更好的在云上构建和使用开源软件&#xff0c;同时也与开源社区紧密合作&#xff0c;推动开源项目的发展。 本文主要探讨2024年值得关注的一些开源软件及其在…

系统架构设计师教程 第3章 信息系统基础知识-3.5 专家系统-解读

系统架构设计师教程 第3章 信息系统基础知识-3.5 专家系统(ES) 3.5.1 人工智能3.5.1.1 人工智能的特点3.5.1.2 人工智能的主要分支3.5.2 ES的概念3.5.2.1 ES 概述3.5.2.2 与传统程序的区别3.5.3 ES的特点3.5.4 ES的组成3.5.4.1 知识库3.5.4.2 综合数据库3.5.4.3 推理机3.5.4.…

持续集成08--Jenkins邮箱发送构建信息及测试报告

前言 在持续集成&#xff08;CI&#xff09;和持续部署&#xff08;CD&#xff09;的自动化流程中&#xff0c;及时通知团队成员关于构建的成功或失败是至关重要的。Jenkins&#xff0c;作为强大的CI/CD工具&#xff0c;提供了多种通知机制&#xff0c;其中邮件通知是最常用且有…

如何用EXCEL自动解方程/方程组?利用 矩阵乘法X=A-*B,X=mmult(minverse(A), B)

目录 问题的由来 1 数据 → 模拟分析 → 单变量求解 1.1 找一个单元格填入公式 1.2 功能入口 1.3 选择单变量求解&#xff0c;分别填入内容 1.4 求解 1.5 这个感觉用处不大 2 重点介绍&#xff0c;用EXCEL进行矩阵运算解方程的操作 2.1 运用EXCEL进行矩阵运算&…

深入理解HTML基础【代码审计实战指南】

文章目录 JAVA技术体系的说明步骤 前端和后端技术栈网页的组成1. 结构 (HTML)2. 表现 (CSS)3. 行为 (JavaScript / JQuery) HTML的基本结构标签使用细节&#xff1a;font标签的使用字符实体含义&#xff1a;常用的特殊字符&#xff1a; 标题标签超链接标签列表标签无序列表ul/l…

谷粒商城-商品上架

1.sku在es中的存储模型分析(spring整和es) es中所有数据存在内存中,内存产品贵,能节省就节省,只保存有用的信息 两种保存方法:(空间换时间,时间换空间): 我们选空间换时间 ES中放这些东西: "mappings": { "properties": { "skuId"…

verilog bug记录——正点原子spi_drive存在的问题

verilog bug记录——正点原子spi_drive存在的问题 问题概述代码修改—spi_drive.v遗留问题 问题概述 因为项目需求&#xff0c;需要利用spi对flash进行擦除和写入操作&#xff0c;所使用的开发板是正电原子的达芬奇开发板&#xff0c;我事先往Flash里面存了两个bit&#xff0c…

数据挖掘与分析部分实验与实训项目报告

一、机器学习算法的应用 1. 朴素贝叶斯分类器 相关代码 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.naive_bayes import GaussianNB, MultinomialNB from sklearn.metrics import accuracy_score # 将数据加载到DataFrame中&a…

【已解决】Django连接MySQL启动报错Did you install mysqlclient?

在终端执行python manage.py makemigrations报错问题汇总 错误1&#xff1a;已安装mysqlclient&#xff0c;提示Did you install mysqlclient? 当你看到这样的错误信息&#xff0c;表明Django尝试加载MySQLdb模块但未找到&#xff0c;因为MySQLdb已被mysqlclient替代。 【解…

【删除排序链表中的重复元素 II】python刷题记录

因为可能删除头结点&#xff0c;所以我们采用dummy哑结点&#xff08;跟上一篇类似&#xff09; dummy初始化 dummyListNode(0,head) # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # …

黑客自学手册(网络安全)

前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防…

网络安全----防御----防火墙双机热备

实验要求&#xff1a; 1&#xff0c;对现有网络进行改造升级&#xff0c;将当个防火墙组网改成双机热备的组网形式&#xff0c;做负载分担模式&#xff0c;游客区和DMZ区走FW4&#xff0c;生产区和办公区的流量走FW1 2&#xff0c;办公区上网用户限制流量不超过100M&#xff0…

如何将PDF转换成可以直接编辑的CAD图纸?

PDF图纸是为了让用户更好的阅览CAD文件&#xff0c;但是&#xff0c;当我们想要对其进行编辑的时候&#xff0c;PDF图纸就是一个麻烦了。那么PDF转换成CAD后可以编辑吗&#xff1f;如何将PDF转换成可以直接编辑的CAD图纸呢&#xff1f;本篇给你答案。 1、启动迅捷CAD编辑器&…

不同业务场景下通过mars3d实现绕点旋转效果

1.鼠标单击地图某一处就对该点进行绕点旋转效果 相关代码&#xff1a; 1.相关绕点旋转的初始化代码&#xff1a; const rotatePoint new mars3d.thing.RotatePoint({direction: false, // 方向 true逆时针&#xff0c;false顺时针time: 50 // 给定飞行一周所需时间(单位 秒)&…

python如何输入矩阵

使用numpy创建矩阵有2种方法&#xff0c;一种是使用numpy库的matrix直接创建&#xff0c;另一种则是使用array来创建。 首先导入numpy&#xff1a; &#xff08;1&#xff09;import numpy &#xff08;2&#xff09;from numpy import * &#xff08;3&#xff09;import …