一、准备数据

先准备一个MP4的视频

1.测试一帧

使用opencv来提取每一个视频的帧

先使用以下代码查看一帧的内容,是否符合预期

import cv2
import matplotlib.pyplot as plt# 打开视频文件
video = cv2.VideoCapture("111.mp4")
# 读取一帧
ret, frame = video.read()plt.imshow(frame)# 颜色通道转换为RBG
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
plt.imshow(frame_rgb)
plt.axis('off')
plt.show()

 运行结果:

 2.提取每一帧

video = cv2.VideoCapture("111.mp4")
num = 0          # 计数器
save_step = 10   # 间隔帧
while True:ret, frame = video.read()if not ret:breaknum += 1if num % save_step == 0:cv2.imwrite("./images/" + str(num) + ".jpg", frame)

 运行结果:

3.标注工具 

 在之前创建的yolov5中安装labelimg

pip install labelimg

在终端中使用命令打开窗口

labelimg

在labelimg窗口中,点击"Open Dir",选择刚才提取视频帧的文件

选择"YOLO"格式,点击图中的位置会切换

 点击"View"选择"Auto Save mode"

 点击窗口中的"Save",选择保存路径

为每一帧图片进行标注 

点击"Create RectBox",为图中人物进行框选,并命名,之后点击"ok",之后的每一张类似这样的操作

 标注完成后,点击保存图片信息的文件夹

 二、数据调整

  • images:存放图片
    • train:训练集图片
    • val:验证集图片
  • label:存放标签
    • train:训练集标签文件(要与训练集图片名称一致)
    • val:验证机标签文件(要与训练集图片名称一致)

创建一个dataset将数据全部存入其中

 

注意:label中的clesses.txt要在此文件的根目录下

最后的目录结构

 

 

三、模型训练参数设置 

将images中的train和label,复制到yolov5文件夹下的data/images中

 在data根目录下创建一个yaml文件

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ./datasets # dataset root dir
train: images/train # 训练集的图片
val: images/val # 验证集的图片
test: # test images (optional)# Classes.txt中的内容填入其中
names:0: baiyi1: xiaoqiao

将yolov5根目录下的train.py中修改

四、启动模型训练

在终端中使用命令启动

python train.py

正在运行的输出:

 运行成功后:

点击runs/train/exp 可以看到结果

使用detect.py来检测目标视频 

python detect.py --weights runs/train/exp/weights/best.pt --source dataset/111.mp4 --view-img

 在runs/train/exp中即可找到目标文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/88165.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88165.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/88165.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

008 Linux 开发工具(下) —— make、Makefile、git和gdb

🦄 个人主页: 小米里的大麦-CSDN博客 🎏 所属专栏: Linux_小米里的大麦的博客-CSDN博客 🎁 GitHub主页: 小米里的大麦的 GitHub ⚙️ 操作环境: Visual Studio 2022 文章目录 Linux 开发工具(下)Linux 项目自动化构建工…

前缀和题目:连续的子数组和

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:连续的子数组和 出处:523. 连续的子数组和 难度 5 级 题目描述 要求 给定一个整数数组 nums \texttt{nums} nums 和一个整数 k \tex…

队的简单介绍

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out)的特点。 入队列:进行插入操作的一端称为队尾。 出队列:进行删除操作的一端称为队头。 入队列…

AI-Sphere-Butler之如何将豆包桌面版对接到AI全能管家~新玩法(一)

环境: AI-Sphere-Butler VBCABLE2.1.58 Win10专业版 豆包桌面版1.47.4 ubuntu22.04 英伟达4070ti 12G python3.10 问题描述: AI-Sphere-Butler之如何将豆包桌面版对接到AI全能管家~新玩法(一) 聊天视频: AI真…

【STM32】启动流程

1、.s启动文件解析 STM32的启动文件(一般是.s汇编文件,如startup_stm32f407xx.s)是STM32上电后执行的第一段代码,承担着“系统初始化化引导员”的角色。 它的主要作用是设置初始化栈指针(SP)、程序计数器&…

【vim】通过vim编辑器打开、修改、退出配置文件

通过vim编辑器打开任一配置文件 vim /etc/profile 英文输入下,按i键进入INSERT模式,修改配置文件 完成修改后,按esc键退出INSERT模式 英文输入下,输入":wq!",即可保存并退出 :q #不保存并退出 :q! …

