Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

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 扫描数据。

实际应用#

  • 移动机器人:与人们共用仓库和人行道的机器人会利用附近障碍物的 3D 运动来预测它们一秒后的位置,并重新规划路线避开障碍物。
  • 动态场景重建:4D 高斯泼溅和动态神经辐射场通过学习每个点或高斯随时间的运动来建模移动场景;这种学习得到的场景流能让录制的视频从新的视角重放。
  • 自动驾驶:LiDAR 场景流会在连续扫描之间,将移动的车辆和行人与静态世界区分开来。Waymo Open Dataset 于 2021 年加入场景流标签,标注帧数约为此前真实世界场景流数据集的 1,000 倍。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来