README.md 2.5 KB
Newer Older
J
Jason 已提交
1
# onnx2fluid
M
Macrobull 已提交
2

M
Macrobull 已提交
3
[![License](https://img.shields.io/badge/license-Apache%202-blue.svg)](LICENSE)
J
Jason 已提交
4

5
onnx2fluid支持将ONNX模型转换为PaddlePaddle模型,并用于预测,用户也可以通过将PyTorch模型导出为ONNX模型,再使用onnx2fluid将模型转为PaddlePaddle模型。
J
Jason 已提交
6

7
## 特色
J
Jason 已提交
8

9 10 11 12 13 14 15 16 17
* 导出Python代码和fluid ProgramDesc模型
* 权重可嵌入支持的算子中
* 转换验证打包三合一
* 转换过程不依赖PaddlePaddle
* 可自由扩展算子

## 环境配置

在如下环境配置中测试成功:
J
Jason 已提交
18

M
fix doc  
Macrobull 已提交
19
* python 3.5+
M
Macrobull 已提交
20 21
* onnx == 1.4.1
* paddlepaddle == 1.5.0 (可选,仅用于验证)
J
Jason 已提交
22

23
使用[Anaconda](https://docs.anaconda.com/anaconda/install):
J
Jason 已提交
24
``` shell
J
Jason 已提交
25
conda install -c conda-forge onnx
M
Macrobull 已提交
26
pip install paddlepaddle==1.5.0
J
Jason 已提交
27
```
J
Jason 已提交
28

29 30 31 32 33 34 35
## 动手玩

测试ONNX官方预训练模型,包含alexnet, googlenet, caffenet, rcnn
inception_v1, inception_v2, resnet50, shufflenet, squeezenet,
vgg19, zfnet512等:

``` shell
M
Macrobull 已提交
36
python setup.py install
37 38 39
cd examples
sh onnx_model_zoo.sh
```
M
Macrobull 已提交
40

41 42 43 44 45 46 47
使用PyTorch搭建模型,导出ONNX,转换并验证:

``` shell
python setup.py install
cd examples
python gen_some_samples.py
onnx2fluid sample_1.onnx -t sample_1.npz
M
Macrobull 已提交
48
```
49 50 51

## 使用说明

M
Macrobull 已提交
52 53
目前支持 **ONNX opset 9+** 的部分算子,对应PyTorch版本 **1.0/1.1(stable opset)**,更多兼容信息请参考[ONNX文档](https://github.com/onnx/onnx/blob/master/docs/Operators.md)

54 55
onnx2fluid:

J
Jason 已提交
56
```shell
M
Macrobull 已提交
57
onnx2fluid [-dexy] [-o /path/to/export_dir/] [-z archive.zip] [-t test_data.npz] [-i [input_name1,input_name2]] /path/to/onnx/model.onnx
M
Macrobull 已提交
58

59 60 61 62 63 64 65 66 67
optional arguments:
  --debug, -d           启用调试
  --embed_params, -e    尝试权重内嵌
  --no-pedantic, -x     转换扩展的ONNX算子
  --skip-version-conversion, -y
                        跳过ONNX算子版本转换
  --output_dir, -o      指定输出目录
  --archive [ARCHIVE], -z [ARCHIVE]
                        如果验证通过,打包到指定的ZIP文件
M
Macrobull 已提交
68 69
  --infer_inputs, -i [input_name1,input_name2]
                        调用PaddlePaddle fluid类形推导完善模型
J
Jason 已提交
70
```
M
Macrobull 已提交
71

72 73
转换工具onnx2fluid.conversion:

J
Jason 已提交
74
```shell
75
onnx2fluid.conversion [-dexy] [-o /path/to/export_dir/] /path/to/onnx/model.onnx
J
Jason 已提交
76
```
77 78 79 80

验证工具onnx2fluid.validate:

```shell
M
Macrobull 已提交
81
onnx2fluid.validate [-d] [-t test_data.npz] [-i [input_name1,input_name2]] [-p 1e-3] /path/to/onnx/model.onnx
82 83 84 85
```

## 参考

M
Macrobull 已提交
86 87
* PaddlePaddle [算子](http://www.paddlepaddle.org/documentation/docs/zh/1.5/api_cn/layers_cn.html)
* PaddlePaddle [加载预测模型](http://www.paddlepaddle.org/documentation/docs/zh/1.5/api_guides/low_level/inference.html#id4)