Effective Modern C++ 条款6:当 auto 推导类型不符合预期时,使用显式类型初始化惯用法

在C开发中,auto关键字以其简洁性和高效性被广泛使用。然而,“自动推导”并非万能,尤其在某些特殊场景下,auto的推导结果可能与开发者预期不符,甚至导致未定义行为。今天,我们以《Effective Modern C》条款6…

学习Linux进程冻结技术

原文:蜗窝科技Linux进程冻结技术 功耗中经常需要用到,但是linux这块了解甚少,看到这个文章还蛮适合我阅读的 1 什么是进程冻结 进程冻结技术(freezing of tasks)是指在系统hibernate或者suspend的时候,将…

GitHub 趋势日报 (2025年06月22日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 624 LLMs-from-scratch 523 ai-engineering-hub 501 n8n 320 data-engineer-handb…

kotlin中为什么新增扩展函数功能?

在 Kotlin 中,扩展函数的本质是「不修改原有类代码,为其新增功能」,这源自编程中「开闭原则」(对扩展开放,对修改关闭)的第一性原理。 核心需求:当需要给第三方库的类(如 Android 的…

excel 数据透视表介绍

Excel 数据透视表(PivotTable)就是你的数据分析神器!它能帮你快速汇总、分类、比较和分析 大量数据,从看似杂乱无章的表格中一键提取关键信息 ,生成交互式的汇总报告。无需复杂公式,只需拖拽几下,就能让数据“开口说话”&#xff…

半导体行业中的专用标准产品ASSP是什么?

半导体行业中的专用标准产品ASSP是什么? “专用标准产品”(ASSP - Application Specific Standard Product)是半导体集成电路中的一个重要分类。 你可以把它理解为介于通用标准产品和全定制ASIC之间的一种芯片。以下是它的核心定义和特点&a…

秋招Day14 - MySQL - 锁

MySQL中有几种类型的锁? 锁粒度来分,有表锁、页锁和行锁。 加锁机制划分,有乐观锁和悲观锁。 按兼容性划分,有共享锁和排他锁。 按锁模式划分,有记录锁,间隙锁,next-key锁,意向锁…

/var/lib/docker/overlay2目录过大怎么办

/var/lib/docker/overlay2 是 Docker 默认用于存储 容器镜像和容器运行时数据 的核心目录,基于 overlay2 存储驱动实现。以下是其具体作用和内容的详细解析: 1. overlay2 目录的作用 存储镜像分层结构: Docker 镜像采用分层设计,o…

JimuReport:一款免费的数据可视化报表工具

JimuReport(积木报表)是一款免费的企业级数据可视化报表软件,提供拖拽的方式像搭建积木一样完成在线设计,功能涵盖数据报表、打印设计、图表报表、门户设计、大屏设计等。 数据源 JimuReport 支持 30 多种数据源,包括…

Neo4j.5.X社区版创建数据库和切换数据库

在使用Neo4j数据库(版本:neo4j-community-5.22.0)时,系统自带的“neo4j”和“system”数据库适用于日常的简单学习和练习,但对于新的项目,将项目数据与练习数据混用会带来诸多不便,例如查询效率…

DAY33神经网络

浙大疏锦行 定义了一个简单的神经网络,主要是掌握pytorch框架

拼团系统多层限流架构详解

拼团系统多层限流架构详解 一、整体架构设计理念 多层限流采用"层层设防"思想,通过网关层全局流量控制→服务层接口粒度限流→本地资源隔离→热点参数精准防护的四级防御体系,实现从粗到细的流量治理,确保大促期间系统稳定性。 …

[ctfshow web入门] web92 `==`特性与intval特性

信息收集 和之前的题差不多,这次是使用了不严格相等的,详情看这篇博客: 和 在 PHP 中有何区别?一共包含哪些部分? 首先,不能使$num 4476,然后需要使intval($num,0)4476 include("flag…

在Springboot项目部署时遇到,centos服务器上,curl请求目标地址不通 ,curl -x 可以请求通的解决办法

在甲方服务器部署项目时,通常遇到需要开通外网权限的问题,有的是直接给开通服务器的白名单,就可以直接访问白名单外网地址了。也有的是通过网络转发,将url前面的部分替换,可以进行网络请求。有一次遇到一个罕见的&…