Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_41840029
PaddleOCR
提交
e6fb668f
P
PaddleOCR
项目概览
weixin_41840029
/
PaddleOCR
与 Fork 源项目一致
Fork自
PaddlePaddle / PaddleOCR
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleOCR
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
e6fb668f
编写于
12月 28, 2021
作者:
H
huangshenghui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update paddle2onnx readme and fix a bug for onnx
上级
d9b2b7ad
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
20 addition
and
14 deletion
+20
-14
deploy/paddle2onnx/readme.md
deploy/paddle2onnx/readme.md
+6
-6
tools/infer/predict_det.py
tools/infer/predict_det.py
+11
-7
tools/infer/predict_rec.py
tools/infer/predict_rec.py
+3
-1
未找到文件。
deploy/paddle2onnx/readme.md
浏览文件 @
e6fb668f
...
@@ -18,8 +18,8 @@ python3.7 -m pip install paddle2onnx
...
@@ -18,8 +18,8 @@ python3.7 -m pip install paddle2onnx
-
安装 ONNX
-
安装 ONNX
```
```
# 建议安装 1.
4
.0 版本,可根据环境更换版本号
# 建议安装 1.
9
.0 版本,可根据环境更换版本号
python3.7 -m pip install onnxruntime==1.
4
.0
python3.7 -m pip install onnxruntime==1.
9
.0
```
```
## 2. 模型转换
## 2. 模型转换
...
@@ -47,13 +47,15 @@ paddle2onnx --model_dir=./inference/ch_ppocr_mobile_v2.0_det_infer/ \
...
@@ -47,13 +47,15 @@ paddle2onnx --model_dir=./inference/ch_ppocr_mobile_v2.0_det_infer/ \
--params_filename=inference.pdiparams \
--params_filename=inference.pdiparams \
--save_file=./inference/det_mobile_onnx/model.onnx \
--save_file=./inference/det_mobile_onnx/model.onnx \
--opset_version=10 \
--opset_version=10 \
--input_shape_dict="{'x': [-1, 3, -1, -1]}" \
--enable_onnx_checker=True
--enable_onnx_checker=True
```
```
执行完毕后,ONNX 模型会被保存在
`./inference/det_mobile_onnx/`
路径下
执行完毕后,ONNX 模型会被保存在
`./inference/det_mobile_onnx/`
路径下
*
注意:以下几个模型暂不支持转换为 ONNX 模型:
*
注意:对于OCR模型,转化过程中最好采用动态shape的形式,即加入选项--input_shape_dict="{'x': [-1, 3, -1, -1]}",否则预测结果可能与直接使用Paddle预测有细微不同。
NRTR、SAR、RARE、SRN
另外,以下几个模型暂不支持转换为 ONNX 模型:
NRTR、SAR、RARE、SRN
## 3. onnx 预测
## 3. onnx 预测
...
@@ -72,5 +74,3 @@ root INFO: 1.jpg [[[291, 295], [334, 292], [348, 844], [305, 847]], [[344, 296]
...
@@ -72,5 +74,3 @@ root INFO: 1.jpg [[[291, 295], [334, 292], [348, 844], [305, 847]], [[344, 296]
The predict time of ../../doc/imgs/1.jpg: 0.06162881851196289
The predict time of ../../doc/imgs/1.jpg: 0.06162881851196289
The visualized image saved in ./inference_results/det_res_1.jpg
The visualized image saved in ./inference_results/det_res_1.jpg
```
```
*
注意:ONNX暂时不支持变长预测,需要将输入resize到固定输入,预测结果可能与直接使用Paddle预测有细微不同。
tools/infer/predict_det.py
浏览文件 @
e6fb668f
...
@@ -101,16 +101,20 @@ class TextDetector(object):
...
@@ -101,16 +101,20 @@ class TextDetector(object):
else
:
else
:
logger
.
info
(
"unknown det_algorithm:{}"
.
format
(
self
.
det_algorithm
))
logger
.
info
(
"unknown det_algorithm:{}"
.
format
(
self
.
det_algorithm
))
sys
.
exit
(
0
)
sys
.
exit
(
0
)
self
.
postprocess_op
=
build_post_process
(
postprocess_params
)
self
.
predictor
,
self
.
input_tensor
,
self
.
output_tensors
,
self
.
config
=
utility
.
create_predictor
(
args
,
'det'
,
logger
)
if
self
.
use_onnx
:
if
self
.
use_onnx
:
img_h
,
img_w
=
self
.
input_tensor
.
shape
[
2
:]
if
img_h
is
not
None
and
img_w
is
not
None
and
img_h
>
0
and
img_w
>
0
:
pre_process_list
[
0
]
=
{
pre_process_list
[
0
]
=
{
'DetResizeForTest'
:
{
'DetResizeForTest'
:
{
'image_shape'
:
[
640
,
640
]
'image_shape'
:
[
img_h
,
img_w
]
}
}
}
}
self
.
preprocess_op
=
create_operators
(
pre_process_list
)
self
.
preprocess_op
=
create_operators
(
pre_process_list
)
self
.
postprocess_op
=
build_post_process
(
postprocess_params
)
self
.
predictor
,
self
.
input_tensor
,
self
.
output_tensors
,
self
.
config
=
utility
.
create_predictor
(
args
,
'det'
,
logger
)
if
args
.
benchmark
:
if
args
.
benchmark
:
import
auto_log
import
auto_log
...
...
tools/infer/predict_rec.py
浏览文件 @
e6fb668f
...
@@ -109,7 +109,9 @@ class TextRecognizer(object):
...
@@ -109,7 +109,9 @@ class TextRecognizer(object):
assert
imgC
==
img
.
shape
[
2
]
assert
imgC
==
img
.
shape
[
2
]
imgW
=
int
((
32
*
max_wh_ratio
))
imgW
=
int
((
32
*
max_wh_ratio
))
if
self
.
use_onnx
:
if
self
.
use_onnx
:
imgW
=
100
w
=
self
.
input_tensor
.
shape
[
3
:][
0
]
if
w
is
not
None
and
w
>
0
:
imgW
=
w
h
,
w
=
img
.
shape
[:
2
]
h
,
w
=
img
.
shape
[:
2
]
ratio
=
w
/
float
(
h
)
ratio
=
w
/
float
(
h
)
if
math
.
ceil
(
imgH
*
ratio
)
>
imgW
:
if
math
.
ceil
(
imgH
*
ratio
)
>
imgW
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录