光流
探索光学流在计算机视觉中的强大功能。了解它如何估算运动、增强视频分析以及推动人工智能创新。
光流是计算机视觉(CV)中的一个核心概念,涉及估算视觉场景中的物体、表面和边缘因观察者(如摄像机)与场景之间的相对运动而产生的运动。它计算出一个向量场,描述两个连续视频帧之间像素或特征的运动方向和速度。这提供了对事物 "如何 "运动的详细、低层次理解,而这正是许多动态场景分析任务的基础。
光流如何工作
大多数光流算法的核心假设是 "亮度恒定",即假设物体上特定点对应的像素强度在短时间内保持不变。通过找到保持这种亮度的位移,算法就能估算出运动。光流计算主要有两种方法:
- 密集光流:这种方法为图像中的每个像素计算运动矢量。它提供了一个高度详细的运动场,对于图像分割和理解复杂场景动态等任务非常有用。Horn-Schunck 方法是一个经典的例子,而RAFT等现代深度学习模型则提供了最先进的性能。
- 稀疏光流:这种方法不分析每个像素,而是跟踪跨帧的一组稀疏的 "有趣 "特征(如边角或关键点)。Lucas-Kanade 方法是一种著名的稀疏算法。这种方法计算效率更高,非常适合只需要特定点运动的应用,如物体追踪。
光流与物体追踪
光流和物体跟踪虽然相关,但解决的问题不同。
- 光流描述了像素的低级运动。它的输出是一组向量,代表两个帧之间的运动。它本质上并不理解 "物体 "的概念,也不会随着时间的推移而保持其特征。
- 物体跟踪物体跟踪是一项更高级的任务,主要是定位特定物体,并在多个帧中跟踪其路径,为其分配一个一致的 ID。跟踪算法通常使用光流等技术作为输入,在物体检测模型(如Ultralytics YOLO模型)识别物体后,预测物体在下一帧中的位置。你可以在 Ultralytics 的物体追踪模式中看到这一功能。
简而言之,光流技术回答的是 "像素是如何移动的",而物体追踪技术回答的是 "那辆车开到哪里去了"。
实际应用
光流对于许多需要从视频中理解运动的应用来说至关重要:
- 自主系统:自动驾驶汽车和机器人使用光流进行视觉测距(估计自身运动)、障碍物探测以及了解环境中物体的相对运动。例如,它可以帮助自动驾驶汽车估计其相对于道路的速度或跟踪附近的车辆。Waymo等公司在很大程度上依赖于运动感知。探索自动驾驶汽车中的人工智能,了解更多详情。
- 视频压缩:MPEG等标准使用与光流类似的运动估计技术,根据前一帧预测后一帧。通过只对运动矢量和预测误差(残差)进行编码,可实现显著的数据压缩。
- 动作识别:理解视频中的人类动作是姿势估计的关键部分,通常涉及分析从光流中得出的运动模式。这对于运动分析和智能健身技术的应用至关重要。
- 视频稳定:数字图像稳定技术可利用光流来估计相机抖动并进行补偿,从而产生更流畅的视频。这种技术在现代智能手机和相机中很常见。
- 医学影像分析:用于跟踪组织运动,如超声心动图中的心肌运动或手术过程中的器官变形。查看期刊等资源 放射学人工智能等资源,了解相关进展。
- 机器人:使机器人能够导航、与物体互动,并根据周围环境运动的视觉反馈执行任务。与ROS等系统的集成通常包括运动分析。
工具和实施
OpenCV等库提供了经典光流算法的实现,其文档包括详细的OpenCV 光流教程。对于深度学习方法,通常会使用PyTorch(访问PyTorch 官方网站)和TensorFlow(访问TensorFlow 官方网站)等框架,通常会利用Hugging Face 等平台提供的预训练模型。训练这些模型需要具有地面真实流量信息的大规模视频数据集,如FlyingThings3D或Sintel 数据集。Ultralytics HUB等平台可帮助管理数据集和模型训练工作流,以完成相关的计算机视觉任务。