Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleClas
提交
c9411445
P
PaddleClas
项目概览
PaddlePaddle
/
PaddleClas
大约 1 年 前同步成功
通知
115
Star
4999
Fork
1114
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
19
列表
看板
标记
里程碑
合并请求
6
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleClas
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
19
Issue
19
列表
看板
标记
里程碑
合并请求
6
合并请求
6
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
c9411445
编写于
12月 14, 2021
作者:
W
weishengyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update gallery2fc
上级
8d22f025
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
37 addition
and
8 deletion
+37
-8
ppcls/utils/gallery2fc.py
ppcls/utils/gallery2fc.py
+37
-8
未找到文件。
ppcls/utils/gallery2fc.py
浏览文件 @
c9411445
import
os
import
paddle
from
ppcls.arch
import
build_model
from
ppcls.arch.gears.identity_head
import
IdentityHead
from
ppcls.utils.config
import
parse_config
,
parse_args
from
ppcls.utils.save_load
import
load_dygraph_pretrain
from
ppcls.utils.logger
import
init_logger
from
ppcls.data
import
transform
,
create_operators
def
load_feature_extractor
(
configs
):
arch
=
build_model
(
configs
[
"Arch"
])
load_dygraph_pretrain
(
arch
,
configs
[
"Global"
][
"pretrained_model"
])
def
build_gallery_feature
(
configs
,
feature_extractor
):
transform_configs
=
configs
[
"Infer"
][
"transforms"
]
preprocess_ops
=
create_operators
(
transform_configs
)
embedding_size
=
configs
[
"Arch"
][
"Head"
][
"embedding_size"
]
batch_size
=
configs
[
"IndexProcess"
][
"batch_size"
]
image_shape
=
configs
[
"Global"
][
"image_shape"
]
image_shape
.
insert
(
0
,
batch_size
)
input_tensor
=
paddle
.
zeros
(
image_shape
)
image_root
=
configs
[
"IndexProcess"
][
"image_root"
]
data_file
=
configs
[
"IndexProcess"
][
"data_file"
]
delimiter
=
configs
[
"IndexProcess"
][
"delimiter"
]
gallery_images
=
[]
gallery_docs
=
[]
with
open
(
data_file
,
'r'
,
encoding
=
'utf-8'
)
as
f
:
lines
=
f
.
readlines
()
for
_
,
ori_line
in
enumerate
(
lines
):
line
=
ori_line
.
strip
().
split
(
delimiter
)
text_num
=
len
(
line
)
assert
text_num
>=
2
,
f
"line(
{
ori_line
}
) must be splitted into at least 2 parts, but got
{
text_num
}
"
image_file
=
os
.
path
.
join
(
image_root
,
line
[
0
])
gallery_images
.
append
(
image_file
)
gallery_docs
.
append
(
ori_line
.
strip
())
def
build_gallery_feature
(
feature_extractor
):
pass
def
save_fuse_model
(
fuse_model
):
...
...
@@ -21,11 +47,14 @@ def save_fuse_model(fuse_model):
class
FuseModel
(
paddle
.
nn
.
Layer
):
def
__init__
(
self
,
configs
):
super
().
__init__
()
self
.
feature_extractor
=
load_feature_extractor
(
configs
)
self
.
gallery_layer
=
build_gallery_feature
(
self
.
feature_extractor
)
self
.
feature_extractor
=
build_model
(
configs
)
load_dygraph_pretrain
(
self
.
feature_extractor
,
configs
[
"Global"
][
"pretrained_model"
])
self
.
feature_extractor
.
head
=
IdentityHead
()
self
.
gallery_layer
=
build_gallery_feature
(
configs
,
self
.
feature_extractor
)
def
forward
(
self
,
x
):
x
=
self
.
feature_model
(
x
)
x
=
self
.
feature_model
(
x
)[
"features"
]
x
=
paddle
.
norm
(
x
)
x
=
self
.
gallery_layer
(
x
)
return
x
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录