跳转至

SynFlow: Scaling Up LiDAR Scene Flow Estimation with Synthetic Data

会议: ECCV 2026
论文: ECCV 2026 / 项目页
代码: https://huggingface.co/datasets/KTH/SynFlow
领域: 自动驾驶
关键词: 激光雷达场景流、合成数据、仿真到真实迁移、零样本泛化、数据引擎

一句话总结

SynFlow 用 CARLA 搭了一条「运动导向」的合成数据引擎,生成 4,000 条序列(约 94 万帧)带无噪逐点真值的 SynFlow-4k,仅用合成监督训练的模型零样本迁移到 nuScenes/TruckScenes/Aeva,在 TruckScenes 上以 0.274 超过用 20% 真实标注有监督训练的 ∆Flow(0.402)31.8%,并且只需 5% 真实标签微调就能超过用 4 倍预算从零训练的基线。

研究背景与动机

激光雷达场景流估计两个连续扫描之间每个点的三维位移,是一种不依赖语义类别的运动表示,对下游规划与交互比「检测 + 跟踪」更直接。但它的进展一直被监督瓶颈卡住:为真实驾驶数据标注稠密、准确的三维运动几乎不可行,于是近年的主流做法转向在大量无标注真实序列上做自监督——SeFlow 用刚性聚类构造伪标签,TeFlow 引入多帧监督,VoteFlow 强调局部刚性,还有工作用循环一致性或神经欧拉场做约束。这些代理信号本质上都建立在几何一致性假设上,在点云稀疏、测量有噪声、存在非刚性运动时既嘈杂又欠约束;更关键的是经验证据显示,单纯把无标注真实数据的规模堆上去,收益是递减的,与全监督方法之间始终留着一条明显的差距。

这就构成一个很别扭的局面:稠密三维运动标签贵到几乎买不到,而能从真实数据里免费榨出来的代理监督又天然学不准。本文的判断是,与其在真实数据上继续修补代理信号,不如换一个监督来源——仿真器内部本来就精确知道每个刚体在两个时刻的位姿,这类监督既无噪声、又不受遮挡影响。但已有的合成激光雷达管线(SHIFT、CarlaScenes、ReSimAD、MegaSynth 等)是为检测、分割和域迁移设计的,优化目标是语义真实感与传感器噪声对齐;图像侧的合成场景流数据集(如 FlyingThings3D)追求的是视觉真实感。换句话说,还没有人为「稠密运动复杂度」本身设计过合成数据

本文的切入角度是:场景流学习依赖的是物理一致的刚体运动学,而不是纹理或语义,所以三维运动任务的 sim-to-real 行为与外观主导的任务不同——仿真环境只要刚体状态准确,就能提供可迁移的监督。基于这一点,SynFlow 把仿真数据生成从「像不像真实传感器」改成「动得够不够丰富」,用三条过程化策略主动控制路网拓扑、速度制度与多智能体交互。核心 idea:把 LiDAR 场景流的监督来源整体搬到仿真里,用运动导向的过程化生成把动力学复杂度做满(4k 序列 / 94 万帧,是 nuScenes 标注帧量的 34 倍),从而得到一个域不变的运动先验——它零样本可跨传感器迁移,也能作为少量真实标签微调的高质量初始化。

方法详解

整体框架

SynFlow 由两半组成,且两半都不含任何域适应模块。前半是数据引擎:给定一张 CARLA 城镇拓扑和一个传感器配置,用三条采样策略分别回答「在哪跑、跑多快、周围怎么动」,在确定性同步模式下按固定步长 rollout,把每帧的 LiDAR 点云、自车位姿、对齐后的场景流真值、有效性掩码和逐点实例元数据写进 HDF5。后半是训练与评估协议:用 ∆Flow 骨干在这批合成监督上做有监督预训练,之后要么零样本直接测真实基准,要么只用 5%–20% 的真实标注继续微调。

