LiFlow: Flow Matching for 3D LiDAR Scene Completion¶
会议: ECCV2026
作者: Andrea Matteazzi, Dietmar Tutsch
论文: ECCV 原文
代码: https://github.com/matteandre/LiFlow
领域: 自动驾驶
关键词: 激光雷达、场景补全、流匹配、近邻对应、倒角距离
一句话总结¶
LiFlow 将带局部噪声的单帧 LiDAR 扫描直接流向完整场景,用近邻流匹配建立运动监督、用倒角距离匹配补足覆盖,在少量积分步下获得较低几何误差,但细粒度占据率仍不是最优。
研究背景与动机¶
车载激光雷达只能看到光束实际触及的表面,遮挡后的结构和远处稀疏区域不能靠简单复制观测点恢复。 场景补全因此不是普通的点云加密:模型既要增加点数,也要推断原始扫描未充分观测到的几何。 体素方法受输出网格分辨率限制,点级生成方法则能直接改变三维坐标,保留更细的表面结构。 LiDiff 和 LiDPM 已将扩散模型用于这种场景尺度的生成,但让整个室外场景从全局高斯噪声中出现并不容易。
为保留空间结构,LiDiff 在训练时对完整场景施加局部噪声,LiDPM 则从中间扩散时刻开始反向生成。 问题是训练起点仍依赖完整场景,而实际部署只有不完整扫描,必须用观测点构造一个替代起点。 这不是条件信息偶尔缺失,而是训练和推理的初始点云分布本来就不同。 仅仅换一个更快的求解器不能消除这个问题;模型可能仍从训练中不常见的空间布局开始移动点。
流匹配允许直接连接一个数据相关的源分布和目标分布,不要求源必须是与场景无关的高斯云。 但扫描和完整场景都是无序点集,不能直接把两组数组相减,必须先决定每个源点朝哪里运动。 LiFlow 用最近邻给出局部可学习的方向,再用集合级覆盖监督缓解多个源点挤向同一目标的问题。 核心 idea:从部署时真正可获得的扫描构造训练起点,把“起点一致性”和“点集如何对应”一起纳入流匹配,而不是在推理阶段补一个近似起点。
方法详解¶
整体框架¶
输入是单帧扫描 \(P\),输出是补全点云,而不是语义类别、检测框或带类别的占据体素。 训练还需要与该扫描对应的完整场景 \(G\);论文通过位姿对齐多帧并移除运动物体构造监督地图。 流程由扫描初始化、近邻流匹配、倒角距离匹配、条件积分与细化组成,前两项损失相关设计只在训练阶段使用完整场景。 推理时只保留同样的扫描初始化与学习到的条件速度场,反复积分后可接一个已有细化网络。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400, 'subGraphTitleMargin': {'top': 8, 'bottom': 16}}}}%%
flowchart TD
Input["单帧扫描 P"] --> Init["扫描初始化"]
subgraph Training["仅训练"]
NFM["近邻流匹配"] --> CDM["倒角距离匹配"]
end
Init -->|训练起点| NFM
Target["完整场景 G"] -->|近邻监督| NFM
Target -->|覆盖监督| CDM
Init -->|推理起点| Solve["条件积分与细化"]
CDM -.->|联合训练速度场| Solve
Input -->|扫描条件| Solve
Solve --> Output["补全点云"]
图中的训练分支表示监督计算依赖,不表示推理时先执行一次最近邻搜索、再执行一次倒角距离优化。 完整场景 \(G\) 不会在推理时进入网络,最近邻目标也不是测试时额外提供的答案。 速度场使用 MinkUNet,网络内部量化分辨率为 0.05 m,但最终预测对象仍是点级坐标运动。 因此“点级补全”不等于“完全不使用体素化计算”,内部编码与输出表示需要分开理解。
关键设计¶
1. 扫描初始化:让训练起点确实能在部署时构造
论文先从扫描中采样 \(N=18{,}000\) 个点,再将这些点重复 \(K=10\) 次,得到 \(M=180{,}000\) 个点。 对每个重复点独立加入标准高斯坐标偏移,便得到源点云 \(x_0\)。 重复提供输出所需的点数,独立扰动打破相同坐标,使多个副本有机会沿不同方向移动。 这个起点保留了扫描所在区域的空间布局,不需要从覆盖整个场景的无结构噪声开始。 最重要的是,训练与推理都执行这同一构造,不在训练时偷偷使用完整场景来生成源点。
“一致”只指构造源分布的规则和可用信息一致,并不意味着每次噪声采样相同。 训练目标则从完整场景无放回随机采样 \(180{,}000\) 个点,数量相同并不会自动产生一一对应。 若把随机顺序的目标点与源点直接配对,附近源点可能被拉向相距很远的不同结构。 因此初始化解决可部署性,下一步的对应关系才决定速度监督是否具有局部几何意义。
2. 近邻流匹配:用局部对应建立可学习的速度监督
近邻流匹配(Nearest Neighbor Flow Matching,NFM)对每个源点在完整目标中寻找欧氏距离最近的点。 它将这个最近邻作为源点的终点,以两者之间的直线插值构造随机时刻的训练状态。 网络接收该状态、时刻和扫描条件,学习从源点指向所配终点的位移向量。 这使“怎样从扫描走向完整场景”变为带明确监督的向量场回归,而不是在推理时猜测扩散噪声层级。
以下统一符号概括正文中的直线插值机制,不将缓存里缺失运算符的公式视为可逐字引用的原式:
这里 \(q_i\) 是训练时分配的最近邻,\(v_i\) 是速度监督;\(t\) 从 \([0,1]\) 均匀采样。 NFM 用预测速度与该监督之间的平方误差训练网络,不需要每次训练都跑完整积分轨迹。 作者将这种直线数据相关路径联系到最优传输,但实现并没有求解全场景的一一最优点匹配。 最近邻可让多个源点选择同一个终点,局部距离短并不意味着完整场景的每个部分都能被覆盖。
3. 倒角距离匹配:让局部移动也关心整体覆盖
如果只拟合最近邻位移,模型容易在已有观测附近形成密集点簇,却遗漏目标中的其他区域。 倒角距离匹配(Chamfer Distance Matching,CDM)为此增加双向点集距离监督。 正文式(12)围绕源点加预测位移形成的终点估计计算目标距离;它不是对完整推理轨迹逐步反向传播。 其重点是约束预测位移所暗示的结果,而不只约束位移是否贴近某个预先指定的最近邻。 缓存该式运算符有缺失,因此此处只解释机制,不把修补后的表达式冒充作者精确原式。
双向倒角距离先统计每个生成点离目标集合最近表面的距离,再统计每个目标点离生成集合的距离。 前一个方向抑制离开真实表面的杂点,后一个方向会惩罚没有生成点靠近的目标区域。 训练定义使用两组最近邻平方距离各自的均值之和,这与仅惩罚生成点偏离表面不同。 但即使双向距离较小,也不能保证每个目标点只对应一个源点,因此 CDM 不是严格双射约束。 它缓解覆盖问题而不消除多对一匹配,这正是低 CD 与高分辨率体素 IoU 不总能同步提高的原因。
4. 条件积分与细化:从监督速度到可用的稠密点云
推理从同样的 \(x_0\) 开始,用网络在当前点云与时刻上预测速度,按 Euler 方法从 \(t=0\) 推进到 \(t=1\)。 默认使用 10 步、步长 \(h=0.1\);每次更新都重新估计当前状态下的速度,而不是一次预测后重复同一个位移。 扫描条件通过无分类器引导(classifier-free guidance)控制生成,默认引导权重为 \(w=6.0\)。 它组合有条件与无条件预测以加强扫描约束,但论文没有给出其作为硬几何一致性保证的证明。
生成完成后,可选的 LiDiff 细化网络为每个点预测 \(\kappa=6\) 个偏移,得到更密的局部几何。 基础模型输出 \(180{,}000\) 点,细化后为 \(1{,}080{,}000\) 点;后者是按论文参数计算的数量。 该细化器采用官方代码与已在 SemanticKITTI 训练的权重,不是 LiFlow 新提出的独立创新模块。 结果中的 \(\dagger\) 明确表示使用细化器,不能把带细化的提升全部归因于流匹配本体。
一个完整示例¶
以评测范围 50 m 内的一帧道路扫描为例,远处车体可能只有少量回波,相邻遮挡区域则没有密集表面点。 采样的 \(18{,}000\) 个观测点经重复和独立噪声变为 \(180{,}000\) 个起始粒子,但此时并没有真正恢复车体。 训练时,完整地图为这些粒子提供近邻方向,双向距离再要求终点估计不要只聚集在已看到的车身一角。 测试时没有完整地图:MinkUNet 根据当前粒子布局与原始扫描,在 10 次更新中推断应补出的表面。 可选细化器最后把每个生成点扩展为 6 个局部点,补充密度和细节。 这是按方法构造的流程示例,不是论文报告的某个实例级检测成功案例。
损失函数 / 训练策略¶
训练总目标将 NFM 和 CDM 加权相加,默认权重分别为 \(\lambda_{\mathrm{NFM}}=1\) 与 \(\lambda_{\mathrm{CDM}}=0.1\)。 这两个权重控制速度监督和集合覆盖监督,不是推理时两个阶段执行次数的比例。 训练以概率 \(p=0.1\) 丢弃扫描条件,使同一个网络能够提供无分类器引导所需的无条件预测。 骨干沿用 LiDPM 的 MinkUNet 变体,将 LiDiff 中的 Batch Normalization 替换为 Instance Normalization。 论文使用 Adam、batch size 4、20 个 epoch,以及衰减率为 \(\alpha=0.9999\) 的指数移动平均(EMA)。 训练和推理硬件为 NVIDIA A100 80 GB;论文没有在已读正文中提供学习率,不能据常见设置自行补写。
实验关键数据¶
主实验¶
训练使用 SemanticKITTI 序列 00–07、09–10,验证使用序列 08;跨环境评测为 Apollo Columbia Park 序列 00。 Apollo 使用相同传感器、不同环境,且不参与 LiFlow 训练,因此它验证跨环境迁移,不等于跨传感器泛化。 两个数据集均限制扫描范围为 50 m,完整场景由多帧聚合并移除运动物体得到。 CD 越低越好;JSD 比较在 0.5 m 网格上体素化并投影到鸟瞰图后的分布,越低越好。 Voxel IoU 在 0.5、0.2、0.1 m 三种网格上比较占据集合,越高越好,不是语义类别 mIoU。 原表把 JSD 标为米,但散度不是长度;下表保留原数值而不沿用这个单位。CD 单位沿用原表,不由损坏公式推断实现细节。
SemanticKITTI 验证集主结果节选,来源:原文表 1,第 9 页。LiDiff、LiDPM、LiFlow 分别使用 50、20、10 个生成步。
| 方法 | CD(原表 m) | JSD | IoU 0.5 m(%) | IoU 0.2 m(%) | IoU 0.1 m(%) |
|---|---|---|---|---|---|
| LiDiff† | 0.375 | 0.416 | 32.4 | 23.0 | 13.4 |
| LiDPM† | 0.377 | 0.403 | 36.6 | 25.8 | 14.9 |
| LiFlow | 0.309 | 0.416 | 31.6 | 13.1 | 3.8 |
| LiFlow† | 0.228 | 0.367 | 37.2 | 25.1 | 12.9 |
LiFlow† 的 CD 和粗网格 IoU 有优势,但 0.1 m IoU 低于 LiDPM†,不能概括为所有指标领先。 基础 LiFlow 与 LiFlow† 的差别也说明细化器显著改变最终密度和占据表现。
Apollo 步数分析节选,来源:原文表 2,第 11 页。下列均使用细化器,时间为论文报告的每帧推理时间。
| 方法 | 步数 | CD(原表 m) | JSD | IoU 0.1 m(%) | 时间(s/帧) |
|---|---|---|---|---|---|
| LiDiff† | 10 | 0.350 | 0.343 | 6.7 | 7.5 |
| LiDPM† | 20 | 0.406 | 0.400 | 12.7 | 12.4 |
| LiFlow† | 5 | 0.277 | 0.346 | 11.0 | 4.8 |
| LiFlow† | 10 | 0.282 | 0.350 | 11.1 | 7.4 |
| LiFlow† | 50 | 0.286 | 0.352 | 10.6 | 28.9 |
5 步 LiFlow† 已有较低 CD,增加到 50 步并未改善该指标;这支持少步生成,但不支持“步数越多越好”。 同表中 10 步 LiDiff† 的 JSD 为 0.343,仍低于 5 步 LiFlow† 的 0.346,跨环境优势同样不是所有指标全面领先。
消融实验¶
损失权重消融节选,来源:原文表 3,第 12 页,Apollo 序列 00,均为带细化器版本,按默认 10 步设置解读。
| 配置 | NFM 权重 | CDM 权重 | CD(原表 m) | JSD | IoU 0.5 m(%) | IoU 0.1 m(%) |
|---|---|---|---|---|---|---|
| 仅 NFM† | 1 | 0 | 0.325 | 0.356 | 34.8 | 10.6 |
| 仅 CDM† | 0 | 1 | 0.323 | 0.397 | 25.3 | 6.7 |
| 等权组合† | 1 | 1 | 0.285 | 0.364 | 31.4 | 10.0 |
| 默认组合† | 1 | 0.1 | 0.282 | 0.350 | 32.9 | 11.1 |
默认组合比仅 CDM† 的 0.1 m IoU 高 4.4 个百分点,但比仅 NFM† 的 0.5 m IoU 低 1.9 个百分点。 因此两项监督互补的证据更准确地说是改善一组指标的取舍,而非每项损失都单调提高全部指标。
关键发现¶
- 表 4(第 13 页)中,细化版本由 BN 改为 IN 后,CD 从 0.340 降至 0.282,0.1 m IoU 从 7.0% 升至 11.1%。
- 同表未细化版本的 JSD 却由 BN 的 0.397 变为 IN 的 0.406;正文“所有指标改善”的表述存在例外,应以表值为准。
- 速度优势主要来自达到较好质量所需步数更少;表 2 中 50 步 LiFlow† 耗时 28.9 s,并不比 50 步 LiDPM† 的 27.2 s 更快。
亮点与洞察¶
- 训练起点被当作模型设计的一部分,而不是采样实现细节。这个视角可用于检查其他逆问题是否在训练时使用了部署不可获得的信息。
- 最近邻监督给出局部方向,双向集合距离补充覆盖压力。两者分别处理“往哪里走”和“哪些区域没人到达”,比笼统地增加重建损失更易解释。
- 论文同时报告 CD 与多尺度占据率,暴露了表面贴合和空间覆盖并非同一目标。只挑一个指标会掩盖点簇集中造成的缺口。
局限与展望¶
- 作者明确承认 NFM 缺乏一一对应约束,CDM 只能缓解这一问题;细网格占据仍落后于部分基线。
- 读者判断:可以研究局部容量约束或近似传输匹配,减少多个源点共享同一目标,但必须同时验证场景尺度下的计算成本。
- 评测真值移除了运动物体,且没有提供检测、导航或语义分割的下游增益实验,不能直接声称提升动态驾驶安全性。
- Apollo 仅覆盖同传感器的环境变化;不同扫描线数、天气、传感器噪声和严重遮挡下的稳健性仍需独立验证。
- A100 上带细化的 5 步推理仍需 4.8 s/帧,“更快”是相对这些生成基线而言,不代表满足实时驾驶延迟。
- 缓存多处公式损坏,本文只保留可由正文确认的机制概括;未核查代码实现,也不推断未报告的精确损失实现或学习率。
相关工作与启发¶
- 对比 LiDiff:两者都保留扫描附近的局部空间结构,LiFlow 的区别是训练起点直接来自不完整扫描;最终细化器则沿用 LiDiff。
- 对比 LiDPM:后者用中间扩散状态改善点级补全,LiFlow 将起点一致性和点对应纳入训练目标,而不是继续调整反向扩散起始时刻。
- 对比 PUFM:原文介绍 PUFM 用 EMD 预对齐进行单物体点云上采样;LiFlow 面向多物体室外场景,用最近邻和 CDM 构造对应,不能视为等价的全局最优匹配。
- 研究启发:可联合观察每个目标区域接收的源点数量和细网格占据,定位覆盖不足究竟来自匹配、生成还是细化;这是读者建议,不是本文已完成实验。
评分¶
- 新颖性: 4/5。将可部署源分布与场景尺度流匹配结合,贡献明确,但最近邻与倒角距离本身不是新算子。
- 实验充分度: 4/5。包括域内、跨环境、步数、损失和归一化消融,但缺少动态场景与下游任务验证。
- 写作质量: 4/5。分布失配动机清楚,个别全面性表述和 JSD 单位需要结合表格谨慎阅读。
- 价值: 4/5。为点级场景补全提供了实用的少步生成思路,离实时部署和可靠细粒度占据仍有距离。