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