yolov9,使用自定义的数据训练推理

[源码 🐋]( GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information)

[论文 📘](arxiv.org/pdf/2402.13616.pdf)

论文摘要:本文介绍了一种新的目标检测算法YOLOv9,该算法利用可编程梯度信息来学习用户想要学习的内容。通过在网络的反向传播过程中引入可编程梯度信息,我们可以指导网络学习特定的目标,从而提高检测的准确性和效率。

 1. 源码下载

  1. git clone GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information
  2. cd yolov9 

2. 配置 

      依赖库:torch

3. Data

YOLO format.

# class_id center_x center_y bbox_width bbox_height

Organize your directory of custom dataset as follows:

custom_dataset:/data/custom_data

├── images

│   ├── train

│   │   ├── train0.jpg

│   │   └── train1.jpg

│   └── test

│       ├── test0.jpg

│       └── test1.jpg

└── labels

    ├── train

    │   ├── train0.txt

    │   └── train1.txt

    └── test

        ├── test0.txt

        └── test1.txt

然后生成图像索引的txt文件

  1. Train
    1. # python train.py --workers 8 --device 0 --batch 32 --data data/coco.yaml --img 640 --cfg models/detect/gelan-c.yaml --weights '' --name gelan-c --hyp hyp.scratch-high.yaml --min-items 0 --epochs 500 --close-mosaic 15

    2. # train gelan models
    3. python train_dual.py --data data/coco_wj.yaml --img 640 --cfg models/detect/yolov9-c.yaml --weights '' --name yolov9-c --hyp hyp.scratch-high.yaml --min-items 0 --close-mosaic 15
    4. # train yolov9 models
  2. Evaluation
    1. # evaluate converted yolov9 models
      python val.py --data data/coco.yaml --img 640 --batch 32 --conf 0.001 --iou 0.7 --device 0 --weights './yolov9-c-converted.pt' --save-json --name yolov9_c_c_640_val# evaluate yolov9 models
      #python val_dual.py --data data/coco.yaml --img 640 --batch 32 --conf 0.001 --iou 0.7 --device 0 --weights './yolov9-c.pt' --save-json --name yolov9_c_640_val# evaluate gelan models
      # python val.py --data data/coco.yaml --img 640 --batch 32 --conf 0.001 --iou 0.7 --device 0 --weights './gelan-c.pt' --save-json --name gelan_c_640_val

  1. Inference
    1. Python detect.py
      1. 下载权重yolov9-c.pt,并放在yolov9下,然后在代码中指定权重和图片
      2. 错误:nms:官方解释The first prediction is from aux branch, so choose second prediction.
      3. # prediction = prediction[0]  # select only inference outputprediction = prediction[0][1]  #  zqj20240226 prediction[0][0]两个结果不同

  2. Deploy
    1. 转onnx
      1. 使用第三方的转换+NMSPlugin
      2. 使用自带的export.py,可以生成onnx,但是转engine报错“/weight.28 ****”

                        [博客 📰](https://github.com/thaitc-hust/yolov9-tensorrt/blob/main/torch2onnx.py)

                        Torch2onnx.py

                        add_nms_plugins.py   # add BatchedNMSDynamic_TRT

                        也可以将这两个文件拷贝到yolov9下,生成onnx和onnx-nms

               2. 转engine:trtexec

  1. 测试结果
  2. 耗时统计-640-batch4-rtx3060

        显存1877MB  cpu负载86%  内存12.1% 耗时57ms

未完待续

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

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

相关文章

计算机网络-网络互连与互联网(三)

1.地址解析协议ARP: IP查询MAC地址,询问/回答机制。ARP缓存表、ARP欺骗、ARP病毒、代理ARP、反向RARP。 ARP、RARP分组格式如下: 2.地址解析协议ARP: 缓存表:开始-运行-cmd,输入arp -a(-s(绑…

MySQL的事务与隔离级别

1. 什么是事务? 数据库中的事务是指对数据库执行一批操作,而这些操作最终要么全部执行成功,要么全部失败,不会存在部分成功的情况。这个时候就需要用到事务。 最经典的例子就是转账,你要给朋友小白转 1000 块钱&…

JMeter学习(一)工具简单介绍

一、JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务…

swagger-ui.html报错404,解决办法

swagger-ui.html报错404,解决办法!现在后端开发项目中,为了节省时间,使用swagger插件,可以方便的快捷生成接口文档。但是如果你在请求前端页面路径比如:http://127.0.0.1:7777/swagger-ui.html。找不到。那是因为你的配…

GEE错误——sentinel-2数据处理过程出现‘QA60‘ did not match any bands

在GEE中出现"QA60 did not match any bands"错误的原因可能是因为在GEE中搜索的数据信息中找不到与"QA60"相匹配的波段。这可能是由于以下几个原因导致的: 1. 数据库中没有包含"QA60"波段的信息。如果影像使用的日期较为新,可能会导致无法在…

k8s 进阶实战笔记 | NFS 动态存储类的部署与使用

文章目录 NFS 动态存储类的部署与使用演示环境说明NFS subdir external provisioner准备 NFS 服务器手动部署 NFS Subdir External Provisioner部署 StorageClass验证使用更多信息 NFS 动态存储类的部署与使用 演示环境说明 演示环境信息:单机K3s 1.28.2 操作系统…

Rust-windows安装环境

文章目录 前言一、Using rustup (Recommended)二、配置vscode解决办法:在终端依次运行如下两条指令: 总结 前言 Rust学习系列,之前介绍了macOS环境下的rust安装方式macOS rust安装。这篇学习windows的rust安装方式。 提示:以下是…

注解@requestBody @requestParam@RequestHeader的区别和使用方式

总的来说,RequestBody用于接收请求体数据,RequestParam用于获取请求参数,RequestHeader用于获取请求头信息 requestBody requestBody 通常在POST请求中,用于指示一个方法参数应该绑定到Web请求的正文部分。通常用于接收JSON或XM…

几种常见的数据模型

什么式数据模型:数据如果要被存储记录或者分析,要有一个组织形式,那么,怎么把数据按照一定规律组织呢,这个就是数据模型数据模型分类 平面模型:或者称为二维模型,通过行列坐标确定数据的形式 纵…

银河麒麟桌面版操作系统密码复杂度设置

这里是桌面版的使用,资深使用者可以使用命令一键修改,这里面不涉及 1密码复杂度设置 1.1开始菜单,选择设置 快捷键wini也可以 1.2打开账户设置 1.3在安全中心的账号保护中 1.4推荐的是默认的策略 密码强度使用默认推荐的就可以&#xf…

电脑缺失XInput1_4.dll文件的解决办法

在电脑操作中,有用户遇到了XInput1_4.dll文件缺失的问题,导致一些依赖该文件的电脑应用无法正常运行,从而影响用户正常使用。接下来小编分享不同的解决方法,帮助用户轻松解决该问题,找回XInput1_4.dll文件,…

单片机文件系统

下载地址 FatFs - Generic FAT Filesystem Module (elm-chan.org)

四川尚熠电子商务有限公司抖音带货可靠吗?

在当今数字化时代,电子商务的兴起使得越来越多的企业开始涉足这一领域。四川尚熠电子商务有限公司作为其中的一员,提供抖音带货服务,吸引了众多商家的关注。那么,四川尚熠电子商务有限公司的抖音带货服务究竟可靠吗?本…

分享泰国市场的一些现状

最近和一个泰国的客户聊天,然后聊起来说从去年开始很多的中国人来到他们那边去建设工厂,因此还在当地形成了一个中国村,在这个中国村里有中国的各种商店,而且居住的也主要是中国人。 从前年开始我们都在讨论中国的一些工厂可能因为…

算法--贪心

这里写目录标题 区间问题区间选点引入算法思想例题代码 最大不相交区间的数量算法思想例题代码 区间分组算法思想例题代码 一级目录二级目录二级目录二级目录 区间问题 区间选点 引入 区间问题会给定几个区间,之后要求我们在数轴上选取尽量少的点,使得…

掌握微信小程序开发的核心要点:从基础到进阶

文章目录 掌握微信小程序开发的核心要点:从基础到进阶一、数据绑定和事件处理1.1 理解小程序的数据绑定机制,实现数据和视图的同步更新1.2 学习如何处理用户交互事件和触发相应的响应逻辑 二、网络请求和数据交互2.1 使用小程序的网络请求API与后端服务器…

智能充电桩案例分析——交流充电桩

随着电动汽车的发展,充电桩也成为当下的一个很热门的工业产品。我们初步接触充电桩,有了点滴的感受。 先简单说说容易一点的交流充电桩。就是通过市电(220V,50赫兹)给电动汽车提供充电的能源来源。很容易理解,交流…

亿道丨三防平板丨如何从多方面选择合适的三防加固平板?

在如今这个信息爆炸的时代,移动设备已经成为我们生活和工作的必备工具。然而,在一些特殊的场合中,普通的平板电脑可能无法满足需求,比如工厂车间、野外作业、极端天气等环境下。此时,三防平板就成了不二之选。那么&…

以太网中的Pause帧格式

一、PAUSE帧概念 PAUSE帧是以太网在全双工模式下,MAC控制子层发出的流量控制帧。IEEE802.3协议为MAC控制子层提供了一个全双工流量控制结构框架,MAC控制子层是介于逻辑链路控制子层和介质访问控制子层间的可选功能。 交换控制电路要防止缓冲区溢出&…

黑马瑞吉外卖练习笔记

day2 员工管理 完善登录 问题:用户不登录,直接访问系统首页,照样可以正常访问。我们希望,只有登录成功后才可以访问系统中的页面,如果没有登录则跳转到登录页面 怎么实现? 用过滤器或拦截器,在…