这条流水线的产出规模就是标题里「scaling up」的具体含义:4,000 条序列、939,083 帧带真值的样本,相比 nuScenes 训练集的 137,575 帧标注是 34 倍、相比 TruckScenes 的 101,902 帧是 46 倍,而生成一条序列只需 3–6 分钟(i7-12700KF + 单张 RTX 3090)。传感器方面刻意混用 32 线与 64 线配置,让模型学到的运动先验不含特定线束的偏置。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["CARLA 城镇拓扑<br/>+ 传感器配置"] --> B["拓扑离散化策略<br/>贪心路线库"]
    B --> C["速度制度覆盖策略<br/>道路限速 + 高速城镇"]
    C --> D["多智能体交互策略<br/>密度扰动 + 死锁放行"]
    D --> E["同步 rollout<br/>Δt = 0.1 s,32/64 线"]
    E --> F["无噪标签导出<br/>实例投票 + 刚体位姿"]
    F --> G["SynFlow-4k<br/>4k 序列 / 94 万帧"]
    G --> H["∆Flow 有监督预训练"]
    H -->|零样本| I["真实基准评测"]
    H -->|5–20% 真值微调| I

关键设计

1. 拓扑离散化策略:把路线库当成覆盖问题来搜

随机撒点的采集方式会让模型反复看到同几种路型,而环岛、复杂立交这类长尾几何在真实数据集里同样稀有,模型因此学不到对应的运动上下文。SynFlow 的做法是把城镇的可行驶拓扑离散成细粒度车道段三元组 (road_id, section_id, lane_id),维护一个已覆盖集合 \(C\),再用贪心搜索逐步扩充路线库:一条候选路线 \(R\) 只有满足 \(|R \setminus C| > \tau\)(即带来足够多没走过的车道段)才会被接受。

这样每条被采纳的路线都必须「贡献」新的几何结构,仿真器于是被逼着开到 Town04 的环线高速、Town06 的复杂立交上,而不是在几条主干道之间循环。消融实验里这条策略是单项收益最大的(1k 序列、Aeva 零样本 Dynamic 指标 0.346 → 0.330),说明运动先验的泛化不只取决于样本数量,也取决于采样到的几何分布。

2. 速度制度覆盖策略:用道路类型的限速撑开位移量级

真实场景的位移量级跨度极大:高速上相邻两帧同一点可能移动几米,城市走走停停则接近零。若仿真数据几乎全是低速城市交通,模型在高速度尾部会系统性崩掉——而这正是自监督方法在 TruckScenes 这类长途高速数据上表现很差的原因之一。SynFlow 不去逐场景手调目标速度(那样代价高、覆盖也不全),而是把速度交给「道路类型决定的限速 + CARLA Traffic Manager」自然产生:场景初始化时在地图上采样合法 waypoint 让车辆按所在路段限速行驶,同时刻意把含高速路段的地图(Town04 的环线高速、Town06 的长直多车道)纳入生成池。

这样一来高位移样本无需额外参数搜索就会自然出现,与低速度的 stop-and-go 城市流互补,位移分布的两端都被覆盖。消融中加上高速城镇后 Dynamic 指标从 0.330 进一步降到 0.319,收益主要体现在 Three-way EPE 的前景动态项(FD)上(50.21 → 48.17 cm),说明受益的正是动态物体的大位移预测。

3. 多智能体交互策略:靠交互密度与死锁处理提高困难帧占比

场景流的难点在相对运动,而真实日志里绝大多数帧的相对运动接近常速直线,真正难的是合流、超车、紧急制动这类非线性事件,它们既稀有又常伴随遮挡。SynFlow 在 rollout 阶段扰动局部交通密度与 NPC 行为策略,让这类交互密集的场景在数据中出现的频率远高于自然发生的比例,从而提供更丰富的非线性相对运动。

同时流水线加了一条轻量的死锁处理规则:若自车因为路口被堵而长时间静止,就直接覆盖本地信号灯放行、让 rollout 继续。这条规则看似琐碎,但它保证的是监督的「有效率」——静止帧对场景流几乎没有监督价值,一条被堵死的序列等于白生成。所以这条策略的作用方式是提高困难帧占比,而不是单纯堆总帧数。

4. 无噪标签导出:用实例投票与刚体变换生成逐点真值

