🌀Jarson Cai's Blog
头脑是日用品,不是装饰品
MMDeploy部署分割模型
将MMSegmentation训练好的模型转化为离线模型部署端侧。

MMDeploy教程

一图看懂MMDeploy的作用: 如果模型的训练是使用mmcv系列工具生成的,那么使用MMDeploy是最好的!

MMDeploy安装

安装MMDeploy

1
2
# pip install mmdeploy --upgrade
pip install mmdeploy==1.2.0

下载MMDeploy源码

1
git clone https://github.com/open-mmlab/mmdeploy.git

验证安装配置成功

1
2
3
4
$ python3
$ >>>import mmdeploy
$ >>>print('MMDeploy 版本', mmdeploy.__version__)
# MMDeploy 版本 1.2.0

成功输出上述信息则安装成功。

MMDeploy-模型转换

在线模型转换工具

官方提供了一个在线模型转换工具:https://platform.openmmlab.com/deploee

点击模型转化,再点击新建转化任务之后,会进入这样一个画面:

然后将需要的pth文件和config的python文件上传就可以开始转化了!

在线模型测试工具

官方提供了一个在线模型测试工具:https://platform.openmmlab.com/deploee/task-profile-list

点击模型测试,再点击新建测试任务之后,会进入这样一个画面:

使用Python API进行模型转换

  • 进入主目录:
1
cd mmdeploy
  • 下载ONNX包:
1
2
3
$ pip install onnxruntime
$ import onnxruntime as ort
$ print('ONNXRuntime 版本', ort.__version__)
  • Pytorch模型转ONNX模型:
1
2
3
4
5
6
7
python tools/deploy.py \
        configs/mmseg/segmentation_onnxruntime_dynamic.py \
        ../mmsegmentation/Zihao-Configs/ZihaoDataset_FastSCNN_20230818.py \
        ../mmsegmentation/checkpoint/Zihao_FastSCNN.pth \
        ../mmsegmentation/data/watermelon_test1.jpg \
        --work-dir mmseg2onnx_fastscnn \
        --dump-info

转换完成的模型,导出在mmdeploy/mmseg2onnx_fastscnn

  • 验证转化成功(非必需):

output_onnxruntime.jpg:用ONNX Runtime推理框架的预测结果,应与output_pytorch.jpg几乎相同

output_pytorch.jpg:用原生Pytorch的预测结果,应与output_onnxruntime.jpg几乎相同

detail.json:模型转ONNX的信息,用于追溯bug

  • 转换得到的模型及信息(必需):

deploy.json:模型描述,用于MMDeploy Runtime推理

end2end.onnx:ONNX模型

pipeline.json:模型输入、预处理、推理、后处理,每一步骤的输入输出信息

转化其他模型也是一样的,只需要改变configs/mmseg/文件夹下转化配置文件即可。注意dynamic代表模型输入尺寸为动态,如果是不变的则为static--dump-info代表打印转换过程的信息。


最后修改于 2023-08-28

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。