Scene Flow
场景流是场景的 3D 运动场,表示帧间每个可见点的位移向量,可根据立体视觉、RGB-D 或 LiDAR 数据估计。
场景流是场景的三维运动场:对于每个可见表面点,它表示该点从一帧中的位置到下一帧中的位置的 3D 向量。Carnegie Mellon University 的 Sundar Vedula、Simon Baker 及其同事在 1999 年的论文 Three-Dimensional Scene Flow 中引入了这个术语,并将其定义为光流的 3D 对应概念。场景流结合了几何信息和运动信息,因此它能让计算机视觉系统知道每个点的位置以及它以多快的速度移动(以米为单位),包括朝向或远离摄像头的移动。这使场景流成为自动驾驶车辆和机器人技术的核心信号,因为汽车驶出或行人踏入行进路线等情况,都需要通过运动来识别。
场景流与光流#
光流是场景流在图像平面上的投影:它记录每个像素向侧面、上方或下方移动了多远,但不包含沿摄像头视线方向的运动信息。因此,光流完全相同的两个物体,实际运动可能截然不同。场景流利用两个时刻的深度估计恢复缺失的分量,将每个像素沿其视线方向反投影到测得的深度:
import numpy as np
K_inv = np.linalg.inv(np.array([[500.0, 0, 320], [0, 500.0, 240], [0, 0, 1]])) # inverse camera intrinsics
# Two objects with identical optical flow: each moves from pixel (400, 240) to (410, 240) in 0.1 s
for name, depth_before, depth_after in [("cyclist crossing", 8.0, 8.0), ("car approaching", 8.0, 6.0)]:
# Back-project each pixel along its viewing ray to the measured depth
before = depth_before * K_inv @ np.array([400, 240, 1.0])
after = depth_after * K_inv @ np.array([410, 240, 1.0])
# Scene flow is the 3D displacement of the same surface point
flow = after - before
print(f"{name}: scene flow {flow.round(2)} m, speed {np.linalg.norm(flow) / 0.1:.1f} m/s")两个物体都向右移动了 10 个像素,但骑行者横向移动了 0.16 m,速度为 1.6 m/s;汽车则在十分之一秒内接近了 2 m,速度为 20.1 m/s。汽车距摄像头 6 m、以 20 m/s 的速度接近时,会在 0.3 秒后到达摄像头处。
场景流也不同于目标跟踪:目标跟踪通过边界框跟踪物体身份;它也不同于点跟踪:点跟踪会在多帧中跟踪选定的 2D 点。Ultralytics YOLO 速度估计在 2D 跟踪层面运行:它跟踪每个被跟踪的框,并使用整个视图统一的米/像素比例,将像素位移换算为 km/h。这种方法适用于摄像头俯视道路且交通沿图像平行方向移动的场景。
场景流的估计方法#
输入决定采用哪种方法。双目摄像头会在两个时刻提供视差,并提供帧间光流;Moritz Menze 和 Andreas Geiger 于 2015 年发布的 KITTI 场景流基准测试采用了这种配置,包含 200 个训练道路场景和 200 个测试道路场景。RGB-D 摄像头和 LiDAR 会生成两个点云,通常通过传感器融合与摄像头图像合并;FlowNet3D 等网络则会学习直接匹配点云中的点。单目摄像头则依赖学习得到的单目深度和每对帧的光流。
摄像头移动时,所有静止点看起来也在移动,因此完整的系统还会估计自运动,通常依据视觉 SLAM或里程计,并将运动与其不一致的点视为独立运动的点。驾驶场景主要由刚体构成,因此 Menze 和 Geiger 的物体场景流以及 RAFT-3D 等方法会将像素分组成少数几个刚性移动的物体,从而稳定无纹理汽车表面上的估计结果。遮挡是最棘手的情况,因为在帧间出现或消失的点没有可供测量的匹配点。
深度学习模型需要真实传感器无法捕获的稠密真值,因此训练高度依赖合成数据。弗赖堡场景流数据集包括 FlyingThings3D,可渲染数万张双目帧,并提供精确的视差、光流和视差变化标注。仅使用 FlyingThings3D 训练的 FlowNet3D,也能迁移到真实 KITTI LiDAR 扫描数据。










