Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleOCR
提交
f6698a32
P
PaddleOCR
项目概览
PaddlePaddle
/
PaddleOCR
大约 1 年 前同步成功
通知
1528
Star
32962
Fork
6643
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
108
列表
看板
标记
里程碑
合并请求
7
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleOCR
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
108
Issue
108
列表
看板
标记
里程碑
合并请求
7
合并请求
7
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
f6698a32
编写于
9月 05, 2022
作者:
文幕地方
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
support onnx infer of SLANet
上级
e0194680
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
19 addition
and
16 deletion
+19
-16
ppocr/modeling/heads/table_att_head.py
ppocr/modeling/heads/table_att_head.py
+7
-9
ppstructure/table/predict_structure.py
ppstructure/table/predict_structure.py
+12
-7
未找到文件。
ppocr/modeling/heads/table_att_head.py
浏览文件 @
f6698a32
...
@@ -166,6 +166,7 @@ class SLAHead(nn.Layer):
...
@@ -166,6 +166,7 @@ class SLAHead(nn.Layer):
self
.
max_text_length
=
max_text_length
self
.
max_text_length
=
max_text_length
self
.
emb
=
self
.
_char_to_onehot
self
.
emb
=
self
.
_char_to_onehot
self
.
num_embeddings
=
out_channels
self
.
num_embeddings
=
out_channels
self
.
loc_reg_num
=
loc_reg_num
# structure
# structure
self
.
structure_attention_cell
=
AttentionGRUCell
(
self
.
structure_attention_cell
=
AttentionGRUCell
(
...
@@ -213,16 +214,15 @@ class SLAHead(nn.Layer):
...
@@ -213,16 +214,15 @@ class SLAHead(nn.Layer):
fea
=
fea
.
transpose
([
0
,
2
,
1
])
# (NTC)(batch, width, channels)
fea
=
fea
.
transpose
([
0
,
2
,
1
])
# (NTC)(batch, width, channels)
hidden
=
paddle
.
zeros
((
batch_size
,
self
.
hidden_size
))
hidden
=
paddle
.
zeros
((
batch_size
,
self
.
hidden_size
))
structure_preds
=
[]
structure_preds
=
paddle
.
zeros
((
batch_size
,
self
.
max_text_length
+
1
,
self
.
num_embeddings
))
loc_preds
=
[]
loc_preds
=
paddle
.
zeros
((
batch_size
,
self
.
max_text_length
+
1
,
self
.
loc_reg_num
))
if
self
.
training
and
targets
is
not
None
:
if
self
.
training
and
targets
is
not
None
:
structure
=
targets
[
0
]
structure
=
targets
[
0
]
for
i
in
range
(
self
.
max_text_length
+
1
):
for
i
in
range
(
self
.
max_text_length
+
1
):
hidden
,
structure_step
,
loc_step
=
self
.
_decode
(
structure
[:,
i
],
hidden
,
structure_step
,
loc_step
=
self
.
_decode
(
structure
[:,
i
],
fea
,
hidden
)
fea
,
hidden
)
structure_preds
.
append
(
structure_step
)
structure_preds
[:,
i
,
:]
=
structure_step
loc_preds
.
append
(
loc_step
)
loc_preds
[:,
i
,
:]
=
loc_step
else
:
pre_chars
=
paddle
.
zeros
(
shape
=
[
batch_size
],
dtype
=
"int32"
)
pre_chars
=
paddle
.
zeros
(
shape
=
[
batch_size
],
dtype
=
"int32"
)
max_text_length
=
paddle
.
to_tensor
(
self
.
max_text_length
)
max_text_length
=
paddle
.
to_tensor
(
self
.
max_text_length
)
# for export
# for export
...
@@ -231,10 +231,8 @@ class SLAHead(nn.Layer):
...
@@ -231,10 +231,8 @@ class SLAHead(nn.Layer):
hidden
,
structure_step
,
loc_step
=
self
.
_decode
(
pre_chars
,
fea
,
hidden
,
structure_step
,
loc_step
=
self
.
_decode
(
pre_chars
,
fea
,
hidden
)
hidden
)
pre_chars
=
structure_step
.
argmax
(
axis
=
1
,
dtype
=
"int32"
)
pre_chars
=
structure_step
.
argmax
(
axis
=
1
,
dtype
=
"int32"
)
structure_preds
.
append
(
structure_step
)
structure_preds
[:,
i
,
:]
=
structure_step
loc_preds
.
append
(
loc_step
)
loc_preds
[:,
i
,
:]
=
loc_step
structure_preds
=
paddle
.
stack
(
structure_preds
,
axis
=
1
)
loc_preds
=
paddle
.
stack
(
loc_preds
,
axis
=
1
)
if
not
self
.
training
:
if
not
self
.
training
:
structure_preds
=
F
.
softmax
(
structure_preds
)
structure_preds
=
F
.
softmax
(
structure_preds
)
return
{
'structure_probs'
:
structure_preds
,
'loc_preds'
:
loc_preds
}
return
{
'structure_probs'
:
structure_preds
,
'loc_preds'
:
loc_preds
}
...
...
ppstructure/table/predict_structure.py
浏览文件 @
f6698a32
...
@@ -68,6 +68,7 @@ def build_pre_process_list(args):
...
@@ -68,6 +68,7 @@ def build_pre_process_list(args):
class
TableStructurer
(
object
):
class
TableStructurer
(
object
):
def
__init__
(
self
,
args
):
def
__init__
(
self
,
args
):
self
.
use_onnx
=
args
.
use_onnx
pre_process_list
=
build_pre_process_list
(
args
)
pre_process_list
=
build_pre_process_list
(
args
)
if
args
.
table_algorithm
not
in
[
'TableMaster'
]:
if
args
.
table_algorithm
not
in
[
'TableMaster'
]:
postprocess_params
=
{
postprocess_params
=
{
...
@@ -98,13 +99,17 @@ class TableStructurer(object):
...
@@ -98,13 +99,17 @@ class TableStructurer(object):
return
None
,
0
return
None
,
0
img
=
np
.
expand_dims
(
img
,
axis
=
0
)
img
=
np
.
expand_dims
(
img
,
axis
=
0
)
img
=
img
.
copy
()
img
=
img
.
copy
()
if
self
.
use_onnx
:
self
.
input_tensor
.
copy_from_cpu
(
img
)
input_dict
=
{}
self
.
predictor
.
run
()
input_dict
[
self
.
input_tensor
.
name
]
=
img
outputs
=
[]
outputs
=
self
.
predictor
.
run
(
self
.
output_tensors
,
input_dict
)
for
output_tensor
in
self
.
output_tensors
:
else
:
output
=
output_tensor
.
copy_to_cpu
()
self
.
input_tensor
.
copy_from_cpu
(
img
)
outputs
.
append
(
output
)
self
.
predictor
.
run
()
outputs
=
[]
for
output_tensor
in
self
.
output_tensors
:
output
=
output_tensor
.
copy_to_cpu
()
outputs
.
append
(
output
)
preds
=
{}
preds
=
{}
preds
[
'structure_probs'
]
=
outputs
[
1
]
preds
[
'structure_probs'
]
=
outputs
[
1
]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录