Skip to content

Commit 31800ff

Browse files
authored
Merge pull request #128 from Channingss/x2paddle
support opset 10,11
2 parents e2e0bbf + 73660b6 commit 31800ff

File tree

91 files changed

+4910
-8117
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+4910
-8117
lines changed

FAQ.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
## 常见问题
2+
3+
**Q1. Paddle模型转至ONNX模型过程中,提示『The parameter normalized of multiclass_nms OP of Paddle is False, which has diff with ONNX』**
4+
A: 此提示为警告信息,模型仍然会正常进行转换。Paddle中`fluid.layers.multiclass_nms`算子中提供了`normalized`参数,用于表示输入box是否进行了归一化。而ONNX中的NMS算子只支持`normalized`参数为True的情况,当你转换的模型(一般是YOLOv3模型)中该参数为`False`的情况下,转换后的模型可能会与原模型存在diff。
5+
6+
**Q2. Paddle模型转至ONNX模型过程中,提示『Converting this model to ONNX need with static input shape, please fix input shape of this model』**
7+
A: 此提示为错误信息,表示该模型的转换需要固定的输入大小:
8+
> 1. 模型来源于PaddleX导出,可以在导出的命令中,指定--fixed_input_shape=[Height,Width],详情可见:[PaddleX模型导出文档](https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/deploy/export_model.md)
9+
> 2. 模型来源于PaddleDetection导出,可以在导出模型的时候,指定 TestReader.inputs_def.image_shape=[Channel,Height,Width], 详情可见:[PaddleDetection模型导出文档](https://github.com/PaddlePaddle/PaddleDetection/blob/master/docs/advanced_tutorials/deploy/EXPORT_MODEL.md#设置导出模型的输入大小)
10+
> 3. 模型来源于自己构建,可在网络构建的`fluid.data(shape=[])`中,指定shape参数来固定模型的输入大小。

README.md

Lines changed: 28 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,14 @@
1-
# 关于Paddle2ONNX迁移至X2Paddle的说明
2-
Paddle2ONNX目前整体功能已经迁移至X2Paddle,用户按照如下方式安装X2Paddle,即可转换Paddle模型至ONNX
3-
4-
X2Paddle项目地址: https://github.com/PaddlePaddle/X2Paddle
5-
```
6-
git clone https://github.com/PaddlePaddle/X2Paddle
7-
cd X2Paddle
8-
python setup.py install
9-
```
10-
转换命令
11-
```
12-
x2paddle -f paddle2onnx -m paddle_infer_model_dir -s save_onnx_dir
13-
```
14-
其中`paddle_infer_model_dir`为Paddle模型目录路径,里面需包含`__model__``__params__`两个文件,且文件名得严格一致。
15-
16-
由于Paddle框架和PaddleDetection的升级,目前YOLOv3等检测模型暂无法支持,目前支持模型如下
17-
- 支持[PaddleX](https://github.com/PaddlePaddle/PaddleX)[PaddleClas](https://github.com/PaddlePaddle/PaddleCLAS)中的所有分类模型
18-
- 支持[PaddleX](https://github.com/PaddlePaddle/PaddleX)[PaddleSeg](https://github.com/PaddlePaddle/PaddleSeg)中的UNet/DeepLabV3/HRNet语义分割模型
19-
- 支持[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)中的文字检测模型(文字识别模型暂不支持)
20-
21-
221
## Legacy
2+
233
paddle2onnx支持将**PaddlePaddle**框架下产出的模型转化到**ONNX**模型格式.
244
paddle2onnx is a toolkit for converting trained model to **ONNX** from **PaddlePaddle** deep learning framework.
255

266
## 更新记录
7+
8+
2020.9.21
9+
1. 支持ONNX Opset 9, 10, 11三个版本的导出。
10+
2. 新增支持转换的OP: swish ,floor, uniform_random, abs, instance_norm, clip, tanh, log和pad2d。
11+
2712
2019.09.25
2813
1. 新增支持SE_ResNet50_vd、SqueezeNet1_0、SE_ResNext50_32x4d、Xception41、VGG16、InceptionV4、YoloV3模型转换。
2914
2. 解决0.1版本无法适配新版ONNX版本问题。
@@ -36,44 +21,35 @@ paddle2onnx is a toolkit for converting trained model to **ONNX** from **PaddleP
3621

3722
## 环境依赖
3823

39-
### 1. 普通用户环境配置
40-
python >= 3.5
41-
paddlepaddle >= 1.5.0
42-
onnx >= 1.5
43-
### 2. 开发者环境配置
24+
### 用户环境配置
25+
4426
python >= 3.5
45-
paddlepaddle >= 1.5.0
46-
onnx >= 1.5
47-
torch >= 1.1
48-
onnxruntime >= 0.4.0
27+
paddlepaddle >= 1.6.0
28+
onnx >= 1.6
29+
4930
## 安装
5031
### 安装方式1
32+
5133
pip install paddle2onnx
34+
5235
### 安装方式2
36+
5337
git clone https://github.com/PaddlePaddle/paddle2onnx.git
5438
python setup.py install
39+
5540
## 使用方式
5641
### 普通用户使用方式
5742
> 如果用户只是想将paddle模型转化成onnx模型,可以使用下面的命令进行操作。
5843
59-
paddle2onnx --fluid_model src_dir --onnx_model dist_name
60-
### 开发者使用方式
61-
> 如果用户有一个新的模型要转成onnx模型,想验证模型的精确度,可以使用下面的方式来进行验证。
44+
paddle2onnx --model src_dir --save_dir dist_name
6245

63-
git clone https://github.com/PaddlePaddle/paddle2onnx.git
64-
python fluid_onnx/fluid_to_onnx.py --fluid_model src --onnx_model dist --debug
6546
### 参数选项
6647
| 参数 |参数说明 |
6748
|----------|--------------|
68-
|fluid_model | paddle fluid模型和模型参数所在目录 |
69-
|onnx_model | 转化成onnx模型的模型名称
70-
|name_prefix| [可选]某些paddle模型的模型参数加了前缀,则需要指定模型参数前缀,例如@HUB_mobilenet_v2_imagenet@conv6_2_expand_bn_scale |
71-
|fluid_model_name |[可选]如果导入的paddle模型不是默认__model__,需要指定模型的名字|
72-
|fluid_params_name|[可选]如果导入的paddle模型参数是合并在一个文件里面,需要指定模型参数文件名|
73-
|debug | [可选]如果开发者要对转化的模型进行精度测试,打开此开关 |
74-
|return_variable| [可选]在debug模式中,如果paddle模型返回的结果是LoDTensor,需要打开此开关
75-
|check_task| [可选]在debug模式中,根据不同配置项选择不同的执行器和数据构造器 |
76-
|image_path | [可选]在debug模式中,可以选择加载不同的图片进行精度验证 |
49+
|--model | 指定包含Paddle模型和参数:'__model__', '__params__'的路径 |
50+
|--save_dir | 指定转换后的模型保存目录路径 |
51+
|--onnx_opset | **[可选]** 该参数可设置转换为ONNX的OpSet版本,目前支持9、10、11,默认为10 |
52+
7753

7854
## 相关文档
7955
[paddle2onnx测试模型库](docs/model_zoo.md)
@@ -82,6 +58,13 @@ paddle2onnx is a toolkit for converting trained model to **ONNX** from **PaddleP
8258
1. 默认情况下,paddle2onnx工具是不提供Paddle模型进行转换的。PaddleHub提供了较多标准的模型供使用,用户可以拉取PaddleHub中的模型进行转化,安装PaddleHub的模型后会有提示模型安装位置,例如ssd模型安装位置在/root/paddle/paddle-onnx/ssd_mobilenet_v1_pascal,不同的PaddleHub的安装环境安装位置会有不同,用户请注意PaddleHub模型的安装位置。
8359
2. 工具参数name_prefix的使用方式。使用paddle2onnx工具前最好观察一下Paddle模型的参数名字是否带有前缀,例如@HUB_mobilenet_v2_imagenet@conv6_2_expand_bn_scale,那么使用paddle2onnx需要加上参数 --name_prefix @HUB_mobilenet_v2_imagenet@。默认情况下是不带前缀。
8460
3. Model zoo的使用方式。Model zoo大部分是提供了PaddleHub模型的链接地址,用户可以通过安装PaddleHub模型来获取标准模型。目前PaddleHub没有集成densenet_121、InceptionV4、SE_ResNet50_vd、Xception41这四个模型,我们提供了PaddleCV库的下载地址,该模型不可以直接进行转化,用户需要使用save_inference_model接口来保存模型和参数。
85-
4. 目前支持PaddleDetection中的YoloV3,我们提供了PaddleDetection中的yolov3_darknet_voc的下载地址,用户需要使用save_inference_model接口来保存模型和参数,并且yolov3中的multiclass_nms的normalized参数需手动设为True,否则最终结果会存在轻微的差异。
61+
62+
PaddleX, PaddleClas, PaddleSeg和PaddleOCR目前支持模型如下:
63+
64+
- 支持[PaddleX](https://github.com/PaddlePaddle/PaddleX)[PaddleClas](https://github.com/PaddlePaddle/PaddleCLAS)中的所有分类模型
65+
- 支持[PaddleX](https://github.com/PaddlePaddle/PaddleX)[PaddleSeg](https://github.com/PaddlePaddle/PaddleSeg)中的UNet/DeepLabV3/HRNet语义分割模型
66+
- 支持[PaddleX](https://github.com/PaddlePaddle/PaddleX)中YOLOv3的检测模型
67+
- 支持[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)中的文字检测模型(文字识别模型暂不支持)
68+
8669
## License
8770
Provided under the [Apache-2.0 license](https://github.com/PaddlePaddle/paddle-onnx/blob/develop/LICENSE).

commit-prepare.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
path=$(cd `dirname $0`; pwd)
2+
cd $path
3+
4+
pip install pre-commit
5+
pip install yapf
6+
pre-commit install

data/resnet/1.jpeg

-60.1 KB
Binary file not shown.

data/resnet/2.jpeg

-140 KB
Binary file not shown.

debug/model_check.py

Lines changed: 0 additions & 244 deletions
This file was deleted.

0 commit comments

Comments
 (0)