YOLOV5视频中的对象跟踪器

2023年 9月 16日 65.7k 0

介绍 

让我们首先了解对象检测和对象跟踪。 

对象检测: 它被定义为在图像或视频帧中定位和识别事物的过程。在此过程中,确定输入数据中是否存在大量对象或项目,以便在它们周围创建边界框来表示它们的位置。

例如,代表对象位置的边界框坐标,然后也确定其类别,如“猫”、“人行横道”、“鸟”等。甚至还有一个置信度分数来表达算法对发现的保证水平都是由物体检测技术提供的。
重要的是要记住,对象识别通常是在单个帧或图像上完成的,并且不考虑对象在连续帧中的移动或轨迹。

对象跟踪: 它的定义是通过多个视频帧跟踪特定对象的运动。基本上,其动机是准确地保持被跟踪对象的识别不变,即使它在视频中移动。该技术在监控、自动驾驶汽车和视频分析等场景中特别有用。

什么是 YOLO?

YOLO 简单地代表“你只看一次”。它是一种对象识别技术,可以一次性定位视频或图像中的多个对象。YOLO 致力于将图像划分为网格,并同时预测每个网格单元的边界框、类概率和置信度分数,这与重复扫描图像的典型检测算法不同。YOLOV5 用例的一些示例包括面罩检测、对象识别、速度计算器、车辆跟踪器等。

在本文中,我们将研究如何使用YOLOV5进行视频中的目标跟踪。

应遵循的步骤是: 

导入必要的库

import torch
from IPython.display import Image, clear_output
from IPython.display import HTML
from base64 import b64encode

现在让我们开始克隆该项目所需的存储库。 

克隆存储库 

因此,最初我们需要使用以下命令访问 YOLOV5 的 Github 存储库。

!git clone - -recurse-submodules https: // github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch.git

完成这一步后,我们需要根据克隆的存储库更改目录。

%cd Yolov5_DeepSort_Pytorch

现在,我们将安装依赖项。

%pip install - qr requirements.txt

现在,我们将获取一些系统信息来有效地运行该模型。

# 清空 outpt
clear_output()
# 系统信息
print(
	f"Setup complete. Using torch {torch.__version__}
({torch.cuda.get_device_properties(0).name if torch.cuda.is_available() else 'CPU'})")

现在,我们将使用预训练的 YOLOv5 预训练模型,该模型是在 Crowded 人类数据集上训练的。

# 下载预先训练好的模型
!wget -nc https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch/releases/download/v.2.0/crowdhuman_yolov5m.pt -O /content/Yolov5_DeepSort_Pytorch/yolov5/weights/crowdhuman_yolov5m.pt

现在,让我们获取一个视频并进行测试。

# 获取测试视频
!wget - nc https: // github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch/releases/download/v.2.0/test.avi

在此步骤之后,我们将提取视频开始部分的几秒钟。

# 提取2秒的视频
!y | ffmpeg - ss 00: 00: 00 - i test.avi - t 00: 00: 02 - c copy out.avi

现在,让我们获取要进行对象跟踪的源视频。

!python track.py - -yolo_model / content/Yolov5_DeepSort_Pytorch/yolov5/weights/yolov5n.pt - -source out.avi - -save-vid

为了对视频运行对象跟踪并显示它,我们首先需要将其转换为 MP4 格式。我们使用“ffmpeg”来完成此任务。

!ffmpeg - i / content/Yolov5_DeepSort_Pytorch/runs/track/exp3/out.avi output.mp4

现在,为了显示视频,我们使用 HTML 播放器。HTML 视频元素将首先读取 MP4 视频文件的二进制内容,然后使用 base64 对其进行编码,然后创建数据 URL。

mp4 = open('output.mp4','rb').read()
data_url = "data:video/mp4;base64," + b64encode(mp4).decode()
# 用HTML显示
HTML("""

	

""" % data_url)

输出:

yolov.gif

结论 : 

Yolov5 是用于对象检测和跟踪的最佳且高效的模型之一,在现实世界的应用中发挥着重要作用,例如监控和安全、特斯拉等自动驾驶车辆、体育分析等。为了获得更多增强功能,我们还可以利用此模型用于自定义数据集训练。

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论