场景流真值要求每个点在 \(t+1\) 时刻的位置,但 \(t+1\) 的扫描里点与点并不一一对应(遮挡、稀疏、非重复扫描),所以真值不能靠配准去凑。仿真器虽然有每个 agent 的精确刚体位姿 \(\mathbf{T}_k^t \in SE(3)\),问题是它的 actor ID 与 LiDAR 点的逐点实例标签并不是同一套编号,无法直接对上。SynFlow 分两步解决:先在 \(t\) 时刻取 agent \(k\) 的包围框,在框内对逐点实例标签做多数投票确定该 agent 的标签,得到属于它的点集;再利用该 agent 两个时刻的刚体位姿把点搬过去。

\[ \hat{u}_k^{t} = \arg\max_{u}\sum_{i \in \mathrm{bbox}(k,t)}\mathbf{1}[u_i = u],\qquad \mathcal{M}_k^{t}=\{\,\mathbf{p}_i \in \mathcal{P}_t \mid u_i = \hat{u}_k^{t}\,\} \]
\[ \mathbf{p}_i^{\star} = \mathbf{T}_k^{t+1}\,(\mathbf{T}_k^{t})^{-1}\,\mathbf{p}_i,\qquad \mathbf{f}_i = \mathbf{p}_i^{\star} - \mathbf{p}_i \]

第一步把「点标签空间」和「actor 空间」对齐,第二步用 \((\mathbf{T}_k^{t})^{-1}\) 把点变到 agent 本体坐标系、再用 \(\mathbf{T}_k^{t+1}\) 放回 \(t+1\) 时刻的世界坐标,差值就是真值流(公式按原文文字描述整理,符号细节以原文为准)。它的价值在于:标签来自仿真器内部物理状态而非估计,因此无噪声;而且它天然覆盖那些在 \(t+1\) 时刻被遮挡的点——恰恰是真实标注最贵、自监督代理信号最不可靠的那部分。

一个完整示例

以 Town06(复杂立交为主)为例走一遍:路线库的贪心搜索选中一条能带来足够多未访问车道段的路线,自车在路线起点生成,挂载 64 线 LiDAR,周围在局部邻域内生成异质 NPC(车辆 + 行人),由 Traffic Manager 统一控制。仿真以 \(\Delta t = 0.1\) s 同步推进。

在第 \(t\) 帧,某个激光点落在前方一辆正在减速的卡车上:框内多数投票把它判给该卡车,于是取卡车的两个位姿做刚体变换。若该卡车此刻以约 12 m/s(≈43 km/h)行驶,0.1 s 内位移约 1.2 m,这个向量就是该点的真值流;同一帧里人行横道上行人的点只会得到很短的向量。走到路口时若自车被堵住超过阈值,死锁规则放行信号灯让 rollout 继续,避免这一帧之后整段序列退化成静止帧。每一帧都被写进 HDF5,并附带标记出该帧哪些点提供有效监督的掩码。

损失函数 / 训练策略

默认骨干是 ∆Flow:把 5 帧序列按 0.15 m 体素、38.4 m 范围体素化,先聚合时序上下文,再用稀疏三维卷积网络(MinkUNet 一类)提取运动感知特征,最后把体素特征插值回 \(t\) 时刻的点上解码出前向场景流。损失沿用 ∆Flow 的有监督场景流损失,包含运动感知、类别平衡、实例一致三个项(⚠️ 三项的具体形式本文未改动,符号细节以 ∆Flow 原论文为准);因为监督直接来自仿真真值,不需要任何几何一致性或循环约束类的自监督项。

优化为 15 个 epoch、Adam、学习率 0.002、总 batch size 20,只做常规增强(z 轴高度扰动、随机 x-y 翻转),不做任何域适应。使用方式有两种:零样本直接用合成预训练权重测真实基准;或先在合成真值上预训练、再在目标真实基准的 5%/10%/20% 子集上继续有监督微调。

实验关键数据

主实验

