【论文笔记】Far3D: Expanding the Horizon for Surround-view 3D Object Detection

原文链接:https://arxiv.org/pdf/2308.09616.pdf

1. 引言

目前的环视图图像3D目标检测方法分为基于密集BEV的方法和基于稀疏查询的方法。前者需要较高的计算量,难以扩展到长距离检测。后者全局固定的查询不能适应动态场景,通常会丢失远距离目标。本文引入3D自适应查询以增强灵活性。

基于稀疏查询的长距离检测主要的挑战是召回率低。由于2D检测的召回率高,可以使用高质量的2D检测先验来改进3D提案,从而实现精确定位和全面覆盖。但直接使用来自2D提案的3D查询有两个问题:(1)深度不确定;(2)当距离增加时3D空间中的偏差增大。这会影响训练稳定性,需要去噪方法来优化。此外,训练会倾向对近距离较为密集的物体进行过拟合,而忽略稀疏分布的远距离物体。

本文使用2D提案和相应的深度,通过空间变换得到3D提案,然后用投影位置嵌入和上下文语义来组成3D自适应查询,在解码器中细化。透视图感知的聚合会用在不同尺度和视图的图像上(对远距离物体需要关注高分辨率特征,而近距离物体反之,才能获得高层特征)。此外,还提出距离调制的3D去噪技术(根据GT构建噪声查询,解码器学习从噪声提案中恢复正提案并拒绝负提案),来缓解查询误差传播和收敛慢的问题。同时,查询去噪能减轻距离分布不平衡的问题。

3. 方法

3.1 概述

图1 模型框架
给定环视图像 I = { I 1 , ⋯ . I n } I=\{I_1,\cdots.I_n\} I={I1,.In},使用主干和FPN提取多尺度图像特征 F = { F 1 , ⋯ , F n } F=\{F_1,\cdots,F_n\} F={F1,,Fn}。使用2D检测器和深度网络获取2D提案和深度,然后筛选出其中可靠性高的并转换到3D空间,得到3D物体查询。

在3D检测器中,将3D自适应查询和3D全局查询输入到Transformer解码层中,进行查询间的自注意力和透视感知的查询-特征聚合。

3.2 自适应查询生成

给定图像特征,输入到2D检测器和轻量级深度估计网络预测2D边界框和离散深度分布,并筛选出分数大于阈值 τ \tau τ的边界框。然后根据深度和相机参数,将边界框的中心投影到3D空间,得到坐标 c 3 d c_{3d} c3d

然后,按下式编码为3D自适应查询:
Q p o s = P o s E m b e d ( c 3 d ) Q_{pos}=PosEmbed(c_{3d}) Qpos=PosEmbed(c3d) Q s e m = S e m E m b e d ( z 2 d , s 2 d ) Q_{sem}=SemEmbed(z_{2d},s_{2d}) Qsem=SemEmbed(z2d,s2d) Q = Q p o s + Q s e m Q=Q_{pos}+Q_{sem} Q=Qpos+Qsem
其中 z 2 d z_{2d} z2d为边界框2D中心处的图像特征, s 2 d s_{2d} s2d为边界框的置信度分数。位置编码为正弦变换+MLP,语义编码为MLP。

最后,将3D自适应查询与初始化的全局查询一起输入到Transformer解码层。

3.3 透视感知的聚合

遥远的小物体需要高分辨率特征以精确定位,而近处的大物体需要高级特征。本文提出透视图感知的聚合,从而在不同的尺度和视图上进行高效的特征交互。

本文首先将图像特征 F F F与相机内外参 I , K I,K I,K组合,并使用squeeze-and-excitation块丰富特征。增强的特征 F ′ F' F使用3D可变形卷积。对每个查询参考点预测 M M M个偏移量,并投影到不同视图和尺度的2D特征图上。

最后根据2D参考点从 F ′ F' F中采样图像特征,并考虑相对重要性聚合到3D查询中。

3.4 距离调制的3D去噪

具体的方案类似于DN-DETR。

与2D查询不同,不同距离处的3D查询,回归难度往往不同。这一难度差异来自查询密度(近距离物体比远距离物体更容易匹配)与误差传播(2D提案的误差会传播到3D,且随距离的增加而增加)。因此,GT框附近的查询可视为噪声候选对象,而远离GT框的查询视为负样本。通过距离调制的3D去噪,模型会召回潜在的正样本,而拒绝负样本。

本文通过同时添加正负样本,基于GT物体创建噪声查询。为了促进长距离感知学习,根据物体的位置和尺寸添加随机噪声。噪声查询的位置定义如下:
P ~ = P G T + α f p ( S G T ) + ( 1 − α ) f n ( P G T ) \tilde{P}=P_{GT}+\alpha f_p(S_{GT})+(1-\alpha)f_n(P_{GT}) P~=PGT+αfp(SGT)+(1α)fn(PGT)
其中 α ∈ { 0 , 1 } \alpha\in\{0,1\} α{0,1}对应正查询和负查询的生成, P G T P_{GT} PGT S G T S_{GT} SGT为GT框的位置和尺寸, f p f_p fp f n f_n fn为正负样本编码位置感知的噪声。

