Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Docs] Update README.md #1215

Merged
merged 1 commit into from
Mar 28, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 42 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,47 @@

简体中文 | [English](README_en.md)

## 简介
# 1 简介

Paddle2ONNX 支持将 **PaddlePaddle** 模型格式转化到 **ONNX** 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括 TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。
Paddle2ONNX 支持将 **PaddlePaddle** 模型格式转化到 **ONNX** 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括
TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。

感谢[EasyEdge团队](https://ai.baidu.com/easyedge/home)贡献的Paddle2Caffe, 支持将Paddle模型导出为Caffe格式,安装及使用方式参考[Paddle2Caffe](Paddle2Caffe)。
感谢[EasyEdge团队](https://ai.baidu.com/easyedge/home)贡献的Paddle2Caffe,
支持将Paddle模型导出为Caffe格式,安装及使用方式参考[Paddle2Caffe](Paddle2Caffe)。

# 2 环境依赖

## 模型库
Paddle2ONNX 建设了一个飞桨热点模型的模型库,包括 PicoDet、OCR、HumanSeg 等多种领域模型,有需求的开发者可直接下载使用,进入目录[model_zoo](./model_zoo)了解更多详情!
- PaddlePaddle 2.6.0
- onnxruntime >= 1.10.0

## 环境依赖
# 3 安装

- 无

## 安装
针对PaddlePaddle2.5.2的用户可以直接运行以下命令行代码来安装P2O

```
pip install paddle2onnx
```

- [Github 源码安装方式](docs/zh/compile.md)
由于没有自动发包机制,针对PaddlePaddle2.6.0的用户,请按照[Github 源码安装方式](docs/zh/compile.md)编译Paddle2ONNX。

# 4 使用

## 使用
## 4.1 获取PaddlePaddle部署模型

### 获取PaddlePaddle部署模型
Paddle2ONNX 在导出模型时,需要传入部署模型格式,包括两个文件

Paddle2ONNX 在导出模型时,需要传入部署模型格式,包括两个文件
- `model_name.pdmodel`: 表示模型结构
- `model_name.pdmodel`: 表示模型结构
- `model_name.pdiparams`: 表示模型参数
[注意] 这里需要注意,两个文件其中参数文件后辍为 `.pdiparams`,如你的参数文件后辍是 `.pdparams`,那说明你的参数是训练过程中保存的,当前还不是部署模型格式。 部署模型的导出可以参照各个模型套件的导出模型文档。
[注意] 这里需要注意,两个文件其中参数文件后辍为 `.pdiparams`,如你的参数文件后辍是 `.pdparams`
,那说明你的参数是训练过程中保存的,当前还不是部署模型格式。 部署模型的导出可以参照各个模型套件的导出模型文档。

## 4.2 调整Paddle模型

如果对Paddle模型的输入输出需要做调整,可以前往[Paddle 相关工具](./tools/paddle/README.md)查看教程。

## 4.3 命令行转换

### 命令行转换
使用如下命令将Paddle模型转换为ONNX模型

```
paddle2onnx --model_dir saved_inference_model \
Expand All @@ -43,7 +51,9 @@ paddle2onnx --model_dir saved_inference_model \
--save_file model.onnx \
--enable_dev_version True
```
#### 参数选项

可调整的转换参数如下表:

| 参数 | 参数说明 |
|----------------------------|-----------------------------------------------------------------------------------------------------------------|
| --model_dir | 配置包含 Paddle 模型的目录路径 |
Expand All @@ -60,27 +70,27 @@ paddle2onnx --model_dir saved_inference_model \
| --export_fp16_model | **[可选]** 是否将导出的 ONNX 的模型转换为 FP16 格式,并用 ONNXRuntime-GPU 加速推理,默认为 False |
| --custom_ops | **[可选]** 将 Paddle OP 导出为 ONNX 的 Custom OP,例如:--custom_ops '{"paddle_op":"onnx_op"},默认为 {} |

- 使用 onnxruntime 验证转换模型, 请注意安装最新版本(最低要求 1.10.0)

## 4.4 裁剪ONNX

### 其他优化工具
1. 如你对导出的 ONNX 模型有优化的需求,推荐使用 `onnx-simplifier`,也可使用如下命令对模型进行优化
```
python -m paddle2onnx.optimize --input_model model.onnx --output_model new_model.onnx
```
如果你需要调整 ONNX 模型,请参考如下工具:[ONNX 相关工具](./tools/onnx/README.md)

## 4.5 优化ONNX

如你对导出的 ONNX 模型有优化的需求,推荐使用 `onnx-simplifier`,也可使用如下命令对模型进行优化

2. 如需要修改导出 ONNX 的模型输入形状,如改为静态 shape
```
python -m paddle2onnx.optimize --input_model model.onnx \
--output_model new_model.onnx \
--input_shape_dict "{'x':[1,3,224,224]}"
python -m paddle2onnx.optimize --input_model model.onnx --output_model new_model.onnx
```

3. 如果你有裁剪 Paddle 模型,固化或修改 Paddle 模型输入 Shape 或者合并 Paddle 模型的权重文件等需求,请使用如下工具:[Paddle 相关工具](./tools/paddle/README.md)
# 5 License

4. 如果你需要裁剪 ONNX 模型或者修改 ONNX 模型,请参考如下工具:[ONNX 相关工具](./tools/onnx/README.md)
Provided under the [Apache-2.0 license](https://github.com/PaddlePaddle/paddle-onnx/blob/develop/LICENSE).

5. PaddleSlim 量化模型导出请参考:[量化模型导出ONNX](./docs/zh/quantize.md)
# 6 捐赠

## License
Provided under the [Apache-2.0 license](https://github.com/PaddlePaddle/paddle-onnx/blob/develop/LICENSE).
* 感谢PaddlePaddle团队提供服务器支持Paddle2ONNX的CI建设
* 感谢社区用户 [chenwhql](https://github.com/chenwhql)、[luotao1](https://github.com/luotao1)、
[goocody](https://github.com/goocody)、[jeff41404](https://github.com/jeff41404)、
[jzhang553](https://github.com/jzhang533)、[ZhengBicheng](https://github.com/ZhengBicheng)
与2024年03月28日向Paddle2ONNX PMC捐赠共10000元人名币用于Paddle2ONNX的发展。