主指标是 Dynamic Bucket-Normalized EPE:先把点按运动速度分到不同桶,再用「仅用自车里程计做运动补偿」的基线在各桶内的误差做归一化。因此表中 Ego Motion Flow 基线恰好是 1.000,而 0.242 意味着误差降到该基线的 24.2%(⚠️ 分桶方式与归一化细节见原文引用的 Khatri et al.)。辅助指标为 Three-way EPE,按前景动态(FD)、前景静态(FS)、背景静态(BS)分别报厘米级误差。

方法 监督 nuScenes Mean ↓ nuScenes CAR TruckScenes Mean ↓ TruckScenes CAR
Ego Motion Flow 1.000 1.000 1.000 1.000
SeFlow 100% 无标注真实 0.544 0.396 0.681 0.494
VoteFlow 100% 无标注真实 0.538 0.355 0.680 0.517
SeFlow++ 100% 无标注真实 0.509 0.327 0.653 0.519
TeFlow 100% 无标注真实 0.395 0.303 0.425 0.254
DeFlow 20% 有标注真实 0.314 0.163 0.570 0.180
Flow4D 20% 有标注真实 0.279 0.204 0.456 0.176
∆Flow 20% 有标注真实 0.216 0.138 0.402 0.196
SynFlow-4k(零样本) 0% 真实,仅合成 0.242 0.177 0.274 0.109
SynFlow-4k + FT 20% 有标注真实 0.157 0.110 0.266 0.082

零样本一行完全没见过真实数据:nuScenes 上 0.242,比最好的自监督基线 TeFlow(0.395)好 38.7%,已经逼近用 20% 标签有监督训练的 ∆Flow(0.216);TruckScenes 上 0.274,比 TeFlow(0.425)好 35.5%,并超过有监督 ∆Flow(0.402)31.8%。跨到 TruckScenes 这个双 64 线、以大型商用车为主、预训练时从未见过的平台还能赢,说明迁移的是运动学而不是传感器特性。

标签效率方面,微调 20% 真实标签后 nuScenes 降到 0.157(比 ∆Flow 的 0.216 好 27.3%),TruckScenes 降到 0.266(好 33.8%)。

训练方式 真实标签比例 nuScenes Mean ↓ TruckScenes Mean ↓
∆Flow(从零有监督) 20% 0.216 0.402
SynFlow-4k(零样本) 0% 0.242 0.274
SynFlow-4k + FT 5% 0.201 0.271
SynFlow-4k + FT 10% 0.175 0.261
SynFlow-4k + FT 20% 0.157 0.266

消融实验

合成策略的消融在 1k 序列、Aeva 数据集上做零样本评测(P1 = 拓扑覆盖,P2 = 速度制度/高速城镇):

P1 拓扑覆盖 P2 速度制度 Dynamic Mean ↓ Three-way EPE Mean ↓ FD (cm) ↓
0.346 18.96 52.34
0.331 18.45 51.25
0.330 17.89 50.21
0.319 17.11 48.17

骨干无关性(SynFlow-4k 训练、Aeva 零样本):只用自车运动补偿的 Ego Motion Flow 基线 Dynamic 指标为 1.000(Three-way EPE 44.31 cm),换三个不同骨干后 DeFlow 降到 0.426、Flow4D 0.308、∆Flow 0.288,说明这套合成监督不是为某个架构调出来的。

合成与真实的互补性(Aeva 零样本):UniFlow 在 Argo-v2 + nuScenes + Waymo 的巨量真实数据并集上预训练,单独用是 0.303;只用 SynFlow-4k 是 0.288;两者结合进一步降到 0.263。最戏剧性的是行人类别,从 UniFlow 的 0.398 降到结合后的 0.251(约 37% 改善)。

