Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
wangsen
paddle_dbnet
Commits
630230d4
"git@developer.sourcefind.cn:modelzoo/resnet50_tensorflow.git" did not exist on "1887e546f8aec20ddd89959427ed8e70a93be1d6"
Unverified
Commit
630230d4
authored
Apr 09, 2021
by
zhoujun
Committed by
GitHub
Apr 09, 2021
Browse files
Merge branch 'dygraph' into lite
parents
011cc994
102ce864
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
28 additions
and
31 deletions
+28
-31
README_ch.md
README_ch.md
+5
-2
doc/doc_ch/pgnet.md
doc/doc_ch/pgnet.md
+23
-29
No files found.
README_ch.md
View file @
630230d4
...
@@ -8,9 +8,10 @@ PaddleOCR同时支持动态图与静态图两种编程范式
...
@@ -8,9 +8,10 @@ PaddleOCR同时支持动态图与静态图两种编程范式
-
静态图版本:develop分支
-
静态图版本:develop分支
**近期更新**
**近期更新**
-
【预告】 PaddleOCR研发团队对最新发版内容技术深入解读,4月13日晚上19:00,
[
直播地址
](
https://live.bilibili.com/21689802
)
-
2021.4.8 release 2.1版本,新增AAAI 2021论文
[
端到端识别算法PGNet
](
./doc/doc_ch/pgnet.md
)
开源,
[
多语言模型
](
./doc/doc_ch/multi_languages.md
)
支持种类增加到80+。
-
2021.2.1
[
FAQ
](
./doc/doc_ch/FAQ.md
)
新增5个高频问题,总数162个,每周一都会更新,欢迎大家持续关注。
-
2021.2.1
[
FAQ
](
./doc/doc_ch/FAQ.md
)
新增5个高频问题,总数162个,每周一都会更新,欢迎大家持续关注。
-
2021.1.26,28,29 PaddleOCR官方研发团队带来技术深入解读三日直播课,1月26日、28日、29日晚上19:30,
[
直播地址
](
https://live.bilibili.com/21689802
)
-
2021.1.21 更新多语言识别模型,目前支持语种超过27种,包括中文简体、中文繁体、英文、法文、德文、韩文、日文、意大利文、西班牙文、葡萄牙文、俄罗斯文、阿拉伯文等,后续计划可以参考
[
多语言研发计划
](
https://github.com/PaddlePaddle/PaddleOCR/issues/1048
)
-
2021.1.21 更新多语言识别模型,目前支持语种超过27种,
[
多语言模型下载
](
./doc/doc_ch/models_list.md
)
,包括中文简体、中文繁体、英文、法文、德文、韩文、日文、意大利文、西班牙文、葡萄牙文、俄罗斯文、阿拉伯文等,后续计划可以参考
[
多语言研发计划
](
https://github.com/PaddlePaddle/PaddleOCR/issues/1048
)
-
2020.12.15 更新数据合成工具
[
Style-Text
](
./StyleText/README_ch.md
)
,可以批量合成大量与目标场景类似的图像,在多个场景验证,效果明显提升。
-
2020.12.15 更新数据合成工具
[
Style-Text
](
./StyleText/README_ch.md
)
,可以批量合成大量与目标场景类似的图像,在多个场景验证,效果明显提升。
-
2020.11.25 更新半自动标注工具
[
PPOCRLabel
](
./PPOCRLabel/README_ch.md
)
,辅助开发者高效完成标注任务,输出格式与PP-OCR训练任务完美衔接。
-
2020.11.25 更新半自动标注工具
[
PPOCRLabel
](
./PPOCRLabel/README_ch.md
)
,辅助开发者高效完成标注任务,输出格式与PP-OCR训练任务完美衔接。
-
2020.9.22 更新PP-OCR技术文章,https://arxiv.org/abs/2009.09941
-
2020.9.22 更新PP-OCR技术文章,https://arxiv.org/abs/2009.09941
...
@@ -74,11 +75,13 @@ PaddleOCR同时支持动态图与静态图两种编程范式
...
@@ -74,11 +75,13 @@ PaddleOCR同时支持动态图与静态图两种编程范式
## 文档教程
## 文档教程
-
[
快速安装
](
./doc/doc_ch/installation.md
)
-
[
快速安装
](
./doc/doc_ch/installation.md
)
-
[
中文OCR模型快速使用
](
./doc/doc_ch/quickstart.md
)
-
[
中文OCR模型快速使用
](
./doc/doc_ch/quickstart.md
)
-
[
多语言OCR模型快速使用
](
./doc/doc_ch/multi_languages.md
)
-
[
代码组织结构
](
./doc/doc_ch/tree.md
)
-
[
代码组织结构
](
./doc/doc_ch/tree.md
)
-
算法介绍
-
算法介绍
-
[
文本检测
](
./doc/doc_ch/algorithm_overview.md
)
-
[
文本检测
](
./doc/doc_ch/algorithm_overview.md
)
-
[
文本识别
](
./doc/doc_ch/algorithm_overview.md
)
-
[
文本识别
](
./doc/doc_ch/algorithm_overview.md
)
-
[
PP-OCR Pipline
](
#PP-OCR
)
-
[
PP-OCR Pipline
](
#PP-OCR
)
-
[
端到端PGNet算法
](
./doc/doc_ch/pgnet.md
)
-
模型训练/评估
-
模型训练/评估
-
[
文本检测
](
./doc/doc_ch/detection.md
)
-
[
文本检测
](
./doc/doc_ch/detection.md
)
-
[
文本识别
](
./doc/doc_ch/recognition.md
)
-
[
文本识别
](
./doc/doc_ch/recognition.md
)
...
...
doc/doc_ch/pgnet.md
View file @
630230d4
...
@@ -2,12 +2,10 @@
...
@@ -2,12 +2,10 @@
-
[
一、简介
](
#简介
)
-
[
一、简介
](
#简介
)
-
[
二、环境配置
](
#环境配置
)
-
[
二、环境配置
](
#环境配置
)
-
[
三、快速使用
](
#快速使用
)
-
[
三、快速使用
](
#快速使用
)
-
[
四、快速训练
](
#开始训练
)
-
[
四、模型训练、评估、推理
](
#快速训练
)
-
[
五、预测推理
](
#预测推理
)
<a
name=
"简介"
></a>
<a
name=
"简介"
></a>
##简介
##
一、
简介
OCR算法可以分为两阶段算法和端对端的算法。二阶段OCR算法一般分为两个部分,文本检测和文本识别算法,文件检测算法从图像中得到文本行的检测框,然后识别算法去识别文本框中的内容。而端对端OCR算法可以在一个算法中完成文字检测和文字识别,其基本思想是设计一个同时具有检测单元和识别模块的模型,共享其中两者的CNN特征,并联合训练。由于一个算法即可完成文字识别,端对端模型更小,速度更快。
OCR算法可以分为两阶段算法和端对端的算法。二阶段OCR算法一般分为两个部分,文本检测和文本识别算法,文件检测算法从图像中得到文本行的检测框,然后识别算法去识别文本框中的内容。而端对端OCR算法可以在一个算法中完成文字检测和文字识别,其基本思想是设计一个同时具有检测单元和识别模块的模型,共享其中两者的CNN特征,并联合训练。由于一个算法即可完成文字识别,端对端模型更小,速度更快。
### PGNet算法介绍
### PGNet算法介绍
...
@@ -27,13 +25,11 @@ PGNet算法细节详见[论文](https://www.aaai.org/AAAI21Papers/AAAI-2885.Wang
...
@@ -27,13 +25,11 @@ PGNet算法细节详见[论文](https://www.aaai.org/AAAI21Papers/AAAI-2885.Wang


<a
name=
"环境配置"
></a>
<a
name=
"环境配置"
></a>
##环境配置
##
二、
环境配置
请先参考
[
快速安装
](
./installation.md
)
配置PaddleOCR运行环境。
请先参考
[
快速安装
](
./installation.md
)
配置PaddleOCR运行环境。
*注意:也可以通过 whl 包安装使用PaddleOCR,具体参考[Paddleocr Package使用说明](./whl.md)。*
<a
name=
"快速使用"
></a>
<a
name=
"快速使用"
></a>
##快速使用
##
三、
快速使用
### inference模型下载
### inference模型下载
本节以训练好的端到端模型为例,快速使用模型预测,首先下载训练好的端到端inference模型
[
下载地址
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/pgnet/e2e_server_pgnetA_infer.tar
)
本节以训练好的端到端模型为例,快速使用模型预测,首先下载训练好的端到端inference模型
[
下载地址
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/pgnet/e2e_server_pgnetA_infer.tar
)
```
```
...
@@ -61,20 +57,25 @@ python3 tools/infer/predict_e2e.py --e2e_algorithm="PGNet" --image_dir="./doc/im
...
@@ -61,20 +57,25 @@ python3 tools/infer/predict_e2e.py --e2e_algorithm="PGNet" --image_dir="./doc/im
# 如果想使用CPU进行预测,需设置use_gpu参数为False
# 如果想使用CPU进行预测,需设置use_gpu参数为False
python3 tools/infer/predict_e2e.py
--e2e_algorithm
=
"PGNet"
--image_dir
=
"./doc/imgs_en/img623.jpg"
--e2e_model_dir
=
"./inference/e2e/"
--e2e_pgnet_polygon
=
True
--use_gpu
=
False
python3 tools/infer/predict_e2e.py
--e2e_algorithm
=
"PGNet"
--image_dir
=
"./doc/imgs_en/img623.jpg"
--e2e_model_dir
=
"./inference/e2e/"
--e2e_pgnet_polygon
=
True
--use_gpu
=
False
```
```
<a
name=
"开始训练"
></a>
### 可视化结果
##开始训练
可视化文本检测结果默认保存到./inference_results文件夹里面,结果文件的名称前缀为'e2e_res'。结果示例如下:

<a
name=
"快速训练"
></a>
## 四、模型训练、评估、推理
本节以totaltext数据集为例,介绍PaddleOCR中端到端模型的训练、评估与测试。
本节以totaltext数据集为例,介绍PaddleOCR中端到端模型的训练、评估与测试。
###数据形式为icdar, 十六点标注数据
解压数据集和下载标注文件后,PaddleOCR/train_data/total_text/train/ 有两个文件夹,分别是:
### 准备数据
下载解压
[
totaltext
](
https://github.com/cs-chan/Total-Text-Dataset/blob/master/Dataset/README.md
)
数据集到PaddleOCR/train_data/目录,数据集组织结构:
```
```
/PaddleOCR/train_data/total_text/train/
/PaddleOCR/train_data/total_text/train/
|- rgb/ total_text数据集的训练数据
|- rgb/
#
total_text数据集的训练数据
|- gt_0.png
|- gt_0.png
| ...
| ...
|- total_text.txt total_text数据集的训练标注
|- total_text.txt
#
total_text数据集的训练标注
```
```
提供的
标注文件格式如下,中间用"
\t
"分隔:
total_text.txt
标注文件格式如下,
文件名和标注信息
中间用"
\t
"分隔:
```
```
" 图像文件名 json.dumps编码的图像标注信息"
" 图像文件名 json.dumps编码的图像标注信息"
rgb/gt_0.png [{"transcription": "EST", "points": [[1004.0,689.0],[1019.0,698.0],[1034.0,708.0],[1049.0,718.0],[1064.0,728.0],[1079.0,738.0],[1095.0,748.0],[1094.0,774.0],[1079.0,765.0],[1065.0,756.0],[1050.0,747.0],[1036.0,738.0],[1021.0,729.0],[1007.0,721.0]]}, {...}]
rgb/gt_0.png [{"transcription": "EST", "points": [[1004.0,689.0],[1019.0,698.0],[1034.0,708.0],[1049.0,718.0],[1064.0,728.0],[1079.0,738.0],[1095.0,748.0],[1094.0,774.0],[1079.0,765.0],[1065.0,756.0],[1050.0,747.0],[1036.0,738.0],[1021.0,729.0],[1007.0,721.0]]}, {...}]
...
@@ -83,22 +84,19 @@ json.dumps编码前的图像标注信息是包含多个字典的list,字典中
...
@@ -83,22 +84,19 @@ json.dumps编码前的图像标注信息是包含多个字典的list,字典中
`transcription`
表示当前文本框的文字,
**当其内容为“###”时,表示该文本框无效,在训练时会跳过。**
`transcription`
表示当前文本框的文字,
**当其内容为“###”时,表示该文本框无效,在训练时会跳过。**
如果您想在其他数据集上训练,可以按照上述形式构建标注文件。
如果您想在其他数据集上训练,可以按照上述形式构建标注文件。
###
快速
启动训练
### 启动训练
模型训练一般分两步骤进行,第一步可以选择用合成数据训练,第二步加载第一步训练好的模型训练,这边我们提供了第一步训练好的模型,可以直接加载,从第二步开始训练
PGNet训练分为两个步骤:step1: 在合成数据上训练,得到预训练模型,此时模型精度依然较低;step2: 加载预训练模型,在totaltext数据集上训练;为快速训练,我们直接提供了step1的预训练模型。
[
下载地址
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/pgnet/train_step1.tar
)
```
shell
```
shell
cd
PaddleOCR/
cd
PaddleOCR/
下载
ResNet50_vd的动态图
预训练模型
下载
step1
预训练模型
wget
-P
./pretrain_models/ https://paddleocr.bj.bcebos.com/dygraph_v2.0/pgnet/train_step1.tar
wget
-P
./pretrain_models/ https://paddleocr.bj.bcebos.com/dygraph_v2.0/pgnet/train_step1.tar
可以得到以下的文件格式
可以得到以下的文件格式
./pretrain_models/train_step1/
./pretrain_models/train_step1/
└─ best_accuracy.pdopt
└─ best_accuracy.pdopt
└─ best_accuracy.states
└─ best_accuracy.states
└─ best_accuracy.pdparams
└─ best_accuracy.pdparams
```
```
*如果您安装的是cpu版本,请将配置文件中的 `use_gpu` 字段修改为false*
*如果您安装的是cpu版本,请将配置文件中的 `use_gpu` 字段修改为false*
```
shell
```
shell
...
@@ -117,7 +115,6 @@ python3 tools/train.py -c configs/e2e/e2e_r50_vd_pg.yml -o Optimizer.base_lr=0.0
...
@@ -117,7 +115,6 @@ python3 tools/train.py -c configs/e2e/e2e_r50_vd_pg.yml -o Optimizer.base_lr=0.0
```
```
#### 断点训练
#### 断点训练
如果训练程序中断,如果希望加载训练中断的模型从而恢复训练,可以通过指定Global.checkpoints指定要加载的模型路径:
如果训练程序中断,如果希望加载训练中断的模型从而恢复训练,可以通过指定Global.checkpoints指定要加载的模型路径:
```
shell
```
shell
python3 tools/train.py
-c
configs/e2e/e2e_r50_vd_pg.yml
-o
Global.checkpoints
=
./your/trained/model
python3 tools/train.py
-c
configs/e2e/e2e_r50_vd_pg.yml
-o
Global.checkpoints
=
./your/trained/model
...
@@ -125,9 +122,6 @@ python3 tools/train.py -c configs/e2e/e2e_r50_vd_pg.yml -o Global.checkpoints=./
...
@@ -125,9 +122,6 @@ python3 tools/train.py -c configs/e2e/e2e_r50_vd_pg.yml -o Global.checkpoints=./
**注意**
:
`Global.checkpoints`
的优先级高于
`Global.pretrain_weights`
的优先级,即同时指定两个参数时,优先加载
`Global.checkpoints`
指定的模型,如果
`Global.checkpoints`
指定的模型路径有误,会加载
`Global.pretrain_weights`
指定的模型。
**注意**
:
`Global.checkpoints`
的优先级高于
`Global.pretrain_weights`
的优先级,即同时指定两个参数时,优先加载
`Global.checkpoints`
指定的模型,如果
`Global.checkpoints`
指定的模型路径有误,会加载
`Global.pretrain_weights`
指定的模型。
<a
name=
"预测推理"
></a>
## 预测推理
PaddleOCR计算三个OCR端到端相关的指标,分别是:Precision、Recall、Hmean。
PaddleOCR计算三个OCR端到端相关的指标,分别是:Precision、Recall、Hmean。
运行如下代码,根据配置文件
`e2e_r50_vd_pg.yml`
中
`save_res_path`
指定的测试集检测结果文件,计算评估指标。
运行如下代码,根据配置文件
`e2e_r50_vd_pg.yml`
中
`save_res_path`
指定的测试集检测结果文件,计算评估指标。
...
@@ -138,7 +132,7 @@ PaddleOCR计算三个OCR端到端相关的指标,分别是:Precision、Recal
...
@@ -138,7 +132,7 @@ PaddleOCR计算三个OCR端到端相关的指标,分别是:Precision、Recal
python3 tools/eval.py
-c
configs/e2e/e2e_r50_vd_pg.yml
-o
Global.checkpoints
=
"{path/to/weights}/best_accuracy"
python3 tools/eval.py
-c
configs/e2e/e2e_r50_vd_pg.yml
-o
Global.checkpoints
=
"{path/to/weights}/best_accuracy"
```
```
###
测试端到端效果
###
模型预测
测试单张图像的端到端识别效果
测试单张图像的端到端识别效果
```
shell
```
shell
python3 tools/infer_e2e.py
-c
configs/e2e/e2e_r50_vd_pg.yml
-o
Global.infer_img
=
"./doc/imgs_en/img_10.jpg"
Global.pretrained_model
=
"./output/det_db/best_accuracy"
Global.load_static_weights
=
false
python3 tools/infer_e2e.py
-c
configs/e2e/e2e_r50_vd_pg.yml
-o
Global.infer_img
=
"./doc/imgs_en/img_10.jpg"
Global.pretrained_model
=
"./output/det_db/best_accuracy"
Global.load_static_weights
=
false
...
@@ -149,8 +143,8 @@ python3 tools/infer_e2e.py -c configs/e2e/e2e_r50_vd_pg.yml -o Global.infer_img=
...
@@ -149,8 +143,8 @@ python3 tools/infer_e2e.py -c configs/e2e/e2e_r50_vd_pg.yml -o Global.infer_img=
python3 tools/infer_e2e.py
-c
configs/e2e/e2e_r50_vd_pg.yml
-o
Global.infer_img
=
"./doc/imgs_en/"
Global.pretrained_model
=
"./output/det_db/best_accuracy"
Global.load_static_weights
=
false
python3 tools/infer_e2e.py
-c
configs/e2e/e2e_r50_vd_pg.yml
-o
Global.infer_img
=
"./doc/imgs_en/"
Global.pretrained_model
=
"./output/det_db/best_accuracy"
Global.load_static_weights
=
false
```
```
###
转为推理模型
###
预测推理
### (1).
四边形文本检测模型(ICDAR2015)
###
#
(1).四边形文本检测模型(ICDAR2015)
首先将PGNet端到端训练过程中保存的模型,转换成inference model。以基于Resnet50_vd骨干网络,以英文数据集训练的模型为例
[
模型下载地址
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/pgnet/en_server_pgnetA.tar
)
,可以使用如下命令进行转换:
首先将PGNet端到端训练过程中保存的模型,转换成inference model。以基于Resnet50_vd骨干网络,以英文数据集训练的模型为例
[
模型下载地址
](
https://paddleocr.bj.bcebos.com/dygraph_v2.0/pgnet/en_server_pgnetA.tar
)
,可以使用如下命令进行转换:
```
```
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/pgnet/en_server_pgnetA.tar && tar xf en_server_pgnetA.tar
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/pgnet/en_server_pgnetA.tar && tar xf en_server_pgnetA.tar
...
@@ -164,7 +158,7 @@ python3 tools/infer/predict_e2e.py --e2e_algorithm="PGNet" --image_dir="./doc/im
...
@@ -164,7 +158,7 @@ python3 tools/infer/predict_e2e.py --e2e_algorithm="PGNet" --image_dir="./doc/im


### (2).
弯曲文本检测模型(Total-Text)
###
#
(2).弯曲文本检测模型(Total-Text)
对于弯曲文本样例
对于弯曲文本样例
**PGNet端到端模型推理,需要设置参数`--e2e_algorithm="PGNet"`,同时,还需要增加参数`--e2e_pgnet_polygon=True`,**
可以执行如下命令:
**PGNet端到端模型推理,需要设置参数`--e2e_algorithm="PGNet"`,同时,还需要增加参数`--e2e_pgnet_polygon=True`,**
可以执行如下命令:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment