yolov5检测(前向)输入视频输出(不在图上画标签形式的原)图片的方法,及设置每隔几帧保存的方式(不每帧保存减少重复)

这些天我忽然有个需求,要更新迭代一个场景的检测模型,甲方爸爸提供的新数据集是监控视频形式的(因为拍视频确实更加的方便),而我训练模型确实要标注好的图片形式。
根据这些条件的话,思路应该是要这样的:首先使用现有的最新一个模型输入视频进行检测,检测结果以每帧图片的形式进行保存,以及每帧图片对应的label。将图片和label用标注工具打开如labelme等进行可视化调整模型标注好的数据(这样比每张图片直接从0开始标注要快),再将这些标注好的数据加入之前的数据中进行训练。

保存图片形式

这个流程可能会有几处有些障碍,一个是模型检测生成的label的yolo格式数据转化成labelme格式的数据以及调整好之后labelme格式的数据再转回yolo训练格式的数据,这个问题的解决及对应的代码写在我之前的文章中;另一个就是yolov5输入的是视频时输出的也同样是个视频,且是带有检测结果的视频(带有实时检测框的视频),如图:
在这里插入图片描述
在这里插入图片描述

而我们想要的是原图进行训练,保存的是原图及对应的label。解决方法如下:
在detect.py代码里的Process predictions中添加如下两行的代码:

e_save = os.path.splitext(save_path)[0] + f'_{frame}' + '.jpg'
cv2.imwrite(e_save, im0)

在这里插入图片描述
运行结果如图:
在这里插入图片描述
在这里插入图片描述
图片命名格式输入视频的名称后面加上帧数。

设置帧率

看了一下保存的图片,会发现一个问题,基本上每张图片会重复几十次。所以如果不是高速移动的目标的话每帧都保存会有大量几乎重复的图片,每张都拿来训练是没必要的且浪费修改label的时间,所以下面设置每隔几帧保存一次。

在这里插入图片描述
detect.py中前向推理部分的代码结构大概是这样的:

for path, img, im0s, vid_cap in dataset:# ... 一些前期的代码 ...# 运行检测img = torch.from_numpy(img).to(device)img = img.float()  # uint8 to fp16/32img /= 255.0  # 0 - 255 to 0.0 - 1.0if img.ndimension() == 3:img = img.unsqueeze(0)# ... 一些中间的代码,可能有模型推理的部分 ...# 后处理# ...# 在这里添加代码,确保只在每25帧执行检测if vid_path:current_frame += 1if current_frame % 25 == 0:# 执行你的检测代码# ...# ... 一些后期的代码 ...

在这里插入图片描述
运行结果如图:
在这里插入图片描述
这样就减少了很多重复图片。

写在最后:
我觉得csdn是一个能学到技术的地方,那是因为很多大佬的无私奉献。我的每一条博文都是粉丝才可见,若是你们看了觉得我不值得你们关注,取关无可厚非。但是为什么就是有很多人收藏了我的博文然而又取消关注呢,我觉得让我很不舒服,我希望各位看管都是高素质人群,尊重一下创作者辣!不然越来越多这样的行为会打击分享技术的积极性,谢谢!

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

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

相关文章

记一次oracle错误处理

16:00:05 SQL> alter database open; alter database open * 第 1 行出现错误: ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项 16:00:49 SQL> startup ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它 16:02:56 SQL> shutdown immediate O…

大数据平台/大数据技术与原理-实验报告--实战HDFS

