【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 推理示例如下:



















