Stream Query Denoising for Vectorized HD Map Construction

参考代码:截止2024.02未开源

动机与出发点
这篇文章是在StreamMapNet的基础上做的,为了在局部地图感知任务上提升时序上的感知稳定性,参考DN-DETR中的去噪方案,为局部地图感知提出一种针对局部地图元素的加噪声方案以及去噪逻辑。注意的是,这里DN去噪操作是在上一帧GT的基础上做的,原因是上一帧的感知结果存在相对GT存在更大不确定性(感知结果质量、地图元素新增和去除),为了训练的稳定性。文章由于noise机制的引入增加了一些超参数的引入,不过文章也通过消融实验给出了对应合适的取值。

方法设计
文章算法的结构见下图所示:
在这里插入图片描述
明显的差异是其在StreamMapNet的基础上增加了去噪分支,这个分支需要确定参与去噪的地图元素与当前帧的对应关系(也就是上图中的Adaptive Temporal Matching),以及寻找到对应关系之后依据元素之间的距离计算加噪声的力度(也就是上图中对应的Dynamic Query Noising)。之后就是在噪声元素基础上构建query进行解码和去噪了。

噪声的生成
1. 噪声源与对应GT的确定
为什么选择前一帧的GT作为去噪步骤的信息来源,在上面的内容中已经做了解释,按照文中的解释是为了训练的稳定性。那么怎么确定前一帧GT和当前帧GT呢?自然是使用CD(Chamfer distance)距离了,这个距离会按照距离值计算两帧GT每个元素之间的最匹配的索引和对应的距离值(自然在计算距离之前需要根据ego-motion将前一帧元素变换到当前帧下,也就是得到 y ^ \hat{y} y^):
D , i d x = min ⁡ j ∈ [ 1 , m ] ( C D ( y i t , y ^ j t − 1 ) ) D,idx=\min_{j\in[1,m]}(CD(y_i^t,\hat{y}_j^{t-1})) D,idx=j[1,m]min(CD(yit,y^jt1))
那么拿到两帧之间的匹配关系之后,就可以依据每个元素的的宽高(有外接矩形确定)和设定的超参数 α \alpha α(容忍度系数调节)来确定匹配的阈值:
δ = α w + h 2 \delta=\alpha\frac{w+h}{2} δ=α2w+h
这种自适应的匹配阈值和固定阈值对性能带来的影响见下表:
在这里插入图片描述

2. 噪声添加
这里将地图元素描述为有序点的形式,用一个外接矩形去包围它,那么调整外接矩形中心的位置和宽高就可以调整这个地面元素上点的位置了,因为设定了地图元素上每个点相对矩形的相对位置是不变的。也就是下图中对地图元素做sift和scale操作
在这里插入图片描述
那么sift和scale操作的幅度是多大呢?一个思路是可以根据匹配的结果来确定,那么就可以在基准噪声( η = { Δ x , Δ y , Δ w , Δ h } \eta=\{\Delta x,\Delta y,\Delta w,\Delta h\} η={Δx,Δy,Δw,Δh})的基础上添加一个增益因子 R d e c a y R_{decay} Rdecay
R d e c a y = 1 − D γ ⋅ δ α R_{decay}=1-\frac{D}{\gamma\cdot\frac{\delta}{\alpha}} Rdecay=1γαδD
其中, γ \gamma γ为增益控制因子,那么在增益的加持下添加noise的过程描述为:
B i n s = { x , y , w , h } + { Δ x , Δ y , Δ w , Δ h } ⋅ R d e c a y B_{ins}=\{x,y,w,h\}+\{\Delta x,\Delta y,\Delta w,\Delta h\}\cdot R_{decay} Bins={x,y,w,h}+{Δx,Δy,Δw,Δh}Rdecay
那么这个超参数的取值和对性能的影响见下表:
在这里插入图片描述