对正样本, f p ( S G T ) f_p(S_{GT}) fp(SGT)为3D尺寸的线性函数(带随机变量),这个GT框内的约束用于保证与周围相邻的边界框区分开。对负样本,偏移量与位置相关,有不同的实施方案。此外,对每个GT框会生成多组样本以增强查询多样性,每一组包含一个正样本和 K K K个负样本。

4. 实验

4.3 主要结果

Argoverse 2数据集:本文的方法能超过基于稀疏查询的方法。基于BEV的方法性能较差,这可能是由于深度估计的难度太大。部分模型不能收敛,可能也是缺乏精确的深度估计。总的来说,长距离检测的收敛问题更加严重,本文的3D去噪能起关键作用。

此外,本文的方法能超过激光雷达早期方法CenterPoint等。激光雷达方法的定位误差较小,但环视图方法的朝向估计更准确。

4.4 消融研究 & 分析

自适应查询:在StreamPETR的基础上添加自适应查询,能带来性能提升。可视化表明,从自适应查询得到的预测覆盖了更大的范围。

透视感知的聚合:进一步增加透视感知的聚合,能提高性能。

距离调制的3D去噪:通过惩罚负样本,减少了错误提案的出现;通过考虑物体距离,提高了定位精度。实验表明 f n ( ⋅ ) = log ⁡ ( ⋅ ) f_n(\cdot)=\log(\cdot) fn()=log()时能达到最优效果。

全局查询的作用:全局查询与自适应查询互补,当缺少全局查询时,StreamPETR收敛困难。全局查询增多,可以提高性能。

6. 补充材料

基于BEV的方法SOLO-Fusion在即使有NMS的情况下仍然产生了大量的冗余预测,原因可能是检测头有限的感受野难以处理大的检测范围。

自适应查询的统计数据:使用与自适应查询的平均数量相同的额外全局查询替换自适应查询,会导致性能下降。

Far3D的更多细节:(1)训练的初期,使用真实深度生成3D自适应查询,训练稳定后改用预测查询。(2)本文使用多尺度特征图与查询交互。与手工根据距离选择合适尺度的特征图相比,用网络估计的方法效果相近。

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

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

相关文章

竞赛选题 深度学习YOLO抽烟行为检测 - python opencv

文章目录 1 前言1 课题背景2 实现效果3 Yolov5算法3.1 简介3.2 相关技术 4 数据集处理及实验5 部分核心代码6 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习YOLO抽烟行为检测 该项目较为新颖,适合作为竞赛课…

LeetCode13——罗马数字转整数

