三维目标检测新SOTA---ADFDetV2论文解读

2023-11-10

问题


本文提出了一种单阶段的三维目标检测算法,并在文中分析了二阶段三维目标检测算法的不必要性。其所提算法在waymo实时目标检测竞赛中取得了第一的成绩。其性能超过了所有单阶段和多阶段的目标检测算法。

作者首先分析了二阶段目标检测算法主要有两个作用,一是二阶段中逐点的特征可能能够在一定程度上恢复因为前期的体素化,卷积的步长和感受野的缺乏带来的信息损失。另一个原因是因为分类和回归这两个独立的分支可能在一定程度上不能对齐,因此需要一个二阶段的网络来进行调整。

对于逐点的特征能够在一定程度上恢复因一系列操作带来的信息损失,作者引用了一些论文中的说明,当基于体素的特征能够实现和基于点的特征相同的位置精度。对于任务不对齐的问题,作者通过实验发现,第一阶段提出的边界框已经非常精确了,第二阶段对于性能的提升主要集中于分类的置信度上。换句话说就是第二阶段可能对定位精度没有帮助。

上述观察与使用二阶段网络中的第二个理由是相符的。即一阶段中独立的分类和定位任务可能存在不对齐的情况,因此使用二阶段的网络来对定位精度高的anchor的分类精度进行调整。

在知道二阶段的作用之后,作者提出,是否能够通过更好的设计来避免二阶段网络的使用。因此,作者主要做了两个方面的改进,一个是在backbone中引入了self-calibrated卷积,另一个是设计了一个anchor-free的检测头。

解决方法


作者首先分析了二阶段目标检测的必要性。对于二阶段目标网络能够在一定程度上恢复信息损失,作者通过引用其他的工作说明,当voxel设置为(0.1m, 0.1m, 0.15m)时能够达到和基于点的方法相同的精度。

对于第二个原因,即一阶段存在任务不对齐的情况,作者提出了其可能带来的三个方面的改进:1) 框的回归,2) 分类分数,3)两者的对齐程度。

为了探索第二阶段网络的实际作用,作者在一个一阶段网络上分别加入了分类分支和回归分支。经过实验发现,在加入回归分支后,网络的性能并没有发生很大的变化。

image-20211229192027997

上表展示的就是引入不同的分支之后网络性能的变化。其中2S-box表示的时在第二阶段中使用回归分支,2S-score表示的是在第二阶段中使用分类分数的分支,IoU表示的是作者提出的IoU-aware的检测头。从表中可以看出,经过精心设计的IoU的一阶段检测头的性能超过了二阶段的网络。

下面简单介绍一下网络的总体结构:

首先是backbone网络。本文中使用的是基于体素的方法,使用基于体素的骨干网络将点云空间下采样8倍。然后将生成的特征图reshape为BEV形式的特征图。

在经过3D特征提取之后,特征图被送入了多尺度的backbone中,为了能够充分发挥单阶段目标检测网络的潜力,作者使用self-Calibrated卷积网络替代 3 × 3 3\times 3 3×3的卷积神经网络。SC-Conv能够高效的扩大感受野,同时还引入了channel-wise和spatial-wise的注意力机制。

image-20211229192931433

更重要的是,作者设计了一个anchor-free的检测头。除了AFDet中原始的五个子检测头之外,作者还设计了一个IoU-aware的置信度预测网络。这是去除二阶段网络的关键设计。此外,还引入了一个辅助损来作为额外的监督。

分类任务的置信度将检测任务中是一个非常常用的指标,但是分类置信度通常缺乏位置信息。此外,一个定位精确的边界框可能因为其较低的分类置信度而在NMS的过程中被删除。这两者的不对齐对基于排名的指标也是有害的。为了能够解决这个问题,作者使用以下公式计算的结果作为最终的分类置信度,该评测指标既考虑了分类精度又考虑了定位精度。其及算方法如下:
f = s c o r e 1 − α ∗ i o u α f=score^{1-\alpha}*iou^{\alpha} f=score1αiouα
使用上述指标作为NMS排名的依据。这样在一定程度上实现两者的对齐。

此外,作者还引入了一个预测关键点的子检测头,作者在相同的heatmap上为每一个目标检测5个BEV视角上的关键点,分别是4个角点和目标的中心点。虽然在相同的headmap上,但是其半径缩小了一半。在验证的过程中,这个子检测头是不适用的,所以不会影响检测性能。

