readme.md 2.1 KB
Newer Older
1 2
# paddle2onnx 模型转化与预测

H
HydrogenSulfate 已提交
3 4 5 6 7 8
## 目录

- [paddle2onnx 模型转化与预测](#paddle2onnx-模型转化与预测)
  - [1. 环境准备](#1-环境准备)
  - [2. 模型转换](#2-模型转换)
  - [3. onnx 预测](#3-onnx-预测)
9 10 11

## 1. 环境准备

B
Bin Lu 已提交
12
需要准备 Paddle2ONNX 模型转化环境,和 ONNX 模型预测环境。
B
Bin Lu 已提交
13

H
HydrogenSulfate 已提交
14
Paddle2ONNX 支持将 PaddlePaddle inference 模型格式转化到 ONNX 模型格式,算子目前稳定支持导出 ONNX Opset 9~11。
H
HydrogenSulfate 已提交
15
更多细节可参考 [Paddle2ONNX](https://github.com/PaddlePaddle/Paddle2ONNX#paddle2onnx)
16 17

- 安装 Paddle2ONNX
H
HydrogenSulfate 已提交
18 19 20
    ```shell
    python3.7 -m pip install paddle2onnx
    ```
21

H
HydrogenSulfate 已提交
22
- 安装 ONNX 推理引擎
H
HydrogenSulfate 已提交
23 24 25
    ```shell
    python3.7 -m pip install onnxruntime
    ```
H
HydrogenSulfate 已提交
26
下面以 ResNet50_vd 为例,介绍如何将 PaddlePaddle inference 模型转换为 ONNX 模型,并基于 ONNX 引擎预测。
27 28 29 30 31

## 2. 模型转换

- ResNet50_vd inference模型下载

H
HydrogenSulfate 已提交
32 33 34 35 36 37
    ```shell
    cd deploy
    mkdir models && cd models
    wget -nc https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/inference/ResNet50_vd_infer.tar && tar xf ResNet50_vd_infer.tar
    cd ..
    ```
38 39 40

- 模型转换

H
HydrogenSulfate 已提交
41 42 43 44 45 46 47 48 49
    使用 Paddle2ONNX 将 Paddle 静态图模型转换为 ONNX 模型格式:
    ```shell
    paddle2onnx --model_dir=./models/ResNet50_vd_infer/ \
    --model_filename=inference.pdmodel \
    --params_filename=inference.pdiparams \
    --save_file=./models/ResNet50_vd_infer/inference.onnx \
    --opset_version=10 \
    --enable_onnx_checker=True
    ```
50

H
HydrogenSulfate 已提交
51
转换完毕后,生成的ONNX 模型 `inference.onnx` 会被保存在 `./models/ResNet50_vd_infer/` 路径下
52 53 54 55

## 3. onnx 预测

执行如下命令:
H
HydrogenSulfate 已提交
56
```shell
57 58 59 60
python3.7 python/predict_cls.py \
-c configs/inference_cls.yaml \
-o Global.use_onnx=True \
-o Global.use_gpu=False \
B
Bin Lu 已提交
61
-o Global.inference_model_dir=./models/ResNet50_vd_infer
62 63 64 65 66 67
```

结果如下:
```
ILSVRC2012_val_00000010.jpeg:   class id(s): [153, 204, 229, 332, 155], score(s): [0.69, 0.10, 0.02, 0.01, 0.01], label_name(s): ['Maltese dog, Maltese terrier, Maltese', 'Lhasa, Lhasa apso', 'Old English sheepdog, bobtail', 'Angora, Angora rabbit', 'Shih-Tzu']
```