Stream Query Denoising for Vectorized HD Map Construction

本文介绍了一种基于StreamMapNet的方法,通过参考DN-DETR的去噪技术,为局部地图感知设计了一种动态加噪和去噪机制。文章详细描述了噪声生成过程,包括使用前一帧GT的ChamferDistance确定匹配,以及自适应阈值的选择。实验结果显示在Nuscenes数据集上,这种方法提高了感知稳定性并与其他算法进行了性能对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考代码:截止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下与其它一些局部地图感知算法的性能比较:
在这里插入图片描述

### 去噪生成模型中的噪声调节 #### 噪声调节的重要性 在去噪生成模型(Denoising Generative Models, DGMs)中,噪声调节是一个核心概念。它通过控制不同阶段的噪声水平来引导模型逐步从随机噪声重建清晰图像。这种机制对于稳定训练过程和提高生成质量至关重要[^3]。 具体来说,在扩散概率模型(Diffusion Probabilistic Model, DPM)中,噪声条件化允许网络学习到输入数据的不同尺度特征。例如,在早期阶段,高斯噪声占主导地位,因此模型更关注全局结构;而在后期阶段,则逐渐转向细节修复。这种方法不仅有助于解决因单一视角而导致的信息缺失问题,还能缓解运动模糊等现象带来的不稳定性。 此外,基于二值神经网络(Binarized Neural Networks, BNNs)的研究表明,适当引入布尔可满足性约束可以进一步增强模型鲁棒性和泛化能力[^1]。这说明即使是在离散空间内操作时,合理设计噪声注入策略同样能够带来显著收益。 #### 代码实现示例 以下是利用 PyTorch 实现的一个简单版本 Diffusion Model 中关于 Noise Conditioning 的部分: ```python import torch from torch import nn class GaussianDiffusion(nn.Module): def __init__(self, timesteps=1000): super().__init__() self.timesteps = timesteps def q_sample(self, x_start, t, noise=None): """ Forward diffusion process """ if noise is None: noise = torch.randn_like(x_start) sqrt_alphas_cumprod_t = extract(self.sqrt_alphas_cumprod, t, x_start.shape) sqrt_one_minus_alphas_cumprod_t = extract( self.sqrt_one_minus_alphas_cumprod, t, x_start.shape ) return ( sqrt_alphas_cumprod_t * x_start + sqrt_one_minus_alphas_cumprod_t * noise ) def p_losses(denoise_model, x_start, t, noise=None, loss_type="l1"): """ Loss function for denoising step """ if noise is None: noise = torch.randn_like(x_start) x_noisy = diffuser.q_sample(x_start=x_start, t=t, noise=noise) predicted_noise = denoise_model(x_noisy, t) if loss_type == 'l1': loss = F.l1_loss(noise, predicted_noise) elif loss_type == 'l2': loss = F.mse_loss(noise, predicted_noise) else: raise NotImplementedError() return loss ``` 上述代码片段展示了如何定义前向传播过程中加入可控量级的加性白噪音,并计算相应损失函数以指导反向传播调整权重参数。 #### 性能考量与局限性分析 尽管如此高效的算法已经存在用于线性二次型控制器的学习当中——即具有 \(O(\tilde{\sqrt{T}})\) 后悔界的有效方法被提出解决了某些开放性难题[^4] ,但在实际应用层面仍需注意几个方面: - **效率低下**: 如前所述,DDPM 类方法相较于非扩散模型基底技术表现出较低的操作效能; - **资源消耗大**: 高分辨率图片处理可能需要更多内存支持及较长运算时间; - **超参敏感度较高**: 不同任务场景下最佳 beta 调整范围差异较大,需反复试验找到最优解集。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值