足球视频AI(三)——YOLOV7目标检测自训练模型

news2024/9/25 23:23:52

一、基础概念

YoloV7提供的yolov7-tiny.onnx 对于图像中包含较大尺寸的足球检测准确率高。

但在实际应用中,足球视频中的足球非常小,默认的模型难于满足实际的足球检测需求。

1.1 识别目标

1)固定机位的视频中足球的逐帧识别

1.2 实现思路

1)采用labelImg对视频中的逐帧图像进行标注,并保存为yolo格式

2)采用YoloV7源码对标注数据进行训练

3)集成到实践项目中

二、数据标注

下载labelImg

在这里插入图片描述

2.1 准备数据

编写简单的应用程序,从视频帧中采样关键帧图片(可以每隔60帧取一张),以下代码是样例

    public class LoadImages
    {      
		public static IEnumerable<Mat> LoadVideo(string file)
        {
            Mat imageOriginal = new Mat();
            using (var videocapture = new VideoCapture(file))
            {
                while (videocapture.Read(imageOriginal))
                    yield return imageOriginal;
            }
        }
    }
var mats = LoadImages.LoadVideo("您的多个视频逐个处理的文件地址");
int i=0;
mats.ForEach(p=>{
    p.SaveImage($"scene{i}.png");
    i++;
})

2.2 使用labelImg

2.2.1 配置

找到labelImg.exe所在目录,进入“data”文件夹,找到predefined_classes.txt 文件

dog
person
cat
tv
car
meatballs
marinara sauce
tomato soup
chicken noodle soup
french onion soup
chicken breast
ribs
pulled pork
hamburger
cavity

将文件中的内容清除,仅保留ball一项

ball

2.2.2 设置目录

双击labelImg.exe:

1,Open Dir是你的帧图片保存目录

2, Change Save Dir 是标注文件保存的目录

建立如下格式:

--Marks
  -- images
  -- lables 

其中 images 设置为Open Dir的目录,lables设置为 Change Save Dir的目录

2.2.3 标注图像

  1. 左侧菜单中PascalVOC 确保更换为YOLO

  2. 选择右下侧的Filelist中第一个文件,然后Create RectBox,在图像中标记足球。

  3. 在BoxLabel中选择ball

  4. 下一张

进入“labels”目录,会自动创建对应图像名字的标注文件"scene00601.txt",形如:

0 0.555990 0.759633 0.057813 0.102752

三、训练图像

3.1 配置源码

1、下载YoloV7源码

git clone https://github.com/WongKinYiu/yolov7.git

2、安装依赖

1)打开VisualStudio Code
2)打开源码文件夹
3)创建命令终端

初始化环境

pip install -r requirements.txt

3、拷贝标注数据

--YoloV7-Main
  --cfg
  --data
    --train
        --images
        --labels
    --val
        --images
        --labels

将”二、标注数据“中的images和labels放到yolov7的data文件夹下,如上所示

其中,80%数据放到train中,为训练用数据;

​ 20%数据放在val中,为验证数据;

4、编辑coco文件

从data文件夹中打开**“coco.yaml”文件并删除前 4 行(直到下载部分)**。

设置‘train: data/train

设置‘val: data/val

设置 ‘nc:1‘ ,因为这里我们只有一个类别"ball"

设置 names:[‘ball’]

5、编辑yolov7.yaml

从cfg/training文件夹中,打开yolov7.yaml文件

设置 ‘nc:1‘ ,因为这里我们只有一个类别"ball"

6、下载预训练模型

下载[yolov7.pt](https://github.com/WongKinYiu/yolov7#performance文件

保存到YoloV7-Main 根目录

3.2 开始训练

命令终端输入以下指令

python train.py --workers 1 --device 0 --batch-size 16 --epochs 100 --img 640 640 --hyp data/hyp.scratch.custom.yaml --name yolov7-custom --weights yolov7.pt

两种情况:

1)有GPU,参阅GPU的配置

2)没有GPU,删除–device 0命令参数

四、项目集成

按yolov7官网的说明,yolov7-custom.pt 文件转为onnx文件

python export.py --weights=yolov7-custom.pt --grid --simplify

