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

相关推荐
RunsenLIu9 分钟前
基于Django实现的图书分析大屏系统项目
后端·python·django
Chandler2419 分钟前
Go:低级编程
开发语言·后端·golang
Asthenia041227 分钟前
ArrayList与CopyOnWriteArrayList源码深度解析及面试拷打
后端
Asthenia041227 分钟前
深入解析String、StringBuilder、StringBuffer与final修饰对象的问题
后端
Asthenia041231 分钟前
Java数据类型的四类八种与拆装箱底层原理
后端
郭萌6961 小时前
Docker 安装陀螺匠教程
后端
u0103731061 小时前
Django REST Framework (DRF)
后端·python·django
牛马喜喜1 小时前
sequelize的进阶使用(助力成为优秀全栈)
后端·node.js
勇敢牛牛_1 小时前
【Rust基础】使用Rocket构建基于SSE的流式回复
开发语言·后端·rust
Anarkh_Lee2 小时前
解决 Spring Boot 多数据源环境下事务管理器冲突问题(非Neo4j请求标记了 @Transactional 尝试启动Neo4j的事务管理器)
spring boot·后端·spring