pytorch 33 使用mmdeploy将mmdetection模型转换为onnx,并基于mmdeploy-sdk实现c++
时间: 2023-05-04 08:05:09 浏览: 299
PyTorch 模型转换为 ONNX 模型一些简单代码文件
使用mmdeploy可以将mmdetection模型转换为onnx格式,让模型在不同的平台和框架之间进行转换和迁移。同时,mmdeploy-sdk可以使用c语言进行实现,可以将onnx格式的模型部署到C/C++环境中。
要使用mmdeploy将mmdetection模型转换为onnx,首先需要安装mmcv-full和mmdetection。安装完成后,使用以下命令将模型转换为onnx:
```
python tools/deploy/export_onnx.py ${CONFIG_FILE} ${CHECKPOINT_FILE} ${ONNX_FILE} --input-img ${IMG_SHAPE}
```
其中${CONFIG_FILE}为模型的配置文件,${CHECKPOINT_FILE}为训练好的模型文件,${ONNX_FILE}为生成的onnx文件名称,${IMG_SHAPE}为输入图像的形状。
转换为onnx后,可以使用mmdeploy-sdk对模型进行部署。首先需要在C环境下使用mmdeploy-sdk的API读取onnx模型文件,然后使用C语言的库函数对模型进行推理。
使用mmdeploy-sdk的API读取onnx模型文件,代码如下:
```
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include "mmdeploy.h"
int main(int argc, char **argv) {
flexbuffer *model;
mmsession *session;
const char *model_path = argv[1];
/* 读取onnx模型文件 */
model = read_flexbuffer_file(model_path);
assert(model);
/* 创建session */
session = create_session(model);
assert(session);
/* 设置输入数据 */
set_input_data(session, input_data);
/* 进行推理,获取输出数据 */
get_output_data(session, output_data);
return 0;
}
```
使用C语言的库函数对模型进行推理,主要的工作是对输入数据进行预处理,并调用session的run方法进行推理,代码如下:
```
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include "mmdeploy.h"
int main(int argc, char **argv) {
flexbuffer *model;
mmsession *session;
float *input_buf, *output_buf;
/* 预处理输入数据 */
input_buf = preprocess_input(input_data);
/* 读取onnx模型文件 */
model = read_flexbuffer_file(argv[1]);
assert(model);
/* 创建session */
session = create_session(model);
assert(session);
/* 设置输入数据 */
set_input_data(session, input_data);
/* 进行推理,获取输出数据 */
get_output_data(session, output_data);
/* 对输出数据进行后处理 */
output_buf = postprocess_output(output_data);
return 0;
}
```
在使用mmdeploy-sdk进行C语言实现时,需要注意模型的输入和输出数据类型和形状,以及预处理和后处理函数的编写。通过以上步骤,就可以使用mmdeploy将mmdetection模型转换为onnx,并使用mmdeploy-sdk实现C语言部署。
阅读全文