Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleGAN
提交
283c8916
P
PaddleGAN
项目概览
PaddlePaddle
/
PaddleGAN
大约 1 年 前同步成功
通知
97
Star
7254
Fork
1210
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleGAN
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
283c8916
编写于
11月 11, 2021
作者:
L
LielinJiang
提交者:
GitHub
11月 11, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add export model doc (#472)
上级
ee9fae9d
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
54 addition
and
11 deletion
+54
-11
deploy/export_model.md
deploy/export_model.md
+36
-0
ppgan/models/base_model.py
ppgan/models/base_model.py
+11
-5
tools/export_model.py
tools/export_model.py
+7
-6
未找到文件。
deploy/export_model.md
0 → 100644
浏览文件 @
283c8916
# PaddleGAN模型导出教程
## 一、模型导出
本章节介绍如何使用
`tools/export_model.py`
脚本导出模型。
### 1、启动参数说明
| FLAG | 用途 | 默认值 | 备注 |
|:--------------:|:--------------:|:------------:|:-----------------------------------------:|
| -c | 指定配置文件 | None | |
| --load | 指定加载的模型参数路径 | None | |
| -s|--inputs_size | 指定模型输入形状 | None | |
| --output_dir | 模型保存路径 |
`./inference_model`
| |
### 2、使用示例
使用训练得到的模型进行试用,这里使用CycleGAN模型为例,脚本如下
```
bash
# 下载预训练好的CycleGAN_horse2zebra模型
wget https://paddlegan.bj.bcebos.com/models/CycleGAN_horse2zebra.pdparams
# 导出Cylclegan模型
python
-u
tools/export_model.py
-c
configs/cyclegan_horse2zebra.yaml
--load
CycleGAN_horse2zebra.pdparams
--inputs_size
=
"-1,3,-1,-1;-1,3,-1,-1"
```
### 3、config配置说明
```
python
export_model
:
-
{
name
:
'netG_A'
,
inputs_num
:
1
}
-
{
name
:
'netG_B'
,
inputs_num
:
1
}
```
以上为
```configs/cyclegan_horse2zebra.yaml```
中的配置, 由于
```CycleGAN_horse2zebra.pdparams```
是个字典,需要制定其中用于导出模型的权重键值。
```inputs_num```
为该网络的输入个数。
预测模型会导出到
`inference_model/`
目录下,分别为
`cycleganmodel_netG_A.pdiparams`
,
`cycleganmodel_netG_A.pdiparams.info`
,
`cycleganmodel_netG_A.pdmodel`
,
`cycleganmodel_netG_B.pdiparams`
,
`cycleganmodel_netG_B.pdiparams.info`
,
`cycleganmodel_netG_B.pdmodel`
,。
ppgan/models/base_model.py
浏览文件 @
283c8916
...
...
@@ -186,12 +186,18 @@ class BaseModel(ABC):
def
export_model
(
self
,
export_model
,
output_dir
=
None
,
inputs_size
=
[]):
inputs_num
=
0
for
net
in
export_model
:
input_spec
=
[
paddle
.
static
.
InputSpec
(
shape
=
inputs_size
[
inputs_num
+
i
],
dtype
=
"float32"
)
for
i
in
range
(
net
[
"inputs_num"
])]
input_spec
=
[
paddle
.
static
.
InputSpec
(
shape
=
inputs_size
[
inputs_num
+
i
],
dtype
=
"float32"
)
for
i
in
range
(
net
[
"inputs_num"
])
]
inputs_num
=
inputs_num
+
net
[
"inputs_num"
]
static_model
=
paddle
.
jit
.
to_static
(
self
.
nets
[
net
[
"name"
]],
input_spec
=
input_spec
)
if
output_dir
is
None
:
output_dir
=
'export_model'
paddle
.
jit
.
save
(
static_model
,
os
.
path
.
join
(
output_dir
,
'{}_{}'
.
format
(
self
.
__class__
.
__name__
.
lower
(),
net
[
"name"
])))
output_dir
=
'inference_model'
paddle
.
jit
.
save
(
static_model
,
os
.
path
.
join
(
output_dir
,
'{}_{}'
.
format
(
self
.
__class__
.
__name__
.
lower
(),
net
[
"name"
])))
tools/export_model.py
浏览文件 @
283c8916
...
...
@@ -24,11 +24,6 @@ from ppgan.engine.trainer import Trainer
def
parse_args
():
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
"--export_model"
,
default
=
None
,
type
=
str
,
help
=
"The path prefix of inference model to be used."
,
)
parser
.
add_argument
(
'-c'
,
'--config-file'
,
metavar
=
"FILE"
,
...
...
@@ -50,6 +45,12 @@ def parse_args():
default
=
None
,
required
=
True
,
help
=
"the inputs size"
)
parser
.
add_argument
(
"--output_dir"
,
default
=
None
,
type
=
str
,
help
=
"The path prefix of inference model to be used."
,
)
args
=
parser
.
parse_args
()
return
args
...
...
@@ -63,7 +64,7 @@ def main(args, cfg):
for
net_name
,
net
in
model
.
nets
.
items
():
if
net_name
in
state_dicts
:
net
.
set_state_dict
(
state_dicts
[
net_name
])
model
.
export_model
(
cfg
.
export_model
,
args
.
export_model
,
inputs_size
)
model
.
export_model
(
cfg
.
export_model
,
args
.
output_dir
,
inputs_size
)
if
__name__
==
"__main__"
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录