建设网站的傻瓜图文指南,培训机构学校,微信网站设计欣赏,最新手游2022首发排行MMDeploy使用python部署实践记录 准备工作空间所需环境配置使用MMDeploy得到onnx使用MMDeploy加载onnx模型对单张图片进行推理使用python SDK对onnx模型进行验证 注意 mmdeploy C SDK的使用部署和实际操作过程请看本人另外一篇博文使用MMDeploy#xff08;预编译包#xff09… MMDeploy使用python部署实践记录 准备工作空间所需环境配置使用MMDeploy得到onnx使用MMDeploy加载onnx模型对单张图片进行推理使用python SDK对onnx模型进行验证 注意 mmdeploy C SDK的使用部署和实际操作过程请看本人另外一篇博文使用MMDeploy预编译包转换MMxx(MMDeploy支持库均可)pth权重到onnx并使用C SDK加载onnx得到dll动态链接库实现在windows平台中调用linux也适用
准备工作空间
为了更好地说明本文需要的环境配置等现指出一个具体的工作空间和其中包含的各种文件
# 一个具体的工作空间目录构成如下
工作空间根目录
--------work_space
包含的子目录和文件
----------------checkpoints(保存使用MMxx系列仓库训练得到的pth权重)
----------------configs(保存使用MMxx系列仓库训练使用的pipeline对应的configs配置文件)
----------------images(保存用于测试onnx推理是否成功的图片文件夹)
----------------mmdeploy(使用git clone xxx命令得到的mmdeploy源码仓库主要为了使用其中的mmdeploy)
----------------mmdeploy-0.14.0-windows-amd64-cuda11.3(下载的预编译版本的mmdeploy包)
----------------work_dir(用于保存mmdeploy生成的onnx文件及其他文件相当于结果文件夹)
----------------python_torch2onnx.py(用于将pth权重文件转换为onnx文件的py脚本自己创建后续会有demo代码示例)
----------------python_onnx_inference.py(用于测试onnx的推理py脚本自行创建后续会有demo代码示例)所需环境配置
安装anaconda并创建虚拟环境本文所需环境均已通过测试
# ----------------安装conda基础环境
conda create -n your_env_name python3.7
conda activate your_env_name# ---------------查看本机cuda版本nvidia-smi显卡驱动中cuda版本
nvidia-smi 打印出来的表格右上方可见
example:
-----------------------------------------------------------------------------
| NVIDIA-SMI 527.54 Driver Version: 527.54 CUDA Version: 12.0 |
|---------------------------------------------------------------------------
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
||
| 0 NVIDIA GeForce ... WDDM | 00000000:01:00.0 On | N/A |
| N/A 52C P8 18W / 136W | 119MiB / 16384MiB | 0% Default |
| | | N/A |
--------------------------------------------------------------------------------------------------------------------------------------------------------
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
||
-----------------------------------------------------------------------------# -----注意安装的cuda运行时版本应当小于或等于显卡驱动中cuda版本
# -----本机显卡驱动版本为12.0我安装的是pytorch1.10.1_cudan11.3_cudnn8这个版本
conda install pytorch1.10.1 torchvision0.11.2 torchaudio0.10.1 cudatoolkit11.3 -c pytorch -c conda-forge准备MMDeploy环境
# 首先安装MMCV-FULL通过MIM安装MMCV
pip install -U openmim
mim install mmcv-full# 然后下载预编译版本的mmdeploy这里我选择了“mmdeploy-0.14.0-windows-amd64-cuda11.3” release来安装
# 对应网址为https://github.com/open-mmlab/mmdeploy/releases/tag/v0.14.0
# 或者直接访问该链接启动下载https://github.com/open-mmlab/mmdeploy/releases/download/v0.14.0/mmdeploy-0.14.0-windows-amd64-cuda11.3.zip# ---------在当前工作空间下的windows power shell中运行命令git clone https://github.com/open-mmlab/mmdeploy.git将mmdeploy仓库源码保存到工作空间主要是为了使用其中的configs文件夹下的配置文件后面会有介绍# 然后安装mmdeploy 0.14.0版本
pip install mmdeploy0.14.0# 安装mmdeploy_python 0.14.0版本
pip install mmdeploy-python0.14.0# 安装onnxruntime
pip install onnxruntime# 进入刚刚下载好的mmdeploy预编译包目录/path/to/mmdeploy-0.14.0-windows-amd64-cuda11.3/下
将路径path/to/mmdeploy-0.14.0-windows-amd64-cuda11.3/thirdparty/onnxruntime/lib添加到本机系统环境变量# 然后重启windows power shell使环境变量生效可以通过 echo $env:PATH 来检查环境变量是否设置成功。使用MMDeploy得到onnx
准备MMxx系列仓库的configs和pth文件举例使用mmdetection中configs下面的配置文件“faster-rcnn_r50_fpn_2x_coco.py”然后经过训练之后得到的权重为latest.pth分别将其放入到上述工作空间的configs文件夹和checkpoints文件夹中然后创建“python_torch2onnx.py”文件示例代码如下
from mmdeploy.apis import torch2onnx
from mmdeploy.backend.sdk.export_info import export2SDK# 需要在转换pth到onnx时传入一张图片
img images/demo.jpg# 保存结果路径的文件夹
work_dir work_dir/onnx/your_model_name# 注意这里尽量使用mmdeploy原始文档中推荐的end2end.onnx名称后续加载onnx时避免一些错误出现
save_file end2end.onnx# 使用mmdeploy源码仓库中的mmdet对应config文件如果你使用的mmcls那么就需要到mmcls下面找到合适的deploy config文件
deploy_cfg mmdeploy/configs/mmdet/detection/detection_onnxruntime_dynamic.py# 加载你训练好的模型的config配置文件这里以“faster-rcnn_r50_fpn_2x_coco.py”举例
model_cfg configs/faster-rcnn_r50_fpn_2x_coco.py# 加载使用上述模型配置文件得到的训练权重latest.pth
model_checkpoint checkpoints/latest.pth# 设置device为cpu
device cpu# 1. convert model to onnx
torch2onnx(img, work_dir, save_file, deploy_cfg, model_cfg,model_checkpoint, device)# 2. extract pipeline info for sdk use (dump-info)
export2SDK(deploy_cfg, model_cfg, work_dir, pthmodel_checkpoint, devicedevice)如果一切顺利你会在/path/to/your/work_space/work_dir/onnx/your_model_name得到如下文件
deploy.json
detail.json
end2end
pipeline.json使用MMDeploy加载onnx模型对单张图片进行推理
在工作空间work_space下创建文件“python_onnx_inference.py”示例代码如下
from mmdeploy.apis import inference_model# 加载使用git clone 下载的mmdeploy中相关的deploy config文件
deploy_cfg mmdeploy/configs/mmdet/detection/detection_onnxruntime_dynamic.py# 加载模型权重对应的config文件
model_cfg configs/faster-rcnn_r50_fpn_2x_coco.py# 设置后端推理使用的onnx模型路径
backend_files [work_dir/onnx/your_model_name/end2end.onnx]# 设置后端推理所需的demo图片
img [images/demo.jpg]# 设置使用cpu设备
device cpu# 调用mmdeploy中推理函数接口得到result结果
result inference_model(model_cfg, deploy_cfg, backend_files, img, device)# 控制台打印得到的results结果
print(result: {}.format(result))如果一切顺利的话最后的print()会正常输出。
使用python SDK对onnx模型进行验证
在工作空间work_space下运行如下命令
python .\mmdeploy\demo\python\object_detection.py cpu .\work_dir\onnx\your_model_name\ .\images\demo.jpg之后在work_space工作空间目录下会得到demo.jpg对应的推理结果图。
参考资料
https://gitee.com/open-mmlab/mmdeploy/blob/master/docs/zh_cn/02-how-to-run/prebuilt_package_windows.md#python-sdkhttps://gitee.com/open-mmlab/mmdeploy/blob/master/docs/zh_cn/get_started.mdMMDeploy
2023.4.22 于 西安