三维目标检测新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论文解读 的相关文章

  • 矩形相交

    是否有任何已知的方法来计算两个矩形之间的相交矩形 我的意思是 如果矩形 A 由 x1 y2 x2 y2 定义 B 由 x3 y3 x4 y4 定义 那么如何计算相交矩形 C x5 y5 x6 y6 的坐标 Thanks 相交多边形的一般问题
  • 生成球体的顶点

    在 DirectX 移动照明示例中 圆柱体是按以下方式生成的 for DWORD i 0 i lt 50 i FLOAT theta 2 D3DMX PI i 50 1 pVertices 2 i 0 position D3DMXVECTO
  • 根据表面包围的 3D 区域将表面分配给区域

    给定三维空间中的一组曲面 我尝试将每个曲面分配给一个区域 该区域引用该组所包围的最小 3D 区域 或者如果不适用则不指定任何区域 我还想确定一个表面是否是两个区域之间的界面 因此 例如 如果我们有 11 个表面 代表两个堆叠在一起的立方体
  • Python openAL 3D 声音

    我刚刚开始使用 python 正在制作音频操作程序 我正在尝试在我的 python 应用程序中使用 openAL 实现 3D 声音 但我只能让它工作 这是我的 3D 声音代码 from openal loaders import load
  • 给定一个 4x4 齐次矩阵,我如何获得 3D 世界坐标?

    所以我有一个正在旋转然后再次平移和旋转的对象 我将这些翻译的矩阵存储为对象成员 现在 当我进行对象拾取时 我需要知道该对象的 3D 世界坐标 目前我已经能够像这样获得物体的位置 coords 0 finalMatrix 12 坐标 1 最终
  • 使用相机将 3D 透视投影到 2D 屏幕上的基本渲染(无需 opengl)

    假设我有一个如下的数据结构 Camera double x y z ideally the camera angle is positioned to aim at the 0 0 0 point double angleX angleY
  • WP7 XNA 显示 3D FBX 模型

    我只是初学者 很抱歉我的愚蠢问题 我的模型看起来像这样 http img265 imageshack us img265 8291 clipboard01ap jpg http img265 imageshack us img265 829
  • 使用 glFrustum 进行离轴投影

    我正在尝试使用 OpenGL 对场景进行离轴投影 并且我阅读了该文档罗伯特 库伊马的离轴投影 http csc lsu edu kooima pdfs gen perspective pdf现在对实际需要做什么有了更好的了解 但仍然有一些部
  • 将点云转换为深度/多通道图像

    我有一个通过使用立体相机扫描平面生成的点云 我已经生成了法线 fpfh 等特征 并使用这些信息我想对点云中的区域进行分类 为了能够使用更传统的 CNN 方法 我想将此点云转换为 opencv 中的多通道图像 我将点云折叠到 XY 平面 并与
  • 3d 表面的凸包算法 z = f(x, y)

    我有一个以一组三元组 x i y i z i 形式给出的 3D 表面 其中 x i 和 y i 大致位于网格上 并且每个 x i y i 都有一个关联的 z i 值 典型的网格是20x20 我需要在给定的公差范围内找到哪些点属于曲面的凸包
  • 将球体上的 3d 点转换为 UV 坐标

    我在球体上有一个 3d 点 想要将其转换为球体纹理上的 UV 点 有人可以指出正确的方向吗 我可以采用纯数学解决方案 Edit 我目前有这个 它不会返回正确的 UV 坐标 p 是球体上的 3d 点 mesh position 是球体的位置
  • 如何在Android中渲染OBJ或FBX? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有几个 obj 和 fbx 格式的 3D 对象 其中包含 mtl 和纹理文件 我想知道哪个是在 An
  • 判断一个点是否在多面体内部

    我试图确定某个特定点是否位于多面体内部 在我当前的实现中 我正在研究的方法采用我们正在寻找多面体面的数组 在本例中为三角形 但稍后可能是其他多边形 的点 我一直在尝试根据这里找到的信息进行工作 http softsurfer com Arc
  • 自动适合衣服的算法?

    想象一下 客户要求您设计一款软件 以满足一些相当粗略的规格 如下所示 1 它将面向时尚行业营销 2 用户将是 设计衣服和东西 的人 可能有一个特定的术语 但我没有想到 3 由于各种原因 能够快速制作原型设计并查看它们在模型上的外观会很有用
  • 投影 3D 网格的 2D 轮廓算法

    给定 一个 3D 网格 由一组顶点和三角形定义 并用这些点构建网格 问题 找到任意平面上投影的任意旋转网格的二维轮廓 投影很容易 挑战在于找到平面中投影三角形边的 外壳 我需要一些有关研究该算法的输入 指针的帮助 为简单起见 我们可以假设
  • 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
  • GL_CULL_FACE使所有对象消失

    我正在尝试在 openGL3 3 中创建一些简单的多边形 我有两种类型的对象 具有以下属性 对象 1 10 个顶点 按顺序在下面列出 存储在GL ARRAY BUFFER并使用GL TRIANGLE FAN v x y z w v 0 0
  • 使用文件 API 将资源加载到 Three.js 中

    我想创建导入 3D 模型以在浏览器中查看的功能 方法是使用File API http www html5rocks com en tutorials file dndfiles Three js 加载器在我托管的文件上运行良好 我的理解是加
  • Matlab:3D 堆积条形图

    我正在尝试创建一个 3D 堆积条形图 如这个问题所示 Matlab 中的 3D 堆叠条形图 https stackoverflow com questions 13156133 3d stacked bars in matlab 5D 然而

随机推荐

  • 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实时目标检测竞赛中取得了第一的成绩 其性能超过了所有单阶段和多阶段的目标检测算法 作者首先分析了二阶段目标检测算法主要有两个