Object Tracking
学习目标跟踪在计算机视觉中如何运作。发现如何使用 Ultralytics YOLO26 来识别并监控具有唯一 ID 的对象,以进行实时分析。
目标跟踪是计算机视觉 (CV)中的一个动态过程,涉及在视频中识别特定实体并监控它们在一系列帧中的移动。与将每个快照孤立处理的静态图像分析不同,跟踪引入了时间维度。这使人工智能 (AI)系统能够为每个检测到的项目(如汽车、人或动物)分配唯一的识别号 (ID),并在该对象移动、改变方向或暂时被遮挡时维持该身份。这项能力是高级视频理解的基石,使机器能够分析行为、计算轨迹并从原始素材中得出可操作的见解。
目标追踪的工作原理#
现代追踪系统通常采用“检测式追踪”(tracking-by-detection) 范式。该工作流程结合了强大的检测模型与专门的算法,以关联随时间变化的目标检测结果。该过程通常分为三个主要阶段:
-
**检测:**在每一帧中,诸如最先进的YOLO26之类的目标检测模型会扫描图像以定位感兴趣的对象。该模型输出定义每个对象空间范围的边界框。
-
**运动预测:**诸如卡尔曼滤波之类的算法根据对象的当前速度和轨迹来估计其未来位置。这种预测减少了下一帧的搜索空间,从而使系统更加高效。
-
**数据关联:**系统使用诸如匈牙利算法等优化方法将新的检测结果匹配到现有的跟踪轨迹。这一步骤通常依赖于诸如交并比 (IoU)等指标来衡量预测框与新检测结果的重叠程度。高级跟踪器还可以使用视觉特征提取来重新识别外观相似的对象。
目标追踪与目标检测的对比#
虽然这些术语密切相关,但它们在机器学习 (ML)流水线中起着不同的作用。
- 目标检测 回答的是“这张图像中有什么,在哪里?”的问题。它是无状态的,这意味着它没有对前一帧的记忆。如果一辆车在视频中行驶,检测器在第 1 帧看到一辆“车”,在第 2 帧也看到一辆“车”,但它并不知道它们是同一辆车。
- 目标跟踪回答了这样一个问题:“这个特定的对象要去哪里?”它是具有状态的。它将第 1 帧中的“车”与第 2 帧中的“车”连接起来,使系统能够记录“车 ID #42”正在从左向右移动。这对于预测建模和计数等任务至关重要。
实际应用#
保持对象身份的能力使得复杂实时推理应用程序能够在各个行业中得以实现。
- **智能交通系统:**跟踪对于自动驾驶汽车安全导航至关重要。通过跟踪行人和其它车辆,汽车可以预测潜在的碰撞。此外,交通工程师使用这些系统进行速度估计以执行安全法规并优化交通流。
- **零售分析:**实体店利用零售人工智能来了解客户行为。跟踪使店长能够执行对象计数来衡量人流量,使用热力图分析展示架前的停留时间,并优化排队管理以减少等待时间。
- **体育分析:**在职业体育中,教练将跟踪与姿态估计结合起来,以分析运动员的生物力学和球队阵型。这些数据通过揭示肉眼无法看到的模式来提供竞争优势。
使用 Python 实现追踪#
Ultralytics 使实现高性能跟踪变得很简单。库中的 track 模式会自动处理检测、运动预测和 ID 分配。下面的示例展示了如何使用与Ultralytics 平台兼容的 YOLO26 模型来跟踪视频中的对象。
from ultralytics import YOLO
# Load the official YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Track objects in a video file or webcam (source=0)
# 'show=True' displays the video with bounding boxes and unique IDs
results = model.track(source="https://ultralytics.com/images/bus.jpg", show=True)
# Access the unique tracking IDs from the results
if results[0].boxes.id is not None:
print(f"Detected Track IDs: {results[0].boxes.id.cpu().numpy()}")相关概念#
为了充分理解跟踪的生态系统,探索实例分割会很有帮助,它跟踪对象的精确像素级轮廓而不仅仅是一个框。此外,多目标跟踪 (MOT) 挑战赛通常涉及广泛使用的基准测试,如MOTChallenge,以评估算法处理拥挤场景和遮挡的表现。为了在生产环境中进行部署,开发人员通常利用诸如NVIDIA DeepStream或OpenCV等工具将这些模型集成到高效的流水线中。