实验名称 实战HDFS 实验性质 (必修、选修) 必修 实验类型(验证、设计、创新、综合) 综合 实验课时 2 实验日期 2023.10.23-2023.10.27 实验仪器设备以及实验软硬件要求 专业实验室(配有centos7.5系统的linu…

15. 三树之和(双指针)

这道题的思路是排序双指针。 对于排好序的数组,存在以下几种情况: 当元素i为正数时,其之后的数字不在存在三数之和等于0的情况了。当元素i为负数或0时,为了避免重复,依次从头遍历数组,检查当前元素i之后的…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑碳排放分摊的综合能源服务商交易策略》

这篇文章的标题表明它将讨论一个关于综合能源服务商交易策略的主题,而在这个策略中,特别考虑了碳排放分摊的因素。以下是对标题中各关键词的解读: 综合能源服务商: 这指的是在能源领域提供多种服务的企业或组织,可能涵…

蓝桥杯day01——负二进制数相加

题目描述 给出基数为 -2 的两个数 arr1 和 arr2,返回两数相加的结果。 数字以 数组形式 给出:数组由若干 0 和 1 组成,按最高有效位到最低有效位的顺序排列。例如,arr [1,1,0,1] 表示数字 (-2)^3 (-2)^2 (-2)^0 -3。数组形式…

「江鸟中原」有关HarmonyOS-ArkTS的Http通信请求

一、Http简介 HTTP(Hypertext Transfer Protocol)是一种用于在Web应用程序之间进行通信的协议,通过运输层的TCP协议建立连接、传输数据。Http通信数据以报文的形式进行传输。Http的一次事务包括一个请求和一个响应。 Http通信是基于客户端-服…

C++之哈希

unordered系列容器的效率之所以比较高(尤其是查找),是因为它底层使用了哈希结构,即哈希表. 哈希概念 前言: 顺序结构以及平衡树中, 元素关键码与其存储位置之间没有对应的关系, 因此在查找一个元素 时, 必须要经过关键码的多次比较. 顺序查找时间复杂度为O(N), 平衡树中为树的…

ESP32-Web-Server编程- JS 基础 4

ESP32-Web-Server编程- JS 基础 4 概述 HTML 内联事件处理器,你永远不应该使用 HTML 事件处理器属性——因为那些已经过时了,使用它们是不好的做法。 在前端编程中,除了将期望发生的事件写为 JS 文件外,还可以使用一些组件自带…

java编程:⼀个⽂件中存储了本站点下各路径被访问的次数,请编程找出被访问次数最多的10个路径

题目 编程题:⼀个⽂件(url_path_statistics.txt)中存储了本站点下各路径被访问的次数 请编程找出被访问次数最多的10个路径时间复杂是多少,是否可以优化(假设路径数量为n)如果路径访问次数⽂件很⼤&#x…

Unity中Shader的BRDF解析(二)

文章目录 前言一、回顾一下上一篇的结尾在这里插入图片描述 二、我们来解析一下 UNITY_PBS_USE_BRDF1(高配)1、迪士尼BRDF原则2、迪士尼的漫反射函数3、参数:perceptualRoughness(感性的粗糙度)4、参数:hal…

Docker-简介、基本操作

目录 Docker理解 1、Docker本质 2、Docker与虚拟机的区别 3、Docker和JVM虚拟化的区别 4、容器、镜像的理解 5、Docker架构 Docker客户端 Docker服务器 Docker镜像 Docker容器 镜像仓库 Docker基本操作 1、Docker镜像仓库 镜像仓库分类 镜像仓库命令 docker lo…

NET MVC中使用Element-Plus框架编写组件

一、目的 在NET MVC中使用Element-Plus编写可重复使用的组件。 二、准备工作 2.1 NET MVC项目 2.2 MVC项目中使用Element-Plus框架。不熟悉的可以参考此文章: NET MVC中如何使用Element-Plus-CSDN博客 三、组件编写 3.1、新建一个MVC的部分视图页面&#xff…

完整版本会声会影2024新功能介绍

会声会影视频编辑软件,是视频制作初学者的法宝。其友好的操作界面,让视频制作小白也能轻松上手,丰富的媒体库资源,只需一拖一放就能快速导入编辑轨道。多轨道式的编辑功能,让各种素材的搭配使用更加得心应手。 会声会影…

管网/黑臭水/污水水质监测系统

随着城市化进程的加快,城市水务管理面临着越来越多的挑战。其中,管网、黑臭水、污水等水质监测问题尤为突出。为了解决这些问题,越来越多的城市开始应用先进的水质监测系统。 一、系统概述 管网/黑臭水/污水水质监测系统是一款集成了在线监测…

【Python炫技】如何突破网站识别爬取功能?

文章目录 概要技术细节小结 概要 现在有很多网站,已经能够通过JA3或者其他指纹信息,来识别你的请求是不是Requests发起的。这种情况下,你无论怎么改Headers还是代理,都没有任何意义。 我之前写过一篇文章:Python如何…

三元表达式原理及例子js

三元表达式在JavaScript中也是一种简单的条件语句,其语法格式如下: variable condition ? value_if_true : value_if_false;其中,condition是一个布尔表达式,如果它的值为True,那么value_if_true的值将被赋给variab…

npm-工具包

npm-工具包 npm 介绍 npm&#xff08;Node Package Manager&#xff09;是用于管理和共享Node.js包&#xff08;包括代码、工具和资源&#xff09;的包管理工具 常用命令 局部安装包 npm install <package-name>: 安装指定的包 npm install <package-name> --save…

Java的threadd常用方法

常用API 给当前线程命名 主线程 package com.itheima.d2;public class ThreadTest1 {public static void main(String[] args) {Thread t1 new MyThread("子线程1");//t1.setName("子线程1");t1.start();System.out.println(t1.getName());//获得子线程…

1670. 设计前中后队列

使用两个双端队列实现&#xff0c;分别维护前半部分和后半部分中间元素可放在任意一个deque中维护&#xff0c;这里使用前一个deque提供两个调整成员函数&#xff0c;作用分别为使每个deque总为其代表的前(后)半部分&#xff0c;即总是使其deque为总的一半 class FrontMiddleB…

centos8 redis 6.2.6源码安装+主从哨兵

文章目录 centos8 redis 6.2.6源码安装主从哨兵下载解压编译安装配置配置systemd服务启停及开机启动登录验证主从同步配置哨兵哨兵注册systemd centos8 redis 6.2.6源码安装主从哨兵 单机安装 下载解压 cd /data wget http://download.redis.io/releases/redis-6.2.6.tar.gz…