noising query的生成
对于加了noise之后地图元素上的某个点 p i m = { x i , y i } p_i^m=\{x_i,y_i\} pim={xi,yi},将它的位置进行编码 P E ( ⋅ ) 是 M L P PE(\cdot)是MLP PE()MLP
P i m = M L P ( p t ) ( C o n c a t ( P E ( x i m ) , P E ( y i m ) ) ) P_i^m=MLP^{(pt)}(Concat(PE(x_i^m),PE(y_i^m))) Pim=MLP(pt)(Concat(PE(xim),PE(yim)))
那么这个元素的编码就是元素上所有点编码的组合:
P o s q = M L P ( p o s ) ( C o n c a t ( P 1 m , … , P n m ) ) Pos_q=MLP^{(pos)}(Concat(P_1^m,\dots,P_n^m)) Posq=MLP(pos)(Concat(P1m,,Pnm))
这个关于位置的编码再加上关于类别的编码就是这个noise之后的地图元素的query了:
Q d e n o i s e = M L P ( f u s e ) ( C o n c a t ( C q , P o s q ) ) Q_{denoise}=MLP^{(fuse)}(Concat(C_q,Pos_q)) Qdenoise=MLP(fuse)(Concat(Cq,Posq))

上面说到的两个工作在base上的影响见下表所示:
在这里插入图片描述

实验结果
在Nuscenes下与其它一些局部地图感知算法的性能比较:
在这里插入图片描述

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

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

相关文章

【开源】JAVA+Vue.js实现海南旅游景点推荐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户端2.2 管理员端 三、系统展示四、核心代码4.1 随机景点推荐4.2 景点评价4.3 协同推荐算法4.4 网站登录4.5 查询景点美食 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的海南旅游推荐系统&#xff…

蓝牙BLE学习-安全

1.基本概念 蓝牙标准规定了5种基本的安全服务 身份验证:根据通信设备的蓝牙地址验证其身份。蓝牙不提供本地用户身份验证。保密性:确保只有授权的设备才能访问和查看传输的数据,防止窃听造成的信息泄露。授权(Authorization):在允许设备使用某项服务之前&#xff…

Verilog刷题笔记29

题目: Create a 100-bit binary ripple-carry adder by instantiating 100 full adders. The adder adds two 100-bit numbers and a carry-in to produce a 100-bit sum and carry out. To encourage you to actually instantiate full adders, also output the ca…

C++异常特性以及使用

异常 1.C传统的处理错误方式2.异常概念3.异常使用规则抛出和匹配规则 4.异常的重新抛出4.异常安全5.异常规范6.使用自定义的异常7.C标准异常体系7.异常优缺点 1.C传统的处理错误方式 终止程序:如assert,缺陷:用户难以接受。如发生内存错误&a…

[CUDA 学习笔记] Reduce 算子优化

Reduce 算子优化 注: 本文主要是对文章 【BBuf的CUDA笔记】三,reduce优化入门学习笔记 - 知乎 的学习整理 Reduce 又称之为归约, 即根据数组中的每个元素得到一个输出值, 常见的包括求和(sum)、取最大值(max)、取最小值(min)等. 前言 本文同样按照英伟达官方 PP…

C++ //练习 5.6 改写上一题的程序,使用条件运算符(参见4.7节,第134页)代替if else语句。

C Primer(第5版) 练习 5.6 练习 5.6 改写上一题的程序,使用条件运算符(参见4.7节,第134页)代替if else语句。 环境:Linux Ubuntu(云服务器) 工具:vim 代码…

EasyRecovery软件2024永久绿色免费版下载

EasyRecovery软件在数据恢复领域享有良好的声誉,并且被许多用户认为是一款好用且功能强大的软件。以下是对其功能和用户评价的简要概述: 恢复功能: EasyRecovery提供全面的数据恢复功能,可以恢复因删除、格式化、分区丢失、硬盘故…

Ubuntu20.04更新Cmake版本详解

最近在跑一个融合惯导定位的slam框架ins_eskf_kitti,在框架的安装过程中,需要对从GitHub上克隆下来的glog进行编译。其命令如下: glog: git clone https://github.com/google/glog.git cd glog mkdir build cd build cmake .. m…

3月第一批次❗教资认定流程简易版来啦

📝材料准备 1、身份证 2、户口本/学生证/居住证/毕业证 3、考试合格证明(免试人员需要师范生职业能力证书) 4、普通话证书 5、学历证书或认证报告 6、近期一寸白底证件照 7、有效期内体检报告 8、个人承诺书(网上签署) 网上申报 1、上传个人承诺书 2、校验普通话证书…

java中事务的使用