C#调用

    public class DetectorYolov7Custom : IDetector<YoloPrediction>
    {
        private readonly Yolov7 _yolo;
        public DetectorYolov7()
        {
            _yolo = new Yolov7(Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Assets/yolov7-custom.onnx"));
            _yolo.SetupYoloDefaultLabels();
        }

        /// <inheritdoc/>
        public List<YoloPrediction> Detect(Mat mat)
        {
            var items = _yolo.Predict(mat.ToBitmap());
            return items;
        }

        public void Dispose()
        {
            _yolo?.Dispose();
        }
    }

目标检测

        [Fact]
        public void TestYoloCuctomDetectBall()
        {
            var detector = new DetectorYolov7Custom();
            List<YoloPrediction> lst;
            using (var mat = LoadImages.Load("field_2.jpg"))
            {
                lst = detector.Detect(mat);
            }
            Assert.True(lst.Any(p=>p.Label?.Name?.Equals("ball") == true));
        }

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

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

相关文章

邮箱2023系统

邮箱2023系统 前言 VMMail作为一款开源的邮件系统&#xff0c;目前已经发布到了10.0版本。 该版本在 GitHub上是免费的&#xff0c;且代码也是开源的&#xff0c;所以该程序不会对 GitHub上的所有用户造成任何影响。 由于 VMMail开发时采用了开源代码&#xff0c;并在 GitHub上…

区块链之bolt数据库持久化与基本功能完善

文章目录bolt数据库安装使用bolt进行持久化存储bolt持久化的基本步骤创世区块的持久化新增区块的持久化完善区块链基本功能创世区块创建增加区块遍历区块链链接&#xff1a; 区块链项目github地址项目目前进度&#xff1a;bolt数据库安装 bolt数据库介绍&#xff1a; bolt数据…

Vue3过渡动画实现

文章目录P14Vue3过渡&动画实现过渡动画的使用过渡CSS动画效果同时设置过渡和动画mode和appearanimate.cssgsapgsap实现数字变化认识列表的过渡列表过渡的移动动画列表的交错过渡案例P14Vue3过渡&动画实现 过渡动画的使用 <template><button click"isShow…

进入新组织项目经理如何快速提升自己的影响力?

我们在工作中&#xff0c;经常以“对事不对人”来体现他们的专业性&#xff0c;但是这点并不符合人性。更多时候对人不对事&#xff0c;反倒能提高问题的解决能力。项目经理会发现&#xff0c;很多事情的推进&#xff0c;都建立在和对方的信任的基础上&#xff0c;所以先成为对…

使用Qt开发的linux嵌入式设备监控、管理框架,监测嵌入式设备运行状态,执行远程shell,远程升级,与客户端进行文件传输

linux SPY 简介 使用Qt开发的linux嵌入式设备监控、管理框架 [客户端]&#xff1a;aes_tcp_lib 完整代码下载地址&#xff1a;使用Qt开发的linux嵌入式设备监控、管理框架 开发环境 ubuntu 20Qt 5.12Qt Creator 4.13.1 核心功能 监测嵌入式设备运行状态转发客户端消息,…

划重点!企业在采购管理中应避免的10个错误

一家企业的采购能力在很大程度上取决于其采购管理系统的有效性。当系统运行良好时&#xff0c;那么采购就会相当顺利。如果你使用的是一个低效的系统&#xff0c;那就会导致一大堆常见的采购问题。 无论采购错误的根本原因是什么&#xff0c;任其发展&#xff0c;最终会给企业…

【ZooKeeper】第二章 JavaAPI 操作

【ZooKeeper】第二章 JavaAPI 操作 文章目录【ZooKeeper】第二章 JavaAPI 操作一、Curator 简介二、Curator API1.建立连接2.创建节点3.查询节点4.修改节点5.删除节点6.Watch 事件监听三、分布式锁四、案例&#xff1a;12306售票一、Curator 简介 Curator 是 Apache ZooKeeper…

【云原生进阶之容器】第二章Controller Manager原理2.3节--Reflector分析

1 Reflector组件 1.1 背景 Reflector 是保证 Informer 可靠性的核心组件,在丢失事件,收到异常事件,处理事件失败等多种异常情况下需要考虑的细节很多。单独的listwatcher缺少重新连接和重新同步机制,有可能出现数据不一致问题。其对事件响应是同步的,如果执行复杂的操作会…

把财务分析明白的BI软件有哪些?

有财务分析这一个地狱级的在&#xff0c;什么销售、采购、库存都是渣渣。在财务分析中&#xff0c;指标运算组合可以有多样化的改变&#xff0c;资金来来回回能把人绕晕&#xff0c;一个极不起眼的疏忽都可能导致所有工作推到重来的可怕后果。即使是在擅长做大数据智能可视化分…

MySQL基础命令

MySQL基础命令 创建数据库 Show databases;查看 选择数据库 Use test; 在test数据库中创建表 create table t_stu( id int, name varchar(20) ); 查看表信息 desc t_stu&#xff1b; 添加字段 alter table t_stu add age int; 字段age成功添加 修改字段 alter tab…

springBoot使用rabbitmq并保证消息可靠性

一、理论说明 1.1、数据的丢失问题&#xff0c;可能出现在生产者、MQ、消费者中 1、如下图 1.2、生产者弄丢了数据 1、生产者将数据发送到 RabbitMQ 的时候&#xff0c;可能数据就在半路给搞丢了&#xff0c;因为网络问题啥的&#xff0c;都有可能。此时可以选择用RabbitM…

VS2019打包程序变成带运行环境的安装包

背景 给外行客户写程序的时候&#xff0c;为了避免客户麻烦&#xff0c;我们在写完程序之后&#xff0c;需要把运行环境也打包进安装包中&#xff0c;这样客户就可以一键安装使用。给客户减少麻烦的同时&#xff0c;无疑让我们也有了更多的好评。 步骤 1.写好我们要打包的程…

推荐16个前端必备的实用工具与网站

1. GitHub Desktop 对于新手来说&#xff0c;要记住那么多git命令可能有点困难&#xff0c;建议新手用git可视化工具&#xff0c;会方便很多 2. 图片在线压缩 tinypng 是一个完全免费并且高压缩率的在线压缩图片网站&#xff0c;一般能满足日常大部分压缩图片的需求&#x…

Visual Studio 2022最全安装教程(+背景图设置),一步步教会你如何安装并运行

目录visual studio 2022最全安装教程一、官网下载二、安装启动三、项目测试四、背景图设置 一、官网下载1.点击蓝色链接—->Visual Studio官网&#xff0c;进入之后是这个界面&#xff0c;选择社区版Community下载&#xff08;社区版Community是对个人免费的&#xff0c;一共…

磨金石教育科技技能干货分享|顶级黑白照片长啥样?看后令人震撼

黑白摄影往往在于一些老旧照片中见到&#xff0c;平常的摄影作品往往会强调一些色彩。黑白色调不是常用的色调。但在一些艺术摄影或者创意摄影中&#xff0c;黑白摄影依然是摄影师常用的一种风格。黑白色调往往能够给人一种肃穆、压抑的感觉。那么今天我们就通过一些作品&#…

(一)redis之Nosql数据库简介

一、技术发展 解决功能性的问题&#xff1a;Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN 解决扩展性的问题&#xff1a;Struts、Spring、SpringMVC、Hibernate、Mybatis 解决性能的问题&#xff1a;NoSQL、Java线程、Hadoop、Nginx、MQ、ElasticSearch 1、Web1.0 W…

VMware 基本设置

VMware 基本设置 文章目录VMware 基本设置摘要全局优化内存优先级更新反馈虚拟机系统优化尽可能多的分配资源去掉多余的组件开启3D图形加速和增加显存大小高级设置优化显示关键字&#xff1a; 显示、 内存、 优化、 命令栏、 虚拟机摘要 做Qt开发 久了&#xff0c;跨平台应该…

【BSP视频教程】BSP视频教程第25期:CAN/CANFD/CANopen专题,CAN知识点干货分享, 收发执行过程和错误帧处理(2023-01-03)

视频教程汇总帖&#xff1a;【学以致用&#xff0c;授人以渔】2023视频教程汇总&#xff0c;DSP第10期&#xff0c;ThreadX第5期&#xff0c;BSP驱动第25期&#xff0c;USB实战第5期&#xff0c;GUI实战第3期&#xff08;2023-01-03&#xff09; - STM32F429 - 硬汉嵌入式论坛 …

梦之光芒Monyer (全关解析)

目录 前言: 第0关 描述: 过程: 第1关 描述: 过程: 第2关 描述: 过程: 第3关 描述: 过程: 第4关 描述: 过程: 第5关 描述: 过程: 第6关 描述: 过程: 第7关 描述: 过程: 第8关 描述: 过程: 第9关 描述: 过程: 第10关 描述: 过程: 第11关 描…

spring mvc文档阅读笔记——01

目录标题一、文档地址二、文档目录索引简介&#xff08;一&#xff09;Spring Web MVC1. 常用注解的使用2. 过滤器3. WebMvcConfigurer&#xff08;二&#xff09;RestTemplate&#xff08;三&#xff09;WebSocket三、Spring Web MVC&#xff08;一&#xff09;ControllerRest…