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

本文介绍了一种新的目标检测算法YOLOv9,它通过引入可编程梯度信息来增强网络对特定目标的学习,从而提高检测性能。文章详细描述了如何下载源码、配置、数据组织以及模型训练、评估、推理和部署的过程,包括将模型转换为ONNX和TensorRT引擎以优化性能。
摘要由CSDN通过智能技术生成

[源码 🐋]( 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 output
        
        prediction = 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

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值