README.md 2.2 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
* onnx == 1.4.0
21
* paddlepaddle == 1.3.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
26
pip install paddlepaddle==1.3.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 52 53

## 使用说明

onnx2fluid:

J
Jason 已提交
54
```shell
55
onnx2fluid [-dexy] [-o /path/to/export_dir/] [-z archive.zip] [-t test_data.npz] /path/to/onnx/model.onnx
M
Macrobull 已提交
56

57 58 59 60 61 62 63 64 65
optional arguments:
  --debug, -d           启用调试
  --embed_params, -e    尝试权重内嵌
  --no-pedantic, -x     转换扩展的ONNX算子
  --skip-version-conversion, -y
                        跳过ONNX算子版本转换
  --output_dir, -o      指定输出目录
  --archive [ARCHIVE], -z [ARCHIVE]
                        如果验证通过,打包到指定的ZIP文件
J
Jason 已提交
66
```
M
Macrobull 已提交
67

68 69
转换工具onnx2fluid.conversion:

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

验证工具onnx2fluid.validate:

```shell
onnx2fluid.validate [-d] [-t test_data.npz] [-p 1e-3] /path/to/onnx/model.onnx
```

## 参考

* PaddlePaddle [算子](http://www.paddlepaddle.org/documentation/docs/zh/1.4/api_cn/layers_cn.html)
* PaddlePaddle [加载预测模型](http://www.paddlepaddle.org/documentation/docs/zh/1.4/api_guides/low_level/inference.html#id4)