当前位置: 首页 > news >正文

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://www.lryc.cn/news/308192.html

相关文章:

  • 企业文件图纸加密有哪些?图纸文件加密防泄密软件如何选?
  • phpldapadmin This base cannot be created with PLA
  • 如何开发自己的npm包并上传到npm官网可以下载
  • Linux Shell脚本练习(一)
  • 面试数据库篇(mysql)- 11主从同步
  • Python中的os库
  • C++ | 使用正则表达式匹配特定形式的字符串
  • 计算机组成原理-第一/二章 概述和数据的表示和运算【期末复习|考研复习】
  • 基于transform的scale属性,动态缩放整个页面,实现数据可视化大屏自适应,保持比例不变形,满足不同分辨率的需求
  • Linux第67步_linux字符设备驱动_注册和注销
  • 设计模式:软件工程的艺术
  • 试题 算法训练 数的潜能
  • OpenAI Triton 入门教程
  • 【flask+python】利用魔术方法,更优雅的封装model类
  • Qt程序设计-报警灯自定义控件实例
  • Linux之定时任务02
  • PHP堆栈+errLog定位
  • 【大数据】Flink SQL 语法篇(七):Lookup Join、Array Expansion、Table Function
  • 【云原生】Spring Cloud Gateway的底层原理与实践方法探究
  • springboot 实现本地文件存储
  • Python进阶学习:Pandas--查看DataFrame中每一列的数据类型
  • Groovy - 大数据共享搜索配置
  • 第三节:Vben Admin登录对接后端login接口
  • 关于CSS 优先级布局应用的教程
  • vue2+elementui上传照片(el-upload 超简单)
  • 目标检测新SOTA:YOLOv9问世,新架构让传统卷积重焕生机(附代码)
  • Javascript:输入输出
  • Windows系统安装TortoiseSVN并结合内网穿透实现远程访问本地服务器——“cpolar内网穿透”
  • HarmonyOS 开发之———应用程序入口—UIAbility的使用
  • 推荐几款优秀免费开源的导航网站