YOLOV5 - 视频中的目标跟踪器

2024 年 8 月 28 日 | 阅读 6 分钟

引言

在计算机视觉领域,精确有力地跟踪视频中的对象是一项至关重要且不断发展的任务。对象跟踪包括跟踪特定对象在整个视频序列中的移动,从而实现从监控、自动驾驶汽车到增强现实和视频编辑等各种应用。本文探讨了对象跟踪的世界,并特别关注 YOLOv5 作为一种先进的对象跟踪解决方案。

理解对象跟踪

对象跟踪,总的来说,是在视频帧接一帧地查找和监控指定对象的过程。它在视频分析中的重要性至关重要,因为它为大量应用打开了大门。无论是在自动驾驶汽车的视野中跟踪行人,在监控摄像头的馈送中观察嫌疑人,还是在游戏广播期间跟踪游戏玩家,对象跟踪都能增强态势感知和决策能力。

传统的对象跟踪策略通常依赖于启发式方法、光流或高质量特征来跟踪对象。这些方法虽然在特定情况下很有效,但在遮挡、快速对象移动和不断变化的光照条件等具有挑战性的情况下可能会遇到困难。

YOLOv5

YOLO(You Only Look Once)是一个著名的对象检测和跟踪框架,它兼具精度和速度。YOLOv5 代表了这项技术的最新进展。YOLO 的关键创新在于其实时对象检测能力,使其能够以惊人的速度处理图像和视频。YOLOv5 在其前代产品的基础上,通过改进的性能、更小的模型尺寸和增强的精度进行了扩展。

对象检测与对象跟踪

对象检测和对象跟踪密切相关,但它们服务于不同的目的。对象检测在单个帧中识别和定位对象,通常带有边界框和标签。而对象跟踪则跨多个帧跟踪对象,保持它们的身份和方向。

YOLOv5 专为对象检测而设计,但可以通过在帧之间关联检测来适应跟踪,从而将其转换为对象跟踪工具。

YOLOv5 对象跟踪器:工作原理

YOLOv5 的架构涉及卷积神经网络(CNN),它们在从图像和视频中提取特征方面表现出色。对于对象跟踪,YOLOv5 利用在对象检测过程中获得的丰富特征表示来长期跟踪对象。这包括根据对象的特征匹配连续帧中的对象,并预测它们的未来位置。

特征提取和重识别(re-ID)的概念在 YOLOv5 的跟踪机制中很重要。通过编码对象特征并在后续帧中重新识别它们,YOLOv5 在整个视频序列中保持对象身份。

YOLOv5 用于对象跟踪训练

训练 YOLOv5 进行对象跟踪包括准备一个带有已标注对象轨迹的数据集。该数据集应包含一系列帧,其中包含连接帧中对象的边界框标注。虽然预训练的 YOLOv5 模型可用,但调整自定义跟踪数据集对于使模型适应特定的跟踪任务至关重要。

Python 实现

步骤 1: 第一步是导入所有必要的库和包。对于使用 YOLO V5 的图像跟踪,我们主要使用 cv2、torch 等。

cv2: OpenCV 的公共部分主要用于捕获视频和图像以及预处理它们。它是视频窗口显示的辅助工具。

Torch: 来自 PyTorch,用于加载和运行 YOLOv5 模型。

pathlib.Path:用于处理不同文件的目录和路径。此功能来自 pathlib 模块。

代码

步骤 2

下一步是加载模型。使用 torch.hub.load 从 github 的 ultraanalytics/yolov5 存储库加载模型。该存储库根据需要提供各种模型尺寸可供选择。加载后,会初始化一个置信度阈值用于对象检测。然后将根据对象检测中的置信分数或值进行过滤。

代码

上述代码还定义了需要输入的视频文件的路径。它使用 OpenCV 的 VideoCapture 方法来获取、打开和读取输入文件。视频属性如帧宽度和高度也需要指定。

步骤 3

输入视频文件后,还需要指定输出文件的路径。视频文件的格式需要保持为 mp4 文件。使用的编解码器是 mp4v。创建 VideoWriter 方法实例,以便预处理并将特定帧写入输出文件的视频。循环将处理输入中的每一帧,直到没有更多帧可处理为止。

代码

步骤 4

在此步骤中,将发生当前帧的实际对象检测,结果将存储在 detected_objects 变量中。YOLOv5 模型用于对象检测。当前检测后,所有检测到的对象都将通过置信度阈值进行过滤。然后,低置信度分数的对象将从列表中完全删除。然后,列表会遍历所有过滤后的检测到的对象,并提取有用信息。有用信息包括类 ID、置信度分数、标签和边界框坐标。

代码

步骤 5

在下面代码的最后几步中,将根据置信度分数和检测到的对象的标签绘制边界框。然后,边界框以及标签和处理后的帧将被附加到输出视频中。然后,将显示处理后的帧。

代码

输出

Using cache found in /root/.cache/torch/hub/ultralytics_yolov5_master
YOLOv5 ? 2023-9-18 Python-3.10.12 torch-2.0.1+cu118 CPU

Fusing layers... 
YOLOv5s summary: 213 layers, 7225885 parameters, 0 gradients
Adding AutoShape...

使用 YOLOv5 进行对象跟踪的挑战

使用 YOLOv5 进行对象跟踪面临与传统跟踪策略相似的挑战。这些挑战包括遮挡、尺度变化和运动模糊。YOLOv5 通过其强大的特征表示和跨帧关联对象的能力来应对这些挑战,从而减轻了由于短暂消失或外观变化而导致的跟踪困难。

YOLOv5 对象跟踪器的应用

YOLOv5 对象跟踪的应用范围涵盖了各种行业和领域。在自动驾驶汽车中,YOLOv5 可以实时跟踪行人、车辆和障碍物。监控系统支持识别和监控感兴趣的人。它还可以通过精确跟踪虚拟对象并将其叠加到现实世界中来增强增强现实体验。

总而言之,YOLOv5 是计算机视觉领域中一个强大的对象跟踪工具。它的速度、精度和多功能性使其成为各个领域的宝贵资产,有助于实现更安全、更高效、更具沉浸感的应用。

结论

总而言之,YOLOv5 在对象跟踪方面的能力,加上其卓越的速度和精度,为计算机视觉应用开辟了无限的可能性。通过应对遮挡和尺度变化等挑战,YOLOv5 即使在复杂的情况下也能确保强大的跟踪能力。其在自动驾驶汽车到增强现实等各个行业的通用性,凸显了其在塑造视觉感知和实时决策系统未来方面的重要性。YOLOv5 体现了对象跟踪技术的持续进步,必将重塑我们与视觉世界的互动和理解方式。