与AFDet一样,作者为不同的子检测头设计了不同的损失函数,对于上面的IoU-aware的检测头,作者将 2 ∗ i o u − 0.5 2*iou-0.5 2iou0.5作为该子检测头的损失函数。

解决效果


image-20211229194501689

本文所提方法在Waymo数据集上单模型达到了新的SOTA的检测效果。

消融实验


image-20211229194244083

上图展示了作者主要创新点对于检测性能的影响,从表中可以看出,IoU-aware的检测头对于检测性能的影响最大,SC-Conv此致,Keypoint的也在一定程提高了模型的检测性能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

三维目标检测新SOTA---ADFDetV2论文解读 的相关文章

  • 给定 3D 空间中的一条线,如何找到从它到一点的角度?

    我在 3D 空间中有两组点 我想画一条穿过两组点的中心的线 然后找到从该线到每个点的角度 从那里开始 我将根据两个角度的接近程度来确定两组中的匹配点 我知道如何找到每组点的中心 只需将它们平均在一起 并且我知道如何将它们匹配 甚至考虑到它们
  • Direct3D 中的矩阵多阶

    关于在 Direct3D 中乘法矩阵以获得结果 我收到了两个相互矛盾的答案 教程确实规定从左到右相乘 这很好 但这不是我想象的方式 这是一个例子 OpenGL 从上到下阅读 GLRotatef 90 0f GLTranslatef 20 0
  • 点列表的 3D 轮廓(凹壳)

    我有一个 C 中的 Vector3 点列表 我需要计算这些点的凹轮廓 确实有很多参考资料 特别是对于 凸 分辨率 由于格雷厄姆算法 我已经成功实现了 然而 由于我现在需要有效地计算凹轮廓 所以我迷失了 维基百科确实列出了很多用于凸计算的资源
  • 3D 数学:根据“向上”和“向上”正交向量计算倾斜(滚动)角度

    我希望这是提出这个问题的正确位置和这个一样 https stackoverflow com questions 3035590 bank angle from up vector and look at vector 但表示为纯数学而不是图
  • 将大块位图转换为 3 维位图

    Problem 我需要这个大量的数据作为输入 对于基于C的arduino 这是上面示例中所需格式的大量数据 const byte bitmap 8 8 0xFF 0x81 0x81 0x81 0x81 0x81 0x81 0xFF 0x81
  • 如何在 GTX 560 及更高版本上使用 OpenGL 进行立体 3D?

    我正在使用在 Windows 7 上运行的开源触觉和 3D 图形库 Chai3D 我重写了该库以使用 Nvidia nvision 执行立体 3D 我将 OpenGL 与 GLUT 一起使用 并使用 glutInitDisplayMode
  • IE9-11 检测变换样式:preserve-3d

    我为一个项目制作了一个 3d 类型的菜单 自然 IE 会引起问题 因为 IE10 即使 3d 变换工作 也不支持变换样式 preserve 3d 我尝试了解决方法 通过对 3d 菜单容器的每个子元素应用变换 但至少可以说 动画看起来很糟糕
  • CSS3DObject 始终位于 WebGL Mesh 前面

    我正在混合CSS3D Renderer with WebGL Renderer to add HTML3D 空间中的元素WebGL场景 这CSS3DObject在前面WebGL网格即使WebGL Renderer具有较高的 z index
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 判断点是否在截锥体内

    我正在尝试找出确定一个点是否在截锥体内的最佳方法 我有一些工作 但不确定它是否太麻烦 也许我应该有一种更优雅 有效的方法来做到这一点 假设我想查明点 x 是否在截锥体内 一旦我知道了平截头体的 8 个点 4 个近点 4 个远点 的位置 我就
  • 不明确的 OpenGL 默认相机位置

    在我的Opengl程序中 在我应用透视投影矩阵之前 每当我绘制一些对象时 我都会在世界坐标系的原点处绘制它 但是几乎所有Opengl教程都指出相机 我的投影视图 位于原点朝向正 z 轴 这取决于您稍后如何处理投影矩阵中的 z 值 但是如果这
  • 将 3D 场景导入babylonJS

    所以我今天读到巴比伦JS http blogs msdn com b eternalcoding archive 2013 06 27 babylon js a complete javascript framework for build
  • 无法使用 vcglib 简化 3D 模型,断言“0”失败

    I used vcglib https github com cnr isti vclab vcglib简化 3D 模型文件 我使用了 master a8e87662 git 存储库 我运行示例 trimesh clustering htt
  • 如何使用 matplotlib 将 3d 数据单位转换为显示单位?

    这可能有点疯狂 但我正在尝试使用 matplotlib v1 1 0 创建 3d 散点图的可点击图像图 我已经阅读了如何对二维图进行操作 参见这个博客 http hackmap blogspot com 2008 06 pylab matp
  • 在 iOS 上的 SceneKit 中导入 3d 模型

    从 URL 导入 obj 文件并将其转换为 SCNNode 时遇到问题 这是代码 swift3 let url URL init string https cloud box com shared static ock9d81kakj91d
  • 在 3d 空间中的两个平面之间进行插值

    我正在开发一种工具 可以让您在 3D 体积 上圈出 包围事物 我想通过标记 切片 1 和 3 并从该信息 填充 切片 2 来节省时间 两个简单的解决方案是 1 slice2 slice1 AND slice3 gets the overla
  • 在 R 中根据时间序列数据制作 3D 曲面

    我有一个大型数据集 我想从中制作 3D 表面 我希望 x 轴为日期 y 轴为时间 24 小时 z 轴 高度 为我的值 我是 R 初学者 所以越简单越好 http www quantmod com examples chartSeries3d
  • 现代 GPU 上的纹理更改(和其他状态更改)成本

    我正在编写一个基于场景图的图形引擎用于建模目的 我正在使用 XNA 4 在我读过的许多地方 渲染期间应该最小化纹理变化 和其他状态变化 因此我必须按材质等对图元进行排序 我在 XNA 4 中创建了一个小型测试应用程序 它使用单个纹理渲染数百
  • 关于Marching Cubes算法的澄清

    关于Marching Cubes 我对其算法和实现有一些疑问 我已经阅读了 Marching Cubes 的 Paul Bourke 优秀文章以及网站上可用的源代码 但是 我在理解以及如何以自己的方式实现算法方面仍然遇到了一些问题 问题如下
  • 3D 图形批处理

    很多网站 文章都说 批量 批 批 有人可以解释一下着色器中的 批处理 代表什么吗 即 是否 改变纹理 更改任意着色器变量 意味着某些东西不能 批处理 最简单的总结方法就是尝试尽可能少地调用 API 来绘制您需要绘制的内容 使用顶点数组或 V

