YOLOV5-视频中的对象跟踪器

介绍

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

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

例如,代表对象位置的边界框坐标,然后也确定其类别,如"猫"、"人行横道"、"鸟"等。甚至还有一个置信度分数来表达算法对发现的保证水平都是由物体检测技术提供的。

重要的是要记住,对象识别通常是在单个帧或图像上完成的,并且不考虑对象在连续帧中的移动或轨迹。

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

什么是 YOLO

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

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

应遵循的步骤是:

导入必要的库

python 复制代码
import torch
from IPython.display import Image, clear_output
from IPython.display import HTML
from base64 import b64encode

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

克隆存储库

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

python 复制代码
!git clone - -recurse-submodules https: // github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch.git

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

python 复制代码
%cd Yolov5_DeepSort_Pytorch

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

python 复制代码
%pip install - qr requirements.txt

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

python 复制代码
# 清空 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 人类数据集上训练的。

python 复制代码
# 下载预先训练好的模型
!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

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

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

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

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

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

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

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

python 复制代码
!ffmpeg - i / content/Yolov5_DeepSort_Pytorch/runs/track/exp3/out.avi output.mp4

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

python 复制代码
mp4 = open('output.mp4','rb').read()
data_url = "data:video/mp4;base64," + b64encode(mp4).decode()
# 用HTML显示
HTML("""
<video controls>
	<source src="%s" type="video/mp4">
</video>
""" % data_url)

输出:

结论 :

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

相关推荐
Chrikk1 小时前
Go-性能调优实战案例
开发语言·后端·golang
幼儿园老大*1 小时前
Go的环境搭建以及GoLand安装教程
开发语言·经验分享·后端·golang·go
canyuemanyue1 小时前
go语言连续监控事件并回调处理
开发语言·后端·golang
杜杜的man1 小时前
【go从零单排】go语言中的指针
开发语言·后端·golang
customer083 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
Yaml44 小时前
智能化健身房管理:Spring Boot与Vue的创新解决方案
前端·spring boot·后端·mysql·vue·健身房管理
小码编匠5 小时前
一款 C# 编写的神经网络计算图框架
后端·神经网络·c#
AskHarries5 小时前
Java字节码增强库ByteBuddy
java·后端