文章目录 前言一、同一张表1.业务代码2.测试代码3.测试结果 二、不同表1.业务代码2.测试代码3.测试结果 总结 前言 本文将介绍在springboot中使用Transactional注解来完成对数据库事务的操作,保证数据一致性。 一、同一张表 1.业务代码 Controller Controller p…

【Web】CVE-2021-31805 s2-062漏洞复现学习

目录 Struts2介绍 漏洞概况 OGNL与Struts2 简单原理 漏洞复现 正向rce 反弹shell payload分析 Struts2介绍 Struts 2 是一个流行的用于构建 Java Web 应用程序的开源 Web 应用程序框架。它是 Apache 软件基金会下的一个顶级项目,是 Struts 框架的升级版本。…

使用 devc++ 开发 easyx 实现 Direct2D 交互

代码为 codebus 另一先生的 文案 EasyX 的三种绘图抗锯齿方法 - CodeBus 这里移植到 devc 移植操作如下&#xff1a; 调用dev 的链接库方式&#xff1a; project -> project option -> 如图所示 稍作修改的代码。 #include <graphics.h> #include <d2d1.…

BUUCTF-Real-[Jupyter]notebook-rce

1、简介 Jupyter Notebook&#xff08;此前被称为 IPython notebook&#xff09;是一个交互式笔记本&#xff0c;支持运行 40 多种编程语言。 如果管理员未为Jupyter Notebook配置密码&#xff0c;将导致未授权访问漏洞&#xff0c;游客可在其中创建一个console并执行任意Pytho…

Android 10.0 锁屏壁纸 LockscreenWallpaper

前言 一、设置壁纸 通过系统设置进行锁屏壁纸和桌面壁纸的设置。 Setting 部分的代码&#xff1a; packages/apps/WallpaperPicker2/src/com/android/wallpaper/module/DefaultWallpaperPersister.java private int setStreamToWallpaperManagerCompat(InputStream inputStre…

第6个-滚动动画

Day 6 - Scroll Animation 1. 演示效果 2. 分析思路 布局 所有的内容进行水平垂直居中&#xff0c;可以使用**margin:0 auto;&#xff0c;也可以使用flex**布局&#xff1a; body {background-color: #efedd6;display: flex;flex-direction: column;justify-content: center…

【C语言】实现栈

目录 &#xff08;一&#xff09;栈 &#xff08;二&#xff09;头文件 &#xff08;三&#xff09;功能实现 &#xff08;1&#xff09;初始化栈 &#xff08;2&#xff09; 栈的销毁 &#xff08;3&#xff09;压栈 &#xff08;4&#xff09; 出栈 &#xff08;5&a…

【html学习笔记】1.概念

1.概念 1.1 HTML标准格式 <html><body><p>Hello World</p></body> </html>1.2 编辑方式 新建一个笔记本文件&#xff0c;将html语法格式的内容写入。保存后将记事本的.txt后缀换成.html,就可以在浏览器里运行了 1.3 中文问题 为了避…

前端架构: 从vue-cli探究脚手架原理

从使用角度理解什么是脚手架 脚手架本质是一个操作系统的客户端 在终端中去执行一个命令&#xff0c;这个命令本身它就是一个客户端我们其实可以把脚手架理解为操作系统的一个客户端通过命令去执行它的时候&#xff0c;这个命令往往是这样的一个构造&#xff0c;如下 比如&…

【好玩AI】【Prompt】情人节了,用GPT写个【骂醒恋爱脑】的机器人跟自己对话吧

情人节了&#xff0c;让我们用GPT写个【骂醒恋爱脑】的机器人跟自己对话吧。 通过本文&#xff0c;你能学到&#xff1a; 1. 如何零代码搭建一个自己的机器人Bot 2. 骂醒恋爱脑的高级Prompt 通过本文&#xff0c;你还能得到&#xff1a; 恋爱脑可能被骂醒 为了白嫖&#xff0c;…

Linux下的多线程

前面学习了进程、文件等概念&#xff0c;接下里为大家引入线程的概念 多线程 线程是什么&#xff1f;为什么要有线程&#xff1f;线程的优缺点Linux线程操作线程创建线程等待线程终止线程分离 线程间的私有和共享数据理解线程库和线程id深刻理解Linux多线程&#xff08;重点&a…