关键发现

  • 拓扑覆盖是最重要的单项设计:在 1k 序列预算下单独贡献 0.346 → 0.330,比单独加高速城镇(0.331)更有效,两者叠加到 0.319;说明运动先验的质量对「采样到哪些几何结构」高度敏感。
  • 速度制度的收益集中在动态大位移上:加上高速城镇后 Dynamic 指标只降 0.011,但 Three-way EPE 的 FD 项从 50.21 降到 48.17 cm,正好对应高速尾部的动态物体——这也解释了为什么合成预训练在长途高速的 TruckScenes 上收益最大。
  • 合成数据规模在 2k 附近收益最陡,4k 后趋稳:1k → 2k 提升最明显,之后精度开始饱和,作者据此认为刚体运动学的核心分布到 4k 已被基本覆盖;分类别看车辆类受益最多(TruckScenes 零样本 CAR 0.109,甚至优于它的有监督基线均值)。
  • 合成与真实是正交而非替代关系:UniFlow 提供的是真实传感器特性(线束布局、随距离的稀疏性、测量噪声),SynFlow-4k 提供的是稀有交互的稠密运动学;两者结合的提升说明再大的真实数据也补不上小尺寸动态目标(行人)的运动密度。
  • 少数派类别与 Three-way EPE 暴露了真实差距:TruckScenes 零样本的 Three-way EPE 均值是 25.25 cm,而微调后是 6.75 cm、有监督 ∆Flow 是 7.28 cm——即那个 31.8% 的领先是 Dynamic Bucket-Normalized 指标下的结论,在厘米级 EPE 上零样本模型仍远逊于有监督基线;同时 PED/VRU 类别(0.467/0.300)明显弱于 CAR(0.109),行人运动学是仿真到真实最难迁移的部分。
  • 微调存在轻微非单调:nuScenes 上 5% 标签(0.201)就已经超过从零用 20% 标签训练的 ∆Flow(0.216),10% → 20% 继续降到 0.175 → 0.157;但 TruckScenes 上 20%(0.266)反而比 10%(0.261)略差,说明在 20% 预算下 TruckScenes 的微调已接近饱和甚至有过拟合迹象。

亮点与洞察

  • 把「像不像真实传感器」换成「动得够不够丰富」:这是全文最有价值的判断。作者指出三维运动任务与外观主导任务的 sim-to-real 行为不同——场景流依赖物理一致的刚体运动学而非纹理,所以完全不做域适应也能跨传感器迁移,这一点被零样本结果反证。可迁移到任何「监督信号是几何/物理量而非外观」的任务(光流、深度、里程计)。
  • 真值来自仿真器状态而非配准,且不用任何域适应:多数 sim-to-real 工作要花大量篇幅做外观对齐或对抗适应,SynFlow 的整条管线里没有这一块,说明当监督本身足够干净时,域差可以靠任务性质而非对齐模块来消化。
  • 包围框内多数投票对齐实例标签:这是一个很实用的小技巧——仿真器的 actor ID 与点云实例标签是两套编号,直接用位姿对应不上;用 3D 框内投票做桥接,既便宜又鲁棒,任何用 CARLA/Isaac Sim 造带实例标注数据的管线都能直接搬。
  • 死锁放行规则保证监督的「有效率」:不加这条规则,被堵死的序列会退化成大片静止帧——数据量看着很大,实际监督价值接近零。它提醒我们生成式数据集的指标应该是「有效动态帧数」而不是总帧数。
  • 把合成数据当正交先验而不是廉价替代:与 UniFlow 结合后行人类别改善约 37%,这个结论比「合成数据也能用」强得多——它说明真实数据缺的是长尾交互的运动密度,而这恰好是仿真最擅长补的。

