【YOLOv9】训练模型权重 YOLOv9.pt 重新参数化轻量转为 YOLOv9-converted.pt
- 1. 模型权重准备
- 2. 模型重新参数化
- 2.1 文件准备
- 2.2 参数修改
- 2.3 重新参数化过程
 
- 3. 重新参数化后模型推理
- 3.1 推理超参数配置
- 3.2 模型推理及对比
 
- 4. onnx 模型导出(补充内容)
- 4.1 超参数配置
- 4.2 模型导出
- 4.3 onnx 推理
 
Code 链接: YOLOV9
 Paper 链接: YOLOV9: Learning What You Want to Learn Using Programmable Gradient Information
1. 模型权重准备
- 可以参考另一篇博客 【模型复现】自制数据集上复现刚发布的最新 yolov9 代码 训练一个所需版本的 YOLOv9模型,训练完成后就会得到YOLOv9模型权重文件,如这里使用c版本训练得到了yolov9-smoke.pt,大小约为98M.
  
2. 模型重新参数化
2.1 文件准备
- 找到官方代码目录 tools内的reparameterization.ipynb文件,并将该文件放到主目录下。
  
2.2 参数修改
- 选择训练权重版本对应的 gelan.yaml文件,如这里需修改gelan-c.yaml文件,并将nc修改为模型训练时的标签数量。
  
2.3 重新参数化过程
- 进入 reparameterization.ipynb文件,进行如下修改:- 修改 cfg为版本对应的gelan.yaml文件路径
- 修改 nc为标签数量
- 修改 ckpt为训练好的模型权重文件路径
 
- 修改 
- 修改后运行出现下述界面即可。
  
- 继续运行文件中的代码块,运行完成后继续。
  
- 修改下述代码块中的权重文件保存路径并运行。
  
- 完成后即可在指定保存路径下找到重新参数化后的权重文件,可以看到文件大小为50M,相比减少了48M。
  
3. 重新参数化后模型推理
3.1 推理超参数配置
- 在 yolov9代码路径下进入detect.py文件进行超参数配置,常用需修改参数如下:- data:数据配置文件路径
- weights:重新参数化后的的- yolov9-converted.pt权重路径
- batch-size:验证- batch-size数量
- imgsz:图片大小
- task:验证数据集选择,如- val或- test
 
- 推理按需进行超参数配置
  
3.2 模型推理及对比
- 单卡推理指令python detect.py
- 多卡推理指令python -m torch.distributed.launch --nproc_per_node 8 detect.py
- 在终端中运行推理命令,若看到下述界面,即成功推理!!!
  
- 可进入保存路径进行推理图片查看,使用权重 yolov9-smoke-converted.pt推理示例如下:
  
- 此外,使用 yolov9-smoke.pt推理的同一图片示例如下:
  
- 可以看出,模型重新参数化后使用模型主分支,性能不受影响,但参数量减少近一半!!!
4. onnx 模型导出(补充内容)
4.1 超参数配置
- 在 yolov9代码路径下进入export.py文件进行超参数配置,常用需修改参数如下:- weights:重新参数化后的的- yolov9-converted.pt权重路径
- include:导出类型选择,如- onnx
 
- 超参数配置如下:
  
4.2 模型导出
- 模型导出指令python export.py
- 在终端中运行推理命令,若看到下述界面,即成功导出!!!
  
4.3 onnx 推理
- 按照 3.1 推理超参数配置进行超参数配置,唯一不同的是需将weights替换为导出的onnx路径。
- 推理指令python detect.py
- 在终端中运行推理命令,若看到下述界面,即成功推理!!!
  
- 可进入保存路径进行推理图片查看,使用 onnx 推理示例如下:
 