Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
X2Paddle
提交
87f906ce
X
X2Paddle
项目概览
PaddlePaddle
/
X2Paddle
大约 1 年 前同步成功
通知
328
Star
698
Fork
167
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
26
列表
看板
标记
里程碑
合并请求
4
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
X2Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
26
Issue
26
列表
看板
标记
里程碑
合并请求
4
合并请求
4
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
87f906ce
编写于
12月 15, 2021
作者:
W
WJJ1995
提交者:
GitHub
12月 15, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update readme (#714)
* update op_list and model_zoo * update README.md * update README.md * Add x2paddle_api.md
上级
e3de1fa3
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
109 addition
and
5 deletion
+109
-5
README.md
README.md
+18
-0
docs/inference_model_convertor/demo/pytorch2paddle.ipynb
docs/inference_model_convertor/demo/pytorch2paddle.ipynb
+3
-3
docs/inference_model_convertor/op_list.md
docs/inference_model_convertor/op_list.md
+5
-2
docs/inference_model_convertor/x2paddle_api.md
docs/inference_model_convertor/x2paddle_api.md
+80
-0
docs/introduction/x2paddle_model_zoo.md
docs/introduction/x2paddle_model_zoo.md
+3
-0
未找到文件。
README.md
浏览文件 @
87f906ce
...
@@ -77,6 +77,20 @@ python setup.py install
...
@@ -77,6 +77,20 @@ python setup.py install
### 功能一:推理模型转换
### 功能一:推理模型转换
#### PyTorch模型转换
```
python
from
x2paddle.convert
import
pytorch2paddle
pytorch2paddle
(
module
=
torch_module
,
save_dir
=
"./pd_model"
,
jit_type
=
"trace"
,
input_examples
=
[
torch_input
])
# module (torch.nn.Module): PyTorch的Module。
# save_dir (str): 转换后模型的保存路径。
# jit_type (str): 转换方式。默认为"trace"。
# input_examples (list[torch.tensor]): torch.nn.Module的输入示例,list的长度必须与输入的长度一致。默认为None。
```
```
script```模式以及更多细节可参考[PyTorch模型转换文档](./docs/inference_model_convertor/pytorch2paddle.md)。
#### TensorFlow模型转换
#### TensorFlow模型转换
```
shell
```
shell
x2paddle --framework=tensorflow --model=tf_model.pb --save_dir=pd_model
x2paddle --framework=tensorflow --model=tf_model.pb --save_dir=pd_model
...
@@ -103,10 +117,14 @@ x2paddle --framework=caffe --prototxt=deploy.prototxt --weight=deploy.caffemodel
...
@@ -103,10 +117,14 @@ x2paddle --framework=caffe --prototxt=deploy.prototxt --weight=deploy.caffemodel
| --model | 当framework为tensorflow/onnx时,该参数指定tensorflow的pb模型文件或onnx模型路径 |
| --model | 当framework为tensorflow/onnx时,该参数指定tensorflow的pb模型文件或onnx模型路径 |
| --caffe_proto | **[可选]** 由caffe.proto编译成caffe_pb2.py文件的存放路径,当存在自定义Layer时使用,默认为None |
| --caffe_proto | **[可选]** 由caffe.proto编译成caffe_pb2.py文件的存放路径,当存在自定义Layer时使用,默认为None |
| --define_input_shape | **[可选]** For TensorFlow, 当指定该参数时,强制用户输入每个Placeholder的shape,见[文档Q2](./docs/inference_model_convertor/FAQ.md) |
| --define_input_shape | **[可选]** For TensorFlow, 当指定该参数时,强制用户输入每个Placeholder的shape,见[文档Q2](./docs/inference_model_convertor/FAQ.md) |
| --enable_code_optim | **[可选]** For PyTorch, 是否对生成代码进行优化,默认为True |
| --to_lite | **[可选]** 是否使用opt工具转成Paddle-Lite支持格式,默认为False |
| --to_lite | **[可选]** 是否使用opt工具转成Paddle-Lite支持格式,默认为False |
| --lite_valid_places | **[可选]** 指定转换类型,可以同时指定多个backend(以逗号分隔),opt将会自动选择最佳方式,默认为arm |
| --lite_valid_places | **[可选]** 指定转换类型,可以同时指定多个backend(以逗号分隔),opt将会自动选择最佳方式,默认为arm |
| --lite_model_type | **[可选]** 指定模型转化类型,目前支持两种类型:protobuf和naive_buffer,默认为naive_buffer |
| --lite_model_type | **[可选]** 指定模型转化类型,目前支持两种类型:protobuf和naive_buffer,默认为naive_buffer |
#### X2Paddle API
目前X2Paddle提供API方式转换模型,可参考[X2PaddleAPI](docs/inference_model_convertor/x2paddle_api.md)
#### 一键转换Paddle-Lite支持格式
#### 一键转换Paddle-Lite支持格式
可参考[使用X2paddle导出Padde-Lite支持格式](docs/inference_model_convertor/convert2lite_api.md)
可参考[使用X2paddle导出Padde-Lite支持格式](docs/inference_model_convertor/convert2lite_api.md)
...
...
docs/inference_model_convertor/demo/pytorch2paddle.ipynb
浏览文件 @
87f906ce
...
@@ -40,7 +40,7 @@
...
@@ -40,7 +40,7 @@
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
"source": [
"source": [
"! pip install x2paddle
==1.0.1
--index https://pypi.Python.org/simple/"
"! pip install x2paddle --index https://pypi.Python.org/simple/"
]
]
},
},
{
{
...
@@ -72,7 +72,7 @@
...
@@ -72,7 +72,7 @@
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
"source": [
"source": [
"! pip install paddlepaddle==2.
0.1
"
"! pip install paddlepaddle==2.
2.0
"
]
]
},
},
{
{
...
...
docs/inference_model_convertor/op_list.md
浏览文件 @
87f906ce
...
@@ -48,6 +48,7 @@
...
@@ -48,6 +48,7 @@
| 29 | ReLU | 30 | AbsVal | 31 | Sigmoid | 32 | TanH |
| 29 | ReLU | 30 | AbsVal | 31 | Sigmoid | 32 | TanH |
| 33 | ReLU6 | 34 | Upsample | 35 | MemoryData | | |
| 33 | ReLU6 | 34 | Upsample | 35 | MemoryData | | |
## ONNX
## ONNX
| 序号 | OP | 序号 | OP | 序号 | OP | 序号 | OP |
| 序号 | OP | 序号 | OP | 序号 | OP | 序号 | OP |
...
@@ -77,6 +78,7 @@
...
@@ -77,6 +78,7 @@
## PyTorch
## PyTorch
Aten:
Aten:
| 序号 | OP | 序号 | OP | 序号 | OP | 序号 | OP |
| 序号 | OP | 序号 | OP | 序号 | OP | 序号 | OP |
|------|------|------|------|------|------|------|------|
|------|------|------|------|------|------|------|------|
...
@@ -108,8 +110,9 @@ Aten:
...
@@ -108,8 +110,9 @@ Aten:
| 101 | aten::upsample
\_
bilinear2d | 102 | aten::values |103|aten::view|104|aten::warn|
| 101 | aten::upsample
\_
bilinear2d | 102 | aten::values |103|aten::view|104|aten::warn|
| 105 | aten::where | 106 | aten::zeros |107|aten::zeros
\_
like|108|aten::bmm|
| 105 | aten::where | 106 | aten::zeros |107|aten::zeros
\_
like|108|aten::bmm|
| 109 | aten::sub
\_
| 110 | aten:erf |111|aten::lstm|112|aten::gather|
| 109 | aten::sub
\_
| 110 | aten:erf |111|aten::lstm|112|aten::gather|
| 113 | aten::upsample
\_
nearest2d | 114 | aten::split
\_
with
\_
sizes | 115 | aten::sum | 116 | aten::instance_norm |
| 113 | aten::upsample
\_
nearest2d | 114 | aten::split
\_
with
\_
sizes | 115 | aten::sum | 116 | aten::instance
\_
norm |
| 117 | aten::bitwise_not | 118 | aten::bitwise_xor | 119 | aten::bitwise_and | 120 | aten::silu |
| 117 | aten::bitwise
\_
not | 118 | aten::bitwise
\_
xor | 119 | aten::bitwise
\_
and | 120 | aten::silu |
| 121 | aten::repeat
\_
interleave | 122 | aten::maxpool1d | 123 | aten::frobenius
\_
norm | 124 | aten::format |
Prim:
Prim:
| 序号 | OP | 序号 | OP | 序号 | OP | 序号 | OP |
| 序号 | OP | 序号 | OP | 序号 | OP | 序号 | OP |
...
...
docs/inference_model_convertor/x2paddle_api.md
0 → 100644
浏览文件 @
87f906ce
# X2paddle API
## 目录
*
[
x2paddle.convert.tf2paddle
](
#1
)
*
[
x2paddle.convert.caffe2paddle
](
#2
)
*
[
x2paddle.convert.onnx2paddle
](
#3
)
*
[
x2paddle.convert.pytorch2paddle
](
#4
)
TensorFlow、Caffe、ONNX以及PyTorch模型转换API如下:
## <h2 id="1">x2paddle.convert.tf2paddle</h2>
```
python
x2paddle
.
convert
.
tf2paddle
(
model_path
,
save_dir
,
define_input_shape
=
False
,
convert_to_lite
=
False
,
lite_valid_places
=
"arm"
,
lite_model_type
=
"naive_buffer"
)
```
> 转换TensorFlow模型。
> **参数**
>
> > - **model_path** (str): TensorFlow pb模型路径
> > - **save_dir** (str): 转换后模型保存路径
> > - **define_input_shape** (bool): 是否指定输入大小,默认为False
> > - **convert_to_lite** (bool): 是否使用opt工具转成Paddle-Lite支持格式,默认为False
> > - **lite_valid_places** (str): 指定转换类型,可以同时指定多个backend(以逗号分隔),opt将会自动选择最佳方式,默认为arm
> > - **lite_model_type** (str): 指定模型转化类型,目前支持两种类型:protobuf和naive_buffer,默认为naive_buffer
## <h2 id="2">x2paddle.convert.caffe2paddle</h2>
```
python
x2paddle
.
convert
.
caffe2paddle
(
proto_file
,
weight_file
,
save_dir
,
caffe_proto
,
convert_to_lite
=
False
,
lite_valid_places
=
"arm"
,
lite_model_type
=
"naive_buffer"
)
```
> 转换Caffe模型。
> **参数**
>
> > - **proto_file** (str): caffe模型的prototxt文件
> > - **weight_file** (str): caffe模型的权重文件
> > - **save_dir** (str): 转换后模型保存路径
> > - **caffe_proto** (str): 可选:由caffe.proto编译成caffe_pb2.py文件的存放路径,当存在自定义Layer时使用,默认为None
> > - **convert_to_lite** (bool): 是否使用opt工具转成Paddle-Lite支持格式,默认为False
> > - **lite_valid_places** (str): 指定转换类型,可以同时指定多个backend(以逗号分隔),opt将会自动选择最佳方式,默认为arm
> > - **lite_model_type** (str): 指定模型转化类型,目前支持两种类型:protobuf和naive_buffer,默认为naive_buffer
## <h2 id="3">x2paddle.convert.onnx2paddle</h2>
```
python
x2paddle
.
convert
.
onnx2paddle
(
model_path
,
save_dir
,
convert_to_lite
=
False
,
lite_valid_places
=
"arm"
,
lite_model_type
=
"naive_buffer"
)
```
> 转换ONNX模型。
> **参数**
>
> > - **model_path** (str): TensorFlow pb模型路径
> > - **save_dir** (str): 转换后模型保存路径
> > - **convert_to_lite** (bool): 是否使用opt工具转成Paddle-Lite支持格式,默认为False
> > - **lite_valid_places** (str): 指定转换类型,可以同时指定多个backend(以逗号分隔),opt将会自动选择最佳方式,默认为arm
> > - **lite_model_type** (str): 指定模型转化类型,目前支持两种类型:protobuf和naive_buffer,默认为naive_buffer
## <h2 id="4">x2paddle.convert.pytorch2paddle</h2>
```
python
x2paddle
.
convert
.
pytorch2paddle
(
module
,
save_dir
,
jit_type
=
"trace"
,
input_examples
=
None
,
enable_code_optim
=
True
,
convert_to_lite
=
False
,
lite_valid_places
=
"arm"
,
lite_model_type
=
"naive_buffer"
)
```
> 转换Pytorch模型。
> **参数**
>
> > - **module** (torch.nn. Module): PyTorch的Module
> > - **save_dir** (str): 转换后模型保存路径
> > - **jit_type** (str): 转换方式。目前有两种:trace和script, 默认为trace
> > - **input_examples** (list[torch.tensor]): torch.nn. Module的输入示例,list的长度必须与输入的长度一致。默认为None
> > - **enable_code_optim** (bool): 转换后的代码是否进行优化, 默认为True
> > - **convert_to_lite** (bool): 是否使用opt工具转成Paddle-Lite支持格式,默认为False
> > - **lite_valid_places** (str): 指定转换类型,可以同时指定多个backend(以逗号分隔),opt将会自动选择最佳方式,默认为arm
> > - **lite_model_type** (str): 指定模型转化类型,目前支持两种类型:protobuf和naive_buffer,默认为naive_buffer
docs/introduction/x2paddle_model_zoo.md
浏览文件 @
87f906ce
...
@@ -106,6 +106,9 @@
...
@@ -106,6 +106,9 @@
| BASNet|
[
code
](
https://github.com/xuebinqin/BASNet
)
|-|
| BASNet|
[
code
](
https://github.com/xuebinqin/BASNet
)
|-|
| DBFace |
[
code
](
https://github.com/dlunion/DBFace
)
|-|
| DBFace |
[
code
](
https://github.com/dlunion/DBFace
)
|-|
| SOLAR |
[
code
](
https://github.com/tonyngjichun/SOLAR
)
|只支持trace模式|
| SOLAR |
[
code
](
https://github.com/tonyngjichun/SOLAR
)
|只支持trace模式|
| YOLOX |
[
code
](
https://github.com/Megvii-BaseDetection/YOLOX
)
|只支持trace模式|
| MockingBird |
[
code
](
https://github.com/babysor/MockingBird
)
|只支持trace模式|
## PyTorch训练项目
## PyTorch训练项目
| 模型 | 转换前代码 | 转换后代码 |
| 模型 | 转换前代码 | 转换后代码 |
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录