局限与展望

  • 生成—训练是开环的:作者承认当前是「先生成后训练」,数据分布由预设策略决定,不会根据模型的学习状态动态调整。可行的改法是闭环/级联学习:用模型的失败样本(特定遮挡模式、稀有速度)反向触发针对性重仿真,主动造「难例」以提高数据效率。
  • 行人等非刚性目标仍是短板:TruckScenes 零样本下 PED/VRU(0.467/0.300)远差于 CAR(0.109),Aeva 上互补实验也显示行人是唯一靠合成显著受益的类别——反向说明仿真里的行人运动模型与真实差距最大;直接加行人骨骼/articulated 运动模型,或对 VRU 类别加大采样权重,是低成本的下一步。
  • 零样本在厘米级 EPE 上并不领先:TruckScenes 零样本 Three-way EPE 25.25 cm 对比有监督 7.28 cm,差距约 3.5 倍。论文主推的 Dynamic Bucket-Normalized 指标按速度桶归一化,对低速/静止目标的权重大,会掩盖绝对误差上的劣势;读者不应把「TruckScenes 超 SOTA 31.8%」直接读成绝对精度全面领先。
  • 仿真点云无噪声可能让先验偏乐观:真实 LiDAR 有测距噪声、雨雾衰减、扫描期间自车运动导致的点畸变,而 SynFlow 的标签与点云都来自干净仿真;一旦下游需要输出不确定度或做高精度配准,这种「过于干净」的先验可能低估真实噪声。加一层传感器噪声/降采样模拟是有价值的对照实验。
  • 34× 的规模优势需要同口径比较:34× / 46× 是帧数之比,但合成序列来自有限的 CARLA 地图(还刻意对 Town12 做了子采样),底层场景布局的多样性远不如帧数所暗示的那样线性增长;「规模」与「多样性」在这篇里的分解还不够干净。
  • 只在一个仿真器上验证:作者提出可迁移到 Isaac Sim 做具身操作等场景,但目前没有跨仿真器的证据,运动先验对物理引擎特性的依赖程度未知。

相关工作与启发

  • vs SeFlow / TeFlow / VoteFlow(无标注真实数据上的自监督):它们把精力投在「如何从几何一致性里挤出代理监督」,代价是信号嘈杂、欠约束,且论文自身证据显示继续堆无标注数据的收益在递减;SynFlow 直接换掉监督来源,用仿真真值替代代理信号,在 TruckScenes 上零样本(0.274)就已经超过这些方法中最好的 TeFlow(0.425)——差异不在模型而在监督的质量。
  • vs UniFlow(巨量真实数据并集上的预训练):UniFlow 走的是「真实数据规模换泛化」,SynFlow 走「仿真运动密度换泛化」。两者的互补实验(0.303 与 0.288 → 结合 0.263)说明它们是正交的两条轴,这也提示未来的基础模型很可能同时需要真实传感器密度和仿真运动密度,而不是二选一。
  • vs ReSimAD / SHIFT / CarlaScenes(自动驾驶合成数据):它们关注语义真实感、环境多样性或传感器域对齐,服务的是检测、分割与域适应;ReSimAD 走的是「真实数据重建 + 目标域仿真」的路线,SynFlow 则完全过程化生成、不依赖真实场景重建,且把优化目标放在动力学而非外观上。
  • vs FlyingThings3D(图像合成场景流):同样用渲染几何产生稠密运动真值,但面向双目图像且强调视觉真实感;SynFlow 把这一思路搬到 LiDAR,并额外解决了两件事——传感器线束的多样性、以及把仿真器 actor 状态翻译成逐点标签的对齐问题。
  • vs 3DSFLabelling(伪自动标注):那条路线是用模型给真实点云打伪标签,误差会随模型传播;SynFlow 的标签来自物理引擎,不依赖任何模型,代价是只能覆盖仿真能造出的场景。

评分

  • 新颖性: ⭐⭐⭐⭐ 首个专为 LiDAR 场景流设计的合成管线,「运动导向而非外观真实」的定位与无域适应的零样本迁移结论有说服力,但每条生成策略单看都是常规的过程化采样手段。
  • 实验充分度: ⭐⭐⭐⭐⭐ 三个真实基准(nuScenes / TruckScenes / Aeva)× 三种监督机制(自监督 / 有监督 / 合成零样本)+ 规模曲线 + 策略消融 + 骨干无关 + 与真实预训练的互补实验,覆盖面相当完整。
  • 写作质量: ⭐⭐⭐⭐ 动机链条清晰、贡献与结论对应得上;扣分点在于 TruckScenes「超 SOTA 31.8%」的表述容易让人忽略厘米级 EPE 上零样本仍大幅落后,以及 34× 规模里未区分帧数与场景多样性。
  • 价值: ⭐⭐⭐⭐⭐ 管线与数据集开源,为「稠密 3D 运动标注不可得」这一长期瓶颈提供了可扩展的替代监督源,且与真实数据预训练互补的结论对自动驾驶基础模型有直接的工程含义。