解题思想: 前后指针 左边比右边小 做减法 左边比右边大 做加法 最后一个数字直接加。 package keepcoding.leetcode.leetcode13;public class Result02 {public static void main(String[] args) {int result romanToInt("XIV");System.out.println(re…

最近又火了!吴恩达《生成式 AI》重磅发布!

吴恩达教授可能是许多人接触 AI 的启蒙课导师吧,在过去的十多年中,他的《Machine Learning》课程已经对数百万的学习者产生了积极影响。 而随着 ChatGPT 的推出,大模型和各类生成式人工智能(GenAI)技术在行业内外备受…

Hive跨集群数据迁移过程

文章目录 环境数据迁移需求迁移过程记录 环境 Hive集群AHive集群B跳转机一台 数据迁移需求 本次迁移数据100G,15亿条,数据流转方向从集群A经过跳转机到集群B,通过HDFS拉取和重新建表导入的方式完成数据库迁移。 迁移过程记录 - 当前操作…

数据结构:排序

文章目录 1. 预备知识2. 插入排序2.1 直接插入排序2.2 折半插入排序 3. 希尔排序4. 交换排序4.1 冒泡排序4.2 快速排序4.2.1 选取基准值4.2.2 分割策略4.2.3 小数组4.2.4 基于Hoare版本 最后优化 递归版本 快速排序4.2.5 快速排序的非递归版本4.2.6 快速排序的分析 5. 选择排序…

[云原生1.]Docker数据管理与Cgroups资源控制管理

文章目录 1. Docker的数据管理1.1 数据卷1.1.1 示例 1.2 数据卷容器 2. 容器互联3. Cgroups资源控制管理3.1 简介3.2 cgroups的主要功能3.3 cpu时间片的简单介绍3.4 对CPU使用的限制3.4.1 对CPU使用的限制(基于单个容器)3.4.2 对CPU使用的限制&#xff0…

Linux CentOS 8(网卡的配置与管理)

Linux CentOS 8(网卡的配置与管理) 目录 一、项目介绍二、命令行三、配置文件四、图形画界面的网卡IP配置4.1 方法一4.2 方法二 一、项目介绍 Linux服务器的网络配置是Linux系统管理的底层建筑,没有网络配置,服务器之间就不能相互…

个微多账号聚合聊天管理如何实现?

在日常工作中,我经常遇到以下问题: 1. 微信号众多,需要频繁切换设备和账号,导致工作效率低下。 2. 无法及时回复客户消息,客户体验不尽如人意。 3. 难以随时掌握员工与客户的沟通情况,导致员工沟通质量难…

利用Python计算彭于晏的BMI

1 问题 彭于晏是众多男生女生心中的男神,那么他的BMI为多少,身体状况如何呢? 2 方法 运用python中数据类型转换,while 循环语句,if/elif/else 条件语句等方法计算彭于晏的BMI,判断他的身体状况。 计算公式…

烘焙蛋糕外卖小程序商城的作用是什么

随着经营成本上升及电商业态的冲击,传统烘焙蛋糕门店商家经营止步不前,加之口罩原因更是雪上加霜,引流拓客、经营转化复购大幅度降低,而线上又因外卖平台间的激烈竞争,导致中小烘焙蛋糕商家进退两难。 烘焙蛋糕店经营…

学习git博客

git新建分支并且提交代码过程 1. git pull <codeBaseAddress> [分支名(默认是master)] 2. cd <projectName> 3. git branch <newBranchName> // 创建分支 4. git checkout <newBranchName> // 切换到新分支 // 开始写你的新代码 5. git add . //…

Hive篇面试题+详解

Hive篇面试题 1.什么是Hive&#xff1f;它的主要功能是什么&#xff1f; Hive是一个基于Hadoop的数据仓库工具&#xff0c;它提供了一个类SQL的查询语言&#xff08;HiveQL&#xff09;来查询和分析存储在Hadoop集群中的大规模数据。Hive的主要功能是将结构化数据映射到Hadoop…

动手学深度学习—使用块的网络VGG(代码详解)

目录 1. VGG块2. VGG网络3. 训练模型 1. VGG块 经典卷积神经网络的基本组成部分是下面的这个序列&#xff1a; 1.带填充以保持分辨率的卷积层&#xff1b; 2.非线性激活函数&#xff0c;如ReLU&#xff1b; 3.汇聚层&#xff0c;如最大汇聚层。 定义网络块&#xff0c;便于我…

【安全体系架构】——零信任网络架构

什么是零信任网络架构&#xff1f; 零信任网络架构是一种网络和信息安全模型&#xff0c;它将传统的信任模型颠覆&#xff0c;不再信任内部或外部用户、设备或网络。相反&#xff0c;它将每个访问请求都视为不受信任&#xff0c;要求对每个用户、设备和流量都进行认证和授权&a…

2023-10-20 LeetCode每日一题(根据规则将箱子分类)

2023-10-20每日一题 一、题目编号 2525. 根据规则将箱子分类二、题目链接 点击跳转到题目位置 三、题目描述 给你四个整数 length &#xff0c;width &#xff0c;height 和 mass &#xff0c;分别表示一个箱子的三个维度和质量&#xff0c;请你返回一个表示箱子 类别 的字…

底层驱动day2作业

控制三盏灯亮灭 代码&#xff1a; //head.h#ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_RCC 0x50000A28 #define PHY_GPIOE_MODER 0x50006000 #define PHY_GPIOF_MODER 0x50007000 #define PHY_GPIOE_ODR 0x50006014 #define PHY_GPIOF_ODR 0x50007014#endif //demo…

播放svga动画的时候 第一次加载资源,然后切换动画 会动画会重影

如果在切换 SVGA 动画的过程中&#xff0c;第一次加载时出现重影&#xff0c;但第二次及以后的切换没有重影&#xff0c;这可能是由于第一次加载时资源缓存不完整导致的。为了解决这个问题&#xff0c;你可以尝试以下方法&#xff1a; 1.在每次切换动画之前&#xff0c;预先加…

C#经典十大排序算法(完结)

C#冒泡排序算法 简介 冒泡排序算法是一种基础的排序算法&#xff0c;它的实现原理比较简单。核心思想是通过相邻元素的比较和交换来将最大&#xff08;或最小&#xff09;的元素逐步"冒泡"到数列的末尾。 详细文章描述 https://mp.weixin.qq.com/s/z_LPZ6QUFNJcw…

vue-pdf多页预览异常,Rendering cancelled, page 1 Error at BaseExceptionClosure xxx

项目开发使用vue-pdf,单页情况预览正常&#xff0c;多页vue-pdf预览异常&#xff0c;第一次预览时&#xff0c;会先弹出异常模态窗口&#xff0c;关闭模态窗口&#xff0c;pdf又是正常显示&#xff0c;报错信息及异常截图如下&#xff1a; 报错信息 Rendering cancelled, page…

【PADS封装】2.4G PCB天线封装(量产用)

包含了我们平时常用的2.4GPCB天线封装&#xff0c;总共11种封装。完全能满足日常设计使用。 下载链接&#xff01;&#xff01;https://mp.weixin.qq.com/s?__bizMzU2OTc4ODA4OA&mid2247548815&idx1&sne625e51a06755a34ab4404497770df48&chksmfcfb2c58cb8ca5…