随机推荐

  • AcWing 861. 二分图的最大匹配

    https www acwing com problem content 863 二分图我不太清楚 我刚做了染色法解决二分图 然后我看了相关资料 https blog csdn net u011815404 article details
  • [4G&5G专题-122]:认证-华为认证概述

    1 链接 https e huawei com cn talent cert navType authNavKey 2 华为认证概述 3 认证等级 HCIA 工程师等级 HCIP 高级工程师等级 HCIE 专家级 4 学习培训 4 1 概述
  • JavaScript中结果转换为带有“千位分隔符”的数字

    在开发有关金额方面需求的时候 我们往往都需要对金额的显示进行一些处理 例如 将金额转换为带有 千位分隔符 的数字 像我们银行卡里的余额 购买商品时的总金额 就会有这一方面的需求 那么到底要怎么样去转换呢 这就需要用到 JavaScript
  • Hexo+Butterfly主题博客添加音乐播放器的简单版教程

    博客添加背景音乐 前言 基于Hexo框架 主题为Butterfly的个人博客 效果图 实现个人博客拥有全局吸底音乐播放器 即背景音乐 实现步骤 添加音乐播放器插件 可选择在vscode webstorm终端运行 一定要在博客项目文件中运行
  • IntelliJ IDEA 的 Spring 项目如何查看 @Value 的配置和值

    当你打开项目或者项目中的文件的时候 如果你有 Spring 的 Value 的配置 Intellij 将会自动将参数替换为值 如果你单击上面的值 那么这个配置参数将会显示为配置的参数名 如果你还想显示值的话 你需要重新打开这个文件或者项目
  • C++ 基础(数组)

    数组 是同一类型的多个元素的集合 声明了一个名为 a 的具有10个整数的数组 数组中的第一个元素 索引为0 设置为50 int a 10 a 0 50 数组初始化语法 int fib 5 0 1 1 2 3 或者使用循环 int array
  • Seaborn5分钟入门(六)——heatmap热力图

    微信公众号 Python读财 如有问题或建议 请公众号留言 Seaborn是基于matplotlib的Python可视化库 它提供了一个高级界面来绘制有吸引力的统计图形 Seaborn其实是在matplotlib的基础上进行了更高级的API
  • 假设检验笔记

    假设检验 就是做了一个假设 H 然后通过实验得到相关的统计数据判断 H 是否 大概率 成立 或者有多大把握认为 H 成立 这个 H 一般是一个与分布 统计量相关的的命题 如 H P 硬 币 朝
  • 图片即时优化的三种简单解决方案

    本文要点 Web页面中的图片往往是页面加载缓慢的最主要原因 图片优化很复杂 涉及大小调整 裁剪 格式转换及质量参数微调 如今 有的云服务可以即时优化图片 极大地改善用户浏览包含图片的Web页面时的体验 云服务提供了简单的API用于操作图片
  • 200. 岛屿数量-Java

    文章目录 200 岛屿数量 https leetcode cn com problems number of islands 题目概述 算法思路 1 深度优先搜索 代码实现 复杂度分析 2 广度优先搜索 分离行与列的方法 代码实现 复杂度分
  • 产品推介

    基线检测服务 正式发布 产品概述 在用户充分授权的情况下 对用户云上系统进行全面的安全基线检测 帮助用户掌握云上系统整体的安全脆弱性状况 并依据检测结果与用户业务模式特点 提供有针对性的安全修补建议 降低系统的安全威胁 漏洞扫描服务 正式发
  • Yule-Walker方程

    零化滤波器的来源 在有限新息率中 参数的估计问题可以转化为谱估计问题 而谱估计问题可以采用零化滤波器算法去解决 其核心在于 z z z变换和Yelu Walker方程的求解 这篇博客重点讲一下Yelu Walker方程的求解 Yelu Wa
  • 毕业设计--基于深度学习的常见苹果叶片病害识别与病斑分割方法研究

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度
  • 【C语言】使用C语言编写对密码强度的检测,检测出结果:弱、中等、强

    可以使用 C 语言编写一个函数来检测密码强度 以下是一个简单的实现 include
  • 动态规划之背包问题

    本文有视频版 0 1背包问题详解 后台天天有人问背包问题 这个问题其实不难啊 如果我们号动态规划系列的十几篇文章你都看过 借助框架 遇到背包问题可以说是手到擒来好吧 无非就是状态 选择 也没啥特别之处嘛 今天就来说一下背包问题吧 就讨论最常
  • 博客之星规则能否参照“金球奖”

    文章目录 课前小差 粉丝对我的价值 粉丝数量的提升 KOL与粉丝链接 粉丝影响收入 博客之星规则设想 博客之星新玩法 内部评审 展望2023 写在最后 课前小差 哈喽 大家好 我是几何心凉 这是一份全新的专栏 唯一得倒CSDN王总的授权 来
  • drop与delete的区别

    drop与delete的区别 drop主要用于删除结构例如删除数据库 drop database XX 删除表 drop table XX 字段也是结构的一种 也可以使用drop了 对的 但是我们改变了表结构要先alter方法 例如 我们要
  • vSphere Client(Vcenter)上传ISO镜像

    不少新手在ESXi上安装好虚拟机后 都要寻找浏览器的ios镜像 但同学们会在这里卡顿 找不到上传ios的路径 今天就来讲一讲 上传的问题 一 方法一 我初学时 一样在这里卡顿 找不到上传的路径 在网上搜索 确实找到了一种上传的方法 在这里转
  • keil编译后.c文件前面没有+号

    如下图 程序的 c文件前面没有 号 已经在show include file dependencies前面打勾了 看到下面的提示是编译出问题了 点击魔术棒 在Target Code Generation里面选择默认的编译器 然后重新编译 发
  • 三维目标检测新SOTA---ADFDetV2论文解读

    问题 本文提出了一种单阶段的三维目标检测算法 并在文中分析了二阶段三维目标检测算法的不必要性 其所提算法在waymo实时目标检测竞赛中取得了第一的成绩 其性能超过了所有单阶段和多阶段的目标检测算法 作者首先分析了二阶段目标检测算法主要有两个