C-LaV: Conditional Latent Velocity Field Denoising for Weather-Robust LiDAR Place Recognition¶
会议: CVPR 2026
论文: CVF Open Access
代码: 未公开(论文未提供链接)
领域: 自动驾驶 / LiDAR 地点识别
关键词: LiDAR 地点识别, 天气鲁棒, Flow Matching, 潜空间去噪, BEV 检索
一句话总结¶
C-LaV 把雨雪雾导致的 LiDAR 退化放到冻结 DINOv2 的 BEV 潜空间里去补偿——用条件 Flow Matching 学一个速度场、再解概率流 ODE 把"含天气噪声的潜表示"确定性地搬回"晴天潜表示",最后用 SALAD 聚类头出全局描述子做检索,在 NCLT 雪天和真实 Boreas 上 Recall@1 分别提升 17.5% 和 21.5%。
研究背景与动机¶
领域现状:基于 LiDAR 的地点识别(place recognition)是自动驾驶城市级定位的核心环节——把当前单帧扫描编码成一个紧凑全局描述子,再去地理标注的大地图里检索最近位置。主流做法从手工几何描述子(PointNetVLAD 之后)演进到端到端学习的全局表示,骨干上有稀疏卷积体素(MinkLoc3Dv2)、BEV 投影(BEVPlace++)、2D 条件描述子(ImLPR)等多条路线。
现有痛点:现实里雨雪雾不是偶发而是常态,它们通过随距离衰减、体散射、虚假回波同时破坏 LiDAR 的几何与反射强度,地点识别赖以匹配的结构线索因此变得不可靠,跨天气泛化成了一个长期未解的难题。
核心矛盾:作者指出已有方法几乎都"在已经被天气污染的特征空间里直接学描述子"——一旦天气改变了测量分布,嵌入空间就跟着漂移。而绝大多数补救手段都停留在信号层(滤波、增强、点云/体素重建),并没有去干预真正形成检索表示的潜空间。原始点云和 BEV 图里几何、反射、稀疏度、天气伪影是缠在一起的,信号层修复也许让外观变好,却仍会扰动对检索至关重要的结构。
本文目标:在天气补偿这件事上换一个作用层——直接在语义编码之后、更紧凑也更面向检索的 BEV 潜空间里做去噪,并在同一编码器、同一描述子头、同一协议下公平对比"不去噪 / BEV 信号空间去噪 / 潜空间去噪"三种选择。
核心 idea:用一个条件潜速度场把含天气噪声的潜表示确定性地"运输"回晴天潜表示——以冻结 DINOv2 给出的跨天气共享流形为锚点,用 Flow Matching 学速度场、用概率流 ODE 求解去噪,整个过程不重建任何 BEV 图或点云,只把检索相关的结构搬回干净流形。
方法详解¶
整体框架¶
C-LaV 要解决的是"如何在不重建几何的前提下,让恶劣天气下的 LiDAR 单帧也能产出和晴天一致的检索描述子"。它把"点云 → 描述子"分解成四个模块的复合 \(D = \Omega(P),\ \Omega = h \circ \psi \circ E \circ \phi\),对应三个串行阶段:先把单帧点云投影成三通道 BEV 图(高度/强度/密度),用冻结的 DINOv2 编码成一个跨天气共享的语义潜网格(Stage 1);然后在这个潜流形上用 Flow-Matching 训练的条件 DiT 做去噪、把含噪潜表示搬回晴天潜表示(Stage 2);最后由 SALAD 聚类头把去噪后的潜 token 聚合成 8448 维全局描述子(Stage 3),\(\ell_2\) 归一化后做基于检索的地点识别。
关键在于:去噪只发生在潜空间、不改变空间分辨率(潜网格固定为 \(768\times32\times32\),即 1024 个 token),训练和推理都在"经 ODE 去噪后的潜表示"上进行,保证学描述子和做检索用的是同一种表示。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["单帧点云 P"] --> B["三通道 BEV 投影<br/>高度 / 强度 / 密度"]
B --> C["潜空间天气补偿<br/>冻结 DINOv2 编码<br/>跨天气共享潜流形 Z₀"]
C --> D["条件潜速度场去噪<br/>Flow Matching 学速度场<br/>概率流 ODE 搬回晴天潜表示 Z_d"]
D --> E["潜聚类描述子聚合<br/>SALAD 软聚类 + 全局上下文 token"]
E --> F["8448-D 全局描述子<br/>ℓ₂ 归一化 → 检索"]
关键设计¶
1. 潜空间天气补偿:把去噪从信号层挪到冻结语义流形上
这一条直接针对"在被污染的特征空间里学描述子"这个根因。C-LaV 先用 BEV 投影算子 \(\phi\) 把单帧点集离散成 \(448\times448\times3\) 的栅格图 \(I=\phi(P)\),三个通道分别是每格的归一化最大高度、平均反射强度、归一化点数;再用一个 DINOv2-Base(ViT/14)冻结编码器 \(E\) 把 BEV 切成 \(14\times14\) 的 patch、投到 768 维、过 12 层 ViT,去掉 class token 后 reshape 得到潜网格 \(Z_0 = E(I) \in \mathbb{R}^{768\times32\times32}\)。
为什么是"冻结"且放在编码之后?因为参数冻结意味着 \(Z_0\) 是一个固定的、语义上有意义、且跨所有天气共享的特征流形——晴天和雨雪雾被映到同一坐标系里,天气退化就表现为这个流形上的一个可建模偏移,而不是一个会随天气漂移的嵌入空间。相比在原始 BEV/点云这种几何、反射、稀疏度、天气伪影缠绕的信号层修复,潜空间更紧凑、更面向检索,去噪也更聚焦于"检索相关的结构"。这是全篇的出发点:天气补偿不必只在信号级做。
2. 条件潜速度场去噪:用 Flow Matching + 概率流 ODE 把含噪潜表示搬回晴天
这是方法的核心,针对"如何在潜空间确定性地消除天气退化"。给定含噪 BEV 和它的晴天配对,冻结编码器分别产出 \(Z_{noisy}=E(X_{noisy})\) 与 \(Z_{clean}=E(X_{clean})\),目标是在 \(Z_{noisy}\) 条件下得到 \(Z_d \approx Z_{clean}\)。作者按条件 Flow Matching 引入辅助对 \(z_0 \sim \mathcal{N}(0,I)\)、\(z_1=Z_{clean}\),定义线性插值路径
其对时间的导数就是真值速度 \(v_t(z_t|z_1) = z_1 - (1-\sigma_{min})z_0\)(对固定的 \((z_0,z_1)\) 在 \(t\) 上是常数)。用一个 DiT 骨干参数化条件速度场 \(\hat{v}_t = F_\theta(z_t, t, Z_{noisy})\),以含噪潜表示作为条件,训练目标是预测速度与真值速度的均方误差:
学好速度场后,去噪被表述成求解一个确定性 ODE \(\frac{dz_t}{dt} = F_\theta(z_t,t,Z_{noisy})\),从 \(z_0\sim\mathcal{N}(0,I)\) 出发、在固定条件 \(Z_{noisy}\) 下从 \(t{=}0\) 积分到 \(t{=}1\),把高斯样本搬到去噪潜表示 \(Z_d = z_1 \approx Z_{clean}\)。实际用 Euler/Heun 等显式求解器、少量步数迭代 \(z_{t_{k+1}} = z_{t_k} + \Delta t\, F_\theta(z_{t_k}, t_k, Z_{noisy})\),论文取 \(T\approx 50\) 步在精度和效率间折中。
它的妙处在于:整个去噪是确定性、条件引导的(概率流 ODE 而非随机采样),且不重建任何 BEV 图或点云,直接作用于检索相关的结构,把鲁棒性和显式几何重建解耦开。消融里它对比的正是把同一去噪器换成 DDPM——结果显示"学条件速度场 + ODE 采样"比"面向重建的 DDPM 去噪"更适合天气鲁棒检索。
3. 潜聚类描述子聚合:SALAD 软聚类把去噪潜网格压成可检索描述子
去噪给出干净潜网格 \(Z_d\) 后,需要聚成一个定长全局描述子,这一条用的是 SALAD(Sinkhorn Aggregation of Local Descriptors)软聚类头。先把 \(Z_d\) 摊平成 \(N_\ell=32\times32\) 个空间 token \(\{f_i\}\)、各自线性投到 \(d_c=128\) 维,再对 \(K=64\) 个可学习簇原型 \(\{w_k\}\) 做带温度的软分配 \(a_{ik} = \frac{\exp(f_i^\top w_k/\tau_a)}{\sum_{k'}\exp(f_i^\top w_{k'}/\tau_a)}\),簇描述子是 token 特征的加权平均 \(u_k = \sum_i a_{ik} f_i\);同时一个全局上下文 token \(g\) 注意力汇聚所有空间 token 得到 \(g_{att}=\text{Attn}(g,\{f_i\})\)。最终描述子是全局上下文与所有簇描述子的拼接
\(\ell_2\) 归一化后用于检索。这样做的好处是描述子同时编码了场景级上下文(全局 token)和局部结构(簇描述子)的全局-局部融合,配合后面 truncated Smooth-AP 损失,在强外观漂移下仍保持判别力——消融显示把 NetVLAD 换成这个潜聚类头,NCLT 这类域漂移更强的数据上 R@1 涨幅尤其明显。
损失函数 / 训练策略¶
训练联合优化"潜空间去噪损失"和"面向检索的排序损失"。去噪用稀疏感知版的 Flow Matching 损失 \(\mathcal{L}_{denoise} = \mathbb{E}_{x,t,p(z_0),q(z_1)}\, w(x)\,\|\hat{v}_t - v_t\|_2^2\),其中权重 \(w(x)\) 上调前景格(被占据/高回波区域)、下调背景,以缓解 LiDAR 稀疏性。检索用 truncated Smooth-AP \(\mathcal{L}_{TSAP} = 1 - \frac{1}{B}\sum_i AP_i\),用 logistic 函数对余弦相似度 \(S_{ij}=d_i^\top d_j\) 做软排名计数、只保留每个 query 的 top-\(K_{pos}\) 正样本以稳定梯度(GPS 监督下 10 m 内为正、50 m 外为负)。总损失为
最后一项潜一致性约束是可选的(默认 \(\lambda_{lat}=0\),只在需要更紧对齐时开启)。⚠️ 关于 \(\sigma_{min}\)、\(\lambda_{desc}\)、\(\tau_a\)、\(\tau_1\) 等具体取值原文正文未给全,以原文及补充材料为准。
实验关键数据¶
统一基准基于 KITTI、NCLT、Boreas 构建:所有数据集都按 3 m 间距重采样以减少近重复视角,10 m 内为正样本、50 m 外为负样本、中间忽略,每帧统一转成 \(448\times448\) 三通道 BEV。KITTI、NCLT 用基于物理的模型合成雨雪雾扫描;Boreas 是真实恶劣天气、无原生干净/含噪对,作者用同一 GPS 路点对齐跨趟帧构造代理配对。
主实验¶
跨三个数据集的 Recall@1 / Recall@5(%),Boreas 无雾天数据:
| 方法 | KITTI 雨 | KITTI 雾 | KITTI 雪 | NCLT 雪 | Boreas 雨 | Boreas 雪 | 平均 R@1/R@5 |
|---|---|---|---|---|---|---|---|
| MinkLoc3D v2 | 46.16/65.15 | 67.07/87.78 | 69.28/88.37 | 30.81/51.62 | 65.52/86.32 | 32.47/57.68 | 48.99/71.95 |
| BEVPlace++ | 41.31/61.72 | 56.46/78.18 | 68.81/83.60 | 42.60/63.00 | 56.38/84.21 | 52.37/81.21 | 54.37/82.71 |
| ImLPR | 43.36/65.65 | 59.62/89.13 | 72.28/90.31 | 44.14/66.28 | 58.26/86.29 | 47.63/81.98 | 52.94/84.14 |
| ResLPR | 23.52/32.50 | 27.22/39.68 | 56.32/75.63 | 31.26/53.68 | 39.65/74.26 | 35.13/60.02 | 37.39/67.14 |
| C-LaV(本文) | 46.97/67.88 | 62.73/85.45 | 77.60/95.23 | 46.41/69.11 | 79.66/98.31 | 71.98/94.83 | 75.82/96.57 |
雪天提升最显著(KITTI 雪 R@1 77.60% 比 ImLPR 高 +5.3 点);真实 Boreas 上把最优基线 mid-50% 的平均 R@1 拉到 75.82%、R@5 拉到 96.57%,雨雪上 R@1 普遍领先 15–20 点。雾天相对平淡(KITTI/NCLT 雾不及 MinkLoc3D v2),作者解释雾主要扭曲深度、让远距结构在 BEV 里坍塌,而体素法能更好保留高度感知线索。
消融实验¶
沿 BEV 编码器 / 潜去噪器 / 描述子头三条轴逐步替换(KITTI / NCLT 各天气平均):
| 配置 | BEV 编码器 | 潜去噪 | 描述子头 | KITTI R@1/R@5 | NCLT R@1/R@5 |
|---|---|---|---|---|---|
| C-LaV-1 | DINOv2-S | DDPM | NetVLAD | 11.17/25.75 | 5.40/17.61 |
| C-LaV-2 | DINOv2-B | DDPM | NetVLAD | 30.45/51.20 | 16.80/38.55 |
| C-LaV-3 | DINOv2-B | 速度场+ODE | NetVLAD | 50.15/71.90 | 27.35/53.80 |
| C-LaV(Full) | DINOv2-B | 速度场+ODE | 潜聚类 | 62.83/82.75 | 34.52/60.16 |
关键发现¶
- 三个组件依次叠加都显著涨点,且都不可省:S→B 编码器使 KITTI R@1 从 11.17% 翻到 30.45%(近 3 倍),说明强 BEV 语义是跨天气检索的前提;DDPM→速度场+ODE 把 KITTI R@1 再从 30.45% 拉到 50.15%,证明"学条件速度场"优于"面向重建的 DDPM 去噪";NetVLAD→潜聚类把 KITTI R@1 从 50.15% 拉到 62.83%、NCLT 从 27.35% 拉到 34.52%。
- 去噪作用层的对照最有说服力:同一冻结 DINOv2 + 同一 SALAD 头下,不去噪 KITTI 平均 R@1 仅 29.32%,BEV 信号空间 U-Net 去噪只到 37.00%,而潜空间 Flow Matching 达到 62.84%——直接量化了"潜空间去噪 ≫ 信号空间去噪"。
- 场景差异:Boreas 真实数据反而 recall 更高(雪 R@1 71.98%),因为真实雨雪强度温和、扫描更密,残余干净信号足以引导 ODE 去噪;雾天则是该方法相对软肋。
亮点与洞察¶
- 去噪作用层的转移是真正的"啊哈"点:把天气补偿从信号层搬到冻结语义潜流形上,用一组同编码器/同描述子/同协议的对照(29.32% → 37.00% → 62.84%)干净地证明了这个选择的价值,论证逻辑比单纯刷 SOTA 更有说服力。
- 用 Flow Matching 的速度场 + 概率流 ODE 做"确定性去噪"而非随机采样,且全程不重建几何,把鲁棒性和显式重建解耦——这套"denoise-then-retrieve in latent space"范式作者明确指出是模态无关的,可迁移到相机、雷达输入。
- 训练-推理一致性:始终在 ODE 去噪后的潜表示上学描述子、做检索,避免了"训练用干净、推理用含噪"的表示错配,是个容易被忽视但很关键的工程取舍。
局限与展望¶
- 作者承认:基准只覆盖雨雾雪三种常见天气,更极端现象、长期环境变化、异构传感器配置都没探索。
- 潜 Flow-Matching DiT 因 ODE 去噪(\(T\approx50\) 步)比前馈基线计算量大、推理成本高。
- 依赖代理的含噪/干净 BEV 配对(尤其 Boreas 用 GPS 路点对齐跨趟帧),配对若在结构/视角上未精确对齐会限制监督保真度,学到的去噪未必覆盖所有真实退化。
- 自己的观察:雾天明显弱于体素法,说明该方法对"深度坍塌型"退化(点数保留但远距结构模糊)补偿有限;且整套依赖晴天配对,纯无配对真实场景的可扩展性存疑。
相关工作与启发¶
- vs MinkLoc3D v2 / BEVPlace++ / ImLPR:它们都在被天气污染的特征空间里直接学描述子(体素、BEV、2D 条件描述子),天气一变嵌入空间就漂移;C-LaV 在冻结语义潜空间先把含噪表示搬回晴天再检索,雨雪天大幅领先,仅雾天不及体素法。
- vs 信号层去噪(点/体素/图像滤波、增强、重建):这些只在信号层抑噪、对检索语义保留有限(同设定下 BEV U-Net 仅 37.00% R@1);本文把去噪移到潜空间(62.84%),证明"潜空间补偿 > 信号空间补偿"。
- vs DDPM 式潜去噪:消融显示在同等前端容量下,条件速度场 + ODE 比面向重建的 DDPM 更适合天气鲁棒检索(KITTI R@1 50.15% vs 30.45%),启示"检索任务的潜去噪"应优先确定性的 Flow Matching 而非随机扩散。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 首次把条件 Flow Matching 速度场 + ODE 去噪用到 LiDAR 潜空间天气补偿,作用层转移有清晰立论
- 实验充分度: ⭐⭐⭐⭐ 三数据集 × 三天气 + 三轴消融 + 去噪作用层对照齐全,但缺代码与更多超参敏感性
- 写作质量: ⭐⭐⭐⭐⭐ 动机推导和方法公式交代清晰,图文对照到位
- 价值: ⭐⭐⭐⭐ 显著提升真实恶劣天气检索且范式模态无关,但 ODE 推理成本与配对依赖限制落地