From ab8d8aeab8bbe36e0a100e034342646a7aa8f414 Mon Sep 17 00:00:00 2001 From: zhangxin Date: Wed, 12 Aug 2020 12:56:44 +0800 Subject: [PATCH 01/70] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=89=80=E6=9C=89?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=B7=AF=E5=BE=84=E4=B8=BA=E7=BB=9D=E5=AF=B9?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=EF=BC=8C=E9=81=BF=E5=85=8D=E5=9C=A8=E5=90=8C?= =?UTF-8?q?=E7=BA=A7=E7=9B=AE=E5=BD=95=E4=B8=8B=E6=97=B6=E5=87=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ppocr/postprocess/east_postprocess.py | 4 ++-- ppocr/postprocess/lanms/.ycm_extra_conf.py | 2 +- tools/eval.py | 4 ++-- tools/export_model.py | 4 ++-- tools/infer/predict_det.py | 4 ++-- tools/infer_det.py | 4 ++-- tools/infer_rec.py | 4 ++-- tools/train.py | 4 ++-- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/ppocr/postprocess/east_postprocess.py b/ppocr/postprocess/east_postprocess.py index 8200df3c..270cf669 100755 --- a/ppocr/postprocess/east_postprocess.py +++ b/ppocr/postprocess/east_postprocess.py @@ -22,9 +22,9 @@ import cv2 import os import sys -__dir__ = os.path.dirname(__file__) +__dir__ = os.path.dirname(os.path.abspath(__file__)) sys.path.append(__dir__) -sys.path.append(os.path.join(__dir__, '..')) +sys.path.append(os.path.abspath(os.path.join(__dir__, '..'))) class EASTPostPocess(object): diff --git a/ppocr/postprocess/lanms/.ycm_extra_conf.py b/ppocr/postprocess/lanms/.ycm_extra_conf.py index 3c8673dd..da0a97d4 100644 --- a/ppocr/postprocess/lanms/.ycm_extra_conf.py +++ b/ppocr/postprocess/lanms/.ycm_extra_conf.py @@ -25,7 +25,7 @@ import ycm_core # These are the compilation flags that will be used in case there's no # compilation database set (by default, one is not set). # CHANGE THIS LIST OF FLAGS. YES, THIS IS THE DROID YOU HAVE BEEN LOOKING FOR. -sys.path.append(os.path.dirname(__file__)) +sys.path.append(os.path.abspath(os.path.dirname(__file__))) BASE_DIR = os.path.dirname(os.path.realpath(__file__)) diff --git a/tools/eval.py b/tools/eval.py index edd84a9d..22185911 100755 --- a/tools/eval.py +++ b/tools/eval.py @@ -18,9 +18,9 @@ from __future__ import print_function import os import sys -__dir__ = os.path.dirname(__file__) +__dir__ = os.path.dirname(os.path.abspath(__file__)) sys.path.append(__dir__) -sys.path.append(os.path.join(__dir__, '..')) +sys.path.append(os.path.abspath(os.path.join(__dir__, '..'))) def set_paddle_flags(**kwargs): diff --git a/tools/export_model.py b/tools/export_model.py index de4ba0e4..0bd06b98 100644 --- a/tools/export_model.py +++ b/tools/export_model.py @@ -18,9 +18,9 @@ from __future__ import print_function import os import sys -__dir__ = os.path.dirname(__file__) +__dir__ = os.path.dirname(os.path.abspath(__file__)) sys.path.append(__dir__) -sys.path.append(os.path.join(__dir__, '..')) +sys.path.append(os.path.abspath(os.path.join(__dir__, '..'))) def set_paddle_flags(**kwargs): diff --git a/tools/infer/predict_det.py b/tools/infer/predict_det.py index 75644aeb..9334cf64 100755 --- a/tools/infer/predict_det.py +++ b/tools/infer/predict_det.py @@ -13,9 +13,9 @@ # limitations under the License. import os import sys -__dir__ = os.path.dirname(__file__) +__dir__ = os.path.dirname(os.path.abspath(__file__)) sys.path.append(__dir__) -sys.path.append(os.path.join(__dir__, '../..')) +sys.path.append(os.path.abspath(os.path.join(__dir__, '../..'))) import tools.infer.utility as utility from ppocr.utils.utility import initial_logger diff --git a/tools/infer_det.py b/tools/infer_det.py index a8b49b6b..3e9c86c2 100755 --- a/tools/infer_det.py +++ b/tools/infer_det.py @@ -22,9 +22,9 @@ import json import os import sys -__dir__ = os.path.dirname(__file__) +__dir__ = os.path.dirname(os.path.abspath(__file__)) sys.path.append(__dir__) -sys.path.append(os.path.join(__dir__, '..')) +sys.path.append(os.path.abspath(os.path.join(__dir__, '..'))) def set_paddle_flags(**kwargs): diff --git a/tools/infer_rec.py b/tools/infer_rec.py index 8cde44d8..515d6a5d 100755 --- a/tools/infer_rec.py +++ b/tools/infer_rec.py @@ -19,9 +19,9 @@ from __future__ import print_function import numpy as np import os import sys -__dir__ = os.path.dirname(__file__) +__dir__ = os.path.dirname(os.path.abspath(__file__)) sys.path.append(__dir__) -sys.path.append(os.path.join(__dir__, '..')) +sys.path.append(os.path.abspath(os.path.join(__dir__, '..'))) def set_paddle_flags(**kwargs): diff --git a/tools/train.py b/tools/train.py index 68e792b7..d0d02bd4 100755 --- a/tools/train.py +++ b/tools/train.py @@ -18,9 +18,9 @@ from __future__ import print_function import os import sys -__dir__ = os.path.dirname(__file__) +__dir__ = os.path.dirname(os.path.abspath(__file__)) sys.path.append(__dir__) -sys.path.append(os.path.join(__dir__, '..')) +sys.path.append(os.path.abspath(os.path.join(__dir__, '..'))) def set_paddle_flags(**kwargs): From 70c1145a31816862751244dcbb85b72ca99a23f5 Mon Sep 17 00:00:00 2001 From: zhangxin Date: Wed, 12 Aug 2020 13:00:44 +0800 Subject: [PATCH 02/70] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E5=A4=84?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ppocr/postprocess/lanms/.ycm_extra_conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ppocr/postprocess/lanms/.ycm_extra_conf.py b/ppocr/postprocess/lanms/.ycm_extra_conf.py index da0a97d4..cd1a74e9 100644 --- a/ppocr/postprocess/lanms/.ycm_extra_conf.py +++ b/ppocr/postprocess/lanms/.ycm_extra_conf.py @@ -25,7 +25,7 @@ import ycm_core # These are the compilation flags that will be used in case there's no # compilation database set (by default, one is not set). # CHANGE THIS LIST OF FLAGS. YES, THIS IS THE DROID YOU HAVE BEEN LOOKING FOR. -sys.path.append(os.path.abspath(os.path.dirname(__file__))) +sys.path.append(os.path.dirname(os.path.abspath(__file__))) BASE_DIR = os.path.dirname(os.path.realpath(__file__)) From 60dc4cc0146029b00dbc896b4b172a5cfdf1abab Mon Sep 17 00:00:00 2001 From: tink2123 Date: Mon, 17 Aug 2020 18:31:28 +0800 Subject: [PATCH 03/70] update doc --- README.md | 2 +- README_cn.md | 2 +- doc/doc_ch/recognition.md | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 32124165..d4c57d42 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ Refer to [DTRB](https://arxiv.org/abs/1904.01906), the training and evaluation r |RARE|MobileNetV3|83.32%|rec_mv3_tps_bilstm_attn|[Download link](https://paddleocr.bj.bcebos.com/rec_mv3_tps_bilstm_attn.tar)| |SRN|Resnet50_vd_fpn|88.33%|rec_r50fpn_vd_none_srn|[Download link](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar)| -**Note:** SRN model uses data expansion method to expand the two training sets mentioned above, and the expanded data can be downloaded from [Baidu Drive](todo). +**Note:** SRN model uses data expansion method to expand the two training sets mentioned above, and the expanded data can be downloaded from [Baidu Drive](https://pan.baidu.com/s/1-HSZ-ZVdqBF2HaBZ5pRAKA), Extract the code:y3ry. The average accuracy of the two-stage training in the original paper is 89.74%, and that of one stage training in paddleocr is 88.33%. Both pre-trained weights can be downloaded [here](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar). diff --git a/README_cn.md b/README_cn.md index c797097c..4ced5dfe 100644 --- a/README_cn.md +++ b/README_cn.md @@ -145,7 +145,7 @@ PaddleOCR开源的文本识别算法列表: |RARE|MobileNetV3|83.32%|rec_mv3_tps_bilstm_attn|[下载链接](https://paddleocr.bj.bcebos.com/rec_mv3_tps_bilstm_attn.tar)| |SRN|Resnet50_vd_fpn|88.33%|rec_r50fpn_vd_none_srn|[下载链接](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar)| -**说明:** SRN模型使用了数据扰动方法对上述提到对两个训练集进行增广,增广后的数据可以在[百度网盘](todo)上下载。 +**说明:** SRN模型使用了数据扰动方法对上述提到对两个训练集进行增广,增广后的数据可以在[百度网盘](https://pan.baidu.com/s/1-HSZ-ZVdqBF2HaBZ5pRAKA)上下载,提取码: y3ry。 原始论文使用两阶段训练平均精度为89.74%,PaddleOCR中使用one-stage训练,平均精度为88.33%。两种预训练权重均在[下载链接](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar)中。 使用[LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/datasets.md#1icdar2019-lsvt)街景数据集根据真值将图crop出来30w数据,进行位置校准。此外基于LSVT语料生成500w合成数据训练中文模型,相关配置和预训练文件如下: diff --git a/doc/doc_ch/recognition.md b/doc/doc_ch/recognition.md index eda456c5..c554b9f1 100644 --- a/doc/doc_ch/recognition.md +++ b/doc/doc_ch/recognition.md @@ -18,6 +18,8 @@ ln -sf /train_data/dataset 若您本地没有数据集,可以在官网下载 [icdar2015](http://rrc.cvc.uab.es/?ch=4&com=downloads) 数据,用于快速验证。也可以参考[DTRB](https://github.com/clovaai/deep-text-recognition-benchmark#download-lmdb-dataset-for-traininig-and-evaluation-from-here),下载 benchmark 所需的lmdb格式数据集。 +如果希望复现SRN的论文指标,需要下载离线[增广数据](https://pan.baidu.com/s/1-HSZ-ZVdqBF2HaBZ5pRAKA),提取码: y3ry。增广数据是由MJSynth和SynthText做旋转和扰动得到的。数据下载完成后请解压到 {your_path}/PaddleOCR/train_data/data_lmdb_release/training/ 路径下。 + * 使用自己数据集: 若您希望使用自己的数据进行训练,请参考下文组织您的数据。 @@ -161,6 +163,7 @@ PaddleOCR支持训练和评估交替进行, 可以在 `configs/rec/rec_icdar15_t | rec_r34_vd_none_none_ctc.yml | Rosetta | Resnet34_vd | None | None | ctc | | rec_r34_vd_tps_bilstm_attn.yml | RARE | Resnet34_vd | tps | BiLSTM | attention | | rec_r34_vd_tps_bilstm_ctc.yml | STARNet | Resnet34_vd | tps | BiLSTM | ctc | +| rec_r50fpn_vd_none_srn.yml | SRN | Resnet50_fpn_vd | None | rnn | srn | 训练中文数据,推荐使用`rec_chinese_lite_train.yml`,如您希望尝试其他算法在中文数据集上的效果,请参考下列说明修改配置文件: From cbaf6e7c941df125cc4a2bb001fcb7f64a671af2 Mon Sep 17 00:00:00 2001 From: tink2123 Date: Mon, 17 Aug 2020 18:43:34 +0800 Subject: [PATCH 04/70] update en doc --- doc/doc_en/recognition_en.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/doc_en/recognition_en.md b/doc/doc_en/recognition_en.md index 9b34c430..b9c42afa 100644 --- a/doc/doc_en/recognition_en.md +++ b/doc/doc_en/recognition_en.md @@ -18,6 +18,8 @@ ln -sf /train_data/dataset If you do not have a dataset locally, you can download it on the official website [icdar2015](http://rrc.cvc.uab.es/?ch=4&com=downloads). Also refer to [DTRB](https://github.com/clovaai/deep-text-recognition-benchmark#download-lmdb-dataset-for-traininig-and-evaluation-from-here),download the lmdb format dataset required for benchmark +If you want to reproduce the paper indicators of SRN, you need to download offline [augmented data](https://pan.baidu.com/s/1-HSZ-ZVdqBF2HaBZ5pRAKA), extraction code: y3ry. The augmented data is obtained by rotation and perturbation of mjsynth and synthtext. Please unzip the data to {your_path}/PaddleOCR/train_data/data_lmdb_Release/training/path. + * Use your own dataset: If you want to use your own data for training, please refer to the following to organize your data. From b0b882718915446823370e4a4d38f1b6920d9651 Mon Sep 17 00:00:00 2001 From: LDOUBLEV Date: Mon, 17 Aug 2020 19:03:32 +0800 Subject: [PATCH 05/70] add contributor --- README.md | 1 + README_cn.md | 1 + 2 files changed, 2 insertions(+) diff --git a/README.md b/README.md index 32124165..1c6aa687 100644 --- a/README.md +++ b/README.md @@ -225,3 +225,4 @@ We welcome all the contributions to PaddleOCR and appreciate for your feedback v - Thanks [xiangyubo](https://github.com/xiangyubo) for contributing the handwritten Chinese OCR datasets. - Thanks [authorfu](https://github.com/authorfu) for contributing Android demo and [xiadeye](https://github.com/xiadeye) contributing iOS demo, respectively. - Thanks [BeyondYourself](https://github.com/BeyondYourself) for contributing many great suggestions and simplifying part of the code style. +- Thanks [tangmq](https://github.com/tangmq/PaddleOCR) for contributing Dockerized deployment services to PaddleOCR and supporting the rapid release of callable Restful API services. diff --git a/README_cn.md b/README_cn.md index c797097c..ccd762c7 100644 --- a/README_cn.md +++ b/README_cn.md @@ -222,3 +222,4 @@ PaddleOCR文本识别算法的训练和使用请参考文档教程中[模型训 - 非常感谢 [xiangyubo](https://github.com/xiangyubo) 贡献手写中文OCR数据集 - 非常感谢 [authorfu](https://github.com/authorfu) 贡献Android和[xiadeye](https://github.com/xiadeye) 贡献IOS的demo代码 - 非常感谢 [BeyondYourself](https://github.com/BeyondYourself) 给PaddleOCR提了很多非常棒的建议,并简化了PaddleOCR的部分代码风格。 +- 非常感谢 [tangmq](https://github.com/tangmq/PaddleOCR) 给PaddleOCR增加Docker化部署服务,支持快速发布可调用的Restful API服务。 From 6557bf4fbe2649d94e6dd41cce361475e6b660ac Mon Sep 17 00:00:00 2001 From: LDOUBLEV Date: Mon, 17 Aug 2020 19:09:13 +0800 Subject: [PATCH 06/70] add contributor --- README.md | 2 +- README_cn.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1c6aa687..d6c4346d 100644 --- a/README.md +++ b/README.md @@ -225,4 +225,4 @@ We welcome all the contributions to PaddleOCR and appreciate for your feedback v - Thanks [xiangyubo](https://github.com/xiangyubo) for contributing the handwritten Chinese OCR datasets. - Thanks [authorfu](https://github.com/authorfu) for contributing Android demo and [xiadeye](https://github.com/xiadeye) contributing iOS demo, respectively. - Thanks [BeyondYourself](https://github.com/BeyondYourself) for contributing many great suggestions and simplifying part of the code style. -- Thanks [tangmq](https://github.com/tangmq/PaddleOCR) for contributing Dockerized deployment services to PaddleOCR and supporting the rapid release of callable Restful API services. +- Thanks [tangmq](https://gitee.com/tangmq) for contributing Dockerized deployment services to PaddleOCR and supporting the rapid release of callable Restful API services. diff --git a/README_cn.md b/README_cn.md index ccd762c7..029abd16 100644 --- a/README_cn.md +++ b/README_cn.md @@ -222,4 +222,4 @@ PaddleOCR文本识别算法的训练和使用请参考文档教程中[模型训 - 非常感谢 [xiangyubo](https://github.com/xiangyubo) 贡献手写中文OCR数据集 - 非常感谢 [authorfu](https://github.com/authorfu) 贡献Android和[xiadeye](https://github.com/xiadeye) 贡献IOS的demo代码 - 非常感谢 [BeyondYourself](https://github.com/BeyondYourself) 给PaddleOCR提了很多非常棒的建议,并简化了PaddleOCR的部分代码风格。 -- 非常感谢 [tangmq](https://github.com/tangmq/PaddleOCR) 给PaddleOCR增加Docker化部署服务,支持快速发布可调用的Restful API服务。 +- 非常感谢 [tangmq](https://gitee.com/tangmq) 给PaddleOCR增加Docker化部署服务,支持快速发布可调用的Restful API服务。 From f96b873aa4eb5bc0c167d1ee485725b59ec5e785 Mon Sep 17 00:00:00 2001 From: licx Date: Mon, 17 Aug 2020 20:29:28 +0800 Subject: [PATCH 07/70] modify infer tools for sast --- configs/det/det_sast_icdar15_reader.yml | 6 ++---- configs/det/det_sast_totaltext_reader.yml | 2 +- ppocr/modeling/heads/det_sast_head.py | 4 ++-- tools/infer/predict_det.py | 16 +++++++++++++++ tools/infer/utility.py | 7 +++++++ tools/infer_det.py | 25 +++++++++++++++++++++-- 6 files changed, 51 insertions(+), 9 deletions(-) diff --git a/configs/det/det_sast_icdar15_reader.yml b/configs/det/det_sast_icdar15_reader.yml index 1fdea875..cfa5b8b6 100644 --- a/configs/det/det_sast_icdar15_reader.yml +++ b/configs/det/det_sast_icdar15_reader.yml @@ -20,7 +20,5 @@ EvalReader: TestReader: reader_function: ppocr.data.det.dataset_traversal,EvalTestReader process_function: ppocr.data.det.sast_process,SASTProcessTest - infer_img: - img_set_dir: ./train_data/icdar2015/text_localization/ - label_file_path: ./train_data/icdar2015/text_localization/test_icdar2015_label.txt - do_eval: True + infer_img: ./train_data/icdar2015/text_localization/ch4_test_images/img_11.jpg + max_side_len: 1536 diff --git a/configs/det/det_sast_totaltext_reader.yml b/configs/det/det_sast_totaltext_reader.yml index 74c320fc..c1a3d251 100644 --- a/configs/det/det_sast_totaltext_reader.yml +++ b/configs/det/det_sast_totaltext_reader.yml @@ -20,5 +20,5 @@ EvalReader: TestReader: reader_function: ppocr.data.det.dataset_traversal,EvalTestReader process_function: ppocr.data.det.sast_process,SASTProcessTest - infer_img: + infer_img: ./train_data/afs/total_text/Images/Test/img623.jpg max_side_len: 768 diff --git a/ppocr/modeling/heads/det_sast_head.py b/ppocr/modeling/heads/det_sast_head.py index b5e19b84..0097913d 100644 --- a/ppocr/modeling/heads/det_sast_head.py +++ b/ppocr/modeling/heads/det_sast_head.py @@ -49,7 +49,7 @@ class SASTHead(object): for i in range(4): if i == 0: g[i] = deconv_bn_layer(input=h[i], num_filters=num_outputs[i + 1], act=None, name='fpn_up_g0') - print("g[{}] shape: {}".format(i, g[i].shape)) + #print("g[{}] shape: {}".format(i, g[i].shape)) else: g[i] = fluid.layers.elementwise_add(x=g[i - 1], y=h[i]) g[i] = fluid.layers.relu(g[i]) @@ -58,7 +58,7 @@ class SASTHead(object): g[i] = conv_bn_layer(input=g[i], num_filters=num_outputs[i], filter_size=3, stride=1, act='relu', name='fpn_up_g%d_1'%i) g[i] = deconv_bn_layer(input=g[i], num_filters=num_outputs[i + 1], act=None, name='fpn_up_g%d_2'%i) - print("g[{}] shape: {}".format(i, g[i].shape)) + #print("g[{}] shape: {}".format(i, g[i].shape)) g[4] = fluid.layers.elementwise_add(x=g[3], y=h[4]) g[4] = fluid.layers.relu(g[4]) diff --git a/tools/infer/predict_det.py b/tools/infer/predict_det.py index 75644aeb..74ffb0b5 100755 --- a/tools/infer/predict_det.py +++ b/tools/infer/predict_det.py @@ -22,10 +22,12 @@ from ppocr.utils.utility import initial_logger logger = initial_logger() from ppocr.utils.utility import get_image_file_list, check_and_read_gif import cv2 +from ppocr.data.det.sast_process import SASTProcessTest from ppocr.data.det.east_process import EASTProcessTest from ppocr.data.det.db_process import DBProcessTest from ppocr.postprocess.db_postprocess import DBPostProcess from ppocr.postprocess.east_postprocess import EASTPostPocess +from ppocr.postprocess.sast_postprocess import SASTPostProcess import copy import numpy as np import math @@ -52,6 +54,14 @@ class TextDetector(object): postprocess_params["cover_thresh"] = args.det_east_cover_thresh postprocess_params["nms_thresh"] = args.det_east_nms_thresh self.postprocess_op = EASTPostPocess(postprocess_params) + elif self.det_algorithm == "SAST": + self.preprocess_op = SASTProcessTest(preprocess_params) + postprocess_params["score_thresh"] = args.det_sast_score_thresh + postprocess_params["nms_thresh"] = args.det_sast_nms_thresh + postprocess_params["sample_pts_num"] = args.det_sast_sample_pts_num + postprocess_params["expand_scale"] = args.det_sast_expand_scale + postprocess_params["shrink_ratio_of_width"] = args.det_sast_shrink_ratio_of_width + self.postprocess_op = SASTPostProcess(postprocess_params) else: logger.info("unknown det_algorithm:{}".format(self.det_algorithm)) sys.exit(0) @@ -120,8 +130,14 @@ class TextDetector(object): if self.det_algorithm == "EAST": outs_dict['f_geo'] = outputs[0] outs_dict['f_score'] = outputs[1] + elif self.det_algorithm == 'SAST': + outs_dict['f_border'] = outputs[0] + outs_dict['f_score'] = outputs[1] + outs_dict['f_tco'] = outputs[2] + outs_dict['f_tvo'] = outputs[3] else: outs_dict['maps'] = outputs[0] + dt_boxes_list = self.postprocess_op(outs_dict, [ratio_list]) dt_boxes = dt_boxes_list[0] dt_boxes = self.filter_tag_det_res(dt_boxes, ori_im.shape) diff --git a/tools/infer/utility.py b/tools/infer/utility.py index b0a0ec1f..f31b0f65 100755 --- a/tools/infer/utility.py +++ b/tools/infer/utility.py @@ -53,6 +53,13 @@ def parse_args(): parser.add_argument("--det_east_cover_thresh", type=float, default=0.1) parser.add_argument("--det_east_nms_thresh", type=float, default=0.2) + #SAST parmas + parser.add_argument("--det_sast_score_thresh", type=float, default=0.5) + parser.add_argument("--det_sast_nms_thresh", type=float, default=0.2) + parser.add_argument("--det_sast_sample_pts_num", type=float, default=2) + parser.add_argument("--det_sast_expand_scale", type=float, default=1.0) + parser.add_argument("--det_sast_shrink_ratio_of_width", type=float, default=0.3) + #params for text recognizer parser.add_argument("--rec_algorithm", type=str, default='CRNN') parser.add_argument("--rec_model_dir", type=str) diff --git a/tools/infer_det.py b/tools/infer_det.py index a8b49b6b..ab0af6f4 100755 --- a/tools/infer_det.py +++ b/tools/infer_det.py @@ -66,6 +66,25 @@ def draw_det_res(dt_boxes, config, img, img_name): cv2.imwrite(save_path, src_im) logger.info("The detected Image saved in {}".format(save_path)) +def gen_im_detection(src_im, detections): + """ + Generate image with detection results. + """ + im_detection = src_im.copy() + + h, w, _ = im_detection.shape + thickness = int(max((h + w) / 2000, 1)) + + for poly in detections: + # Draw the first point + cv2.putText(im_detection, '0', org=(int(poly[0, 0]), int(poly[0, 1])), + fontFace=cv2.FONT_HERSHEY_COMPLEX, fontScale=thickness, color=(255, 0, 0), + thickness=thickness) + + cv2.polylines(im_detection, np.array(poly).reshape((1, -1, 2)).astype(np.int32), isClosed=True, + color=(0, 0, 255), thickness=thickness) + + return im_detection def main(): config = program.load_config(FLAGS.config) @@ -134,8 +153,10 @@ def main(): dic = {'f_score': outs[0], 'f_geo': outs[1]} elif config['Global']['algorithm'] == 'DB': dic = {'maps': outs[0]} + elif config['Global']['algorithm'] == 'SAST': + dic = {'f_score': outs[0], 'f_border': outs[1], 'f_tvo': outs[2], 'f_tco': outs[3]} else: - raise Exception("only support algorithm: ['EAST', 'DB']") + raise Exception("only support algorithm: ['EAST', 'DB', 'SAST']") dt_boxes_list = postprocess(dic, ratio_list) for ino in range(img_num): dt_boxes = dt_boxes_list[ino] @@ -149,7 +170,7 @@ def main(): fout.write(otstr.encode()) src_img = cv2.imread(img_name) draw_det_res(dt_boxes, config, src_img, img_name) - + logger.info("success!") From 6c11bce9e4d3bc83ff36442c061af03b2959ba4e Mon Sep 17 00:00:00 2001 From: licx Date: Mon, 17 Aug 2020 20:31:28 +0800 Subject: [PATCH 08/70] modify infer tools for sast --- tools/infer_det.py | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/tools/infer_det.py b/tools/infer_det.py index ab0af6f4..93c24dd2 100755 --- a/tools/infer_det.py +++ b/tools/infer_det.py @@ -66,25 +66,6 @@ def draw_det_res(dt_boxes, config, img, img_name): cv2.imwrite(save_path, src_im) logger.info("The detected Image saved in {}".format(save_path)) -def gen_im_detection(src_im, detections): - """ - Generate image with detection results. - """ - im_detection = src_im.copy() - - h, w, _ = im_detection.shape - thickness = int(max((h + w) / 2000, 1)) - - for poly in detections: - # Draw the first point - cv2.putText(im_detection, '0', org=(int(poly[0, 0]), int(poly[0, 1])), - fontFace=cv2.FONT_HERSHEY_COMPLEX, fontScale=thickness, color=(255, 0, 0), - thickness=thickness) - - cv2.polylines(im_detection, np.array(poly).reshape((1, -1, 2)).astype(np.int32), isClosed=True, - color=(0, 0, 255), thickness=thickness) - - return im_detection def main(): config = program.load_config(FLAGS.config) From ba58a2a631899d44c8e3a5060f6e705c80ef8a15 Mon Sep 17 00:00:00 2001 From: licx Date: Tue, 18 Aug 2020 11:44:24 +0800 Subject: [PATCH 09/70] update docs --- README_cn.md | 6 ++++-- doc/doc_ch/detection.md | 44 +++++++++++++++++++------------------- doc/doc_en/detection_en.md | 15 +++++++------ 3 files changed, 35 insertions(+), 30 deletions(-) diff --git a/README_cn.md b/README_cn.md index c797097c..2f5351a8 100644 --- a/README_cn.md +++ b/README_cn.md @@ -110,6 +110,9 @@ PaddleOCR开源的文本检测算法列表: |-|-|-|-|-|-| |SAST|ResNet50_vd|88.74%|79.80%|84.03%|[下载链接](https://paddleocr.bj.bcebos.com/SAST/sast_r50_vd_total_text.tar)| +**说明:** SAST模型训练额外加入了icdar2013、icdar2017、COCO-Text、ArT等公开数据集进行调优。PaddleOCR用到的经过整理格式的英文公开数据集下载:[百度云地址](https://pan.baidu.com/s/12cPnZcVuV1zn5DOd4mqjVw) (提取码: 2bpi) + + 使用[LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/datasets.md#1icdar2019-lsvt)街景数据集共3w张数据,训练中文检测模型的相关配置和预训练文件如下: |模型|骨干网络|配置文件|预训练模型| @@ -145,8 +148,7 @@ PaddleOCR开源的文本识别算法列表: |RARE|MobileNetV3|83.32%|rec_mv3_tps_bilstm_attn|[下载链接](https://paddleocr.bj.bcebos.com/rec_mv3_tps_bilstm_attn.tar)| |SRN|Resnet50_vd_fpn|88.33%|rec_r50fpn_vd_none_srn|[下载链接](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar)| -**说明:** SRN模型使用了数据扰动方法对上述提到对两个训练集进行增广,增广后的数据可以在[百度网盘](todo)上下载。 -原始论文使用两阶段训练平均精度为89.74%,PaddleOCR中使用one-stage训练,平均精度为88.33%。两种预训练权重均在[下载链接](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar)中。 +**说明:** SRN模型使用了数据扰动方法对上述提到对两个训练集进行增广,增广后的数据可以在[百度网盘](todo)上下载。原始论文使用两阶段训练平均精度为89.74%,PaddleOCR中使用one-stage训练,平均精度为88.33%。两种预训练权重均在[下载链接](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar)中。 使用[LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/datasets.md#1icdar2019-lsvt)街景数据集根据真值将图crop出来30w数据,进行位置校准。此外基于LSVT语料生成500w合成数据训练中文模型,相关配置和预训练文件如下: diff --git a/doc/doc_ch/detection.md b/doc/doc_ch/detection.md index 850f67ca..1b30c9e8 100644 --- a/doc/doc_ch/detection.md +++ b/doc/doc_ch/detection.md @@ -1,13 +1,13 @@ # 文字检测 -本节以icdar15数据集为例,介绍PaddleOCR中检测模型的训练、评估与测试。 +本节以icdar2015数据集为例,介绍PaddleOCR中检测模型的训练、评估与测试。 ## 数据准备 icdar2015数据集可以从[官网](https://rrc.cvc.uab.es/?ch=4&com=downloads)下载到,首次下载需注册。 将下载到的数据集解压到工作目录下,假设解压在 PaddleOCR/train_data/ 下。另外,PaddleOCR将零散的标注文件整理成单独的标注文件 ,您可以通过wget的方式进行下载。 -``` +```shell # 在PaddleOCR路径下 cd PaddleOCR/ wget -P ./train_data/ https://paddleocr.bj.bcebos.com/dataset/train_icdar2015_label.txt @@ -23,21 +23,21 @@ wget -P ./train_data/ https://paddleocr.bj.bcebos.com/dataset/test_icdar2015_la └─ test_icdar2015_label.txt icdar数据集的测试标注 ``` -提供的标注文件格式为,其中中间是"\t"分隔: +提供的标注文件格式如下,中间用"\t"分隔: ``` " 图像文件名 json.dumps编码的图像标注信息" ch4_test_images/img_61.jpg [{"transcription": "MASA", "points": [[310, 104], [416, 141], [418, 216], [312, 179]]}, {...}] ``` json.dumps编码前的图像标注信息是包含多个字典的list,字典中的 `points` 表示文本框的四个点的坐标(x, y),从左上角的点开始顺时针排列。 -`transcription` 表示当前文本框的文字,在文本检测任务中并不需要这个信息。 -如果您想在其他数据集上训练PaddleOCR,可以按照上述形式构建标注文件。 +`transcription` 表示当前文本框的文字,**当其内容为“###”时,表示该文本框无效,在训练时会跳过。** +如果您想在其他数据集上训练,可以按照上述形式构建标注文件。 ## 快速启动训练 首先下载模型backbone的pretrain model,PaddleOCR的检测模型目前支持两种backbone,分别是MobileNetV3、ResNet50_vd, 您可以根据需求使用[PaddleClas](https://github.com/PaddlePaddle/PaddleClas/tree/master/ppcls/modeling/architectures)中的模型更换backbone。 -``` +```shell cd PaddleOCR/ # 下载MobileNetV3的预训练模型 wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x0_5_pretrained.tar @@ -45,7 +45,7 @@ wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/Mob wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_ssld_pretrained.tar # 解压预训练模型文件,以MobileNetV3为例 -tar xf ./pretrain_models/MobileNetV3_large_x0_5_pretrained.tar ./pretrain_models/ +tar -xf ./pretrain_models/MobileNetV3_large_x0_5_pretrained.tar ./pretrain_models/ # 注:正确解压backbone预训练权重文件后,文件夹下包含众多以网络层命名的权重文件,格式如下: ./pretrain_models/MobileNetV3_large_x0_5_pretrained/ @@ -57,11 +57,11 @@ tar xf ./pretrain_models/MobileNetV3_large_x0_5_pretrained.tar ./pretrain_models ``` -**启动训练** +#### 启动训练 *如果您安装的是cpu版本,请将配置文件中的 `use_gpu` 字段修改为false* -``` +```python python3 tools/train.py -c configs/det/det_mv3_db.yml -o Global.pretrain_weights=./pretrain_models/MobileNetV3_large_x0_5_pretrained/ ``` @@ -69,52 +69,52 @@ python3 tools/train.py -c configs/det/det_mv3_db.yml -o Global.pretrain_weights= 有关配置文件的详细解释,请参考[链接](./config.md)。 您也可以通过-o参数在不需要修改yml文件的情况下,改变训练的参数,比如,调整训练的学习率为0.0001 -``` +```python python3 tools/train.py -c configs/det/det_mv3_db.yml -o Optimizer.base_lr=0.0001 ``` -**断点训练** +#### 断点训练 如果训练程序中断,如果希望加载训练中断的模型从而恢复训练,可以通过指定Global.checkpoints指定要加载的模型路径: -``` +```python python3 tools/train.py -c configs/det/det_mv3_db.yml -o Global.checkpoints=./your/trained/model ``` -**注意**:Global.checkpoints的优先级高于Global.pretrain_weights的优先级,即同时指定两个参数时,优先加载Global.checkpoints指定的模型,如果Global.checkpoints指定的模型路径有误,会加载Global.pretrain_weights指定的模型。 +**注意**:`Global.checkpoints`的优先级高于`Global.pretrain_weights`的优先级,即同时指定两个参数时,优先加载`Global.checkpoints`指定的模型,如果`Global.checkpoints`指定的模型路径有误,会加载`Global.pretrain_weights`指定的模型。 ## 指标评估 PaddleOCR计算三个OCR检测相关的指标,分别是:Precision、Recall、Hmean。 -运行如下代码,根据配置文件det_db_mv3.yml中save_res_path指定的测试集检测结果文件,计算评估指标。 +运行如下代码,根据配置文件`det_db_mv3.yml`中`save_res_path`指定的测试集检测结果文件,计算评估指标。 -评估时设置后处理参数box_thresh=0.6,unclip_ratio=1.5,使用不同数据集、不同模型训练,可调整这两个参数进行优化 -``` +评估时设置后处理参数`box_thresh=0.6`,`unclip_ratio=1.5`,使用不同数据集、不同模型训练,可调整这两个参数进行优化 +```python python3 tools/eval.py -c configs/det/det_mv3_db.yml -o Global.checkpoints="{path/to/weights}/best_accuracy" PostProcess.box_thresh=0.6 PostProcess.unclip_ratio=1.5 ``` -训练中模型参数默认保存在Global.save_model_dir目录下。在评估指标时,需要设置Global.checkpoints指向保存的参数文件。 +训练中模型参数默认保存在`Global.save_model_dir`目录下。在评估指标时,需要设置`Global.checkpoints`指向保存的参数文件。 比如: -``` +```python python3 tools/eval.py -c configs/det/det_mv3_db.yml -o Global.checkpoints="./output/det_db/best_accuracy" PostProcess.box_thresh=0.6 PostProcess.unclip_ratio=1.5 ``` -* 注:box_thresh、unclip_ratio是DB后处理所需要的参数,在评估EAST模型时不需要设置 +* 注:`box_thresh`、`unclip_ratio`是DB后处理所需要的参数,在评估EAST模型时不需要设置 ## 测试检测效果 测试单张图像的检测效果 -``` +```python python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o TestReader.infer_img="./doc/imgs_en/img_10.jpg" Global.checkpoints="./output/det_db/best_accuracy" ``` 测试DB模型时,调整后处理阈值, -``` +```python python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o TestReader.infer_img="./doc/imgs_en/img_10.jpg" Global.checkpoints="./output/det_db/best_accuracy" PostProcess.box_thresh=0.6 PostProcess.unclip_ratio=1.5 ``` 测试文件夹下所有图像的检测效果 -``` +```python python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o TestReader.infer_img="./doc/imgs_en/" Global.checkpoints="./output/det_db/best_accuracy" ``` diff --git a/doc/doc_en/detection_en.md b/doc/doc_en/detection_en.md index f22c574b..80e4a104 100644 --- a/doc/doc_en/detection_en.md +++ b/doc/doc_en/detection_en.md @@ -1,6 +1,6 @@ # TEXT DETECTION -This section uses the icdar15 dataset as an example to introduce the training, evaluation, and testing of the detection model in PaddleOCR. +This section uses the icdar2015 dataset as an example to introduce the training, evaluation, and testing of the detection model in PaddleOCR. ## DATA PREPARATION The icdar2015 dataset can be obtained from [official website](https://rrc.cvc.uab.es/?ch=4&com=downloads). Registration is required for downloading. @@ -27,10 +27,13 @@ The provided annotation file format is as follow, seperated by "\t": " Image file name Image annotation information encoded by json.dumps" ch4_test_images/img_61.jpg [{"transcription": "MASA", "points": [[310, 104], [416, 141], [418, 216], [312, 179]]}, {...}] ``` -The image annotation after json.dumps() encoding is a list containing multiple dictionaries. The `points` in the dictionary represent the coordinates (x, y) of the four points of the text box, arranged clockwise from the point at the upper left corner. +The image annotation after **json.dumps()** encoding is a list containing multiple dictionaries. -`transcription` represents the text of the current text box, and this information is not needed in the text detection task. -If you want to train PaddleOCR on other datasets, you can build the annotation file according to the above format. +The `points` in the dictionary represent the coordinates (x, y) of the four points of the text box, arranged clockwise from the point at the upper left corner. + +`transcription` represents the text of the current text box. **When its content is "###" it means that the text box is invalid and will be skipped during training.** + +If you want to train PaddleOCR on other datasets, please build the annotation file according to the above format. ## TRAINING @@ -56,7 +59,7 @@ tar xf ./pretrain_models/MobileNetV3_large_x0_5_pretrained.tar ./pretrain_models ``` -**START TRAINING** +#### START TRAINING *If CPU version installed, please set the parameter `use_gpu` to `false` in the configuration.* ``` python3 tools/train.py -c configs/det/det_mv3_db.yml @@ -70,7 +73,7 @@ You can also use `-o` to change the training parameters without modifying the ym python3 tools/train.py -c configs/det/det_mv3_db.yml -o Optimizer.base_lr=0.0001 ``` -**load trained model and conntinue training** +#### load trained model and conntinue training If you expect to load trained model and continue the training again, you can specify the parameter `Global.checkpoints` as the model path to be loaded. For example: From c86f6e37137c26b264be3dd331b1177127a254fd Mon Sep 17 00:00:00 2001 From: licx Date: Tue, 18 Aug 2020 11:53:57 +0800 Subject: [PATCH 10/70] update docs --- doc/doc_ch/detection.md | 16 ++++++++-------- doc/doc_en/detection_en.md | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/doc/doc_ch/detection.md b/doc/doc_ch/detection.md index 1b30c9e8..84c90d18 100644 --- a/doc/doc_ch/detection.md +++ b/doc/doc_ch/detection.md @@ -61,7 +61,7 @@ tar -xf ./pretrain_models/MobileNetV3_large_x0_5_pretrained.tar ./pretrain_model *如果您安装的是cpu版本,请将配置文件中的 `use_gpu` 字段修改为false* -```python +```shell python3 tools/train.py -c configs/det/det_mv3_db.yml -o Global.pretrain_weights=./pretrain_models/MobileNetV3_large_x0_5_pretrained/ ``` @@ -69,14 +69,14 @@ python3 tools/train.py -c configs/det/det_mv3_db.yml -o Global.pretrain_weights= 有关配置文件的详细解释,请参考[链接](./config.md)。 您也可以通过-o参数在不需要修改yml文件的情况下,改变训练的参数,比如,调整训练的学习率为0.0001 -```python +```shell python3 tools/train.py -c configs/det/det_mv3_db.yml -o Optimizer.base_lr=0.0001 ``` #### 断点训练 如果训练程序中断,如果希望加载训练中断的模型从而恢复训练,可以通过指定Global.checkpoints指定要加载的模型路径: -```python +```shell python3 tools/train.py -c configs/det/det_mv3_db.yml -o Global.checkpoints=./your/trained/model ``` @@ -89,13 +89,13 @@ PaddleOCR计算三个OCR检测相关的指标,分别是:Precision、Recall 运行如下代码,根据配置文件`det_db_mv3.yml`中`save_res_path`指定的测试集检测结果文件,计算评估指标。 评估时设置后处理参数`box_thresh=0.6`,`unclip_ratio=1.5`,使用不同数据集、不同模型训练,可调整这两个参数进行优化 -```python +```shell python3 tools/eval.py -c configs/det/det_mv3_db.yml -o Global.checkpoints="{path/to/weights}/best_accuracy" PostProcess.box_thresh=0.6 PostProcess.unclip_ratio=1.5 ``` 训练中模型参数默认保存在`Global.save_model_dir`目录下。在评估指标时,需要设置`Global.checkpoints`指向保存的参数文件。 比如: -```python +```shell python3 tools/eval.py -c configs/det/det_mv3_db.yml -o Global.checkpoints="./output/det_db/best_accuracy" PostProcess.box_thresh=0.6 PostProcess.unclip_ratio=1.5 ``` @@ -104,17 +104,17 @@ python3 tools/eval.py -c configs/det/det_mv3_db.yml -o Global.checkpoints="./ou ## 测试检测效果 测试单张图像的检测效果 -```python +```shell python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o TestReader.infer_img="./doc/imgs_en/img_10.jpg" Global.checkpoints="./output/det_db/best_accuracy" ``` 测试DB模型时,调整后处理阈值, -```python +```shell python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o TestReader.infer_img="./doc/imgs_en/img_10.jpg" Global.checkpoints="./output/det_db/best_accuracy" PostProcess.box_thresh=0.6 PostProcess.unclip_ratio=1.5 ``` 测试文件夹下所有图像的检测效果 -```python +```shell python3 tools/infer_det.py -c configs/det/det_mv3_db.yml -o TestReader.infer_img="./doc/imgs_en/" Global.checkpoints="./output/det_db/best_accuracy" ``` diff --git a/doc/doc_en/detection_en.md b/doc/doc_en/detection_en.md index 80e4a104..08e6b63b 100644 --- a/doc/doc_en/detection_en.md +++ b/doc/doc_en/detection_en.md @@ -6,7 +6,7 @@ This section uses the icdar2015 dataset as an example to introduce the training, The icdar2015 dataset can be obtained from [official website](https://rrc.cvc.uab.es/?ch=4&com=downloads). Registration is required for downloading. Decompress the downloaded dataset to the working directory, assuming it is decompressed under PaddleOCR/train_data/. In addition, PaddleOCR organizes many scattered annotation files into two separate annotation files for train and test respectively, which can be downloaded by wget: -``` +```shell # Under the PaddleOCR path cd PaddleOCR/ wget -P ./train_data/ https://paddleocr.bj.bcebos.com/dataset/train_icdar2015_label.txt @@ -39,7 +39,7 @@ If you want to train PaddleOCR on other datasets, please build the annotation fi ## TRAINING First download the pretrained model. The detection model of PaddleOCR currently supports two backbones, namely MobileNetV3 and ResNet50_vd. You can use the model in [PaddleClas](https://github.com/PaddlePaddle/PaddleClas/tree/master/ppcls/modeling/architectures) to replace backbone according to your needs. -``` +```shell cd PaddleOCR/ # Download the pre-trained model of MobileNetV3 wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x0_5_pretrained.tar @@ -47,7 +47,7 @@ wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/Mob wget -P ./pretrain_models/ https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_ssld_pretrained.tar # decompressing the pre-training model file, take MobileNetV3 as an example -tar xf ./pretrain_models/MobileNetV3_large_x0_5_pretrained.tar ./pretrain_models/ +tar -xf ./pretrain_models/MobileNetV3_large_x0_5_pretrained.tar ./pretrain_models/ # Note: After decompressing the backbone pre-training weight file correctly, the file list in the folder is as follows: ./pretrain_models/MobileNetV3_large_x0_5_pretrained/ @@ -61,7 +61,7 @@ tar xf ./pretrain_models/MobileNetV3_large_x0_5_pretrained.tar ./pretrain_models #### START TRAINING *If CPU version installed, please set the parameter `use_gpu` to `false` in the configuration.* -``` +```shell python3 tools/train.py -c configs/det/det_mv3_db.yml ``` @@ -69,7 +69,7 @@ In the above instruction, use `-c` to select the training to use the `configs/de For a detailed explanation of the configuration file, please refer to [config](./config_en.md). You can also use `-o` to change the training parameters without modifying the yml file. For example, adjust the training learning rate to 0.0001 -``` +```shell python3 tools/train.py -c configs/det/det_mv3_db.yml -o Optimizer.base_lr=0.0001 ``` @@ -77,11 +77,11 @@ python3 tools/train.py -c configs/det/det_mv3_db.yml -o Optimizer.base_lr=0.0001 If you expect to load trained model and continue the training again, you can specify the parameter `Global.checkpoints` as the model path to be loaded. For example: -``` +```shell python3 tools/train.py -c configs/det/det_mv3_db.yml -o Global.checkpoints=./your/trained/model ``` -**Note**:The priority of `Global.checkpoints` is higher than that of `Global.pretrain_weights`, that is, when two parameters are specified at the same time, the model specified by Global.checkpoints will be loaded first. If the model path specified by `Global.checkpoints` is wrong, the one specified by `Global.pretrain_weights` will be loaded. +**Note**: The priority of `Global.checkpoints` is higher than that of `Global.pretrain_weights`, that is, when two parameters are specified at the same time, the model specified by `Global.checkpoints` will be loaded first. If the model path specified by `Global.checkpoints` is wrong, the one specified by `Global.pretrain_weights` will be loaded. ## EVALUATION @@ -92,7 +92,7 @@ Run the following code to calculate the evaluation indicators. The result will b When evaluating, set post-processing parameters `box_thresh=0.6`, `unclip_ratio=1.5`. If you use different datasets, different models for training, these two parameters should be adjusted for better result. -``` +```shell python3 tools/eval.py -c configs/det/det_mv3_db.yml -o Global.checkpoints="{path/to/weights}/best_accuracy" PostProcess.box_thresh=0.6 PostProcess.unclip_ratio=1.5 ``` The model parameters during training are saved in the `Global.save_model_dir` directory by default. When evaluating indicators, you need to set `Global.checkpoints` to point to the saved parameter file. From cd4d22feb01b951092849638e32d55bffd39a72c Mon Sep 17 00:00:00 2001 From: LDOUBLEV Date: Tue, 18 Aug 2020 14:27:29 +0800 Subject: [PATCH 11/70] fix ios_demo download dir --- deploy/ios_demo/download_dependencies.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deploy/ios_demo/download_dependencies.sh b/deploy/ios_demo/download_dependencies.sh index 40a8b3d2..1d09dac9 100755 --- a/deploy/ios_demo/download_dependencies.sh +++ b/deploy/ios_demo/download_dependencies.sh @@ -26,7 +26,7 @@ download_and_extract() { } echo -e "[Download ios ocr demo denpendancy]\n" -download_and_extract "${OCR_MODEL_URL}" "./ios-demo/ocr_demo/models" -download_and_extract "${PADDLE_LITE_LIB_URL}" "./ios-demo/ocr_demo" -download_and_extract "${OPENCV3_FRAMEWORK_URL}" "./ios-demo/ocr_demo" +download_and_extract "${OCR_MODEL_URL}" "./ocr_demo/models" +download_and_extract "${PADDLE_LITE_LIB_URL}" "./ocr_demo" +download_and_extract "${OPENCV3_FRAMEWORK_URL}" "./ocr_demo" echo -e "[done]\n" From b2e1a8498187e6ccb86e33d19104621c1ccf67be Mon Sep 17 00:00:00 2001 From: Neo Date: Tue, 18 Aug 2020 15:07:25 +0800 Subject: [PATCH 12/70] Update dataset_traversal.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CUDA_VISIBLE_DEVICES 默认值必须为str, 否则split会报错 --- ppocr/data/rec/dataset_traversal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ppocr/data/rec/dataset_traversal.py b/ppocr/data/rec/dataset_traversal.py index 5efba512..ebee624a 100755 --- a/ppocr/data/rec/dataset_traversal.py +++ b/ppocr/data/rec/dataset_traversal.py @@ -237,7 +237,7 @@ class SimpleReader(object): def get_device_num(): if self.use_gpu: - gpus = os.environ.get("CUDA_VISIBLE_DEVICES", 1) + gpus = os.environ.get("CUDA_VISIBLE_DEVICES", '1') gpu_num = len(gpus.split(',')) return gpu_num else: From cb7e481b4ae5cb64e04f4227558a056c1c075f4e Mon Sep 17 00:00:00 2001 From: licx Date: Tue, 18 Aug 2020 16:05:12 +0800 Subject: [PATCH 13/70] fix bug in predict_det for sast & update docs --- README.md | 6 +- doc/doc_ch/inference.md | 119 +++++++++++++++++++++++++++++-------- tools/infer/predict_det.py | 13 ++-- tools/infer/utility.py | 4 +- 4 files changed, 109 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 4678c9af..ae17668a 100644 --- a/README.md +++ b/README.md @@ -108,7 +108,9 @@ On Total-Text dataset, the text detection result is as follows: |-|-|-|-|-|-| |SAST|ResNet50_vd|88.74%|79.80%|84.03%|[Download link](https://paddleocr.bj.bcebos.com/SAST/sast_r50_vd_total_text.tar)| -For use of [LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/datasets_en.md#1-icdar2019-lsvt) street view dataset with a total of 3w training data,the related configuration and pre-trained models for text detection task are as follows: +**Note:** Additional data, like icdar2013, icdar2017, COCO-Text, ArT, was added to the model training of SAST. Download English public dataset in organized format used by PaddleOCR from [Baidu Drive](https://pan.baidu.com/s/12cPnZcVuV1zn5DOd4mqjVw) (download code: 2bpi). + +For use of [LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/datasets_en.md#1-icdar2019-lsvt) street view dataset with a total of 3w training data,the related configuration and pre-trained models for text detection task are as follows: |Model|Backbone|Configuration file|Pre-trained model| |-|-|-|-| |ultra-lightweight OCR model|MobileNetV3|det_mv3_db.yml|[Download link](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db.tar)| @@ -142,7 +144,7 @@ Refer to [DTRB](https://arxiv.org/abs/1904.01906), the training and evaluation r |RARE|MobileNetV3|83.32%|rec_mv3_tps_bilstm_attn|[Download link](https://paddleocr.bj.bcebos.com/rec_mv3_tps_bilstm_attn.tar)| |SRN|Resnet50_vd_fpn|88.33%|rec_r50fpn_vd_none_srn|[Download link](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar)| -**Note:** SRN model uses data expansion method to expand the two training sets mentioned above, and the expanded data can be downloaded from [Baidu Drive](https://pan.baidu.com/s/1-HSZ-ZVdqBF2HaBZ5pRAKA), Extract the code:y3ry. +**Note:** SRN model uses data expansion method to expand the two training sets mentioned above, and the expanded data can be downloaded from [Baidu Drive](https://pan.baidu.com/s/1-HSZ-ZVdqBF2HaBZ5pRAKA) (download code: y3ry). The average accuracy of the two-stage training in the original paper is 89.74%, and that of one stage training in paddleocr is 88.33%. Both pre-trained weights can be downloaded [here](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar). diff --git a/doc/doc_ch/inference.md b/doc/doc_ch/inference.md index 64ee8f42..9a6dbf3a 100644 --- a/doc/doc_ch/inference.md +++ b/doc/doc_ch/inference.md @@ -2,13 +2,39 @@ # 基于Python预测引擎推理 inference 模型(fluid.io.save_inference_model保存的模型) -一般是模型训练完成后保存的固化模型,多用于预测部署。 -训练过程中保存的模型是checkpoints模型,保存的是模型的参数,多用于恢复训练等。 +一般是模型训练完成后保存的固化模型,多用于预测部署。训练过程中保存的模型是checkpoints模型,保存的是模型的参数,多用于恢复训练等。 与checkpoints模型相比,inference 模型会额外保存模型的结构信息,在预测部署、加速推理上性能优越,灵活方便,适合与实际系统集成。更详细的介绍请参考文档[分类预测框架](https://paddleclas.readthedocs.io/zh_CN/latest/extension/paddle_inference.html). 接下来首先介绍如何将训练的模型转换成inference模型,然后将依次介绍文本检测、文本识别以及两者串联基于预测引擎推理。 + +- [一、训练模型转inference模型](#训练模型转inference模型) + - [检测模型转inference模型](#检测模型转inference模型) + - [识别模型转inference模型](#识别模型转inference模型) + + +- [二、文本检测模型推理](#文本检测模型推理) + - [1. 超轻量中文检测模型推理](#超轻量中文检测模型推理) + - [2. DB文本检测模型推理](#DB文本检测模型推理) + - [3. EAST文本检测模型推理](#EAST文本检测模型推理) + - [4. SAST文本检测模型推理](#SAST文本检测模型推理) + + +- [三、文本识别模型推理](#文本识别模型推理) + - [1. 超轻量中文识别模型推理](#超轻量中文识别模型推理) + - [2. 基于CTC损失的识别模型推理](#基于CTC损失的识别模型推理) + - [3. 基于Attention损失的识别模型推理](#基于Attention损失的识别模型推理) + - [4. 自定义文本识别字典的推理](#自定义文本识别字典的推理) + + +- [四、文本检测、识别串联推理](#文本检测、识别串联推理) + - [1. 超轻量中文OCR模型推理](#超轻量中文OCR模型推理) + - [2. 其他模型推理](#其他模型推理) + + + ## 一、训练模型转inference模型 + ### 检测模型转inference模型 下载超轻量级中文检测模型: @@ -24,15 +50,16 @@ wget -P ./ch_lite/ https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db.tar & python3 tools/export_model.py -c configs/det/det_mv3_db.yml -o Global.checkpoints=./ch_lite/det_mv3_db/best_accuracy Global.save_inference_dir=./inference/det_db/ ``` -转inference模型时,使用的配置文件和训练时使用的配置文件相同。另外,还需要设置配置文件中的Global.checkpoints、Global.save_inference_dir参数。 -其中Global.checkpoints指向训练中保存的模型参数文件,Global.save_inference_dir是生成的inference模型要保存的目录。 -转换成功后,在save_inference_dir 目录下有两个文件: +转inference模型时,使用的配置文件和训练时使用的配置文件相同。另外,还需要设置配置文件中的`Global.checkpoints`、`Global.save_inference_dir`参数。 +其中`Global.checkpoints`指向训练中保存的模型参数文件,`Global.save_inference_dir`是生成的inference模型要保存的目录。 +转换成功后,在`save_inference_dir`目录下有两个文件: ``` inference/det_db/ └─ model 检测inference模型的program文件 └─ params 检测inference模型的参数文件 ``` + ### 识别模型转inference模型 下载超轻量中文识别模型: @@ -51,7 +78,7 @@ python3 tools/export_model.py -c configs/rec/rec_chinese_lite_train.yml -o Globa Global.save_inference_dir=./inference/rec_crnn/ ``` -如果您是在自己的数据集上训练的模型,并且调整了中文字符的字典文件,请注意修改配置文件中的character_dict_path是否是所需要的字典文件。 +**注意:**如果您是在自己的数据集上训练的模型,并且调整了中文字符的字典文件,请注意修改配置文件中的character_dict_path是否是所需要的字典文件。 转换成功后,在目录下有两个文件: ``` @@ -60,11 +87,13 @@ python3 tools/export_model.py -c configs/rec/rec_chinese_lite_train.yml -o Globa └─ params 识别inference模型的参数文件 ``` + ## 二、文本检测模型推理 -下面将介绍超轻量中文检测模型推理、DB文本检测模型推理和EAST文本检测模型推理。默认配置是根据DB文本检测模型推理设置的。由于EAST和DB算法差别很大,在推理时,需要通过传入相应的参数适配EAST文本检测算法。 +文本检测模型推理,默认使用DB模型的配置参数。当不使用DB模型时,在推理时,需要通过传入相应的参数进行算法适配,细节参考下文。 -### 1.超轻量中文检测模型推理 + +### 1. 超轻量中文检测模型推理 超轻量中文检测模型推理,可以执行如下命令: @@ -72,11 +101,11 @@ python3 tools/export_model.py -c configs/rec/rec_chinese_lite_train.yml -o Globa python3 tools/infer/predict_det.py --image_dir="./doc/imgs/2.jpg" --det_model_dir="./inference/det_db/" ``` -可视化文本检测结果默认保存到 ./inference_results 文件夹里面,结果文件的名称前缀为'det_res'。结果示例如下: +可视化文本检测结果默认保存到`./inference_results`文件夹里面,结果文件的名称前缀为'det_res'。结果示例如下: ![](../imgs_results/det_res_2.jpg) -通过设置参数det_max_side_len的大小,改变检测算法中图片规范化的最大值。当图片的长宽都小于det_max_side_len,则使用原图预测,否则将图片等比例缩放到最大值,进行预测。该参数默认设置为det_max_side_len=960. 如果输入图片的分辨率比较大,而且想使用更大的分辨率预测,可以执行如下命令: +通过设置参数`det_max_side_len`的大小,改变检测算法中图片规范化的最大值。当图片的长宽都小于`det_max_side_len`,则使用原图预测,否则将图片等比例缩放到最大值,进行预测。该参数默认设置为`det_max_side_len=960`。 如果输入图片的分辨率比较大,而且想使用更大的分辨率预测,可以执行如下命令: ``` python3 tools/infer/predict_det.py --image_dir="./doc/imgs/2.jpg" --det_model_dir="./inference/det_db/" --det_max_side_len=1200 @@ -87,7 +116,8 @@ python3 tools/infer/predict_det.py --image_dir="./doc/imgs/2.jpg" --det_model_di python3 tools/infer/predict_det.py --image_dir="./doc/imgs/2.jpg" --det_model_dir="./inference/det_db/" --use_gpu=False ``` -### 2.DB文本检测模型推理 + +### 2. DB文本检测模型推理 首先将DB文本检测训练过程中保存的模型,转换成inference model。以基于Resnet50_vd骨干网络,在ICDAR2015英文数据集训练的模型为例([模型下载地址](https://paddleocr.bj.bcebos.com/det_r50_vd_db.tar)),可以使用如下命令进行转换: @@ -105,13 +135,14 @@ DB文本检测模型推理,可以执行如下命令: python3 tools/infer/predict_det.py --image_dir="./doc/imgs_en/img_10.jpg" --det_model_dir="./inference/det_db/" ``` -可视化文本检测结果默认保存到 ./inference_results 文件夹里面,结果文件的名称前缀为'det_res'。结果示例如下: +可视化文本检测结果默认保存到`./inference_results`文件夹里面,结果文件的名称前缀为'det_res'。结果示例如下: ![](../imgs_results/det_res_img_10_db.jpg) -**注意**:由于ICDAR2015数据集只有1000张训练图像,主要针对英文场景,所以上述模型对中文文本图像检测效果非常差。 +**注意**:由于ICDAR2015数据集只有1000张训练图像,且主要针对英文场景,所以上述模型对中文文本图像检测效果会比较差。 -### 3.EAST文本检测模型推理 + +### 3. EAST文本检测模型推理 首先将EAST文本检测训练过程中保存的模型,转换成inference model。以基于Resnet50_vd骨干网络,在ICDAR2015英文数据集训练的模型为例([模型下载地址](https://paddleocr.bj.bcebos.com/det_r50_vd_east.tar)),可以使用如下命令进行转换: @@ -123,24 +154,59 @@ python3 tools/infer/predict_det.py --image_dir="./doc/imgs_en/img_10.jpg" --det_ python3 tools/export_model.py -c configs/det/det_r50_vd_east.yml -o Global.checkpoints="./models/det_r50_vd_east/best_accuracy" Global.save_inference_dir="./inference/det_east" ``` -EAST文本检测模型推理,需要设置参数det_algorithm,指定检测算法类型为EAST,可以执行如下命令: +**EAST文本检测模型推理,需要设置参数`det_algorithm`,指定检测算法类型为EAST**,可以执行如下命令: ``` python3 tools/infer/predict_det.py --det_algorithm="EAST" --image_dir="./doc/imgs_en/img_10.jpg" --det_model_dir="./inference/det_east/" ``` -可视化文本检测结果默认保存到 ./inference_results 文件夹里面,结果文件的名称前缀为'det_res'。结果示例如下: +可视化文本检测结果默认保存到`./inference_results`文件夹里面,结果文件的名称前缀为'det_res'。结果示例如下: ![](../imgs_results/det_res_img_10_east.jpg) -**注意**:本代码库中EAST后处理中NMS采用的Python版本,所以预测速度比较耗时。如果采用C++版本,会有明显加速。 +**注意**:本代码库中,EAST后处理Locality-Aware NMS有python和c++两种版本,c++版速度明显快于python版。由于c++版本nms编译版本问题,只有python3.5环境下会调用c++版nms,其他情况将调用python版nms。 + +### 4. SAST文本检测模型推理 +#### (1). 四边形文本检测模型(ICDAR2015) +首先将SAST文本检测训练过程中保存的模型,转换成inference model。以基于Resnet50_vd骨干网络,在ICDAR2015英文数据集训练的模型为例([模型下载地址](https://paddleocr.bj.bcebos.com/SAST/sast_r50_vd_icdar2015.tar)),可以使用如下命令进行转换: +``` +python3 tools/export_model.py -c configs/det/det_r50_vd_sast_icdar15.yml -o Global.checkpoints="./models/sast_r50_vd_icdar2015/best_accuracy" Global.save_inference_dir="./inference/det_sast_ic15" +``` +**SAST文本检测模型推理,需要设置参数`det_algorithm`,指定检测算法类型为SAST**,可以执行如下命令: +``` +python3 tools/infer/predict_det.py --det_algorithm="SAST" --image_dir="./doc/imgs_en/img_10.jpg" --det_model_dir="./inference/det_sast_ic15/" +``` +可视化文本检测结果默认保存到`./inference_results`文件夹里面,结果文件的名称前缀为'det_res'。结果示例如下: + +![](../imgs_results/det_res_img_10_sast.jpg) + +#### (2). 弯曲文本检测模型(Total-Text) +首先将SAST文本检测训练过程中保存的模型,转换成inference model。以基于Resnet50_vd骨干网络,在Total-Text英文数据集训练的模型为例([模型下载地址](https://paddleocr.bj.bcebos.com/SAST/sast_r50_vd_total_text.tar)),可以使用如下命令进行转换: + +``` +python3 tools/export_model.py -c configs/det/det_r50_vd_sast_totaltext.yml -o Global.checkpoints="./models/sast_r50_vd_total_text/best_accuracy" Global.save_inference_dir="./inference/det_sast_tt" +``` + +**SAST文本检测模型推理,需要设置参数`det_algorithm`,指定检测算法类型为SAST**,可以执行如下命令: +``` +python3 tools/infer/predict_det.py --det_algorithm="SAST" --image_dir="./doc/imgs_en/img623.jpg" --det_model_dir="./inference/det_sast_tt/" --det_sast_polygon=True +``` +可视化文本检测结果默认保存到`./inference_results`文件夹里面,结果文件的名称前缀为'det_res'。结果示例如下: + +![](../imgs_results/det_res_img623_sast.jpg) + +**注意**:本代码库中,SAST后处理Locality-Aware NMS有python和c++两种版本,c++版速度明显快于python版。由于c++版本nms编译版本问题,只有python3.5环境下会调用c++版nms,其他情况将调用python版nms。 + + + ## 三、文本识别模型推理 下面将介绍超轻量中文识别模型推理、基于CTC损失的识别模型推理和基于Attention损失的识别模型推理。对于中文文本识别,建议优先选择基于CTC损失的识别模型,实践中也发现基于Attention损失的效果不如基于CTC损失的识别模型。此外,如果训练时修改了文本的字典,请参考下面的自定义文本识别字典的推理。 -### 1.超轻量中文识别模型推理 + +### 1. 超轻量中文识别模型推理 超轻量中文识别模型推理,可以执行如下命令: @@ -155,7 +221,8 @@ python3 tools/infer/predict_rec.py --image_dir="./doc/imgs_words/ch/word_4.jpg" Predicts of ./doc/imgs_words/ch/word_4.jpg:['实力活力', 0.89552695] -### 2.基于CTC损失的识别模型推理 + +### 2. 基于CTC损失的识别模型推理 我们以STAR-Net为例,介绍基于CTC损失的识别模型推理。 CRNN和Rosetta使用方式类似,不用设置识别算法参数rec_algorithm。 @@ -176,7 +243,8 @@ STAR-Net文本识别模型推理,可以执行如下命令: python3 tools/infer/predict_rec.py --image_dir="./doc/imgs_words_en/word_336.png" --rec_model_dir="./inference/starnet/" --rec_image_shape="3, 32, 100" --rec_char_type="en" ``` -### 3.基于Attention损失的识别模型推理 + +### 3. 基于Attention损失的识别模型推理 基于Attention损失的识别模型与ctc不同,需要额外设置识别算法参数 --rec_algorithm="RARE" @@ -202,16 +270,18 @@ self.character_str = "0123456789abcdefghijklmnopqrstuvwxyz" dict_character = list(self.character_str) ``` -### 4.自定义文本识别字典的推理 + +### 4. 自定义文本识别字典的推理 如果训练时修改了文本的字典,在使用inference模型预测时,需要通过`--rec_char_dict_path`指定使用的字典路径 ``` python3 tools/infer/predict_rec.py --image_dir="./doc/imgs_words_en/word_336.png" --rec_model_dir="./your inference model" --rec_image_shape="3, 32, 100" --rec_char_type="en" --rec_char_dict_path="your text dict path" ``` + ## 四、文本检测、识别串联推理 - -### 1.超轻量中文OCR模型推理 + +### 1. 超轻量中文OCR模型推理 在执行预测时,需要通过参数image_dir指定单张图像或者图像集合的路径、参数det_model_dir指定检测inference模型的路径和参数rec_model_dir指定识别inference模型的路径。可视化识别结果默认保存到 ./inference_results 文件夹里面。 @@ -223,7 +293,8 @@ python3 tools/infer/predict_system.py --image_dir="./doc/imgs/2.jpg" --det_model ![](../imgs_results/2.jpg) -### 2.其他模型推理 + +### 2. 其他模型推理 如果想尝试使用其他检测算法或者识别算法,请参考上述文本检测模型推理和文本识别模型推理,更新相应配置和模型,下面给出基于EAST文本检测和STAR-Net文本识别执行命令: diff --git a/tools/infer/predict_det.py b/tools/infer/predict_det.py index 74ffb0b5..b556c7f0 100755 --- a/tools/infer/predict_det.py +++ b/tools/infer/predict_det.py @@ -58,9 +58,14 @@ class TextDetector(object): self.preprocess_op = SASTProcessTest(preprocess_params) postprocess_params["score_thresh"] = args.det_sast_score_thresh postprocess_params["nms_thresh"] = args.det_sast_nms_thresh - postprocess_params["sample_pts_num"] = args.det_sast_sample_pts_num - postprocess_params["expand_scale"] = args.det_sast_expand_scale - postprocess_params["shrink_ratio_of_width"] = args.det_sast_shrink_ratio_of_width + if args.det_sast_polygon: + postprocess_params["sample_pts_num"] = 6 + postprocess_params["expand_scale"] = 1.2 + postprocess_params["shrink_ratio_of_width"] = 0.2 + else: + postprocess_params["sample_pts_num"] = 2 + postprocess_params["expand_scale"] = 1.0 + postprocess_params["shrink_ratio_of_width"] = 0.3 self.postprocess_op = SASTPostProcess(postprocess_params) else: logger.info("unknown det_algorithm:{}".format(self.det_algorithm)) @@ -140,7 +145,7 @@ class TextDetector(object): dt_boxes_list = self.postprocess_op(outs_dict, [ratio_list]) dt_boxes = dt_boxes_list[0] - dt_boxes = self.filter_tag_det_res(dt_boxes, ori_im.shape) +# dt_boxes = self.filter_tag_det_res(dt_boxes, ori_im.shape) elapse = time.time() - starttime return dt_boxes, elapse diff --git a/tools/infer/utility.py b/tools/infer/utility.py index f31b0f65..392bc4df 100755 --- a/tools/infer/utility.py +++ b/tools/infer/utility.py @@ -56,9 +56,7 @@ def parse_args(): #SAST parmas parser.add_argument("--det_sast_score_thresh", type=float, default=0.5) parser.add_argument("--det_sast_nms_thresh", type=float, default=0.2) - parser.add_argument("--det_sast_sample_pts_num", type=float, default=2) - parser.add_argument("--det_sast_expand_scale", type=float, default=1.0) - parser.add_argument("--det_sast_shrink_ratio_of_width", type=float, default=0.3) + parser.add_argument("--det_sast_polygon", type=bool, default=False) #params for text recognizer parser.add_argument("--rec_algorithm", type=str, default='CRNN') From 76220602c224155b4a7491745f7b7569df8a15cf Mon Sep 17 00:00:00 2001 From: licx Date: Tue, 18 Aug 2020 16:09:04 +0800 Subject: [PATCH 14/70] fix bug in predict_det for sast & update docs --- doc/imgs_en/img623.jpg | Bin 0 -> 253494 bytes doc/imgs_results/det_res_img623_sast.jpg | Bin 0 -> 128597 bytes doc/imgs_results/det_res_img_10_sast.jpg | Bin 0 -> 340827 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 doc/imgs_en/img623.jpg create mode 100644 doc/imgs_results/det_res_img623_sast.jpg create mode 100644 doc/imgs_results/det_res_img_10_sast.jpg diff --git a/doc/imgs_en/img623.jpg b/doc/imgs_en/img623.jpg new file mode 100755 index 0000000000000000000000000000000000000000..2fae1b5b1ca1d557355933e93bbe268d8bba6778 GIT binary patch literal 253494 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

;e@BV zZkVMj0xl#0K}_|_eOfgL>{Hyn$?f+PTfjNdfAo2xcy8zr2&4?B?z$ixJb$yiJO$_5 z3XEa37u)8%uv`0M4_kCw&2%M?j}xW*r=2KA81WRiJ(wmt5983c<$a)NVdG|ETjYdX zp=I>V@8=sa-6iWQmg@>gl@F=zduTao%+)KhN#JR|-pIb9(g8>q#(aBMIn!KduWx;JJH~Sb|AFReq`TX!Gf{uQ{d<(o*g*VoulR zHAWnS$ZGEZVqrzsD%wGo5m*h#EyscKUvETzPF0}>{sA6MgTxQ9`Hzq0HnSdXC^}}% zS!QI1xHbjQh=wHuj_2J9cYSgL59U^j(2P25Dx7c51cqC-+>e%ygFmCUoPp?vVBG@b zb#E__U8G%P(5S&=ta3-8?NnQrLQdk;j4tRyuE8rwPK?T%WL88yMkieJ*mA?dPS~hl zU!%BBdWmLw-wnCQqCs|ZY`PVIFF27$kH<}|S9{{GV@#l~Bg6*5EeW9GrFm>LZoaQ2 zC{`>(fvjG`>RAxy&gtR-e|GKStcf!CLo{dU1TNGb}>(6sB&4-l+xdSUe`By z55-O84|O#G?U6V_F1pE{{B*zQK=uN{k8Ys15`~`+gyVuN@O<6Y;{%-k*%0AXAe$WQ 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≠iu0$ZLJG{AFPu|XLcBX$Oz_HZ9tXm=y*Uis* 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

r2;)xsLa3CZXx6jfT1 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%0An_iWBb7^V+F? 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 literal 0 HcmV?d00001 diff --git a/doc/imgs_results/det_res_img623_sast.jpg b/doc/imgs_results/det_res_img623_sast.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b2dd538f7729724a33516091d11c081c7c2c1bd7 GIT binary patch literal 128597 zcmeFYcRZY3w>N%`!RVp|QAUEO(Zi^NBzn{!L6i_BQgot?k|4t9glLIQL> zG}KfyfByM1$lqTjAp?WSs37E!zqM$Tkp2f5LM!}`z8LX0)j%qGS_A0VDbt#Zr;++)Y8^5xnpW(e)pb* zy~9ICCuf&Oo?hNQzJAaB!(Y6Nh>Us_otTuIlA87=J>z{|enDYTaY<>_=jxg-wRQCk z9i3g>J*eKkuOp*lKgK71{+e7^Tw4CUvbu&|$L{X!9~>Uxj!*vZ1p>f-vqilAANgV+ z@HV?6M>|qnZ)K&YkIsR44_rdcwQPc1m7pV+_j!k725dd@>9C z*gvfO#o7Oiv9SM7oc)8bfATd6(11b2#RD?{aNvyV>}9K+%`eZT*3J5bxfnQGFxRXr zfq!EAK)2lfUNcrB-?8z{y1CB%FVmn*0LE1|!AhX?KBbhU!qd&~!!b#Z5cnibJmc@y zB{C(dJi_~+b6{P-*ZP>lLDG6FyzW8Pt1*o1IS^(==+LP<2VSzF(2GwD;3p>Ph;}iA zom4#>Om9uNI(7~mUu`}I6y0L8GZ_^O^Hcf)S0_WuvPt0cY0ytOHaMe5u5)0q=&z2U z=KyK_*^9RXXFJYwU}&%uv3olR^imlpSmMw=86opr#S(keoxOOqH2;iXHCc2H@Qs`U zo#p3%9sJ}n;@ERN2cKk(&lNmYD{@yI%sB@Z#?OIIX=fJ(@%0A=1noQm*RxYf#4yb{ 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%0D8%ZYA8O;+#=ewv>gAV^xwsED#574pM?R4Z+ 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%0D3^R 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

p;MBT)4{56LoqrobY*Tj?S|#+_c!dhmr@Q@ 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 X=21S_$!9Ut0xC**qj&YIK>3GUh=UoAM?~;& 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

UL{VX1+7RiuoqEHXUX#BS?p@Jekl-dWkMo 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 Date: Tue, 18 Aug 2020 16:14:42 +0800 Subject: [PATCH 15/70] fix bug in predict_det for sast & update docs --- doc/doc_ch/inference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/doc_ch/inference.md b/doc/doc_ch/inference.md index 9a6dbf3a..52aa4c9f 100644 --- a/doc/doc_ch/inference.md +++ b/doc/doc_ch/inference.md @@ -78,7 +78,7 @@ python3 tools/export_model.py -c configs/rec/rec_chinese_lite_train.yml -o Globa Global.save_inference_dir=./inference/rec_crnn/ ``` -**注意:**如果您是在自己的数据集上训练的模型,并且调整了中文字符的字典文件,请注意修改配置文件中的character_dict_path是否是所需要的字典文件。 +**注意:**如果您是在自己的数据集上训练的模型,并且调整了中文字符的字典文件,请注意修改配置文件中的`character_dict_path`是否是所需要的字典文件。 转换成功后,在目录下有两个文件: ``` From 0c3b5d8e763e1c15a21f5c1d7cffea8fc44857db Mon Sep 17 00:00:00 2001 From: licx Date: Tue, 18 Aug 2020 20:32:00 +0800 Subject: [PATCH 16/70] fix bug in predict_det for sast & update docs --- doc/doc_ch/inference.md | 6 +++++- tools/infer/predict_det.py | 19 ++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/doc/doc_ch/inference.md b/doc/doc_ch/inference.md index 52aa4c9f..28671d17 100644 --- a/doc/doc_ch/inference.md +++ b/doc/doc_ch/inference.md @@ -296,7 +296,11 @@ python3 tools/infer/predict_system.py --image_dir="./doc/imgs/2.jpg" --det_model ### 2. 其他模型推理 -如果想尝试使用其他检测算法或者识别算法,请参考上述文本检测模型推理和文本识别模型推理,更新相应配置和模型,下面给出基于EAST文本检测和STAR-Net文本识别执行命令: +如果想尝试使用其他检测算法或者识别算法,请参考上述文本检测模型推理和文本识别模型推理,更新相应配置和模型。 + +**注意:由于检测框矫正逻辑的局限性,SAST弯曲文本检测模型(即,使用参数`--det_sast_polygon=True`时)暂时无法用来模型串联。** + +下面给出基于EAST文本检测和STAR-Net文本识别执行命令: ``` python3 tools/infer/predict_system.py --image_dir="./doc/imgs_en/img_10.jpg" --det_model_dir="./inference/det_east/" --det_algorithm="EAST" --rec_model_dir="./inference/starnet/" --rec_image_shape="3, 32, 100" --rec_char_type="en" diff --git a/tools/infer/predict_det.py b/tools/infer/predict_det.py index b556c7f0..af1d60c3 100755 --- a/tools/infer/predict_det.py +++ b/tools/infer/predict_det.py @@ -58,7 +58,8 @@ class TextDetector(object): self.preprocess_op = SASTProcessTest(preprocess_params) postprocess_params["score_thresh"] = args.det_sast_score_thresh postprocess_params["nms_thresh"] = args.det_sast_nms_thresh - if args.det_sast_polygon: + self.det_sast_polygon = args.det_sast_polygon + if self.det_sast_polygon: postprocess_params["sample_pts_num"] = 6 postprocess_params["expand_scale"] = 1.2 postprocess_params["shrink_ratio_of_width"] = 0.2 @@ -99,7 +100,7 @@ class TextDetector(object): return rect def clip_det_res(self, points, img_height, img_width): - for pno in range(4): + for pno in range(points.shape[0]): points[pno, 0] = int(min(max(points[pno, 0], 0), img_width - 1)) points[pno, 1] = int(min(max(points[pno, 1], 0), img_height - 1)) return points @@ -118,6 +119,15 @@ class TextDetector(object): dt_boxes = np.array(dt_boxes_new) return dt_boxes + def filter_tag_det_res_only_clip(self, dt_boxes, image_shape): + img_height, img_width = image_shape[0:2] + dt_boxes_new = [] + for box in dt_boxes: + box = self.clip_det_res(box, img_height, img_width) + dt_boxes_new.append(box) + dt_boxes = np.array(dt_boxes_new) + return dt_boxes + def __call__(self, img): ori_im = img.copy() im, ratio_list = self.preprocess_op(img) @@ -145,7 +155,10 @@ class TextDetector(object): dt_boxes_list = self.postprocess_op(outs_dict, [ratio_list]) dt_boxes = dt_boxes_list[0] -# dt_boxes = self.filter_tag_det_res(dt_boxes, ori_im.shape) + if self.det_algorithm == "SAST" and self.det_sast_polygon: + dt_boxes = self.filter_tag_det_res_only_clip(dt_boxes, ori_im.shape) + else: + dt_boxes = self.filter_tag_det_res(dt_boxes, ori_im.shape) elapse = time.time() - starttime return dt_boxes, elapse From e1e5f96f6cb5a08ae89d48337579ddb0bb2329c4 Mon Sep 17 00:00:00 2001 From: licx Date: Wed, 19 Aug 2020 11:35:49 +0800 Subject: [PATCH 17/70] update inference docs for sast --- doc/doc_ch/inference.md | 19 ++++---- doc/doc_en/inference_en.md | 88 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 92 insertions(+), 15 deletions(-) diff --git a/doc/doc_ch/inference.md b/doc/doc_ch/inference.md index 28671d17..293fee2f 100644 --- a/doc/doc_ch/inference.md +++ b/doc/doc_ch/inference.md @@ -1,7 +1,7 @@ # 基于Python预测引擎推理 -inference 模型(fluid.io.save_inference_model保存的模型) +inference 模型(`fluid.io.save_inference_model`保存的模型) 一般是模型训练完成后保存的固化模型,多用于预测部署。训练过程中保存的模型是checkpoints模型,保存的是模型的参数,多用于恢复训练等。 与checkpoints模型相比,inference 模型会额外保存模型的结构信息,在预测部署、加速推理上性能优越,灵活方便,适合与实际系统集成。更详细的介绍请参考文档[分类预测框架](https://paddleclas.readthedocs.io/zh_CN/latest/extension/paddle_inference.html). @@ -10,22 +10,19 @@ inference 模型(fluid.io.save_inference_model保存的模型) - [一、训练模型转inference模型](#训练模型转inference模型) - [检测模型转inference模型](#检测模型转inference模型) - - [识别模型转inference模型](#识别模型转inference模型) - + - [识别模型转inference模型](#识别模型转inference模型) - [二、文本检测模型推理](#文本检测模型推理) - [1. 超轻量中文检测模型推理](#超轻量中文检测模型推理) - [2. DB文本检测模型推理](#DB文本检测模型推理) - [3. EAST文本检测模型推理](#EAST文本检测模型推理) - - [4. SAST文本检测模型推理](#SAST文本检测模型推理) - + - [4. SAST文本检测模型推理](#SAST文本检测模型推理) - [三、文本识别模型推理](#文本识别模型推理) - [1. 超轻量中文识别模型推理](#超轻量中文识别模型推理) - [2. 基于CTC损失的识别模型推理](#基于CTC损失的识别模型推理) - [3. 基于Attention损失的识别模型推理](#基于Attention损失的识别模型推理) - - [4. 自定义文本识别字典的推理](#自定义文本识别字典的推理) - + - [4. 自定义文本识别字典的推理](#自定义文本识别字典的推理) - [四、文本检测、识别串联推理](#文本检测、识别串联推理) - [1. 超轻量中文OCR模型推理](#超轻量中文OCR模型推理) @@ -154,7 +151,7 @@ python3 tools/infer/predict_det.py --image_dir="./doc/imgs_en/img_10.jpg" --det_ python3 tools/export_model.py -c configs/det/det_r50_vd_east.yml -o Global.checkpoints="./models/det_r50_vd_east/best_accuracy" Global.save_inference_dir="./inference/det_east" ``` -**EAST文本检测模型推理,需要设置参数`det_algorithm`,指定检测算法类型为EAST**,可以执行如下命令: +**EAST文本检测模型推理,需要设置参数`--det_algorithm="EAST"`**,可以执行如下命令: ``` python3 tools/infer/predict_det.py --det_algorithm="EAST" --image_dir="./doc/imgs_en/img_10.jpg" --det_model_dir="./inference/det_east/" @@ -173,7 +170,7 @@ python3 tools/infer/predict_det.py --det_algorithm="EAST" --image_dir="./doc/img ``` python3 tools/export_model.py -c configs/det/det_r50_vd_sast_icdar15.yml -o Global.checkpoints="./models/sast_r50_vd_icdar2015/best_accuracy" Global.save_inference_dir="./inference/det_sast_ic15" ``` -**SAST文本检测模型推理,需要设置参数`det_algorithm`,指定检测算法类型为SAST**,可以执行如下命令: +**SAST文本检测模型推理,需要设置参数`--det_algorithm="SAST"`**,可以执行如下命令: ``` python3 tools/infer/predict_det.py --det_algorithm="SAST" --image_dir="./doc/imgs_en/img_10.jpg" --det_model_dir="./inference/det_sast_ic15/" ``` @@ -188,7 +185,7 @@ python3 tools/infer/predict_det.py --det_algorithm="SAST" --image_dir="./doc/img python3 tools/export_model.py -c configs/det/det_r50_vd_sast_totaltext.yml -o Global.checkpoints="./models/sast_r50_vd_total_text/best_accuracy" Global.save_inference_dir="./inference/det_sast_tt" ``` -**SAST文本检测模型推理,需要设置参数`det_algorithm`,指定检测算法类型为SAST**,可以执行如下命令: +**SAST文本检测模型推理,需要设置参数`--det_algorithm="SAST"`,同时,还需要增加参数`--det_sast_polygon=True`,**可以执行如下命令: ``` python3 tools/infer/predict_det.py --det_algorithm="SAST" --image_dir="./doc/imgs_en/img623.jpg" --det_model_dir="./inference/det_sast_tt/" --det_sast_polygon=True ``` @@ -298,7 +295,7 @@ python3 tools/infer/predict_system.py --image_dir="./doc/imgs/2.jpg" --det_model 如果想尝试使用其他检测算法或者识别算法,请参考上述文本检测模型推理和文本识别模型推理,更新相应配置和模型。 -**注意:由于检测框矫正逻辑的局限性,SAST弯曲文本检测模型(即,使用参数`--det_sast_polygon=True`时)暂时无法用来模型串联。** +**注意:由于检测框矫正逻辑的局限性,暂不支持使用SAST弯曲文本检测模型(即,使用参数`--det_sast_polygon=True`时)进行模型串联。** 下面给出基于EAST文本检测和STAR-Net文本识别执行命令: diff --git a/doc/doc_en/inference_en.md b/doc/doc_en/inference_en.md index 58f2e3fb..749aed31 100644 --- a/doc/doc_en/inference_en.md +++ b/doc/doc_en/inference_en.md @@ -1,7 +1,7 @@ # Reasoning based on Python prediction engine -The inference model (the model saved by fluid.io.save_inference_model) is generally a solidified model saved after the model training is completed, and is mostly used to give prediction in deployment. +The inference model (the model saved by `fluid.io.save_inference_model`) is generally a solidified model saved after the model training is completed, and is mostly used to give prediction in deployment. The model saved during the training process is the checkpoints model, which saves the parameters of the model and is mostly used to resume training. @@ -9,7 +9,31 @@ Compared with the checkpoints model, the inference model will additionally save Next, we first introduce how to convert a trained model into an inference model, and then we will introduce text detection, text recognition, and the concatenation of them based on inference model. +- [CONVERT TRAINING MODEL TO INFERENCE MODEL](#CONVERT) + - [Convert detection model to inference model](#Convert_detection_model) + - [Convert recognition model to inference model](#Convert_recognition_model) + + +- [TEXT DETECTION MODEL INFERENCE](#DETECTION_MODEL_INFERENCE) + - [1. LIGHTWEIGHT CHINESE DETECTION MODEL INFERENCE](#LIGHTWEIGHT_DETECTION) + - [2. DB TEXT DETECTION MODEL INFERENCE](#DB_DETECTION) + - [3. EAST TEXT DETECTION MODEL INFERENCE](#EAST_DETECTION) + - [4. SAST TEXT DETECTION MODEL INFERENCE](#SAST_DETECTION) + +- [TEXT RECOGNITION MODEL INFERENCE](#RECOGNITION_MODEL_INFERENCE) + - [1. LIGHTWEIGHT CHINESE MODEL](#LIGHTWEIGHT_RECOGNITION) + - [2. CTC-BASED TEXT RECOGNITION MODEL INFERENCE](#CTC-BASED_RECOGNITION) + - [3. ATTENTION-BASED TEXT RECOGNITION MODEL INFERENCE](#ATTENTION-BASED_RECOGNITION) + - [4. TEXT RECOGNITION MODEL INFERENCE USING CUSTOM CHARACTERS DICTIONARY](#USING_CUSTOM_CHARACTERS) + + +- [TEXT DETECTION AND RECOGNITION INFERENCE CONCATENATION](#CONCATENATION) + - [1. LIGHTWEIGHT CHINESE MODEL](#LIGHTWEIGHT_CHINESE_MODEL) + - [2. OTHER MODELS](#OTHER_MODELS) + + ## CONVERT TRAINING MODEL TO INFERENCE MODEL + ### Convert detection model to inference model Download the lightweight Chinese detection model: @@ -35,6 +59,7 @@ inference/det_db/ └─ params Check the parameter file of the inference model ``` + ### Convert recognition model to inference model Download the lightweight Chinese recognition model: @@ -62,11 +87,13 @@ After the conversion is successful, there are two files in the directory: └─ params Identify the parameter files of the inference model ``` + ## TEXT DETECTION MODEL INFERENCE The following will introduce the lightweight Chinese detection model inference, DB text detection model inference and EAST text detection model inference. The default configuration is based on the inference setting of the DB text detection model. Because EAST and DB algorithms are very different, when inference, it is necessary to **adapt the EAST text detection algorithm by passing in corresponding parameters**. + ### 1. LIGHTWEIGHT CHINESE DETECTION MODEL INFERENCE For lightweight Chinese detection model inference, you can execute the following commands: @@ -90,6 +117,7 @@ If you want to use the CPU for prediction, execute the command as follows python3 tools/infer/predict_det.py --image_dir="./doc/imgs/2.jpg" --det_model_dir="./inference/det_db/" --use_gpu=False ``` + ### 2. DB TEXT DETECTION MODEL INFERENCE First, convert the model saved in the DB text detection training process into an inference model. Taking the model based on the Resnet50_vd backbone network and trained on the ICDAR2015 English dataset as an example ([model download link](https://paddleocr.bj.bcebos.com/det_r50_vd_db.tar)), you can use the following command to convert: @@ -114,6 +142,7 @@ The visualized text detection results are saved to the `./inference_results` fol **Note**: Since the ICDAR2015 dataset has only 1,000 training images, mainly for English scenes, the above model has very poor detection result on Chinese text images. + ### 3. EAST TEXT DETECTION MODEL INFERENCE First, convert the model saved in the EAST text detection training process into an inference model. Taking the model based on the Resnet50_vd backbone network and trained on the ICDAR2015 English dataset as an example ([model download link](https://paddleocr.bj.bcebos.com/det_r50_vd_east.tar)), you can use the following command to convert: @@ -126,23 +155,64 @@ First, convert the model saved in the EAST text detection training process into python3 tools/export_model.py -c configs/det/det_r50_vd_east.yml -o Global.checkpoints="./models/det_r50_vd_east/best_accuracy" Global.save_inference_dir="./inference/det_east" ``` -For EAST text detection model inference, you need to set the parameter det_algorithm, specify the detection algorithm type to EAST, run the following command: +**For EAST text detection model inference, you need to set the parameter ``--det_algorithm="EAST"``**, run the following command: ``` python3 tools/infer/predict_det.py --image_dir="./doc/imgs_en/img_10.jpg" --det_model_dir="./inference/det_east/" --det_algorithm="EAST" ``` + The visualized text detection results are saved to the `./inference_results` folder by default, and the name of the result file is prefixed with 'det_res'. Examples of results are as follows: ![](../imgs_results/det_res_img_10_east.jpg) -**Note**: The Python version of NMS in EAST post-processing used in this codebase so the prediction speed is quite slow. If you use the C++ version, there will be a significant speedup. +**Note**: EAST post-processing locality aware NMS has two versions: Python and C++. The speed of C++ version is obviously faster than that of Python version. Due to the compilation version problem of NMS of C++ version, C++ version NMS will be called only in Python 3.5 environment, and python version NMS will be called in other cases. + +### 4. SAST TEXT DETECTION MODEL INFERENCE +#### (1). Quadrangle text detection model (ICDAR2015) +First, convert the model saved in the SAST text detection training process into an inference model. Taking the model based on the Resnet50_vd backbone network and trained on the ICDAR2015 English dataset as an example ([model download link](https://paddleocr.bj.bcebos.com/SAST/sast_r50_vd_icdar2015.tar)), you can use the following command to convert: + +``` +python3 tools/export_model.py -c configs/det/det_r50_vd_sast_icdar15.yml -o Global.checkpoints="./models/sast_r50_vd_icdar2015/best_accuracy" Global.save_inference_dir="./inference/det_sast_ic15" +``` + +**For SAST quadrangle text detection model inference, you need to set the parameter `--det_algorithm="SAST"`**, run the following command: + +``` +python3 tools/infer/predict_det.py --det_algorithm="SAST" --image_dir="./doc/imgs_en/img_10.jpg" --det_model_dir="./inference/det_sast_ic15/" +``` + +The visualized text detection results are saved to the `./inference_results` folder by default, and the name of the result file is prefixed with 'det_res'. Examples of results are as follows: + +![](../imgs_results/det_res_img_10_sast.jpg) + +#### (2). Curved text detection model (Total-Text) +First, convert the model saved in the SAST text detection training process into an inference model. Taking the model based on the Resnet50_vd backbone network and trained on the Total-Text English dataset as an example ([model download link](https://paddleocr.bj.bcebos.com/SAST/sast_r50_vd_total_text.tar)), you can use the following command to convert: + +``` +python3 tools/export_model.py -c configs/det/det_r50_vd_sast_totaltext.yml -o Global.checkpoints="./models/sast_r50_vd_total_text/best_accuracy" Global.save_inference_dir="./inference/det_sast_tt" +``` + +**For SAST curved text detection model inference, you need to set the parameter `--det_algorithm="SAST"` and `--det_sast_polygon=True`**, run the following command: + +``` +python3 tools/infer/predict_det.py --det_algorithm="SAST" --image_dir="./doc/imgs_en/img623.jpg" --det_model_dir="./inference/det_sast_tt/" --det_sast_polygon=True +``` + +The visualized text detection results are saved to the `./inference_results` folder by default, and the name of the result file is prefixed with 'det_res'. Examples of results are as follows: + +![](../imgs_results/det_res_img_10_east.jpg) + +**Note**: SAST post-processing locality aware NMS has two versions: Python and C++. The speed of C++ version is obviously faster than that of Python version. Due to the compilation version problem of NMS of C++ version, C++ version NMS will be called only in Python 3.5 environment, and python version NMS will be called in other cases. + + ## TEXT RECOGNITION MODEL INFERENCE The following will introduce the lightweight Chinese recognition model inference, other CTC-based and Attention-based text recognition models inference. For Chinese text recognition, it is recommended to choose the recognition model based on CTC loss. In practice, it is also found that the result of the model based on Attention loss is not as good as the one based on CTC loss. In addition, if the characters dictionary is modified during training, make sure that you use the same characters set during inferencing. Please check below for details. + ### 1. LIGHTWEIGHT CHINESE TEXT RECOGNITION MODEL REFERENCE For lightweight Chinese recognition model inference, you can execute the following commands: @@ -158,6 +228,7 @@ After executing the command, the prediction results (recognized text and score) Predicts of ./doc/imgs_words/ch/word_4.jpg:['实力活力', 0.89552695] + ### 2. CTC-BASED TEXT RECOGNITION MODEL INFERENCE Taking STAR-Net as an example, we introduce the recognition model inference based on CTC loss. CRNN and Rosetta are used in a similar way, by setting the recognition algorithm parameter `rec_algorithm`. @@ -178,6 +249,7 @@ For STAR-Net text recognition model inference, execute the following commands: python3 tools/infer/predict_rec.py --image_dir="./doc/imgs_words_en/word_336.png" --rec_model_dir="./inference/starnet/" --rec_image_shape="3, 32, 100" --rec_char_type="en" ``` + ### 3. ATTENTION-BASED TEXT RECOGNITION MODEL INFERENCE ![](../imgs_words_en/word_336.png) @@ -196,6 +268,7 @@ self.character_str = "0123456789abcdefghijklmnopqrstuvwxyz" dict_character = list(self.character_str) ``` + ### 4. TEXT RECOGNITION MODEL INFERENCE USING CUSTOM CHARACTERS DICTIONARY If the chars dictionary is modified during training, you need to specify the new dictionary path by setting the parameter `rec_char_dict_path` when using your inference model to predict. @@ -203,8 +276,10 @@ If the chars dictionary is modified during training, you need to specify the new python3 tools/infer/predict_rec.py --image_dir="./doc/imgs_words_en/word_336.png" --rec_model_dir="./your inference model" --rec_image_shape="3, 32, 100" --rec_char_type="en" --rec_char_dict_path="your text dict path" ``` + ## TEXT DETECTION AND RECOGNITION INFERENCE CONCATENATION + ### 1. LIGHTWEIGHT CHINESE MODEL When performing prediction, you need to specify the path of a single image or a folder of images through the parameter `image_dir`, the parameter `det_model_dir` specifies the path to detect the inference model, and the parameter `rec_model_dir` specifies the path to identify the inference model. The visualized recognition results are saved to the `./inference_results` folder by default. @@ -217,9 +292,14 @@ After executing the command, the recognition result image is as follows: ![](../imgs_results/2.jpg) + ### 2. OTHER MODELS -If you want to try other detection algorithms or recognition algorithms, please refer to the above text detection model inference and text recognition model inference, update the corresponding configuration and model, the following command uses the combination of the EAST text detection and STAR-Net text recognition: +If you want to try other detection algorithms or recognition algorithms, please refer to the above text detection model inference and text recognition model inference, update the corresponding configuration and model. + +**Note: due to the limitation of rotation logic of detected box, SAST curved text detection model (using the parameter `det_sast_polygon=True`) is not supported for model combination yet.** + +The following command uses the combination of the EAST text detection and STAR-Net text recognition: ``` python3 tools/infer/predict_system.py --image_dir="./doc/imgs_en/img_10.jpg" --det_model_dir="./inference/det_east/" --det_algorithm="EAST" --rec_model_dir="./inference/starnet/" --rec_image_shape="3, 32, 100" --rec_char_type="en" From d2e1eb5e9c32fb0afd781b1383620c30236a24bc Mon Sep 17 00:00:00 2001 From: MissPenguin Date: Wed, 19 Aug 2020 13:47:31 +0800 Subject: [PATCH 18/70] Update inference_en.md --- doc/doc_en/inference_en.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/doc_en/inference_en.md b/doc/doc_en/inference_en.md index 749aed31..83ec2a90 100644 --- a/doc/doc_en/inference_en.md +++ b/doc/doc_en/inference_en.md @@ -202,7 +202,7 @@ python3 tools/infer/predict_det.py --det_algorithm="SAST" --image_dir="./doc/img The visualized text detection results are saved to the `./inference_results` folder by default, and the name of the result file is prefixed with 'det_res'. Examples of results are as follows: -![](../imgs_results/det_res_img_10_east.jpg) +![](../imgs_results/det_res_img623_sast.jpg) **Note**: SAST post-processing locality aware NMS has two versions: Python and C++. The speed of C++ version is obviously faster than that of Python version. Due to the compilation version problem of NMS of C++ version, C++ version NMS will be called only in Python 3.5 environment, and python version NMS will be called in other cases. From 0d8fe758332dc33bfa5c1efd97d7e2ccefeb48c1 Mon Sep 17 00:00:00 2001 From: wangjiawei04 Date: Wed, 19 Aug 2020 14:29:13 +0800 Subject: [PATCH 19/70] add convert to serving model --- deploy/pdserving/det_local_server.py | 6 ++++-- deploy/pdserving/ocr_local_server.py | 3 ++- deploy/pdserving/readme.md | 17 +++++++++++++++++ deploy/pdserving/rec_local_server.py | 15 +++++++++++---- 4 files changed, 34 insertions(+), 7 deletions(-) diff --git a/deploy/pdserving/det_local_server.py b/deploy/pdserving/det_local_server.py index 78970af4..eb7948da 100644 --- a/deploy/pdserving/det_local_server.py +++ b/deploy/pdserving/det_local_server.py @@ -23,7 +23,7 @@ from paddle_serving_app.reader import Div, Normalize, Transpose from paddle_serving_app.reader import DBPostProcess, FilterBoxes if sys.argv[1] == 'gpu': from paddle_serving_server_gpu.web_service import WebService -elif sys.argv[1] == 'cpu' +elif sys.argv[1] == 'cpu': from paddle_serving_server.web_service import WebService import time import re @@ -67,11 +67,13 @@ class OCRService(WebService): ocr_service = OCRService(name="ocr") ocr_service.load_model_config("ocr_det_model") +ocr_service.init_det() if sys.argv[1] == 'gpu': ocr_service.set_gpus("0") ocr_service.prepare_server(workdir="workdir", port=9292, device="gpu", gpuid=0) + ocr_service.run_debugger_service(gpu=True) elif sys.argv[1] == 'cpu': ocr_service.prepare_server(workdir="workdir", port=9292) + ocr_service.run_debugger_service() ocr_service.init_det() -ocr_service.run_debugger_service() ocr_service.run_web_service() diff --git a/deploy/pdserving/ocr_local_server.py b/deploy/pdserving/ocr_local_server.py index f7458c30..de5b3d13 100644 --- a/deploy/pdserving/ocr_local_server.py +++ b/deploy/pdserving/ocr_local_server.py @@ -104,10 +104,11 @@ class OCRService(WebService): ocr_service = OCRService(name="ocr") ocr_service.load_model_config("ocr_rec_model") -ocr_service.prepare_server(workdir="workdir", port=9292) ocr_service.init_det_debugger(det_model_config="ocr_det_model") if sys.argv[1] == 'gpu': + ocr_service.prepare_server(workdir="workdir", port=9292, device="gpu", gpuid=0) ocr_service.run_debugger_service(gpu=True) elif sys.argv[1] == 'cpu': + ocr_service.prepare_server(workdir="workdir", port=9292, device="cpu") ocr_service.run_debugger_service() ocr_service.run_web_service() diff --git a/deploy/pdserving/readme.md b/deploy/pdserving/readme.md index 9472e94c..f9ad80b8 100644 --- a/deploy/pdserving/readme.md +++ b/deploy/pdserving/readme.md @@ -55,6 +55,23 @@ tar -xzvf ocr_det.tar.gz ``` 执行上述命令会下载`db_crnn_mobile`的模型,如果想要下载规模更大的`db_crnn_server`模型,可以在下载预测模型并解压之后。参考[如何从Paddle保存的预测模型转为Paddle Serving格式可部署的模型](https://github.com/PaddlePaddle/Serving/blob/develop/doc/INFERENCE_TO_SERVING_CN.md)。 +我们以`ch_rec_r34_vd_crnn`模型作为例子,下载链接在: + +``` +wget --no-check-certificate https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_infer.tar +tar xf ch_rec_r34_vd_crnn_infer.tar +``` +因此我们按照Serving模型转换教程,运行下列python文件。 +``` +from paddle_serving_client.io import inference_model_to_serving +inference_model_dir = "ch_rec_r34_vd_crnn" +serving_client_dir = "serving_client_dir" +serving_server_dir = "serving_server_dir" +feed_var_names, fetch_var_names = inference_model_to_serving( + inference_model_dir, serving_client_dir, serving_server_dir, model_filename="model", params_filename="params") +``` +最终会在`serving_client_dir`和`serving_server_dir`生成客户端和服务端的模型配置。 + ### 3. 启动服务 启动服务可以根据实际需求选择启动`标准版`或者`快速版`,两种方式的对比如下表: diff --git a/deploy/pdserving/rec_local_server.py b/deploy/pdserving/rec_local_server.py index fbe67aaf..ba021c1c 100644 --- a/deploy/pdserving/rec_local_server.py +++ b/deploy/pdserving/rec_local_server.py @@ -22,7 +22,10 @@ from paddle_serving_client import Client from paddle_serving_app.reader import Sequential, URL2Image, ResizeByFactor from paddle_serving_app.reader import Div, Normalize, Transpose from paddle_serving_app.reader import DBPostProcess, FilterBoxes, GetRotateCropImage, SortedBoxes -from paddle_serving_server_gpu.web_service import WebService +if sys.argv[1] == 'gpu': + from paddle_serving_server_gpu.web_service import WebService +elif sys.argv[1] == 'cpu': + from paddle_serving_server.web_service import WebService import time import re import base64 @@ -65,8 +68,12 @@ class OCRService(WebService): ocr_service = OCRService(name="ocr") ocr_service.load_model_config("ocr_rec_model") -ocr_service.set_gpus("0") ocr_service.init_rec() -ocr_service.prepare_server(workdir="workdir", port=9292, device="gpu", gpuid=0) -ocr_service.run_debugger_service() +if sys.argv[1] == 'gpu': + ocr_service.set_gpus("0") + ocr_service.prepare_server(workdir="workdir", port=9292, device="gpu", gpuid=0) + ocr_service.run_debugger_service(gpu=True) +elif sys.argv[1] == 'cpu': + ocr_service.prepare_server(workdir="workdir", port=9292, device="cpu") + ocr_service.run_debugger_service() ocr_service.run_web_service() From 3da97909bbd0eeeecfdd99dff709a81c916fc20c Mon Sep 17 00:00:00 2001 From: littletomatodonkey Date: Wed, 19 Aug 2020 08:25:23 +0000 Subject: [PATCH 20/70] add faq --- doc/doc_ch/FAQ.md | 4 +++- doc/doc_en/FAQ_en.md | 7 +++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index 38b8baee..752a4adb 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -39,7 +39,7 @@ PaddleOCR已完成Windows和Mac系统适配,运行时注意两点:1、在[ - 识别: 英文数据集,MJSynth和SynthText合成数据,数据量上千万。 中文数据集,LSVT街景数据集根据真值将图crop出来,并进行位置校准,总共30w张图像。此外基于LSVT的语料,合成数据500w。 - + 其中,公开数据集都是开源的,用户可自行搜索下载,也可参考[中文数据集](./datasets.md),合成数据暂不开源,用户可使用开源合成工具自行合成,可参考的合成工具包括[text_renderer](https://github.com/Sanster/text_renderer)、[SynthText](https://github.com/ankush-me/SynthText)、[TextRecognitionDataGenerator](https://github.com/Belval/TextRecognitionDataGenerator)等。 10. **使用带TPS的识别模型预测报错** @@ -49,3 +49,5 @@ PaddleOCR已完成Windows和Mac系统适配,运行时注意两点:1、在[ 11. **自定义字典训练的模型,识别结果出现字典里没出现的字** 预测时没有设置采用的自定义字典路径。设置方法是在预测时,通过增加输入参数rec_char_dict_path来设置。 +12. **cpp infer与python inference的结果不一致,相差较大** +导出的inference model版本与预测库版本需要保持一致,比如在Windows下,Paddle官网提供的预测库版本是1.8,而PaddleOCR提供的inference model 版本是1.7,因此最终预测结果会有差别。可以在Paddle1.8环境下导出模型,再基于该模型进行预测。 diff --git a/doc/doc_en/FAQ_en.md b/doc/doc_en/FAQ_en.md index 04feb363..a89567f7 100644 --- a/doc/doc_en/FAQ_en.md +++ b/doc/doc_en/FAQ_en.md @@ -48,6 +48,9 @@ At present, the open source model, dataset and magnitude are as follows: Error message: Input(X) dims[3] and Input(Grid) dims[2] should be equal, but received X dimension[3](108) != Grid dimension[2](100) Solution:TPS does not support variable shape. Please set --rec_image_shape='3,32,100' and --rec_char_type='en' -11. **Custom dictionary used during training, the recognition results show that words do not appear in the dictionary** +11. **Custom dictionary used during training, the recognition results show that words do not appear in the dictionary** +The used custom dictionary path is not set when making prediction. The solution is setting parameter `rec_char_dict_path` to the corresponding dictionary file. -The used custom dictionary path is not set when making prediction. The solution is setting parameter `rec_char_dict_path` to the corresponding dictionary file. \ No newline at end of file + +12. **Results of cpp_infer and python_inference are very different** +Versions of exprted inference model and inference libraray should be same. For example, on Windows platform, version of the inference libraray that PaddlePaddle provides is 1.8, but version of the inference model that PaddleOCR provides is 1.7, you should export model yourself(`tools/export_model.py`) on PaddlePaddle1.8 and then use the exported model for inference. From 496434ac1388e98d615acb8fd9d2e532485c8f60 Mon Sep 17 00:00:00 2001 From: Karl Horky Date: Wed, 19 Aug 2020 14:45:32 +0200 Subject: [PATCH 21/70] Fix spelling errors --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index ae17668a..89f10e23 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ PaddleOCR aims to create rich, leading, and practical OCR tools that help users - 2020.8.16, Release text detection algorithm [SAST](https://arxiv.org/abs/1908.05498) and text recognition algorithm [SRN](https://arxiv.org/abs/2003.12294) - 2020.7.23, Release the playback and PPT of live class on BiliBili station, PaddleOCR Introduction, [address](https://aistudio.baidu.com/aistudio/course/introduce/1519) - 2020.7.15, Add mobile App demo , support both iOS and Android ( based on easyedge and Paddle Lite) -- 2020.7.15, Improve the deployment ability, add the C + + inference , serving deployment. In addtion, the benchmarks of the ultra-lightweight OCR model are provided. +- 2020.7.15, Improve the deployment ability, add the C + + inference , serving deployment. In addition, the benchmarks of the ultra-lightweight OCR model are provided. - 2020.7.15, Add several related datasets, data annotation and synthesis tools. - [more](./doc/doc_en/update_en.md) @@ -17,7 +17,7 @@ PaddleOCR aims to create rich, leading, and practical OCR tools that help users - Detection model DB (4.1M) + recognition model CRNN (4.5M) - Various text detection algorithms: EAST, DB - Various text recognition algorithms: Rosetta, CRNN, STAR-Net, RARE -- Support Linux, Windows, MacOS and other systems. +- Support Linux, Windows, macOS and other systems. ## Visualization @@ -29,9 +29,9 @@ PaddleOCR aims to create rich, leading, and practical OCR tools that help users You can also quickly experience the ultra-lightweight OCR : [Online Experience](https://www.paddlepaddle.org.cn/hub/scene/ocr) -Mobile DEMO experience (based on EasyEdge and Paddle-Lite, supports iOS and Android systems): [Sign in the website to obtain the QR code for installing the App](https://ai.baidu.com/easyedge/app/openSource?from=paddlelite) +Mobile DEMO experience (based on EasyEdge and Paddle-Lite, supports iOS and Android systems): [Sign in to the website to obtain the QR code for installing the App](https://ai.baidu.com/easyedge/app/openSource?from=paddlelite) - Also, you can scan the QR code blow to install the App (**Android support only**) + Also, you can scan the QR code below to install the App (**Android support only**)

@@ -78,7 +78,7 @@ Mobile DEMO experience (based on EasyEdge and Paddle-Lite, supports iOS and Andr - Visualization - [Ultra-lightweight Chinese/English OCR Visualization](#UCOCRVIS) - [General Chinese/English OCR Visualization](#GeOCRVIS) - - [Chinese/English OCR Visualization (Support Space Recognization )](#SpaceOCRVIS) + - [Chinese/English OCR Visualization (Support Space Recognition )](#SpaceOCRVIS) - [Community](#Community) - [References](./doc/doc_en/reference_en.md) - [License](#LICENSE) @@ -148,7 +148,7 @@ Refer to [DTRB](https://arxiv.org/abs/1904.01906), the training and evaluation r The average accuracy of the two-stage training in the original paper is 89.74%, and that of one stage training in paddleocr is 88.33%. Both pre-trained weights can be downloaded [here](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar). -We use [LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/datasets_en.md#1-icdar2019-lsvt) dataset and cropout 30w traning data from original photos by using position groundtruth and make some calibration needed. In addition, based on the LSVT corpus, 500w synthetic data is generated to train the model. The related configuration and pre-trained models are as follows: +We use [LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/datasets_en.md#1-icdar2019-lsvt) dataset and cropout 30w training data from original photos by using position groundtruth and make some calibration needed. In addition, based on the LSVT corpus, 500w synthetic data is generated to train the model. The related configuration and pre-trained models are as follows: |Model|Backbone|Configuration file|Pre-trained model| |-|-|-|-| @@ -159,7 +159,7 @@ Please refer to the document for training guide and use of PaddleOCR text recogn ## END-TO-END OCR Algorithm -- [ ] [End2End-PSL](https://arxiv.org/abs/1909.07808)(Baidu Self-Research, comming soon) +- [ ] [End2End-PSL](https://arxiv.org/abs/1909.07808)(Baidu Self-Research, coming soon) ## Visualization From 0a005fb1800795ffa62feb186a96c5ba1a58bfac Mon Sep 17 00:00:00 2001 From: Ming Date: Thu, 20 Aug 2020 10:23:37 +0800 Subject: [PATCH 22/70] Update readme_en.md --- deploy/lite/readme_en.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/lite/readme_en.md b/deploy/lite/readme_en.md index 00bb5e58..bf2f4b22 100644 --- a/deploy/lite/readme_en.md +++ b/deploy/lite/readme_en.md @@ -13,7 +13,7 @@ deployment solutions for end-side deployment issues. - Computer (for Compiling Paddle Lite) - Mobile phone (arm7 or arm8) -## 2. Build ncnn library +## 2. Build PaddleLite library [build for Docker](https://paddle-lite.readthedocs.io/zh/latest/user_guides/source_compile.html#docker) [build for Linux](https://paddle-lite.readthedocs.io/zh/latest/user_guides/source_compile.html#android) [build for MAC OS](https://paddle-lite.readthedocs.io/zh/latest/user_guides/source_compile.html#id13) From d4bd959edffedc4b274c50b458f9e7a77a19e91f Mon Sep 17 00:00:00 2001 From: dyning Date: Thu, 20 Aug 2020 10:31:53 +0800 Subject: [PATCH 23/70] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 89f10e23..bb1a6002 100644 --- a/README.md +++ b/README.md @@ -221,7 +221,7 @@ This project is released under Date: Thu, 20 Aug 2020 11:30:18 +0800 Subject: [PATCH 27/70] fix parameter missing bug of hub serving --- deploy/hubserving/ocr_rec/params.py | 2 ++ deploy/hubserving/ocr_system/params.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/deploy/hubserving/ocr_rec/params.py b/deploy/hubserving/ocr_rec/params.py index fe93fc08..a6b2ee19 100644 --- a/deploy/hubserving/ocr_rec/params.py +++ b/deploy/hubserving/ocr_rec/params.py @@ -33,6 +33,8 @@ def read_params(): cfg.rec_image_shape = "3, 32, 320" cfg.rec_char_type = 'ch' cfg.rec_batch_num = 30 + cfg.max_text_length = 25 + cfg.rec_char_dict_path = "./ppocr/utils/ppocr_keys_v1.txt" cfg.use_space_char = True diff --git a/deploy/hubserving/ocr_system/params.py b/deploy/hubserving/ocr_system/params.py index 5b3bb1ea..6ece2d6f 100644 --- a/deploy/hubserving/ocr_system/params.py +++ b/deploy/hubserving/ocr_system/params.py @@ -33,6 +33,8 @@ def read_params(): cfg.rec_image_shape = "3, 32, 320" cfg.rec_char_type = 'ch' cfg.rec_batch_num = 30 + cfg.max_text_length = 25 + cfg.rec_char_dict_path = "./ppocr/utils/ppocr_keys_v1.txt" cfg.use_space_char = True From 043a0192b258b4d8996e745cad16ff328df8b5c2 Mon Sep 17 00:00:00 2001 From: littletomatodonkey Date: Thu, 20 Aug 2020 12:20:44 +0000 Subject: [PATCH 28/70] fix cpp infer --- deploy/cpp_infer/include/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/cpp_infer/include/config.h b/deploy/cpp_infer/include/config.h index 2adefb73..c5257d8a 100644 --- a/deploy/cpp_infer/include/config.h +++ b/deploy/cpp_infer/include/config.h @@ -47,7 +47,7 @@ public: this->det_db_box_thresh = stod(config_map_["det_db_box_thresh"]); - this->det_db_box_thresh = stod(config_map_["det_db_box_thresh"]); + this->det_db_unclip_ratio = stod(config_map_["det_db_unclip_ratio"]); this->det_model_dir.assign(config_map_["det_model_dir"]); From d64e0ce35525771c71ecf2cd7731dd81848e92a1 Mon Sep 17 00:00:00 2001 From: licx Date: Fri, 21 Aug 2020 10:47:15 +0800 Subject: [PATCH 29/70] modify dataset path of sast reader yml --- configs/det/det_sast_icdar15_reader.yml | 2 +- configs/det/det_sast_totaltext_reader.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/configs/det/det_sast_icdar15_reader.yml b/configs/det/det_sast_icdar15_reader.yml index cfa5b8b6..ee45a85d 100644 --- a/configs/det/det_sast_icdar15_reader.yml +++ b/configs/det/det_sast_icdar15_reader.yml @@ -3,7 +3,7 @@ TrainReader: process_function: ppocr.data.det.sast_process,SASTProcessTrain num_workers: 8 img_set_dir: ./train_data/ - label_file_path: [./train_data/icdar13/train_label_json.txt, ./train_data/icdar15/train_label_json.txt, ./train_data/icdar17_mlt_latin/train_label_json.txt, ./train_data/coco_text_icdar_4pts/train_label_json.txt] + label_file_path: [./train_data/icdar2013/train_label_json.txt, ./train_data/icdar2015/train_label_json.txt, ./train_data/icdar17_mlt_latin/train_label_json.txt, ./train_data/coco_text_icdar_4pts/train_label_json.txt] data_ratio_list: [0.1, 0.45, 0.3, 0.15] min_crop_side_ratio: 0.3 min_crop_size: 24 diff --git a/configs/det/det_sast_totaltext_reader.yml b/configs/det/det_sast_totaltext_reader.yml index c1a3d251..92503d9f 100644 --- a/configs/det/det_sast_totaltext_reader.yml +++ b/configs/det/det_sast_totaltext_reader.yml @@ -3,7 +3,7 @@ TrainReader: process_function: ppocr.data.det.sast_process,SASTProcessTrain num_workers: 8 img_set_dir: ./train_data/ - label_file_path: [./train_data/art_latin_icdar_14pt/train_no_tt_test/train_label_json.txt, ./train_data/total_text_icdar_14pt/train/train_label_json.txt] + label_file_path: [./train_data/art_latin_icdar_14pt/train_no_tt_test/train_label_json.txt, ./train_data/total_text_icdar_14pt/train_label_json.txt] data_ratio_list: [0.5, 0.5] min_crop_side_ratio: 0.3 min_crop_size: 24 @@ -13,8 +13,8 @@ TrainReader: EvalReader: reader_function: ppocr.data.det.dataset_traversal,EvalTestReader process_function: ppocr.data.det.sast_process,SASTProcessTest - img_set_dir: ./train_data/afs/ - label_file_path: ./train_data/afs/total_text/test_label_json.txt + img_set_dir: ./train_data/ + label_file_path: ./train_data/total_text_icdar_14pt/test_label_json.txt max_side_len: 768 TestReader: From 047fcb527a14ad3037767fd2934ecddbb8fd0053 Mon Sep 17 00:00:00 2001 From: littletomatodonkey Date: Fri, 21 Aug 2020 08:49:11 +0000 Subject: [PATCH 30/70] add warmup --- doc/doc_ch/config.md | 7 +++--- doc/doc_en/config_en.md | 7 +++--- ppocr/optimizer.py | 53 ++++++++++++++++++++++++++++++++++++++--- 3 files changed, 58 insertions(+), 9 deletions(-) diff --git a/doc/doc_ch/config.md b/doc/doc_ch/config.md index 03fe1b32..fe8db9c8 100644 --- a/doc/doc_ch/config.md +++ b/doc/doc_ch/config.md @@ -63,8 +63,9 @@ | beta1 | 设置一阶矩估计的指数衰减率 | 0.9 | \ | | beta2 | 设置二阶矩估计的指数衰减率 | 0.999 | \ | | decay | 是否使用decay | \ | \ | -| function(decay) | 设置decay方式 | - | 目前支持cosine_decay与piecewise_decay | -| step_each_epoch | 每个epoch包含多少次迭代, cosine_decay时有效 | 20 | 计算方式:total_image_num / (batch_size_per_card * card_size) | -| total_epoch | 总共迭代多少个epoch, cosine_decay时有效 | 1000 | 与Global.epoch_num 一致 | +| function(decay) | 设置decay方式 | - | 目前支持cosine_decay, cosine_decay_warmup与piecewise_decay | +| step_each_epoch | 每个epoch包含多少次迭代, cosine_decay/cosine_decay_warmup时有效 | 20 | 计算方式:total_image_num / (batch_size_per_card * card_size) | +| total_epoch | 总共迭代多少个epoch, cosine_decay/cosine_decay_warmup时有效 | 1000 | 与Global.epoch_num 一致 | +| warmup_minibatch | 线性warmup的迭代次数, cosine_decay_warmup时有效 | 1000 | \ | | boundaries | 学习率下降时的迭代次数间隔, piecewise_decay时有效 | - | 参数为列表形式 | | decay_rate | 学习率衰减系数, piecewise_decay时有效 | - | \ | diff --git a/doc/doc_en/config_en.md b/doc/doc_en/config_en.md index 66578424..b54def89 100644 --- a/doc/doc_en/config_en.md +++ b/doc/doc_en/config_en.md @@ -60,8 +60,9 @@ Take `rec_icdar15_train.yml` as an example: | beta1 | Set the exponential decay rate for the 1st moment estimates | 0.9 | \ | | beta2 | Set the exponential decay rate for the 2nd moment estimates | 0.999 | \ | | decay | Whether to use decay | \ | \ | -| function(decay) | Set the decay function | cosine_decay | Support cosine_decay and piecewise_decay | -| step_each_epoch | The number of steps in an epoch. Used in cosine_decay | 20 | Calculation :total_image_num / (batch_size_per_card * card_size) | -| total_epoch | The number of epochs. Used in cosine_decay | 1000 | Consistent with Global.epoch_num | +| function(decay) | Set the decay function | cosine_decay | Support cosine_decay, cosine_decay_warmup and piecewise_decay | +| step_each_epoch | The number of steps in an epoch. Used in cosine_decay/cosine_decay_warmup | 20 | Calculation: total_image_num / (batch_size_per_card * card_size) | +| total_epoch | The number of epochs. Used in cosine_decay/cosine_decay_warmup | 1000 | Consistent with Global.epoch_num | +| warmup_minibatch | Number of steps for linear warmup. Used in cosine_decay_warmup | 1000 | \ | | boundaries | The step intervals to reduce learning rate. Used in piecewise_decay | - | The format is list | | decay_rate | Learning rate decay rate. Used in piecewise_decay | - | \ | diff --git a/ppocr/optimizer.py b/ppocr/optimizer.py index 55f2eba1..fd315cd1 100644 --- a/ppocr/optimizer.py +++ b/ppocr/optimizer.py @@ -14,14 +14,50 @@ from __future__ import absolute_import from __future__ import division from __future__ import print_function +import math import paddle.fluid as fluid from paddle.fluid.regularizer import L2Decay +from paddle.fluid.layers.learning_rate_scheduler import _decay_step_counter +import paddle.fluid.layers.ops as ops from ppocr.utils.utility import initial_logger logger = initial_logger() +def cosine_decay_with_warmup(learning_rate, + step_each_epoch, + epochs=500, + warmup_minibatch=1000): + """Applies cosine decay to the learning rate. + lr = 0.05 * (math.cos(epoch * (math.pi / 120)) + 1) + decrease lr for every mini-batch and start with warmup. + """ + global_step = _decay_step_counter() + lr = fluid.layers.tensor.create_global_var( + shape=[1], + value=0.0, + dtype='float32', + persistable=True, + name="learning_rate") + + warmup_minibatch = fluid.layers.fill_constant( + shape=[1], + dtype='float32', + value=float(warmup_minibatch), + force_cpu=True) + + with fluid.layers.control_flow.Switch() as switch: + with switch.case(global_step < warmup_minibatch): + decayed_lr = learning_rate * (1.0 * global_step / warmup_minibatch) + fluid.layers.tensor.assign(input=decayed_lr, output=lr) + with switch.default(): + decayed_lr = learning_rate * \ + (ops.cos((global_step - warmup_minibatch) * (math.pi / (epochs * step_each_epoch))) + 1)/2 + fluid.layers.tensor.assign(input=decayed_lr, output=lr) + return lr + + def AdamDecay(params, parameter_list=None): """ define optimizer function @@ -36,7 +72,9 @@ def AdamDecay(params, parameter_list=None): l2_decay = params.get("l2_decay", 0.0) if 'decay' in params: - supported_decay_mode = ["cosine_decay", "piecewise_decay"] + supported_decay_mode = [ + "cosine_decay", "cosine_decay_warmup", "piecewise_decay" + ] params = params['decay'] decay_mode = params['function'] assert decay_mode in supported_decay_mode, "Supported decay mode is {}, but got {}".format( @@ -49,6 +87,15 @@ def AdamDecay(params, parameter_list=None): learning_rate=base_lr, step_each_epoch=step_each_epoch, epochs=total_epoch) + elif decay_mode == "cosine_decay_warmup": + step_each_epoch = params['step_each_epoch'] + total_epoch = params['total_epoch'] + warmup_minibatch = params.get("warmup_minibatch", 1000) + base_lr = cosine_decay_with_warmup( + learning_rate=base_lr, + step_each_epoch=step_each_epoch, + epochs=total_epoch, + warmup_minibatch=warmup_minibatch) elif decay_mode == "piecewise_decay": boundaries = params["boundaries"] decay_rate = params["decay_rate"] @@ -104,5 +151,5 @@ def RMSProp(params, parameter_list=None): optimizer = fluid.optimizer.RMSProp( learning_rate=base_lr, regularization=fluid.regularizer.L2Decay(regularization_coeff=l2_decay)) - - return optimizer \ No newline at end of file + + return optimizer From 3ebebae3e56e8989076a3b962d072a005ebb83a3 Mon Sep 17 00:00:00 2001 From: littletomatodonkey Date: Sat, 22 Aug 2020 07:13:06 +0000 Subject: [PATCH 31/70] replace zero_copy_run to run for memory leak --- deploy/cpp_infer/src/ocr_det.cpp | 16 +++++++++------- deploy/cpp_infer/src/ocr_rec.cpp | 18 +++++++++++------- tools/infer/predict_det.py | 23 +++++++++++++---------- tools/infer/predict_rec.py | 15 +++++++++------ tools/infer/utility.py | 3 +-- 5 files changed, 43 insertions(+), 32 deletions(-) diff --git a/deploy/cpp_infer/src/ocr_det.cpp b/deploy/cpp_infer/src/ocr_det.cpp index c87b653c..36ffc9af 100644 --- a/deploy/cpp_infer/src/ocr_det.cpp +++ b/deploy/cpp_infer/src/ocr_det.cpp @@ -31,7 +31,8 @@ void DBDetector::LoadModel(const std::string &model_dir) { } // false for zero copy tensor - config.SwitchUseFeedFetchOps(false); + // true for commom tensor + config.SwitchUseFeedFetchOps(true); // true for multiple input config.SwitchSpecifyInputNames(true); @@ -59,12 +60,13 @@ void DBDetector::Run(cv::Mat &img, std::vector input(1 * 3 * resize_img.rows * resize_img.cols, 0.0f); this->permute_op_.Run(&resize_img, input.data()); - auto input_names = this->predictor_->GetInputNames(); - auto input_t = this->predictor_->GetInputTensor(input_names[0]); - input_t->Reshape({1, 3, resize_img.rows, resize_img.cols}); - input_t->copy_from_cpu(input.data()); - - this->predictor_->ZeroCopyRun(); + // Inference. + paddle::PaddleTensor input_t; + input_t.shape = {1, 3, resize_img.rows, resize_img.cols}; + input_t.data = paddle::PaddleBuf(input.data(), input.size() * sizeof(float)); + input_t.dtype = PaddleDType::FLOAT32; + std::vector outputs; + this->predictor_->Run({input_t}, &outputs, 1); std::vector out_data; auto output_names = this->predictor_->GetOutputNames(); diff --git a/deploy/cpp_infer/src/ocr_rec.cpp b/deploy/cpp_infer/src/ocr_rec.cpp index bbd7b9b2..697f9e8e 100644 --- a/deploy/cpp_infer/src/ocr_rec.cpp +++ b/deploy/cpp_infer/src/ocr_rec.cpp @@ -39,18 +39,21 @@ void CRNNRecognizer::Run(std::vector>> boxes, this->permute_op_.Run(&resize_img, input.data()); - auto input_names = this->predictor_->GetInputNames(); - auto input_t = this->predictor_->GetInputTensor(input_names[0]); - input_t->Reshape({1, 3, resize_img.rows, resize_img.cols}); - input_t->copy_from_cpu(input.data()); - - this->predictor_->ZeroCopyRun(); + // Inference. + paddle::PaddleTensor input_t; + input_t.shape = {1, 3, resize_img.rows, resize_img.cols}; + input_t.data = + paddle::PaddleBuf(input.data(), input.size() * sizeof(float)); + input_t.dtype = PaddleDType::FLOAT32; + std::vector outputs; + this->predictor_->Run({input_t}, &outputs, 1); std::vector rec_idx; auto output_names = this->predictor_->GetOutputNames(); auto output_t = this->predictor_->GetOutputTensor(output_names[0]); auto rec_idx_lod = output_t->lod(); auto shape_out = output_t->shape(); + int out_num = std::accumulate(shape_out.begin(), shape_out.end(), 1, std::multiplies()); @@ -120,7 +123,8 @@ void CRNNRecognizer::LoadModel(const std::string &model_dir) { } // false for zero copy tensor - config.SwitchUseFeedFetchOps(false); + // true for commom tensor + config.SwitchUseFeedFetchOps(true); // true for multiple input config.SwitchSpecifyInputNames(true); diff --git a/tools/infer/predict_det.py b/tools/infer/predict_det.py index 82877c0e..234c41bf 100755 --- a/tools/infer/predict_det.py +++ b/tools/infer/predict_det.py @@ -17,22 +17,25 @@ __dir__ = os.path.dirname(os.path.abspath(__file__)) sys.path.append(__dir__) sys.path.append(os.path.abspath(os.path.join(__dir__, '../..'))) +import cv2 +import copy +import numpy as np +import math +import time +import sys + +import paddle.fluid as fluid + import tools.infer.utility as utility from ppocr.utils.utility import initial_logger logger = initial_logger() from ppocr.utils.utility import get_image_file_list, check_and_read_gif -import cv2 from ppocr.data.det.sast_process import SASTProcessTest from ppocr.data.det.east_process import EASTProcessTest from ppocr.data.det.db_process import DBProcessTest from ppocr.postprocess.db_postprocess import DBPostProcess from ppocr.postprocess.east_postprocess import EASTPostPocess from ppocr.postprocess.sast_postprocess import SASTPostProcess -import copy -import numpy as np -import math -import time -import sys class TextDetector(object): @@ -127,7 +130,7 @@ class TextDetector(object): dt_boxes_new.append(box) dt_boxes = np.array(dt_boxes_new) return dt_boxes - + def __call__(self, img): ori_im = img.copy() im, ratio_list = self.preprocess_op(img) @@ -135,8 +138,8 @@ class TextDetector(object): return None, 0 im = im.copy() starttime = time.time() - self.input_tensor.copy_from_cpu(im) - self.predictor.zero_copy_run() + im = fluid.core.PaddleTensor(im) + self.predictor.run([im]) outputs = [] for output_tensor in self.output_tensors: output = output_tensor.copy_to_cpu() @@ -152,7 +155,7 @@ class TextDetector(object): outs_dict['f_tvo'] = outputs[3] else: outs_dict['maps'] = outputs[0] - + dt_boxes_list = self.postprocess_op(outs_dict, [ratio_list]) dt_boxes = dt_boxes_list[0] if self.det_algorithm == "SAST" and self.det_sast_polygon: diff --git a/tools/infer/predict_rec.py b/tools/infer/predict_rec.py index c81b4eb2..92234415 100755 --- a/tools/infer/predict_rec.py +++ b/tools/infer/predict_rec.py @@ -17,15 +17,18 @@ __dir__ = os.path.dirname(os.path.abspath(__file__)) sys.path.append(__dir__) sys.path.append(os.path.abspath(os.path.join(__dir__, '../..'))) -import tools.infer.utility as utility -from ppocr.utils.utility import initial_logger -logger = initial_logger() -from ppocr.utils.utility import get_image_file_list, check_and_read_gif import cv2 import copy import numpy as np import math import time + +import paddle.fluid as fluid + +import tools.infer.utility as utility +from ppocr.utils.utility import initial_logger +logger = initial_logger() +from ppocr.utils.utility import get_image_file_list, check_and_read_gif from ppocr.utils.character import CharacterOps @@ -102,8 +105,8 @@ class TextRecognizer(object): norm_img_batch = np.concatenate(norm_img_batch) norm_img_batch = norm_img_batch.copy() starttime = time.time() - self.input_tensor.copy_from_cpu(norm_img_batch) - self.predictor.zero_copy_run() + norm_img_batch = fluid.core.PaddleTensor(norm_img_batch) + self.predictor.run([norm_img_batch]) if self.loss_type == "ctc": rec_idx_batch = self.output_tensors[0].copy_to_cpu() diff --git a/tools/infer/utility.py b/tools/infer/utility.py index 392bc4df..ec6705eb 100755 --- a/tools/infer/utility.py +++ b/tools/infer/utility.py @@ -106,8 +106,7 @@ def create_predictor(args, mode): config.disable_glog_info() # use zero copy - config.delete_pass("conv_transpose_eltwiseadd_bn_fuse_pass") - config.switch_use_feed_fetch_ops(False) + config.switch_use_feed_fetch_ops(True) predictor = create_paddle_predictor(config) input_names = predictor.get_input_names() input_tensor = predictor.get_input_tensor(input_names[0]) From 684676f61134873f277c10503026aaef13472ca2 Mon Sep 17 00:00:00 2001 From: WenmuZhou Date: Sat, 22 Aug 2020 19:42:14 +0800 Subject: [PATCH 32/70] init commit for build whl --- .gitignore | 4 + MANIFEST.in | 8 + __init__.py | 17 ++ doc/doc_ch/whl.md | 251 ++++++++++++++++++++++++++++ doc/doc_en/whl.md | 211 +++++++++++++++++++++++ doc/imgs_results/whl/11_det.jpg | Bin 0 -> 62863 bytes doc/imgs_results/whl/11_det_rec.jpg | Bin 0 -> 138201 bytes doc/imgs_results/whl/12_det.jpg | Bin 0 -> 170292 bytes doc/imgs_results/whl/12_det_rec.jpg | Bin 0 -> 86051 bytes paddleocr.py | 231 +++++++++++++++++++++++++ requirments.txt | 4 +- setup.py | 61 +++++++ tools/infer/utility.py | 39 +++-- 13 files changed, 814 insertions(+), 12 deletions(-) create mode 100644 MANIFEST.in create mode 100644 __init__.py create mode 100644 doc/doc_ch/whl.md create mode 100644 doc/doc_en/whl.md create mode 100644 doc/imgs_results/whl/11_det.jpg create mode 100644 doc/imgs_results/whl/11_det_rec.jpg create mode 100644 doc/imgs_results/whl/12_det.jpg create mode 100644 doc/imgs_results/whl/12_det_rec.jpg create mode 100644 paddleocr.py create mode 100644 setup.py diff --git a/.gitignore b/.gitignore index 1a2dd675..9eecb4f1 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,7 @@ output/ *.log .clang-format .clang_format.hook + +build/ +dist/ +paddleocr.egg-info/ \ No newline at end of file diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 00000000..388882df --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,8 @@ +include LICENSE.txt +include README.md + +recursive-include ppocr/utils *.txt utility.py character.py check.py +recursive-include ppocr/data/det *.py +recursive-include ppocr/postprocess *.py +recursive-include ppocr/postprocess/lanms *.* +recursive-include tools/infer *.py diff --git a/__init__.py b/__init__.py new file mode 100644 index 00000000..7d94f66b --- /dev/null +++ b/__init__.py @@ -0,0 +1,17 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +__all__ = ['PaddleOCR', 'draw_ocr'] +from .paddleocr import PaddleOCR +from .tools.infer.utility import draw_ocr diff --git a/doc/doc_ch/whl.md b/doc/doc_ch/whl.md new file mode 100644 index 00000000..94243462 --- /dev/null +++ b/doc/doc_ch/whl.md @@ -0,0 +1,251 @@ +# paddleocr package使用说明 + +## 快速上手 + +### 安装whl包 + +pip安装 +```bash +pip install paddleocr +``` + +本地构建并安装 +```bash +python setup.py bdist_wheel +pip install dist/paddleocr-0.0.1-py3-none-any.whl +``` +### 1. 代码使用 + +* 检测+识别全流程 +```python +from paddleocr import PaddleOCR, draw_ocr +ocr = PaddleOCR(model_storage_directory='./model') # need to run only once to load model into memory +img_path = 'PaddleOCR/doc/imgs/11.jpg' +result = ocr.ocr(img_path) +for line in result: + print(line) + +# 显示结果 +from PIL import Image +image = Image.open(img_path).convert('RGB') +boxes = [line[0] for line in result] +txts = [line[1][0] for line in result] +scores = [line[1][1] for line in result] +im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = Image.fromarray(im_show) +im_show.save('result.jpg') +``` +结果是一个list,每个item包含了文本框,文字和识别置信度 +```bash +[[[24.0, 36.0], [304.0, 34.0], [304.0, 72.0], [24.0, 74.0]], ['纯臻营养护发素', 0.964739]] +[[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]], ['产品信息/参数', 0.98069626]] +[[[24.0, 109.0], [333.0, 109.0], [333.0, 136.0], [24.0, 136.0]], ['(45元/每公斤,100公斤起订)', 0.9676722]] +[[[22.0, 140.0], [284.0, 140.0], [284.0, 167.0], [22.0, 167.0]], ['每瓶22元,1000瓶起订)', 0.97444016]] +[[[22.0, 174.0], [85.0, 174.0], [85.0, 198.0], [22.0, 198.0]], ['【品牌】', 0.8187138]] +[[[89.0, 176.0], [301.0, 176.0], [301.0, 196.0], [89.0, 196.0]], [':代加工方式/OEMODM', 0.9421848]] +[[[23.0, 205.0], [85.0, 205.0], [85.0, 229.0], [23.0, 229.0]], ['【品名】', 0.76008326]] +[[[88.0, 204.0], [235.0, 206.0], [235.0, 229.0], [88.0, 227.0]], [':纯臻营养护发素', 0.9633639]] +[[[23.0, 236.0], [121.0, 236.0], [121.0, 261.0], [23.0, 261.0]], ['【产品编号】', 0.84101385]] +[[[110.0, 239.0], [239.0, 239.0], [239.0, 256.0], [110.0, 256.0]], ['1:YM-X-3011', 0.8621878]] +[[[414.0, 233.0], [430.0, 233.0], [430.0, 304.0], [414.0, 304.0]], ['ODM OEM', 0.9084018]] +[[[23.0, 268.0], [183.0, 268.0], [183.0, 292.0], [23.0, 292.0]], ['【净含量】:220ml', 0.9278281]] +[[[24.0, 301.0], [118.0, 301.0], [118.0, 321.0], [24.0, 321.0]], ['【适用人群】', 0.90901047]] +[[[127.0, 300.0], [254.0, 300.0], [254.0, 323.0], [127.0, 323.0]], [':适合所有肤质', 0.95465785]] +[[[24.0, 332.0], [117.0, 332.0], [117.0, 353.0], [24.0, 353.0]], ['【主要成分】', 0.88936955]] +[[[139.0, 332.0], [236.0, 332.0], [236.0, 352.0], [139.0, 352.0]], ['鲸蜡硬脂醇', 0.9447544]] +[[[248.0, 332.0], [345.0, 332.0], [345.0, 352.0], [248.0, 352.0]], ['燕麦B-葡聚', 0.89748293]] +[[[54.0, 363.0], [232.0, 363.0], [232.0, 383.0], [54.0, 383.0]], [' 椰油酰胺丙基甜菜碱', 0.902023]] +[[[25.0, 364.0], [64.0, 364.0], [64.0, 383.0], [25.0, 383.0]], ['糖、', 0.985203]] +[[[244.0, 363.0], [281.0, 363.0], [281.0, 382.0], [244.0, 382.0]], ['泛服', 0.44537082]] +[[[367.0, 367.0], [475.0, 367.0], [475.0, 388.0], [367.0, 388.0]], ['(成品包材)', 0.9834532]] +[[[24.0, 395.0], [120.0, 395.0], [120.0, 416.0], [24.0, 416.0]], ['【主要功能】', 0.88684446]] +[[[128.0, 397.0], [273.0, 397.0], [273.0, 414.0], [128.0, 414.0]], [':可紧致头发磷层', 0.9342501]] +[[[265.0, 395.0], [361.0, 395.0], [361.0, 415.0], [265.0, 415.0]], ['琴,从而达到', 0.8253762]] +[[[25.0, 425.0], [372.0, 425.0], [372.0, 448.0], [25.0, 448.0]], ['即时持久改善头发光泽的效果,给干燥的头', 0.97785276]] +[[[26.0, 457.0], [137.0, 457.0], [137.0, 477.0], [26.0, 477.0]], ['发足够的滋养', 0.9577897]] +``` +结果可视化 + +
+ +
+ +* 单独执行检测 +```python +from paddleocr import PaddleOCR, draw_ocr +ocr = PaddleOCR(model_storage_directory='./model') # need to run only once to load model into memory +img_path = 'PaddleOCR/doc/imgs/11.jpg' +result = ocr.ocr(img_path,rec=False) +for line in result: + print(line) + +# 显示结果 +from PIL import Image + +image = Image.open(img_path).convert('RGB') +im_show = draw_ocr(image, result, txts=None, scores=None, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = Image.fromarray(im_show) +im_show.save('result.jpg') +``` +结果是一个list,每个item只包含文本框 +```bash +[[26.0, 457.0], [137.0, 457.0], [137.0, 477.0], [26.0, 477.0]] +[[25.0, 425.0], [372.0, 425.0], [372.0, 448.0], [25.0, 448.0]] +[[128.0, 397.0], [273.0, 397.0], [273.0, 414.0], [128.0, 414.0]] +[[265.0, 395.0], [361.0, 395.0], [361.0, 415.0], [265.0, 415.0]] +[[24.0, 395.0], [120.0, 395.0], [120.0, 416.0], [24.0, 416.0]] +[[367.0, 367.0], [475.0, 367.0], [475.0, 388.0], [367.0, 388.0]] +[[54.0, 363.0], [232.0, 363.0], [232.0, 383.0], [54.0, 383.0]] +[[25.0, 364.0], [64.0, 364.0], [64.0, 383.0], [25.0, 383.0]] +[[244.0, 363.0], [281.0, 363.0], [281.0, 382.0], [244.0, 382.0]] +[[248.0, 332.0], [345.0, 332.0], [345.0, 352.0], [248.0, 352.0]] +[[139.0, 332.0], [236.0, 332.0], [236.0, 352.0], [139.0, 352.0]] +[[24.0, 332.0], [117.0, 332.0], [117.0, 353.0], [24.0, 353.0]] +[[127.0, 300.0], [254.0, 300.0], [254.0, 323.0], [127.0, 323.0]] +[[24.0, 301.0], [118.0, 301.0], [118.0, 321.0], [24.0, 321.0]] +[[23.0, 268.0], [183.0, 268.0], [183.0, 292.0], [23.0, 292.0]] +[[110.0, 239.0], [239.0, 239.0], [239.0, 256.0], [110.0, 256.0]] +[[23.0, 236.0], [121.0, 236.0], [121.0, 261.0], [23.0, 261.0]] +[[414.0, 233.0], [430.0, 233.0], [430.0, 304.0], [414.0, 304.0]] +[[88.0, 204.0], [235.0, 206.0], [235.0, 229.0], [88.0, 227.0]] +[[23.0, 205.0], [85.0, 205.0], [85.0, 229.0], [23.0, 229.0]] +[[89.0, 176.0], [301.0, 176.0], [301.0, 196.0], [89.0, 196.0]] +[[22.0, 174.0], [85.0, 174.0], [85.0, 198.0], [22.0, 198.0]] +[[22.0, 140.0], [284.0, 140.0], [284.0, 167.0], [22.0, 167.0]] +[[24.0, 109.0], [333.0, 109.0], [333.0, 136.0], [24.0, 136.0]] +[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]] +[[24.0, 36.0], [304.0, 34.0], [304.0, 72.0], [24.0, 74.0]] +``` +结果可视化 + + +
+ +
+ +* 单独执行识别 +```python +from paddleocr import PaddleOCR +ocr = PaddleOCR(model_storage_directory='./model') # need to run only once to load model into memory +img_path = 'PaddleOCR/doc/imgs_words/ch/word_1.jpg' +result = ocr.ocr(img_path,det=False) +for line in result: + print(line) +``` +结果是一个list,每个item只包含识别结果和识别置信度 +```bash +['韩国小馆', 0.9907421] +``` + +### 通过命令行使用 + +查看帮助信息 +```bash +paddleocr -h +``` + +* 检测+识别全流程 +```bash +paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg +``` +结果是一个list,每个item包含了文本框,文字和识别置信度 +```bash +[[[24.0, 36.0], [304.0, 34.0], [304.0, 72.0], [24.0, 74.0]], ['纯臻营养护发素', 0.964739]] +[[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]], ['产品信息/参数', 0.98069626]] +[[[24.0, 109.0], [333.0, 109.0], [333.0, 136.0], [24.0, 136.0]], ['(45元/每公斤,100公斤起订)', 0.9676722]] +[[[22.0, 140.0], [284.0, 140.0], [284.0, 167.0], [22.0, 167.0]], ['每瓶22元,1000瓶起订)', 0.97444016]] +[[[22.0, 174.0], [85.0, 174.0], [85.0, 198.0], [22.0, 198.0]], ['【品牌】', 0.8187138]] +[[[89.0, 176.0], [301.0, 176.0], [301.0, 196.0], [89.0, 196.0]], [':代加工方式/OEMODM', 0.9421848]] +[[[23.0, 205.0], [85.0, 205.0], [85.0, 229.0], [23.0, 229.0]], ['【品名】', 0.76008326]] +[[[88.0, 204.0], [235.0, 206.0], [235.0, 229.0], [88.0, 227.0]], [':纯臻营养护发素', 0.9633639]] +[[[23.0, 236.0], [121.0, 236.0], [121.0, 261.0], [23.0, 261.0]], ['【产品编号】', 0.84101385]] +[[[110.0, 239.0], [239.0, 239.0], [239.0, 256.0], [110.0, 256.0]], ['1:YM-X-3011', 0.8621878]] +[[[414.0, 233.0], [430.0, 233.0], [430.0, 304.0], [414.0, 304.0]], ['ODM OEM', 0.9084018]] +[[[23.0, 268.0], [183.0, 268.0], [183.0, 292.0], [23.0, 292.0]], ['【净含量】:220ml', 0.9278281]] +[[[24.0, 301.0], [118.0, 301.0], [118.0, 321.0], [24.0, 321.0]], ['【适用人群】', 0.90901047]] +[[[127.0, 300.0], [254.0, 300.0], [254.0, 323.0], [127.0, 323.0]], [':适合所有肤质', 0.95465785]] +[[[24.0, 332.0], [117.0, 332.0], [117.0, 353.0], [24.0, 353.0]], ['【主要成分】', 0.88936955]] +[[[139.0, 332.0], [236.0, 332.0], [236.0, 352.0], [139.0, 352.0]], ['鲸蜡硬脂醇', 0.9447544]] +[[[248.0, 332.0], [345.0, 332.0], [345.0, 352.0], [248.0, 352.0]], ['燕麦B-葡聚', 0.89748293]] +[[[54.0, 363.0], [232.0, 363.0], [232.0, 383.0], [54.0, 383.0]], [' 椰油酰胺丙基甜菜碱', 0.902023]] +[[[25.0, 364.0], [64.0, 364.0], [64.0, 383.0], [25.0, 383.0]], ['糖、', 0.985203]] +[[[244.0, 363.0], [281.0, 363.0], [281.0, 382.0], [244.0, 382.0]], ['泛服', 0.44537082]] +[[[367.0, 367.0], [475.0, 367.0], [475.0, 388.0], [367.0, 388.0]], ['(成品包材)', 0.9834532]] +[[[24.0, 395.0], [120.0, 395.0], [120.0, 416.0], [24.0, 416.0]], ['【主要功能】', 0.88684446]] +[[[128.0, 397.0], [273.0, 397.0], [273.0, 414.0], [128.0, 414.0]], [':可紧致头发磷层', 0.9342501]] +[[[265.0, 395.0], [361.0, 395.0], [361.0, 415.0], [265.0, 415.0]], ['琴,从而达到', 0.8253762]] +[[[25.0, 425.0], [372.0, 425.0], [372.0, 448.0], [25.0, 448.0]], ['即时持久改善头发光泽的效果,给干燥的头', 0.97785276]] +[[[26.0, 457.0], [137.0, 457.0], [137.0, 477.0], [26.0, 477.0]], ['发足够的滋养', 0.9577897]] +``` + +* 单独执行检测 +```bash +paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg --rec false +``` +结果是一个list,每个item只包含文本框 +```bash +[[26.0, 457.0], [137.0, 457.0], [137.0, 477.0], [26.0, 477.0]] +[[25.0, 425.0], [372.0, 425.0], [372.0, 448.0], [25.0, 448.0]] +[[128.0, 397.0], [273.0, 397.0], [273.0, 414.0], [128.0, 414.0]] +[[265.0, 395.0], [361.0, 395.0], [361.0, 415.0], [265.0, 415.0]] +[[24.0, 395.0], [120.0, 395.0], [120.0, 416.0], [24.0, 416.0]] +[[367.0, 367.0], [475.0, 367.0], [475.0, 388.0], [367.0, 388.0]] +[[54.0, 363.0], [232.0, 363.0], [232.0, 383.0], [54.0, 383.0]] +[[25.0, 364.0], [64.0, 364.0], [64.0, 383.0], [25.0, 383.0]] +[[244.0, 363.0], [281.0, 363.0], [281.0, 382.0], [244.0, 382.0]] +[[248.0, 332.0], [345.0, 332.0], [345.0, 352.0], [248.0, 352.0]] +[[139.0, 332.0], [236.0, 332.0], [236.0, 352.0], [139.0, 352.0]] +[[24.0, 332.0], [117.0, 332.0], [117.0, 353.0], [24.0, 353.0]] +[[127.0, 300.0], [254.0, 300.0], [254.0, 323.0], [127.0, 323.0]] +[[24.0, 301.0], [118.0, 301.0], [118.0, 321.0], [24.0, 321.0]] +[[23.0, 268.0], [183.0, 268.0], [183.0, 292.0], [23.0, 292.0]] +[[110.0, 239.0], [239.0, 239.0], [239.0, 256.0], [110.0, 256.0]] +[[23.0, 236.0], [121.0, 236.0], [121.0, 261.0], [23.0, 261.0]] +[[414.0, 233.0], [430.0, 233.0], [430.0, 304.0], [414.0, 304.0]] +[[88.0, 204.0], [235.0, 206.0], [235.0, 229.0], [88.0, 227.0]] +[[23.0, 205.0], [85.0, 205.0], [85.0, 229.0], [23.0, 229.0]] +[[89.0, 176.0], [301.0, 176.0], [301.0, 196.0], [89.0, 196.0]] +[[22.0, 174.0], [85.0, 174.0], [85.0, 198.0], [22.0, 198.0]] +[[22.0, 140.0], [284.0, 140.0], [284.0, 167.0], [22.0, 167.0]] +[[24.0, 109.0], [333.0, 109.0], [333.0, 136.0], [24.0, 136.0]] +[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]] +[[24.0, 36.0], [304.0, 34.0], [304.0, 72.0], [24.0, 74.0]] +``` + +* 单独执行识别 +```bash +paddleocr --image_dir PaddleOCR/doc/imgs_words/ch/word_1.jpg --det false +``` + +结果是一个list,每个item只包含识别结果和识别置信度 +```bash +['韩国小馆', 0.9907421] +``` + +## 参数说明 + +| 字段 | 说明 | 默认值 | +|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------| +| use_gpu | 是否使用GPU | TRUE | +| gpu_mem | 初始化占用的GPU内存大小 | 8000M | +| image_dir | 通过命令行调用时执行预测的图片或文件夹路径 | | +| det_algorithm | 使用的检测算法类型 | DB | +| det_model_name | 有两种使用方式: 1. 检测算法名称,此名称必须在支持列表内(目前只内置了ch_det_mv3_db),传入错误参数时会显示支持的列表 2. 自己转换好的inference模型路径,此时模型路径下必须包含model和params文件。选择此方式时,需要手动指定det_algorithm的值 | ch_det_mv3_db | +| det_max_side_len | 检测算法前向时图片长边的最大尺寸,当长边超出这个值时会将长边resize到这个大小,短边等比例缩放 | 960 | +| det_db_thresh | DB模型输出预测图的二值化阈值 | 0.3 | +| det_db_box_thresh | DB模型输出框的阈值,低于此值的预测框会被丢弃 | 0.5 | +| det_db_unclip_ratio | DB模型输出框扩大的比例 | 2 | +| det_east_score_thresh | EAST模型输出预测图的二值化阈值 | 0.8 | +| det_east_cover_thresh | EAST模型输出框的阈值,低于此值的预测框会被丢弃 | 0.1 | +| det_east_nms_thresh | EAST模型输出框NMS的阈值 | 0.2 | +| rec_algorithm | 使用的识别算法类型 | CRNN | +| rec_model_name | 有两种使用方式: 1. 识别算法名称,此名称必须在支持列表内(目前支持CRNN,Rosetta,STAR,RARE等算法,但是内置的只有ch_rec_mv3_crnn_enhance),传入错误参数时会显示支持的列表 2. 自己转换好的inference模型路径,此时模型路径下必须包含model和params文件。选择此方式时,需要手动指定rec_algorithm的值 | ch_rec_mv3_crnn_enhance | +| rec_image_shape | 识别算法的输入图片尺寸 | "3,32,320" | +| rec_char_type | 识别算法的字符类型,中文(ch)或英文(en) | ch | +| rec_batch_num | 进行识别时,同时前向的图片数 | 30 | +| rec_char_dict_path | 识别模型字典路径,当rec_model_name使用方式2传参时需要修改为自己的路径 | | +| use_space_char | 是否识别空格 | TRUE | +| enable_mkldnn | 是否启用mkldnn | FALSE | +| model_storage_directory | 下载模型保存路径 | ~/.paddleocr | +| det | 前向时使用启动检测 | TRUE | +| rec | 前向时是否启动识别 | TRUE | diff --git a/doc/doc_en/whl.md b/doc/doc_en/whl.md new file mode 100644 index 00000000..ad2125a4 --- /dev/null +++ b/doc/doc_en/whl.md @@ -0,0 +1,211 @@ +# paddleocr package + +## Get started quickly +### install package +install by pypi +```bash +pip install paddleocr +``` + +build own whl package and install +```bash +python setup.py bdist_wheel +pip install dist/paddleocr-0.0.1-py3-none-any.whl +``` +### 1. Use by code + +* detection and recognition +```python +from paddleocr import PaddleOCR,draw_ocr +ocr = PaddleOCR(model_storage_directory='./model') # need to run only once to load model into memory +img_path = 'PaddleOCR/doc/imgs_en/img_12.jpg' +result = ocr.ocr(img_path) +for line in result: + print(line) + +# draw result +from PIL import Image +image = Image.open(img_path).convert('RGB') +boxes = [line[0] for line in result] +txts = [line[1][0] for line in result] +scores = [line[1][1] for line in result] +im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = Image.fromarray(im_show) +im_show.save('result.jpg') +``` + +Output will be a list, each item contains bounding box, text and recognition confidence +```bash +[[[442.0, 173.0], [1169.0, 173.0], [1169.0, 225.0], [442.0, 225.0]], ['ACKNOWLEDGEMENTS', 0.99283075]] +[[[393.0, 340.0], [1207.0, 342.0], [1207.0, 389.0], [393.0, 387.0]], ['We would like to thank all the designers and', 0.9357758]] +[[[399.0, 398.0], [1204.0, 398.0], [1204.0, 433.0], [399.0, 433.0]], ['contributors whohave been involved in the', 0.9592447]] +[[[395.0, 443.0], [1211.0, 443.0], [1211.0, 489.0], [395.0, 489.0]], ['production of this book;their contributions', 0.9713175]] +[[[395.0, 497.0], [1209.0, 495.0], [1209.0, 531.0], [395.0, 533.0]], ['have been indispensable to its creation.We', 0.96009934]] +[[[393.0, 545.0], [1212.0, 545.0], [1212.0, 591.0], [393.0, 591.0]], ['would also like to express our gratitude to al', 0.9371007]] +[[[393.0, 595.0], [1212.0, 593.0], [1212.0, 635.0], [393.0, 637.0]], ['the producers for their invaluable opinions', 0.96872145]] +[[[393.0, 645.0], [1209.0, 645.0], [1209.0, 685.0], [393.0, 685.0]], ['and assistance throughout this proiect.Andto', 0.94448787]] +[[[392.0, 697.0], [1212.0, 693.0], [1212.0, 735.0], [392.0, 739.0]], ['the many others whose names are not credited', 0.93633145]] +[[[397.0, 753.0], [689.0, 755.0], [689.0, 786.0], [397.0, 784.0]], ['buthavemades', 0.99324507]] +[[[813.0, 749.0], [1212.0, 747.0], [1212.0, 784.0], [813.0, 786.0]], ['inputin this book, we', 0.9166398]] +[[[675.0, 760.0], [799.0, 755.0], [799.0, 778.0], [675.0, 784.0]], ['speciti', 0.9063535]] +[[[393.0, 801.0], [715.0, 805.0], [715.0, 839.0], [393.0, 836.0]], ['thankyouforyoul', 0.92475533]] +[[[756.0, 812.0], [805.0, 812.0], [805.0, 830.0], [756.0, 830.0]], ['P', 0.14887337]] +[[[820.0, 803.0], [1085.0, 801.0], [1085.0, 836.0], [820.0, 838.0]], ['nuoussupport', 0.9898951]] +``` + +Visualization of results + +
+ +
+ +* only detection +```python +from paddleocr import PaddleOCR,draw_ocr +ocr = PaddleOCR(model_storage_directory='./model') # need to run only once to load model into memory +img_path = 'PaddleOCR/doc/imgs_en/img_12.jpg' +result = ocr.ocr(img_path,rec=False) +for line in result: + print(line) + +# draw result +from PIL import Image + +image = Image.open(img_path).convert('RGB') +im_show = draw_ocr(image, result, txts=None, scores=None, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = Image.fromarray(im_show) +im_show.save('result.jpg') +``` + +Output will be a list, each item only contains bounding box +```bash +[[756.0, 812.0], [805.0, 812.0], [805.0, 830.0], [756.0, 830.0]] +[[820.0, 803.0], [1085.0, 801.0], [1085.0, 836.0], [820.0, 838.0]] +[[393.0, 801.0], [715.0, 805.0], [715.0, 839.0], [393.0, 836.0]] +[[675.0, 760.0], [799.0, 755.0], [799.0, 778.0], [675.0, 784.0]] +[[397.0, 753.0], [689.0, 755.0], [689.0, 786.0], [397.0, 784.0]] +[[813.0, 749.0], [1212.0, 747.0], [1212.0, 784.0], [813.0, 786.0]] +[[392.0, 697.0], [1212.0, 693.0], [1212.0, 735.0], [392.0, 739.0]] +[[393.0, 645.0], [1209.0, 645.0], [1209.0, 685.0], [393.0, 685.0]] +[[393.0, 595.0], [1212.0, 593.0], [1212.0, 635.0], [393.0, 637.0]] +[[393.0, 545.0], [1212.0, 545.0], [1212.0, 591.0], [393.0, 591.0]] +[[395.0, 497.0], [1209.0, 495.0], [1209.0, 531.0], [395.0, 533.0]] +[[395.0, 443.0], [1211.0, 443.0], [1211.0, 489.0], [395.0, 489.0]] +[[399.0, 398.0], [1204.0, 398.0], [1204.0, 433.0], [399.0, 433.0]] +[[393.0, 340.0], [1207.0, 342.0], [1207.0, 389.0], [393.0, 387.0]] +[[442.0, 173.0], [1169.0, 173.0], [1169.0, 225.0], [442.0, 225.0]] +``` + +Visualization of results + +
+ +
+ +* only recognition +```python +from paddleocr import PaddleOCR +ocr = PaddleOCR(model_storage_directory='./model') # need to run only once to load model into memory +img_path = 'PaddleOCR/doc/imgs_words_en/word_10.png' +result = ocr.ocr(img_path,det=False) +for line in result: + print(line) +``` + +Output will be a list, each item contains text and recognition confidence +```bash +['PAIN', 0.990372] +``` + +### Use by command line + +show help information +```bash +paddleocr -h +``` + +* detection and recognition +```bash +paddleocr --image_dir PaddleOCR/doc/imgs_en/img_12.jpg +``` + +Output will be a list, each item contains bounding box, text and recognition confidence +```bash +[[[442.0, 173.0], [1169.0, 173.0], [1169.0, 225.0], [442.0, 225.0]], ['ACKNOWLEDGEMENTS', 0.99283075]] +[[[393.0, 340.0], [1207.0, 342.0], [1207.0, 389.0], [393.0, 387.0]], ['We would like to thank all the designers and', 0.9357758]] +[[[399.0, 398.0], [1204.0, 398.0], [1204.0, 433.0], [399.0, 433.0]], ['contributors whohave been involved in the', 0.9592447]] +[[[395.0, 443.0], [1211.0, 443.0], [1211.0, 489.0], [395.0, 489.0]], ['production of this book;their contributions', 0.9713175]] +[[[395.0, 497.0], [1209.0, 495.0], [1209.0, 531.0], [395.0, 533.0]], ['have been indispensable to its creation.We', 0.96009934]] +[[[393.0, 545.0], [1212.0, 545.0], [1212.0, 591.0], [393.0, 591.0]], ['would also like to express our gratitude to al', 0.9371007]] +[[[393.0, 595.0], [1212.0, 593.0], [1212.0, 635.0], [393.0, 637.0]], ['the producers for their invaluable opinions', 0.96872145]] +[[[393.0, 645.0], [1209.0, 645.0], [1209.0, 685.0], [393.0, 685.0]], ['and assistance throughout this proiect.Andto', 0.94448787]] +[[[392.0, 697.0], [1212.0, 693.0], [1212.0, 735.0], [392.0, 739.0]], ['the many others whose names are not credited', 0.93633145]] +[[[397.0, 753.0], [689.0, 755.0], [689.0, 786.0], [397.0, 784.0]], ['buthavemades', 0.99324507]] +[[[813.0, 749.0], [1212.0, 747.0], [1212.0, 784.0], [813.0, 786.0]], ['inputin this book, we', 0.9166398]] +[[[675.0, 760.0], [799.0, 755.0], [799.0, 778.0], [675.0, 784.0]], ['speciti', 0.9063535]] +[[[393.0, 801.0], [715.0, 805.0], [715.0, 839.0], [393.0, 836.0]], ['thankyouforyoul', 0.92475533]] +[[[756.0, 812.0], [805.0, 812.0], [805.0, 830.0], [756.0, 830.0]], ['P', 0.14887337]] +[[[820.0, 803.0], [1085.0, 801.0], [1085.0, 836.0], [820.0, 838.0]], ['nuoussupport', 0.9898951]] +``` + +* only detection +```bash +paddleocr --image_dir PaddleOCR/doc/imgs_en/img_12.jpg --rec false +``` + +Output will be a list, each item only contains bounding box +```bash +[[756.0, 812.0], [805.0, 812.0], [805.0, 830.0], [756.0, 830.0]] +[[820.0, 803.0], [1085.0, 801.0], [1085.0, 836.0], [820.0, 838.0]] +[[393.0, 801.0], [715.0, 805.0], [715.0, 839.0], [393.0, 836.0]] +[[675.0, 760.0], [799.0, 755.0], [799.0, 778.0], [675.0, 784.0]] +[[397.0, 753.0], [689.0, 755.0], [689.0, 786.0], [397.0, 784.0]] +[[813.0, 749.0], [1212.0, 747.0], [1212.0, 784.0], [813.0, 786.0]] +[[392.0, 697.0], [1212.0, 693.0], [1212.0, 735.0], [392.0, 739.0]] +[[393.0, 645.0], [1209.0, 645.0], [1209.0, 685.0], [393.0, 685.0]] +[[393.0, 595.0], [1212.0, 593.0], [1212.0, 635.0], [393.0, 637.0]] +[[393.0, 545.0], [1212.0, 545.0], [1212.0, 591.0], [393.0, 591.0]] +[[395.0, 497.0], [1209.0, 495.0], [1209.0, 531.0], [395.0, 533.0]] +[[395.0, 443.0], [1211.0, 443.0], [1211.0, 489.0], [395.0, 489.0]] +[[399.0, 398.0], [1204.0, 398.0], [1204.0, 433.0], [399.0, 433.0]] +[[393.0, 340.0], [1207.0, 342.0], [1207.0, 389.0], [393.0, 387.0]] +[[442.0, 173.0], [1169.0, 173.0], [1169.0, 225.0], [442.0, 225.0]] +``` + +* only recognition +```bash +paddleocr --image_dir PaddleOCR/doc/imgs_words_en/word_10.png --det false +``` + +Output will be a list, each item contains text and recognition confidence +```bash +['PAIN', 0.990372] +``` + +## Parameter Description + +| Parameter | Description | Default value | +|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------| +| use_gpu | use GPU or not | TRUE | +| gpu_mem | GPU memory size used for initialization | 8000M | +| image_dir | The images path or folder path for predicting when used by the command line | | +| det_algorithm | Type of detection algorithm selected | DB | +| det_model_name | There are two ways to use: 1. The name of the detection algorithm which must be in the support list(only ch_det_mv3_db is built in currently), and the supported list will be displayed when the wrong parameter is passed in. 2. The path of the inference model that has been converted by yourself. At this time, the model path must contains model and params files. When choosing this method, you need to give the name of det_algorithm | ch_det_mv3_db | +| det_max_side_len | The maximum size of the long side of the image. When the long side exceeds this value, the long side will be resized to this size, and the short side will be scaled proportionally | 960 | +| det_db_thresh | Binarization threshold value of DB output map | 0.3 | +| det_db_box_thresh | The threshold value of the DB output box. Boxes score lower than this value will be discarded | 0.5 | +| det_db_unclip_ratio | The expanded ratio of DB output box | 2 | +| det_east_score_thresh | Binarization threshold value of EAST output map | 0.8 | +| det_east_cover_thresh | The threshold value of the EAST output box. Boxes score lower than this value will be discarded | 0.1 | +| det_east_nms_thresh | The NMS threshold value of EAST model output box | 0.2 | +| rec_algorithm | Type of recognition algorithm selected | CRNN | +| rec_model_name | There are two ways to use: 1. The name of the recognition algorithm which must be in the support list(only supports CRNN, Rosetta, STAR, RARE and other algorithms currently, but only ch_rec_mv3_crnn_enhance is built-in), and the supported list will be displayed when the wrong parameter is passed in. 2. The path of the inference model that has been converted by yourself. At this time, the model path must contains model and params files. When choosing this method, you need to give the name of rec_algorithm | ch_rec_mv3_crnn_enhance | +| rec_image_shape | image shape of recognition algorithm | "3,32,320" | +| rec_char_type | Character type of recognition algorithm, Chinese (ch) or English (en) | ch | +| rec_batch_num | When performing recognition, the batchsize of forward images | 30 | +| rec_char_dict_path | the alphabet path which needs to be modified to your own path when `rec_model_Name` use mode 2 | | +| use_space_char | Whether to recognize spaces | TRUE | +| enable_mkldnn | Whether to enable mkldnn | FALSE | +| model_storage_directory | Download model save path when det_model_name or rec_model_name use mode 1 | ~/.paddleocr | +| det | Enable detction when `ppocr.ocr` func exec | TRUE | +| rec | Enable detction when `ppocr.ocr` func exec | TRUE | diff --git a/doc/imgs_results/whl/11_det.jpg b/doc/imgs_results/whl/11_det.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe0cd23cc24457f5d7084fff0c63c239d09c9969 GIT binary patch literal 62863 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

8})=?RB>;j5)$gHOduj@nME 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 hknnK-llJ!;CHaFs@ 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 literal 0 HcmV?d00001 diff --git a/doc/imgs_results/whl/12_det.jpg b/doc/imgs_results/whl/12_det.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1d5ccf2a6b5d3fa9516560e0cb2646ad6b917da6 GIT binary patch literal 170292 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%0AFNmcD2p+H&RgoPKyW`rJ}}IE;OiC8Hne! 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 literal 0 HcmV?d00001 diff --git a/paddleocr.py b/paddleocr.py new file mode 100644 index 00000000..3c356bb3 --- /dev/null +++ b/paddleocr.py @@ -0,0 +1,231 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import sys + +__dir__ = os.path.dirname(__file__) +sys.path.append(os.path.join(__dir__, '')) + +import cv2 +import numpy as np +from pathlib import Path +import tarfile +import requests +from tqdm import tqdm + +from tools.infer import predict_system +from ppocr.utils.utility import initial_logger + +logger = initial_logger() +from ppocr.utils.utility import check_and_read_gif + +__all__ = ['PaddleOCR'] + +model_params = { + 'ch_det_mv3_db': { + 'url': + 'https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db_infer.tar', + 'algorithm': 'DB', + }, + 'ch_rec_mv3_crnn_enhance': { + 'url': + 'https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance_infer.tar', + 'algorithm': 'CRNN' + }, +} + +SUPPORT_DET_MODEL = ['DB'] +SUPPORT_REC_MODEL = ['Rosetta', 'CRNN', 'STARNet', 'RARE'] + + +def download_with_progressbar(url, save_path): + response = requests.get(url, stream=True) + total_size_in_bytes = int(response.headers.get('content-length', 0)) + block_size = 1024 # 1 Kibibyte + progress_bar = tqdm(total=total_size_in_bytes, unit='iB', unit_scale=True) + with open(save_path, 'wb') as file: + for data in response.iter_content(block_size): + progress_bar.update(len(data)) + file.write(data) + progress_bar.close() + if total_size_in_bytes != 0 and progress_bar.n != total_size_in_bytes: + logger.error("ERROR, something went wrong") + sys.exit(0) + + +def download_and_unzip(url, model_storage_directory): + tmp_path = os.path.join(model_storage_directory, url.split('/')[-1]) + print('download {} to {}'.format(url, tmp_path)) + os.makedirs(model_storage_directory, exist_ok=True) + download_with_progressbar(url, tmp_path) + with tarfile.open(tmp_path, 'r') as tarObj: + for filename in tarObj.getnames(): + tarObj.extract(filename, model_storage_directory) + os.remove(tmp_path) + + +def maybe_download(model_storage_directory, model_name, mode='det'): + algorithm = None + # using custom model + if os.path.exists(os.path.join(model_name, 'model')) and os.path.exists( + os.path.join(model_name, 'params')): + return model_name, algorithm + # using the model of paddleocr + model_path = os.path.join(model_storage_directory, model_name) + if not os.path.exists(os.path.join(model_path, + 'model')) or not os.path.exists( + os.path.join(model_path, 'params')): + assert model_name in model_params, 'model must in {}'.format( + model_params.keys()) + download_and_unzip(model_params[model_name]['url'], + model_storage_directory) + algorithm = model_params[model_name]['algorithm'] + return model_path, algorithm + + +def parse_args(): + import argparse + + def str2bool(v): + return v.lower() in ("true", "t", "1") + + parser = argparse.ArgumentParser() + # params for prediction engine + parser.add_argument("--use_gpu", type=str2bool, default=True) + parser.add_argument("--ir_optim", type=str2bool, default=True) + parser.add_argument("--use_tensorrt", type=str2bool, default=False) + parser.add_argument("--gpu_mem", type=int, default=8000) + + # params for text detector + parser.add_argument("--image_dir", type=str) + parser.add_argument("--det_algorithm", type=str, default='DB') + parser.add_argument("--det_model_name", type=str, default='ch_det_mv3_db') + parser.add_argument("--det_max_side_len", type=float, default=960) + + # DB parmas + parser.add_argument("--det_db_thresh", type=float, default=0.3) + parser.add_argument("--det_db_box_thresh", type=float, default=0.5) + parser.add_argument("--det_db_unclip_ratio", type=float, default=2.0) + + # EAST parmas + parser.add_argument("--det_east_score_thresh", type=float, default=0.8) + parser.add_argument("--det_east_cover_thresh", type=float, default=0.1) + parser.add_argument("--det_east_nms_thresh", type=float, default=0.2) + + # params for text recognizer + parser.add_argument("--rec_algorithm", type=str, default='CRNN') + parser.add_argument( + "--rec_model_name", type=str, default='ch_rec_mv3_crnn_enhance') + parser.add_argument("--rec_image_shape", type=str, default="3, 32, 320") + parser.add_argument("--rec_char_type", type=str, default='ch') + parser.add_argument("--rec_batch_num", type=int, default=30) + parser.add_argument( + "--rec_char_dict_path", + type=str, + default="./ppocr/utils/ppocr_keys_v1.txt") + parser.add_argument("--use_space_char", type=bool, default=True) + parser.add_argument("--enable_mkldnn", type=bool, default=False) + + parser.add_argument("--model_storage_directory", type=str, default=False) + parser.add_argument("--det", type=str2bool, default=True) + parser.add_argument("--rec", type=str2bool, default=True) + return parser.parse_args() + + +class PaddleOCR(predict_system.TextSystem): + def __init__(self, + det_model_name='ch_det_mv3_db', + rec_model_name='ch_rec_mv3_crnn_enhance', + model_storage_directory=None, + log_level=20, + **kwargs): + """ + paddleocr package + args: + det_model_name: det_model name, keep same with filename in paddleocr. default is ch_det_mv3_db + det_model_name: rec_model name, keep same with filename in paddleocr. default is ch_rec_mv3_crnn_enhance + model_storage_directory: model save path. default is ~/.paddleocr + det model will save to model_storage_directory/det_model + rec model will save to model_storage_directory/rec_model + log_level: + **kwargs: other params show in paddleocr --help + """ + logger.setLevel(log_level) + postprocess_params = parse_args() + # init model dir + if model_storage_directory: + self.model_storage_directory = model_storage_directory + else: + self.model_storage_directory = os.path.expanduser( + "~/.paddleocr/") + '/model' + Path(self.model_storage_directory).mkdir(parents=True, exist_ok=True) + + # download model + det_model_path, det_algorithm = maybe_download( + self.model_storage_directory, det_model_name, 'det') + rec_model_path, rec_algorithm = maybe_download( + self.model_storage_directory, rec_model_name, 'rec') + # update model and post_process params + postprocess_params.__dict__.update(**kwargs) + postprocess_params.det_model_dir = det_model_path + postprocess_params.rec_model_dir = rec_model_path + if det_algorithm is not None: + postprocess_params.det_algorithm = det_algorithm + if rec_algorithm is not None: + postprocess_params.rec_algorithm = rec_algorithm + + if postprocess_params.det_algorithm not in SUPPORT_DET_MODEL: + logger.error('det_algorithm must in {}'.format(SUPPORT_DET_MODEL)) + sys.exit(0) + if postprocess_params.rec_algorithm not in SUPPORT_REC_MODEL: + logger.error('rec_algorithm must in {}'.format(SUPPORT_REC_MODEL)) + sys.exit(0) + + postprocess_params.rec_char_dict_path = Path( + __file__).parent / postprocess_params.rec_char_dict_path + + # init det_model and rec_model + super().__init__(postprocess_params) + + def ocr(self, img, det=True, rec=True): + """ + ocr with paddleocr + args: + img: img for ocr, support ndarray, img_path and list or ndarray + det: use text detection or not, if false, only rec will be exec. default is True + rec: use text recognition or not, if false, only det will be exec. default is True + """ + assert isinstance(img, (np.ndarray, list, str)) + if isinstance(img, str): + image_file = img + img, flag = check_and_read_gif(image_file) + if not flag: + img = cv2.imread(image_file) + if img is None: + logger.error("error in loading image:{}".format(image_file)) + return None + if det and rec: + dt_boxes, rec_res = self.__call__(img) + return [[box.tolist(), res] for box, res in zip(dt_boxes, rec_res)] + elif det and not rec: + dt_boxes, elapse = self.text_detector(img) + if dt_boxes is None: + return None + return [box.tolist() for box in dt_boxes] + else: + if not isinstance(img, list): + img = [img] + rec_res, elapse = self.text_recognizer(img) + return rec_res diff --git a/requirments.txt b/requirments.txt index 94e8478f..ec538138 100644 --- a/requirments.txt +++ b/requirments.txt @@ -1,4 +1,6 @@ shapely imgaug pyclipper -lmdb \ No newline at end of file +lmdb +tqdm +numpy \ No newline at end of file diff --git a/setup.py b/setup.py new file mode 100644 index 00000000..70f748e6 --- /dev/null +++ b/setup.py @@ -0,0 +1,61 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from setuptools import setup +from io import open + +with open('requirments.txt', encoding="utf-8-sig") as f: + requirements = f.readlines() + requirements.append('tqdm') + + +def readme(): + with open('doc/doc_en/whl.md', encoding="utf-8-sig") as f: + README = f.read() + return README + + +setup( + name='paddleocr', + packages=['paddleocr'], + package_dir={'paddleocr': ''}, + include_package_data=True, + entry_points={"console_scripts": ["paddleocr= paddleocr.paddleocr:main"]}, + version='0.0.3', + install_requires=requirements, + license='Apache License 2.0', + description='Awesome OCR toolkits based on PaddlePaddle (8.6M ultra-lightweight pre-trained model, support training and deployment among server, mobile, embeded and IoT devices', + long_description=readme(), + long_description_content_type='text/markdown', + author='Baidu PaddlePaddle', + url='https://github.com/PaddlePaddle/PaddleOCR', + download_url='https://github.com/PaddlePaddle/PaddleOCR.git', + keywords=[ + 'ocr textdetection textrecognition paddleocr crnn east star-net rosetta ocrlite db chineseocr chinesetextdetection chinesetextrecognition' + ], + classifiers=[ + 'Intended Audience :: Developers', 'Operating System :: OS Independent', + 'Natural Language :: Chinese (Simplified)', + 'Programming Language :: Python', 'Programming Language :: Python :: 2', + 'Programming Language :: Python :: 2.5', + 'Programming Language :: Python :: 2.6', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.2', + 'Programming Language :: Python :: 3.3', + 'Programming Language :: Python :: 3.4', + 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', 'Topic :: Utilities' + ], ) diff --git a/tools/infer/utility.py b/tools/infer/utility.py index b0a0ec1f..9e1e0946 100755 --- a/tools/infer/utility.py +++ b/tools/infer/utility.py @@ -134,7 +134,12 @@ def resize_img(img, input_size=600): return im -def draw_ocr(image, boxes, txts, scores, draw_txt=True, drop_score=0.5): +def draw_ocr(image, + boxes, + txts=None, + scores=None, + drop_score=0.5, + font_path="./doc/simfang.ttf"): """ Visualize the results of OCR detection and recognition args: @@ -142,23 +147,29 @@ def draw_ocr(image, boxes, txts, scores, draw_txt=True, drop_score=0.5): boxes(list): boxes with shape(N, 4, 2) txts(list): the texts scores(list): txxs corresponding scores - draw_txt(bool): whether draw text or not drop_score(float): only scores greater than drop_threshold will be visualized + font_path: the path of font which is used to draw text return(array): the visualized img """ if scores is None: scores = [1] * len(boxes) - for (box, score) in zip(boxes, scores): - if score < drop_score or math.isnan(score): + box_num = len(boxes) + for i in range(box_num): + if scores is not None and (scores[i] < drop_score or + math.isnan(scores[i])): continue - box = np.reshape(np.array(box), [-1, 1, 2]).astype(np.int64) + box = np.reshape(np.array(boxes[i]), [-1, 1, 2]).astype(np.int64) image = cv2.polylines(np.array(image), [box], True, (255, 0, 0), 2) - - if draw_txt: + if txts is not None: img = np.array(resize_img(image, input_size=600)) txt_img = text_visual( - txts, scores, img_h=img.shape[0], img_w=600, threshold=drop_score) + txts, + scores, + img_h=img.shape[0], + img_w=600, + threshold=drop_score, + font_path=font_path) img = np.concatenate([np.array(img), np.array(txt_img)], axis=1) return img return image @@ -236,7 +247,12 @@ def str_count(s): return s_len - math.ceil(en_dg_count / 2) -def text_visual(texts, scores, img_h=400, img_w=600, threshold=0.): +def text_visual(texts, + scores, + img_h=400, + img_w=600, + threshold=0., + font_path="./doc/simfang.ttf"): """ create new blank img and draw txt on it args: @@ -244,6 +260,7 @@ def text_visual(texts, scores, img_h=400, img_w=600, threshold=0.): scores(list|None): corresponding score of each txt img_h(int): the height of blank img img_w(int): the width of blank img + font_path: the path of font which is used to draw text return(array): """ @@ -262,7 +279,7 @@ def text_visual(texts, scores, img_h=400, img_w=600, threshold=0.): font_size = 20 txt_color = (0, 0, 0) - font = ImageFont.truetype("./doc/simfang.ttf", font_size, encoding="utf-8") + font = ImageFont.truetype(font_path, font_size, encoding="utf-8") gap = font_size + 5 txt_img_list = [] @@ -343,6 +360,6 @@ if __name__ == '__main__': txts.append(dic['transcription']) scores.append(round(dic['scores'], 3)) - new_img = draw_ocr(image, boxes, txts, scores, draw_txt=True) + new_img = draw_ocr(image, boxes, txts, scores) cv2.imwrite(img_name, new_img) From 3b1ecb13391a3fcc579b761ecfc7c482dcef8607 Mon Sep 17 00:00:00 2001 From: zhoujun <572459439@qq.com> Date: Sat, 22 Aug 2020 20:15:56 +0800 Subject: [PATCH 33/70] Update predict_system.py --- tools/infer/predict_system.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/infer/predict_system.py b/tools/infer/predict_system.py index f8a62679..647a76b2 100755 --- a/tools/infer/predict_system.py +++ b/tools/infer/predict_system.py @@ -157,7 +157,6 @@ def main(args): boxes, txts, scores, - draw_txt=True, drop_score=drop_score) draw_img_save = "./inference_results/" if not os.path.exists(draw_img_save): From 32c2989b1b5c4f202bd47213133306d986b56394 Mon Sep 17 00:00:00 2001 From: Tangmq Date: Sat, 22 Aug 2020 23:38:18 +0800 Subject: [PATCH 34/70] add an english version readme file --- docker/hubserving/README.md | 58 ++++++++++++++++++++++++++++++++++ docker/hubserving/README_cn.md | 57 +++++++++++++++++++++++++++++++++ docker/hubserving/readme.md | 47 ++++++++++++++------------- 3 files changed, 140 insertions(+), 22 deletions(-) create mode 100644 docker/hubserving/README.md create mode 100644 docker/hubserving/README_cn.md diff --git a/docker/hubserving/README.md b/docker/hubserving/README.md new file mode 100644 index 00000000..71e2377d --- /dev/null +++ b/docker/hubserving/README.md @@ -0,0 +1,58 @@ +English | [简体中文](README_cn.md) + +## Introduction +Many user hopes package the PaddleOCR service into an docker image, so that it can be quickly released and used in the docker or k8s environment. + +This page provide some standardized code to achieve this goal. You can quickly publish the PaddleOCR project into a callable Restful API service through the following steps. (At present, the deployment based on the HubServing mode is implemented first, and author plans to increase the deployment of the PaddleServing mode in the futrue) + +## 1. Prerequisites + +You need to install the following basic components first: +a. Docker +b. Graphics driver and CUDA 10.0+(GPU) +c. NVIDIA Container Toolkit(GPU,Docker 19.03+ can skip this) +d. cuDNN 7.6+(GPU) + +## 2. Build Image +a. Download PaddleOCR sourcecode +``` +git clone https://github.com/PaddlePaddle/PaddleOCR.git +``` +b. Goto Dockerfile directory(ps:Need to distinguish between cpu and gpu version, the following takes cpu as an example, gpu version needs to replace the keyword) +``` +cd docker/cpu +``` +c. Build image +``` +docker build -t paddleocr:cpu . +``` + +## 3. Start container +a. CPU version +``` +sudo docker run -dp 8866:8866 --name paddle_ocr paddleocr:cpu +``` +b. GPU version (base on NVIDIA Container Toolkit) +``` +sudo nvidia-docker run -dp 8866:8866 --name paddle_ocr paddleocr:gpu +``` +c. GPU version (Docker 19.03++) +``` +sudo docker run -dp 8866:8866 --gpus all --name paddle_ocr paddleocr:gpu +``` +d. Check service status(If you can see the following statement then it means completed:Successfully installed ocr_system && Running on http://0.0.0.0:8866/) +``` +docker logs -f paddle_ocr +``` + +## 4. Test +a. Calculate the Base64 encoding of the picture to be recognized (if you just test, you can use a free online tool, like:https://freeonlinetools24.com/base64-image/) +b. Post a service request(sample request in sample_request.txt) + +``` +curl -H "Content-Type:application/json" -X POST --data "{\"images\": [\"Input image Base64 encode(need to delete the code 'data:image/jpg;base64,')\"]}" http://localhost:8866/predict/ocr_system +``` +c. Get resposne(If the call is successful, the following result will be returned) +``` +{"msg":"","results":[[{"confidence":0.8403433561325073,"text":"约定","text_region":[[345,377],[641,390],[634,540],[339,528]]},{"confidence":0.8131805658340454,"text":"最终相遇","text_region":[[356,532],[624,530],[624,596],[356,598]]}]],"status":"0"} +``` diff --git a/docker/hubserving/README_cn.md b/docker/hubserving/README_cn.md new file mode 100644 index 00000000..9b9e5f50 --- /dev/null +++ b/docker/hubserving/README_cn.md @@ -0,0 +1,57 @@ +[English](README.md) | 简体中文 + +## Docker化部署服务 +在日常项目应用中,相信大家一般都会希望能通过Docker技术,把PaddleOCR服务打包成一个镜像,以便在Docker或k8s环境里,快速发布上线使用。 + +本文将提供一些标准化的代码来实现这样的目标。大家通过如下步骤可以把PaddleOCR项目快速发布成可调用的Restful API服务。(目前暂时先实现了基于HubServing模式的部署,后续作者计划增加PaddleServing模式的部署) + +## 1.实施前提准备 + +需要先完成如下基本组件的安装: +a. Docker环境 +b. 显卡驱动和CUDA 10.0+(GPU) +c. NVIDIA Container Toolkit(GPU,Docker 19.03以上版本可以跳过此步) +d. cuDNN 7.6+(GPU) + +## 2.制作镜像 +a.下载PaddleOCR项目代码 +``` +git clone https://github.com/PaddlePaddle/PaddleOCR.git +``` +b.切换至Dockerfile目录(注:需要区分cpu或gpu版本,下文以cpu为例,gpu版本需要替换一下关键字即可) +``` +cd docker/cpu +``` +c.生成镜像 +``` +docker build -t paddleocr:cpu . +``` + +## 3.启动Docker容器 +a. CPU 版本 +``` +sudo docker run -dp 8866:8866 --name paddle_ocr paddleocr:cpu +``` +b. GPU 版本 (通过NVIDIA Container Toolkit) +``` +sudo nvidia-docker run -dp 8866:8866 --name paddle_ocr paddleocr:gpu +``` +c. GPU 版本 (Docker 19.03以上版本,可以直接用如下命令) +``` +sudo docker run -dp 8866:8866 --gpus all --name paddle_ocr paddleocr:gpu +``` +d. 检查服务运行情况(出现:Successfully installed ocr_system和Running on http://0.0.0.0:8866/等信息,表示运行成功) +``` +docker logs -f paddle_ocr +``` + +## 4.测试服务 +a. 计算待识别图片的Base64编码(如果只是测试一下效果,可以通过免费的在线工具实现,如:http://tool.chinaz.com/tools/imgtobase/) +b. 发送服务请求(可参见sample_request.txt中的值) +``` +curl -H "Content-Type:application/json" -X POST --data "{\"images\": [\"填入图片Base64编码(需要删除'data:image/jpg;base64,')\"]}" http://localhost:8866/predict/ocr_system +``` +c. 返回结果(如果调用成功,会返回如下结果) +``` +{"msg":"","results":[[{"confidence":0.8403433561325073,"text":"约定","text_region":[[345,377],[641,390],[634,540],[339,528]]},{"confidence":0.8131805658340454,"text":"最终相遇","text_region":[[356,532],[624,530],[624,596],[356,598]]}]],"status":"0"} +``` diff --git a/docker/hubserving/readme.md b/docker/hubserving/readme.md index 109e6aa6..71e2377d 100644 --- a/docker/hubserving/readme.md +++ b/docker/hubserving/readme.md @@ -1,55 +1,58 @@ -# Docker化部署服务 -在日常项目应用中,相信大家一般都会希望能通过Docker技术,把PaddleOCR服务打包成一个镜像,以便在Docker或k8s环境里,快速发布上线使用。 +English | [简体中文](README_cn.md) -本文将提供一些标准化的代码来实现这样的目标。大家通过如下步骤可以把PaddleOCR项目快速发布成可调用的Restful API服务。(目前暂时先实现了基于HubServing模式的部署,后续作者计划增加PaddleServing模式的部署) +## Introduction +Many user hopes package the PaddleOCR service into an docker image, so that it can be quickly released and used in the docker or k8s environment. -## 1.实施前提准备 +This page provide some standardized code to achieve this goal. You can quickly publish the PaddleOCR project into a callable Restful API service through the following steps. (At present, the deployment based on the HubServing mode is implemented first, and author plans to increase the deployment of the PaddleServing mode in the futrue) -需要先完成如下基本组件的安装: -a. Docker环境 -b. 显卡驱动和CUDA 10.0+(GPU) -c. NVIDIA Container Toolkit(GPU,Docker 19.03以上版本可以跳过此步) +## 1. Prerequisites + +You need to install the following basic components first: +a. Docker +b. Graphics driver and CUDA 10.0+(GPU) +c. NVIDIA Container Toolkit(GPU,Docker 19.03+ can skip this) d. cuDNN 7.6+(GPU) -## 2.制作镜像 -a.下载PaddleOCR项目代码 +## 2. Build Image +a. Download PaddleOCR sourcecode ``` git clone https://github.com/PaddlePaddle/PaddleOCR.git ``` -b.切换至Dockerfile目录(注:需要区分cpu或gpu版本,下文以cpu为例,gpu版本需要替换一下关键字即可) +b. Goto Dockerfile directory(ps:Need to distinguish between cpu and gpu version, the following takes cpu as an example, gpu version needs to replace the keyword) ``` cd docker/cpu ``` -c.生成镜像 +c. Build image ``` docker build -t paddleocr:cpu . ``` -## 3.启动Docker容器 -a. CPU 版本 +## 3. Start container +a. CPU version ``` sudo docker run -dp 8866:8866 --name paddle_ocr paddleocr:cpu ``` -b. GPU 版本 (通过NVIDIA Container Toolkit) +b. GPU version (base on NVIDIA Container Toolkit) ``` sudo nvidia-docker run -dp 8866:8866 --name paddle_ocr paddleocr:gpu ``` -c. GPU 版本 (Docker 19.03以上版本,可以直接用如下命令) +c. GPU version (Docker 19.03++) ``` sudo docker run -dp 8866:8866 --gpus all --name paddle_ocr paddleocr:gpu ``` -d. 检查服务运行情况(出现:Successfully installed ocr_system和Running on http://0.0.0.0:8866/等信息,表示运行成功) +d. Check service status(If you can see the following statement then it means completed:Successfully installed ocr_system && Running on http://0.0.0.0:8866/) ``` docker logs -f paddle_ocr ``` -## 4.测试服务 -a. 计算待识别图片的Base64编码(如果只是测试一下效果,可以通过免费的在线工具实现,如:http://tool.chinaz.com/tools/imgtobase/) -b. 发送服务请求(可参见sample_request.txt中的值) +## 4. Test +a. Calculate the Base64 encoding of the picture to be recognized (if you just test, you can use a free online tool, like:https://freeonlinetools24.com/base64-image/) +b. Post a service request(sample request in sample_request.txt) + ``` -curl -H "Content-Type:application/json" -X POST --data "{\"images\": [\"填入图片Base64编码(需要删除'data:image/jpg;base64,')\"]}" http://localhost:8866/predict/ocr_system +curl -H "Content-Type:application/json" -X POST --data "{\"images\": [\"Input image Base64 encode(need to delete the code 'data:image/jpg;base64,')\"]}" http://localhost:8866/predict/ocr_system ``` -c. 返回结果(如果调用成功,会返回如下结果) +c. Get resposne(If the call is successful, the following result will be returned) ``` {"msg":"","results":[[{"confidence":0.8403433561325073,"text":"约定","text_region":[[345,377],[641,390],[634,540],[339,528]]},{"confidence":0.8131805658340454,"text":"最终相遇","text_region":[[356,532],[624,530],[624,596],[356,598]]}]],"status":"0"} ``` From 186bf9f33a63a8b41b6aba2dbb6dc5f61425aeca Mon Sep 17 00:00:00 2001 From: WenmuZhou Date: Sun, 23 Aug 2020 16:38:01 +0800 Subject: [PATCH 35/70] =?UTF-8?q?=E5=88=A0=E6=8E=89py2=E7=9A=84=E6=94=AF?= =?UTF-8?q?=E6=8C=81,=E4=BF=AE=E6=AD=A3=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/doc_ch/whl.md | 2 +- doc/doc_en/whl.md | 2 +- setup.py | 5 ----- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/doc/doc_ch/whl.md b/doc/doc_ch/whl.md index 94243462..8715276f 100644 --- a/doc/doc_ch/whl.md +++ b/doc/doc_ch/whl.md @@ -12,7 +12,7 @@ pip install paddleocr 本地构建并安装 ```bash python setup.py bdist_wheel -pip install dist/paddleocr-0.0.1-py3-none-any.whl +pip install dist/paddleocr-0.0.3-py3-none-any.whl ``` ### 1. 代码使用 diff --git a/doc/doc_en/whl.md b/doc/doc_en/whl.md index ad2125a4..e073e8e3 100644 --- a/doc/doc_en/whl.md +++ b/doc/doc_en/whl.md @@ -10,7 +10,7 @@ pip install paddleocr build own whl package and install ```bash python setup.py bdist_wheel -pip install dist/paddleocr-0.0.1-py3-none-any.whl +pip install dist/paddleocr-0.0.3-py3-none-any.whl ``` ### 1. Use by code diff --git a/setup.py b/setup.py index 70f748e6..28409139 100644 --- a/setup.py +++ b/setup.py @@ -38,7 +38,6 @@ setup( description='Awesome OCR toolkits based on PaddlePaddle (8.6M ultra-lightweight pre-trained model, support training and deployment among server, mobile, embeded and IoT devices', long_description=readme(), long_description_content_type='text/markdown', - author='Baidu PaddlePaddle', url='https://github.com/PaddlePaddle/PaddleOCR', download_url='https://github.com/PaddlePaddle/PaddleOCR.git', keywords=[ @@ -47,10 +46,6 @@ setup( classifiers=[ 'Intended Audience :: Developers', 'Operating System :: OS Independent', 'Natural Language :: Chinese (Simplified)', - 'Programming Language :: Python', 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.5', - 'Programming Language :: Python :: 2.6', - 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', From 0a011e564a476502ba80d5c640a69919c0abd4c6 Mon Sep 17 00:00:00 2001 From: littletomatodonkey Date: Mon, 24 Aug 2020 02:11:17 +0000 Subject: [PATCH 36/70] add python interface --- tools/infer/predict_det.py | 9 +++++++-- tools/infer/predict_rec.py | 9 +++++++-- tools/infer/utility.py | 9 +++++++-- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/tools/infer/predict_det.py b/tools/infer/predict_det.py index 234c41bf..625f87ab 100755 --- a/tools/infer/predict_det.py +++ b/tools/infer/predict_det.py @@ -42,6 +42,7 @@ class TextDetector(object): def __init__(self, args): max_side_len = args.det_max_side_len self.det_algorithm = args.det_algorithm + self.use_zero_copy_run = args.use_zero_copy_run preprocess_params = {'max_side_len': max_side_len} postprocess_params = {} if self.det_algorithm == "DB": @@ -138,8 +139,12 @@ class TextDetector(object): return None, 0 im = im.copy() starttime = time.time() - im = fluid.core.PaddleTensor(im) - self.predictor.run([im]) + if self.use_zero_copy_run: + self.input_tensor.copy_from_cpu(im) + self.predictor.zero_copy_run() + else: + im = fluid.core.PaddleTensor(im) + self.predictor.run([im]) outputs = [] for output_tensor in self.output_tensors: output = output_tensor.copy_to_cpu() diff --git a/tools/infer/predict_rec.py b/tools/infer/predict_rec.py index 92234415..6a379853 100755 --- a/tools/infer/predict_rec.py +++ b/tools/infer/predict_rec.py @@ -40,6 +40,7 @@ class TextRecognizer(object): self.character_type = args.rec_char_type self.rec_batch_num = args.rec_batch_num self.rec_algorithm = args.rec_algorithm + self.use_zero_copy_run = args.use_zero_copy_run char_ops_params = { "character_type": args.rec_char_type, "character_dict_path": args.rec_char_dict_path, @@ -105,8 +106,12 @@ class TextRecognizer(object): norm_img_batch = np.concatenate(norm_img_batch) norm_img_batch = norm_img_batch.copy() starttime = time.time() - norm_img_batch = fluid.core.PaddleTensor(norm_img_batch) - self.predictor.run([norm_img_batch]) + if self.use_zero_copy_run: + self.input_tensor.copy_from_cpu(norm_img_batch) + self.predictor.zero_copy_run() + else: + norm_img_batch = fluid.core.PaddleTensor(norm_img_batch) + self.predictor.run([norm_img_batch]) if self.loss_type == "ctc": rec_idx_batch = self.output_tensors[0].copy_to_cpu() diff --git a/tools/infer/utility.py b/tools/infer/utility.py index ec6705eb..4dcdfa67 100755 --- a/tools/infer/utility.py +++ b/tools/infer/utility.py @@ -71,6 +71,7 @@ def parse_args(): default="./ppocr/utils/ppocr_keys_v1.txt") parser.add_argument("--use_space_char", type=bool, default=True) parser.add_argument("--enable_mkldnn", type=bool, default=False) + parser.add_argument("--use_zero_copy_run", type=bool, default=False) return parser.parse_args() @@ -105,8 +106,12 @@ def create_predictor(args, mode): #config.enable_memory_optim() config.disable_glog_info() - # use zero copy - config.switch_use_feed_fetch_ops(True) + if args.use_zero_copy_run: + config.delete_pass("conv_transpose_eltwiseadd_bn_fuse_pass") + config.switch_use_feed_fetch_ops(False) + else: + config.switch_use_feed_fetch_ops(True) + predictor = create_paddle_predictor(config) input_names = predictor.get_input_names() input_tensor = predictor.get_input_tensor(input_names[0]) From ed52619f4b4791fda71ff4b22f517e04c78bd3b8 Mon Sep 17 00:00:00 2001 From: littletomatodonkey Date: Mon, 24 Aug 2020 02:37:41 +0000 Subject: [PATCH 37/70] add cpp zero copy run interface --- deploy/cpp_infer/include/config.h | 4 ++++ deploy/cpp_infer/include/ocr_det.h | 6 ++++-- deploy/cpp_infer/include/ocr_rec.h | 5 ++++- deploy/cpp_infer/src/main.cpp | 13 +++++++------ deploy/cpp_infer/src/ocr_det.cpp | 23 ++++++++++++++++------- deploy/cpp_infer/src/ocr_rec.cpp | 24 ++++++++++++++++-------- deploy/cpp_infer/tools/config.txt | 1 + 7 files changed, 52 insertions(+), 24 deletions(-) diff --git a/deploy/cpp_infer/include/config.h b/deploy/cpp_infer/include/config.h index c5257d8a..8db693b1 100644 --- a/deploy/cpp_infer/include/config.h +++ b/deploy/cpp_infer/include/config.h @@ -41,6 +41,8 @@ public: this->use_mkldnn = bool(stoi(config_map_["use_mkldnn"])); + this->use_zero_copy_run = bool(stoi(config_map_["use_zero_copy_run"])); + this->max_side_len = stoi(config_map_["max_side_len"]); this->det_db_thresh = stod(config_map_["det_db_thresh"]); @@ -68,6 +70,8 @@ public: bool use_mkldnn = false; + bool use_zero_copy_run = false; + int max_side_len = 960; double det_db_thresh = 0.3; diff --git a/deploy/cpp_infer/include/ocr_det.h b/deploy/cpp_infer/include/ocr_det.h index ed2667ee..0308d07f 100644 --- a/deploy/cpp_infer/include/ocr_det.h +++ b/deploy/cpp_infer/include/ocr_det.h @@ -39,8 +39,8 @@ public: explicit DBDetector(const std::string &model_dir, const bool &use_gpu, const int &gpu_id, const int &gpu_mem, const int &cpu_math_library_num_threads, - const bool &use_mkldnn, const int &max_side_len, - const double &det_db_thresh, + const bool &use_mkldnn, const bool &use_zero_copy_run, + const int &max_side_len, const double &det_db_thresh, const double &det_db_box_thresh, const double &det_db_unclip_ratio, const bool &visualize) { @@ -49,6 +49,7 @@ public: this->gpu_mem_ = gpu_mem; this->cpu_math_library_num_threads_ = cpu_math_library_num_threads; this->use_mkldnn_ = use_mkldnn; + this->use_zero_copy_run_ = use_zero_copy_run; this->max_side_len_ = max_side_len; @@ -75,6 +76,7 @@ private: int gpu_mem_ = 4000; int cpu_math_library_num_threads_ = 4; bool use_mkldnn_ = false; + bool use_zero_copy_run_ = false; int max_side_len_ = 960; diff --git a/deploy/cpp_infer/include/ocr_rec.h b/deploy/cpp_infer/include/ocr_rec.h index 471aeb58..520f0f28 100644 --- a/deploy/cpp_infer/include/ocr_rec.h +++ b/deploy/cpp_infer/include/ocr_rec.h @@ -38,12 +38,14 @@ public: explicit CRNNRecognizer(const std::string &model_dir, const bool &use_gpu, const int &gpu_id, const int &gpu_mem, const int &cpu_math_library_num_threads, - const bool &use_mkldnn, const string &label_path) { + const bool &use_mkldnn, const bool &use_zero_copy_run, + const string &label_path) { this->use_gpu_ = use_gpu; this->gpu_id_ = gpu_id; this->gpu_mem_ = gpu_mem; this->cpu_math_library_num_threads_ = cpu_math_library_num_threads; this->use_mkldnn_ = use_mkldnn; + this->use_zero_copy_run_ = use_zero_copy_run; this->label_list_ = Utility::ReadDict(label_path); this->label_list_.push_back(" "); @@ -64,6 +66,7 @@ private: int gpu_mem_ = 4000; int cpu_math_library_num_threads_ = 4; bool use_mkldnn_ = false; + bool use_zero_copy_run_ = false; std::vector label_list_; diff --git a/deploy/cpp_infer/src/main.cpp b/deploy/cpp_infer/src/main.cpp index 27c98e5b..1dd33b30 100644 --- a/deploy/cpp_infer/src/main.cpp +++ b/deploy/cpp_infer/src/main.cpp @@ -48,14 +48,15 @@ int main(int argc, char **argv) { cv::Mat srcimg = cv::imread(img_path, cv::IMREAD_COLOR); - DBDetector det(config.det_model_dir, config.use_gpu, config.gpu_id, - config.gpu_mem, config.cpu_math_library_num_threads, - config.use_mkldnn, config.max_side_len, config.det_db_thresh, - config.det_db_box_thresh, config.det_db_unclip_ratio, - config.visualize); + DBDetector det( + config.det_model_dir, config.use_gpu, config.gpu_id, config.gpu_mem, + config.cpu_math_library_num_threads, config.use_mkldnn, + config.use_zero_copy_run, config.max_side_len, config.det_db_thresh, + config.det_db_box_thresh, config.det_db_unclip_ratio, config.visualize); CRNNRecognizer rec(config.rec_model_dir, config.use_gpu, config.gpu_id, config.gpu_mem, config.cpu_math_library_num_threads, - config.use_mkldnn, config.char_list_file); + config.use_mkldnn, config.use_zero_copy_run, + config.char_list_file); auto start = std::chrono::system_clock::now(); std::vector>> boxes; diff --git a/deploy/cpp_infer/src/ocr_det.cpp b/deploy/cpp_infer/src/ocr_det.cpp index 36ffc9af..56fbace8 100644 --- a/deploy/cpp_infer/src/ocr_det.cpp +++ b/deploy/cpp_infer/src/ocr_det.cpp @@ -32,7 +32,7 @@ void DBDetector::LoadModel(const std::string &model_dir) { // false for zero copy tensor // true for commom tensor - config.SwitchUseFeedFetchOps(true); + config.SwitchUseFeedFetchOps(!this->use_zero_copy_run_); // true for multiple input config.SwitchSpecifyInputNames(true); @@ -61,12 +61,21 @@ void DBDetector::Run(cv::Mat &img, this->permute_op_.Run(&resize_img, input.data()); // Inference. - paddle::PaddleTensor input_t; - input_t.shape = {1, 3, resize_img.rows, resize_img.cols}; - input_t.data = paddle::PaddleBuf(input.data(), input.size() * sizeof(float)); - input_t.dtype = PaddleDType::FLOAT32; - std::vector outputs; - this->predictor_->Run({input_t}, &outputs, 1); + if (this->use_zero_copy_run_) { + auto input_names = this->predictor_->GetInputNames(); + auto input_t = this->predictor_->GetInputTensor(input_names[0]); + input_t->Reshape({1, 3, resize_img.rows, resize_img.cols}); + input_t->copy_from_cpu(input.data()); + this->predictor_->ZeroCopyRun(); + } else { + paddle::PaddleTensor input_t; + input_t.shape = {1, 3, resize_img.rows, resize_img.cols}; + input_t.data = + paddle::PaddleBuf(input.data(), input.size() * sizeof(float)); + input_t.dtype = PaddleDType::FLOAT32; + std::vector outputs; + this->predictor_->Run({input_t}, &outputs, 1); + } std::vector out_data; auto output_names = this->predictor_->GetOutputNames(); diff --git a/deploy/cpp_infer/src/ocr_rec.cpp b/deploy/cpp_infer/src/ocr_rec.cpp index 697f9e8e..a3486db4 100644 --- a/deploy/cpp_infer/src/ocr_rec.cpp +++ b/deploy/cpp_infer/src/ocr_rec.cpp @@ -40,13 +40,21 @@ void CRNNRecognizer::Run(std::vector>> boxes, this->permute_op_.Run(&resize_img, input.data()); // Inference. - paddle::PaddleTensor input_t; - input_t.shape = {1, 3, resize_img.rows, resize_img.cols}; - input_t.data = - paddle::PaddleBuf(input.data(), input.size() * sizeof(float)); - input_t.dtype = PaddleDType::FLOAT32; - std::vector outputs; - this->predictor_->Run({input_t}, &outputs, 1); + if (this->use_zero_copy_run_) { + auto input_names = this->predictor_->GetInputNames(); + auto input_t = this->predictor_->GetInputTensor(input_names[0]); + input_t->Reshape({1, 3, resize_img.rows, resize_img.cols}); + input_t->copy_from_cpu(input.data()); + this->predictor_->ZeroCopyRun(); + } else { + paddle::PaddleTensor input_t; + input_t.shape = {1, 3, resize_img.rows, resize_img.cols}; + input_t.data = + paddle::PaddleBuf(input.data(), input.size() * sizeof(float)); + input_t.dtype = PaddleDType::FLOAT32; + std::vector outputs; + this->predictor_->Run({input_t}, &outputs, 1); + } std::vector rec_idx; auto output_names = this->predictor_->GetOutputNames(); @@ -124,7 +132,7 @@ void CRNNRecognizer::LoadModel(const std::string &model_dir) { // false for zero copy tensor // true for commom tensor - config.SwitchUseFeedFetchOps(true); + config.SwitchUseFeedFetchOps(!this->use_zero_copy_run_); // true for multiple input config.SwitchSpecifyInputNames(true); diff --git a/deploy/cpp_infer/tools/config.txt b/deploy/cpp_infer/tools/config.txt index a049fc7d..40beea3a 100644 --- a/deploy/cpp_infer/tools/config.txt +++ b/deploy/cpp_infer/tools/config.txt @@ -4,6 +4,7 @@ gpu_id 0 gpu_mem 4000 cpu_math_library_num_threads 10 use_mkldnn 0 +use_zero_copy_run 1 # det config max_side_len 960 From 09e15a684a3662a41c28de3b7104fa6525d407da Mon Sep 17 00:00:00 2001 From: WenmuZhou Date: Mon, 24 Aug 2020 11:30:00 +0800 Subject: [PATCH 38/70] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/doc_ch/whl.md | 110 +++++----------------------------------------- doc/doc_en/whl.md | 66 +++++----------------------- 2 files changed, 22 insertions(+), 154 deletions(-) diff --git a/doc/doc_ch/whl.md b/doc/doc_ch/whl.md index 8715276f..1328f8c5 100644 --- a/doc/doc_ch/whl.md +++ b/doc/doc_ch/whl.md @@ -19,7 +19,7 @@ pip install dist/paddleocr-0.0.3-py3-none-any.whl * 检测+识别全流程 ```python from paddleocr import PaddleOCR, draw_ocr -ocr = PaddleOCR(model_storage_directory='./model') # need to run only once to load model into memory +ocr = PaddleOCR() # need to run only once to download and load model into memory img_path = 'PaddleOCR/doc/imgs/11.jpg' result = ocr.ocr(img_path) for line in result: @@ -40,29 +40,7 @@ im_show.save('result.jpg') [[[24.0, 36.0], [304.0, 34.0], [304.0, 72.0], [24.0, 74.0]], ['纯臻营养护发素', 0.964739]] [[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]], ['产品信息/参数', 0.98069626]] [[[24.0, 109.0], [333.0, 109.0], [333.0, 136.0], [24.0, 136.0]], ['(45元/每公斤,100公斤起订)', 0.9676722]] -[[[22.0, 140.0], [284.0, 140.0], [284.0, 167.0], [22.0, 167.0]], ['每瓶22元,1000瓶起订)', 0.97444016]] -[[[22.0, 174.0], [85.0, 174.0], [85.0, 198.0], [22.0, 198.0]], ['【品牌】', 0.8187138]] -[[[89.0, 176.0], [301.0, 176.0], [301.0, 196.0], [89.0, 196.0]], [':代加工方式/OEMODM', 0.9421848]] -[[[23.0, 205.0], [85.0, 205.0], [85.0, 229.0], [23.0, 229.0]], ['【品名】', 0.76008326]] -[[[88.0, 204.0], [235.0, 206.0], [235.0, 229.0], [88.0, 227.0]], [':纯臻营养护发素', 0.9633639]] -[[[23.0, 236.0], [121.0, 236.0], [121.0, 261.0], [23.0, 261.0]], ['【产品编号】', 0.84101385]] -[[[110.0, 239.0], [239.0, 239.0], [239.0, 256.0], [110.0, 256.0]], ['1:YM-X-3011', 0.8621878]] -[[[414.0, 233.0], [430.0, 233.0], [430.0, 304.0], [414.0, 304.0]], ['ODM OEM', 0.9084018]] -[[[23.0, 268.0], [183.0, 268.0], [183.0, 292.0], [23.0, 292.0]], ['【净含量】:220ml', 0.9278281]] -[[[24.0, 301.0], [118.0, 301.0], [118.0, 321.0], [24.0, 321.0]], ['【适用人群】', 0.90901047]] -[[[127.0, 300.0], [254.0, 300.0], [254.0, 323.0], [127.0, 323.0]], [':适合所有肤质', 0.95465785]] -[[[24.0, 332.0], [117.0, 332.0], [117.0, 353.0], [24.0, 353.0]], ['【主要成分】', 0.88936955]] -[[[139.0, 332.0], [236.0, 332.0], [236.0, 352.0], [139.0, 352.0]], ['鲸蜡硬脂醇', 0.9447544]] -[[[248.0, 332.0], [345.0, 332.0], [345.0, 352.0], [248.0, 352.0]], ['燕麦B-葡聚', 0.89748293]] -[[[54.0, 363.0], [232.0, 363.0], [232.0, 383.0], [54.0, 383.0]], [' 椰油酰胺丙基甜菜碱', 0.902023]] -[[[25.0, 364.0], [64.0, 364.0], [64.0, 383.0], [25.0, 383.0]], ['糖、', 0.985203]] -[[[244.0, 363.0], [281.0, 363.0], [281.0, 382.0], [244.0, 382.0]], ['泛服', 0.44537082]] -[[[367.0, 367.0], [475.0, 367.0], [475.0, 388.0], [367.0, 388.0]], ['(成品包材)', 0.9834532]] -[[[24.0, 395.0], [120.0, 395.0], [120.0, 416.0], [24.0, 416.0]], ['【主要功能】', 0.88684446]] -[[[128.0, 397.0], [273.0, 397.0], [273.0, 414.0], [128.0, 414.0]], [':可紧致头发磷层', 0.9342501]] -[[[265.0, 395.0], [361.0, 395.0], [361.0, 415.0], [265.0, 415.0]], ['琴,从而达到', 0.8253762]] -[[[25.0, 425.0], [372.0, 425.0], [372.0, 448.0], [25.0, 448.0]], ['即时持久改善头发光泽的效果,给干燥的头', 0.97785276]] -[[[26.0, 457.0], [137.0, 457.0], [137.0, 477.0], [26.0, 477.0]], ['发足够的滋养', 0.9577897]] +...... ``` 结果可视化 @@ -73,7 +51,7 @@ im_show.save('result.jpg') * 单独执行检测 ```python from paddleocr import PaddleOCR, draw_ocr -ocr = PaddleOCR(model_storage_directory='./model') # need to run only once to load model into memory +ocr = PaddleOCR() # need to run only once to download and load model into memory img_path = 'PaddleOCR/doc/imgs/11.jpg' result = ocr.ocr(img_path,rec=False) for line in result: @@ -92,29 +70,7 @@ im_show.save('result.jpg') [[26.0, 457.0], [137.0, 457.0], [137.0, 477.0], [26.0, 477.0]] [[25.0, 425.0], [372.0, 425.0], [372.0, 448.0], [25.0, 448.0]] [[128.0, 397.0], [273.0, 397.0], [273.0, 414.0], [128.0, 414.0]] -[[265.0, 395.0], [361.0, 395.0], [361.0, 415.0], [265.0, 415.0]] -[[24.0, 395.0], [120.0, 395.0], [120.0, 416.0], [24.0, 416.0]] -[[367.0, 367.0], [475.0, 367.0], [475.0, 388.0], [367.0, 388.0]] -[[54.0, 363.0], [232.0, 363.0], [232.0, 383.0], [54.0, 383.0]] -[[25.0, 364.0], [64.0, 364.0], [64.0, 383.0], [25.0, 383.0]] -[[244.0, 363.0], [281.0, 363.0], [281.0, 382.0], [244.0, 382.0]] -[[248.0, 332.0], [345.0, 332.0], [345.0, 352.0], [248.0, 352.0]] -[[139.0, 332.0], [236.0, 332.0], [236.0, 352.0], [139.0, 352.0]] -[[24.0, 332.0], [117.0, 332.0], [117.0, 353.0], [24.0, 353.0]] -[[127.0, 300.0], [254.0, 300.0], [254.0, 323.0], [127.0, 323.0]] -[[24.0, 301.0], [118.0, 301.0], [118.0, 321.0], [24.0, 321.0]] -[[23.0, 268.0], [183.0, 268.0], [183.0, 292.0], [23.0, 292.0]] -[[110.0, 239.0], [239.0, 239.0], [239.0, 256.0], [110.0, 256.0]] -[[23.0, 236.0], [121.0, 236.0], [121.0, 261.0], [23.0, 261.0]] -[[414.0, 233.0], [430.0, 233.0], [430.0, 304.0], [414.0, 304.0]] -[[88.0, 204.0], [235.0, 206.0], [235.0, 229.0], [88.0, 227.0]] -[[23.0, 205.0], [85.0, 205.0], [85.0, 229.0], [23.0, 229.0]] -[[89.0, 176.0], [301.0, 176.0], [301.0, 196.0], [89.0, 196.0]] -[[22.0, 174.0], [85.0, 174.0], [85.0, 198.0], [22.0, 198.0]] -[[22.0, 140.0], [284.0, 140.0], [284.0, 167.0], [22.0, 167.0]] -[[24.0, 109.0], [333.0, 109.0], [333.0, 136.0], [24.0, 136.0]] -[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]] -[[24.0, 36.0], [304.0, 34.0], [304.0, 72.0], [24.0, 74.0]] +...... ``` 结果可视化 @@ -126,7 +82,7 @@ im_show.save('result.jpg') * 单独执行识别 ```python from paddleocr import PaddleOCR -ocr = PaddleOCR(model_storage_directory='./model') # need to run only once to load model into memory +ocr = PaddleOCR() # need to run only once to download and load model into memory img_path = 'PaddleOCR/doc/imgs_words/ch/word_1.jpg' result = ocr.ocr(img_path,det=False) for line in result: @@ -153,29 +109,7 @@ paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg [[[24.0, 36.0], [304.0, 34.0], [304.0, 72.0], [24.0, 74.0]], ['纯臻营养护发素', 0.964739]] [[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]], ['产品信息/参数', 0.98069626]] [[[24.0, 109.0], [333.0, 109.0], [333.0, 136.0], [24.0, 136.0]], ['(45元/每公斤,100公斤起订)', 0.9676722]] -[[[22.0, 140.0], [284.0, 140.0], [284.0, 167.0], [22.0, 167.0]], ['每瓶22元,1000瓶起订)', 0.97444016]] -[[[22.0, 174.0], [85.0, 174.0], [85.0, 198.0], [22.0, 198.0]], ['【品牌】', 0.8187138]] -[[[89.0, 176.0], [301.0, 176.0], [301.0, 196.0], [89.0, 196.0]], [':代加工方式/OEMODM', 0.9421848]] -[[[23.0, 205.0], [85.0, 205.0], [85.0, 229.0], [23.0, 229.0]], ['【品名】', 0.76008326]] -[[[88.0, 204.0], [235.0, 206.0], [235.0, 229.0], [88.0, 227.0]], [':纯臻营养护发素', 0.9633639]] -[[[23.0, 236.0], [121.0, 236.0], [121.0, 261.0], [23.0, 261.0]], ['【产品编号】', 0.84101385]] -[[[110.0, 239.0], [239.0, 239.0], [239.0, 256.0], [110.0, 256.0]], ['1:YM-X-3011', 0.8621878]] -[[[414.0, 233.0], [430.0, 233.0], [430.0, 304.0], [414.0, 304.0]], ['ODM OEM', 0.9084018]] -[[[23.0, 268.0], [183.0, 268.0], [183.0, 292.0], [23.0, 292.0]], ['【净含量】:220ml', 0.9278281]] -[[[24.0, 301.0], [118.0, 301.0], [118.0, 321.0], [24.0, 321.0]], ['【适用人群】', 0.90901047]] -[[[127.0, 300.0], [254.0, 300.0], [254.0, 323.0], [127.0, 323.0]], [':适合所有肤质', 0.95465785]] -[[[24.0, 332.0], [117.0, 332.0], [117.0, 353.0], [24.0, 353.0]], ['【主要成分】', 0.88936955]] -[[[139.0, 332.0], [236.0, 332.0], [236.0, 352.0], [139.0, 352.0]], ['鲸蜡硬脂醇', 0.9447544]] -[[[248.0, 332.0], [345.0, 332.0], [345.0, 352.0], [248.0, 352.0]], ['燕麦B-葡聚', 0.89748293]] -[[[54.0, 363.0], [232.0, 363.0], [232.0, 383.0], [54.0, 383.0]], [' 椰油酰胺丙基甜菜碱', 0.902023]] -[[[25.0, 364.0], [64.0, 364.0], [64.0, 383.0], [25.0, 383.0]], ['糖、', 0.985203]] -[[[244.0, 363.0], [281.0, 363.0], [281.0, 382.0], [244.0, 382.0]], ['泛服', 0.44537082]] -[[[367.0, 367.0], [475.0, 367.0], [475.0, 388.0], [367.0, 388.0]], ['(成品包材)', 0.9834532]] -[[[24.0, 395.0], [120.0, 395.0], [120.0, 416.0], [24.0, 416.0]], ['【主要功能】', 0.88684446]] -[[[128.0, 397.0], [273.0, 397.0], [273.0, 414.0], [128.0, 414.0]], [':可紧致头发磷层', 0.9342501]] -[[[265.0, 395.0], [361.0, 395.0], [361.0, 415.0], [265.0, 415.0]], ['琴,从而达到', 0.8253762]] -[[[25.0, 425.0], [372.0, 425.0], [372.0, 448.0], [25.0, 448.0]], ['即时持久改善头发光泽的效果,给干燥的头', 0.97785276]] -[[[26.0, 457.0], [137.0, 457.0], [137.0, 477.0], [26.0, 477.0]], ['发足够的滋养', 0.9577897]] +...... ``` * 单独执行检测 @@ -187,29 +121,7 @@ paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg --rec false [[26.0, 457.0], [137.0, 457.0], [137.0, 477.0], [26.0, 477.0]] [[25.0, 425.0], [372.0, 425.0], [372.0, 448.0], [25.0, 448.0]] [[128.0, 397.0], [273.0, 397.0], [273.0, 414.0], [128.0, 414.0]] -[[265.0, 395.0], [361.0, 395.0], [361.0, 415.0], [265.0, 415.0]] -[[24.0, 395.0], [120.0, 395.0], [120.0, 416.0], [24.0, 416.0]] -[[367.0, 367.0], [475.0, 367.0], [475.0, 388.0], [367.0, 388.0]] -[[54.0, 363.0], [232.0, 363.0], [232.0, 383.0], [54.0, 383.0]] -[[25.0, 364.0], [64.0, 364.0], [64.0, 383.0], [25.0, 383.0]] -[[244.0, 363.0], [281.0, 363.0], [281.0, 382.0], [244.0, 382.0]] -[[248.0, 332.0], [345.0, 332.0], [345.0, 352.0], [248.0, 352.0]] -[[139.0, 332.0], [236.0, 332.0], [236.0, 352.0], [139.0, 352.0]] -[[24.0, 332.0], [117.0, 332.0], [117.0, 353.0], [24.0, 353.0]] -[[127.0, 300.0], [254.0, 300.0], [254.0, 323.0], [127.0, 323.0]] -[[24.0, 301.0], [118.0, 301.0], [118.0, 321.0], [24.0, 321.0]] -[[23.0, 268.0], [183.0, 268.0], [183.0, 292.0], [23.0, 292.0]] -[[110.0, 239.0], [239.0, 239.0], [239.0, 256.0], [110.0, 256.0]] -[[23.0, 236.0], [121.0, 236.0], [121.0, 261.0], [23.0, 261.0]] -[[414.0, 233.0], [430.0, 233.0], [430.0, 304.0], [414.0, 304.0]] -[[88.0, 204.0], [235.0, 206.0], [235.0, 229.0], [88.0, 227.0]] -[[23.0, 205.0], [85.0, 205.0], [85.0, 229.0], [23.0, 229.0]] -[[89.0, 176.0], [301.0, 176.0], [301.0, 196.0], [89.0, 196.0]] -[[22.0, 174.0], [85.0, 174.0], [85.0, 198.0], [22.0, 198.0]] -[[22.0, 140.0], [284.0, 140.0], [284.0, 167.0], [22.0, 167.0]] -[[24.0, 109.0], [333.0, 109.0], [333.0, 136.0], [24.0, 136.0]] -[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]] -[[24.0, 36.0], [304.0, 34.0], [304.0, 72.0], [24.0, 74.0]] +...... ``` * 单独执行识别 @@ -230,7 +142,7 @@ paddleocr --image_dir PaddleOCR/doc/imgs_words/ch/word_1.jpg --det false | gpu_mem | 初始化占用的GPU内存大小 | 8000M | | image_dir | 通过命令行调用时执行预测的图片或文件夹路径 | | | det_algorithm | 使用的检测算法类型 | DB | -| det_model_name | 有两种使用方式: 1. 检测算法名称,此名称必须在支持列表内(目前只内置了ch_det_mv3_db),传入错误参数时会显示支持的列表 2. 自己转换好的inference模型路径,此时模型路径下必须包含model和params文件。选择此方式时,需要手动指定det_algorithm的值 | ch_det_mv3_db | +| det_model_dir | 检测模型所在文件夹。传参方式有两种,1. None: 自动下载内置模型到 `~/.paddleocr/det`;2.自己转换好的inference模型路径,模型路径下必须包含model和params文件 | None | | det_max_side_len | 检测算法前向时图片长边的最大尺寸,当长边超出这个值时会将长边resize到这个大小,短边等比例缩放 | 960 | | det_db_thresh | DB模型输出预测图的二值化阈值 | 0.3 | | det_db_box_thresh | DB模型输出框的阈值,低于此值的预测框会被丢弃 | 0.5 | @@ -239,13 +151,13 @@ paddleocr --image_dir PaddleOCR/doc/imgs_words/ch/word_1.jpg --det false | det_east_cover_thresh | EAST模型输出框的阈值,低于此值的预测框会被丢弃 | 0.1 | | det_east_nms_thresh | EAST模型输出框NMS的阈值 | 0.2 | | rec_algorithm | 使用的识别算法类型 | CRNN | -| rec_model_name | 有两种使用方式: 1. 识别算法名称,此名称必须在支持列表内(目前支持CRNN,Rosetta,STAR,RARE等算法,但是内置的只有ch_rec_mv3_crnn_enhance),传入错误参数时会显示支持的列表 2. 自己转换好的inference模型路径,此时模型路径下必须包含model和params文件。选择此方式时,需要手动指定rec_algorithm的值 | ch_rec_mv3_crnn_enhance | +| rec_model_dir | 识别模型所在文件夹。传承那方式有两种,1. None: 自动下载内置模型到 `~/.paddleocr/rec`;2.自己转换好的inference模型路径,模型路径下必须包含model和params文件 | None | | rec_image_shape | 识别算法的输入图片尺寸 | "3,32,320" | | rec_char_type | 识别算法的字符类型,中文(ch)或英文(en) | ch | | rec_batch_num | 进行识别时,同时前向的图片数 | 30 | -| rec_char_dict_path | 识别模型字典路径,当rec_model_name使用方式2传参时需要修改为自己的路径 | | +| max_text_length | 识别算法能识别的最大文字长度 | 25 | +| rec_char_dict_path | 识别模型字典路径,当rec_model_dir使用方式2传参时需要修改为自己的字典路径 | ./ppocr/utils/ppocr_keys_v1.txt | | use_space_char | 是否识别空格 | TRUE | | enable_mkldnn | 是否启用mkldnn | FALSE | -| model_storage_directory | 下载模型保存路径 | ~/.paddleocr | | det | 前向时使用启动检测 | TRUE | | rec | 前向时是否启动识别 | TRUE | diff --git a/doc/doc_en/whl.md b/doc/doc_en/whl.md index e073e8e3..2edf2037 100644 --- a/doc/doc_en/whl.md +++ b/doc/doc_en/whl.md @@ -17,7 +17,7 @@ pip install dist/paddleocr-0.0.3-py3-none-any.whl * detection and recognition ```python from paddleocr import PaddleOCR,draw_ocr -ocr = PaddleOCR(model_storage_directory='./model') # need to run only once to load model into memory +ocr = PaddleOCR() # need to run only once to download and load model into memory img_path = 'PaddleOCR/doc/imgs_en/img_12.jpg' result = ocr.ocr(img_path) for line in result: @@ -39,18 +39,7 @@ Output will be a list, each item contains bounding box, text and recognition con [[[442.0, 173.0], [1169.0, 173.0], [1169.0, 225.0], [442.0, 225.0]], ['ACKNOWLEDGEMENTS', 0.99283075]] [[[393.0, 340.0], [1207.0, 342.0], [1207.0, 389.0], [393.0, 387.0]], ['We would like to thank all the designers and', 0.9357758]] [[[399.0, 398.0], [1204.0, 398.0], [1204.0, 433.0], [399.0, 433.0]], ['contributors whohave been involved in the', 0.9592447]] -[[[395.0, 443.0], [1211.0, 443.0], [1211.0, 489.0], [395.0, 489.0]], ['production of this book;their contributions', 0.9713175]] -[[[395.0, 497.0], [1209.0, 495.0], [1209.0, 531.0], [395.0, 533.0]], ['have been indispensable to its creation.We', 0.96009934]] -[[[393.0, 545.0], [1212.0, 545.0], [1212.0, 591.0], [393.0, 591.0]], ['would also like to express our gratitude to al', 0.9371007]] -[[[393.0, 595.0], [1212.0, 593.0], [1212.0, 635.0], [393.0, 637.0]], ['the producers for their invaluable opinions', 0.96872145]] -[[[393.0, 645.0], [1209.0, 645.0], [1209.0, 685.0], [393.0, 685.0]], ['and assistance throughout this proiect.Andto', 0.94448787]] -[[[392.0, 697.0], [1212.0, 693.0], [1212.0, 735.0], [392.0, 739.0]], ['the many others whose names are not credited', 0.93633145]] -[[[397.0, 753.0], [689.0, 755.0], [689.0, 786.0], [397.0, 784.0]], ['buthavemades', 0.99324507]] -[[[813.0, 749.0], [1212.0, 747.0], [1212.0, 784.0], [813.0, 786.0]], ['inputin this book, we', 0.9166398]] -[[[675.0, 760.0], [799.0, 755.0], [799.0, 778.0], [675.0, 784.0]], ['speciti', 0.9063535]] -[[[393.0, 801.0], [715.0, 805.0], [715.0, 839.0], [393.0, 836.0]], ['thankyouforyoul', 0.92475533]] -[[[756.0, 812.0], [805.0, 812.0], [805.0, 830.0], [756.0, 830.0]], ['P', 0.14887337]] -[[[820.0, 803.0], [1085.0, 801.0], [1085.0, 836.0], [820.0, 838.0]], ['nuoussupport', 0.9898951]] +...... ``` Visualization of results @@ -62,7 +51,7 @@ Visualization of results * only detection ```python from paddleocr import PaddleOCR,draw_ocr -ocr = PaddleOCR(model_storage_directory='./model') # need to run only once to load model into memory +ocr = PaddleOCR() # need to run only once to download and load model into memory img_path = 'PaddleOCR/doc/imgs_en/img_12.jpg' result = ocr.ocr(img_path,rec=False) for line in result: @@ -82,18 +71,7 @@ Output will be a list, each item only contains bounding box [[756.0, 812.0], [805.0, 812.0], [805.0, 830.0], [756.0, 830.0]] [[820.0, 803.0], [1085.0, 801.0], [1085.0, 836.0], [820.0, 838.0]] [[393.0, 801.0], [715.0, 805.0], [715.0, 839.0], [393.0, 836.0]] -[[675.0, 760.0], [799.0, 755.0], [799.0, 778.0], [675.0, 784.0]] -[[397.0, 753.0], [689.0, 755.0], [689.0, 786.0], [397.0, 784.0]] -[[813.0, 749.0], [1212.0, 747.0], [1212.0, 784.0], [813.0, 786.0]] -[[392.0, 697.0], [1212.0, 693.0], [1212.0, 735.0], [392.0, 739.0]] -[[393.0, 645.0], [1209.0, 645.0], [1209.0, 685.0], [393.0, 685.0]] -[[393.0, 595.0], [1212.0, 593.0], [1212.0, 635.0], [393.0, 637.0]] -[[393.0, 545.0], [1212.0, 545.0], [1212.0, 591.0], [393.0, 591.0]] -[[395.0, 497.0], [1209.0, 495.0], [1209.0, 531.0], [395.0, 533.0]] -[[395.0, 443.0], [1211.0, 443.0], [1211.0, 489.0], [395.0, 489.0]] -[[399.0, 398.0], [1204.0, 398.0], [1204.0, 433.0], [399.0, 433.0]] -[[393.0, 340.0], [1207.0, 342.0], [1207.0, 389.0], [393.0, 387.0]] -[[442.0, 173.0], [1169.0, 173.0], [1169.0, 225.0], [442.0, 225.0]] +...... ``` Visualization of results @@ -105,7 +83,7 @@ Visualization of results * only recognition ```python from paddleocr import PaddleOCR -ocr = PaddleOCR(model_storage_directory='./model') # need to run only once to load model into memory +ocr = PaddleOCR() # need to run only once to load model into memory img_path = 'PaddleOCR/doc/imgs_words_en/word_10.png' result = ocr.ocr(img_path,det=False) for line in result: @@ -134,18 +112,7 @@ Output will be a list, each item contains bounding box, text and recognition con [[[442.0, 173.0], [1169.0, 173.0], [1169.0, 225.0], [442.0, 225.0]], ['ACKNOWLEDGEMENTS', 0.99283075]] [[[393.0, 340.0], [1207.0, 342.0], [1207.0, 389.0], [393.0, 387.0]], ['We would like to thank all the designers and', 0.9357758]] [[[399.0, 398.0], [1204.0, 398.0], [1204.0, 433.0], [399.0, 433.0]], ['contributors whohave been involved in the', 0.9592447]] -[[[395.0, 443.0], [1211.0, 443.0], [1211.0, 489.0], [395.0, 489.0]], ['production of this book;their contributions', 0.9713175]] -[[[395.0, 497.0], [1209.0, 495.0], [1209.0, 531.0], [395.0, 533.0]], ['have been indispensable to its creation.We', 0.96009934]] -[[[393.0, 545.0], [1212.0, 545.0], [1212.0, 591.0], [393.0, 591.0]], ['would also like to express our gratitude to al', 0.9371007]] -[[[393.0, 595.0], [1212.0, 593.0], [1212.0, 635.0], [393.0, 637.0]], ['the producers for their invaluable opinions', 0.96872145]] -[[[393.0, 645.0], [1209.0, 645.0], [1209.0, 685.0], [393.0, 685.0]], ['and assistance throughout this proiect.Andto', 0.94448787]] -[[[392.0, 697.0], [1212.0, 693.0], [1212.0, 735.0], [392.0, 739.0]], ['the many others whose names are not credited', 0.93633145]] -[[[397.0, 753.0], [689.0, 755.0], [689.0, 786.0], [397.0, 784.0]], ['buthavemades', 0.99324507]] -[[[813.0, 749.0], [1212.0, 747.0], [1212.0, 784.0], [813.0, 786.0]], ['inputin this book, we', 0.9166398]] -[[[675.0, 760.0], [799.0, 755.0], [799.0, 778.0], [675.0, 784.0]], ['speciti', 0.9063535]] -[[[393.0, 801.0], [715.0, 805.0], [715.0, 839.0], [393.0, 836.0]], ['thankyouforyoul', 0.92475533]] -[[[756.0, 812.0], [805.0, 812.0], [805.0, 830.0], [756.0, 830.0]], ['P', 0.14887337]] -[[[820.0, 803.0], [1085.0, 801.0], [1085.0, 836.0], [820.0, 838.0]], ['nuoussupport', 0.9898951]] +...... ``` * only detection @@ -158,18 +125,7 @@ Output will be a list, each item only contains bounding box [[756.0, 812.0], [805.0, 812.0], [805.0, 830.0], [756.0, 830.0]] [[820.0, 803.0], [1085.0, 801.0], [1085.0, 836.0], [820.0, 838.0]] [[393.0, 801.0], [715.0, 805.0], [715.0, 839.0], [393.0, 836.0]] -[[675.0, 760.0], [799.0, 755.0], [799.0, 778.0], [675.0, 784.0]] -[[397.0, 753.0], [689.0, 755.0], [689.0, 786.0], [397.0, 784.0]] -[[813.0, 749.0], [1212.0, 747.0], [1212.0, 784.0], [813.0, 786.0]] -[[392.0, 697.0], [1212.0, 693.0], [1212.0, 735.0], [392.0, 739.0]] -[[393.0, 645.0], [1209.0, 645.0], [1209.0, 685.0], [393.0, 685.0]] -[[393.0, 595.0], [1212.0, 593.0], [1212.0, 635.0], [393.0, 637.0]] -[[393.0, 545.0], [1212.0, 545.0], [1212.0, 591.0], [393.0, 591.0]] -[[395.0, 497.0], [1209.0, 495.0], [1209.0, 531.0], [395.0, 533.0]] -[[395.0, 443.0], [1211.0, 443.0], [1211.0, 489.0], [395.0, 489.0]] -[[399.0, 398.0], [1204.0, 398.0], [1204.0, 433.0], [399.0, 433.0]] -[[393.0, 340.0], [1207.0, 342.0], [1207.0, 389.0], [393.0, 387.0]] -[[442.0, 173.0], [1169.0, 173.0], [1169.0, 225.0], [442.0, 225.0]] +...... ``` * only recognition @@ -190,7 +146,7 @@ Output will be a list, each item contains text and recognition confidence | gpu_mem | GPU memory size used for initialization | 8000M | | image_dir | The images path or folder path for predicting when used by the command line | | | det_algorithm | Type of detection algorithm selected | DB | -| det_model_name | There are two ways to use: 1. The name of the detection algorithm which must be in the support list(only ch_det_mv3_db is built in currently), and the supported list will be displayed when the wrong parameter is passed in. 2. The path of the inference model that has been converted by yourself. At this time, the model path must contains model and params files. When choosing this method, you need to give the name of det_algorithm | ch_det_mv3_db | +| det_model_dir | the text detection inference model folder. There are two ways to transfer parameters, 1. None: Automatically download the built-in model to `~/.paddleocr/det`; 2. The path of the inference model converted by yourself, the model and params files must be included in the model path | None | | det_max_side_len | The maximum size of the long side of the image. When the long side exceeds this value, the long side will be resized to this size, and the short side will be scaled proportionally | 960 | | det_db_thresh | Binarization threshold value of DB output map | 0.3 | | det_db_box_thresh | The threshold value of the DB output box. Boxes score lower than this value will be discarded | 0.5 | @@ -199,13 +155,13 @@ Output will be a list, each item contains text and recognition confidence | det_east_cover_thresh | The threshold value of the EAST output box. Boxes score lower than this value will be discarded | 0.1 | | det_east_nms_thresh | The NMS threshold value of EAST model output box | 0.2 | | rec_algorithm | Type of recognition algorithm selected | CRNN | -| rec_model_name | There are two ways to use: 1. The name of the recognition algorithm which must be in the support list(only supports CRNN, Rosetta, STAR, RARE and other algorithms currently, but only ch_rec_mv3_crnn_enhance is built-in), and the supported list will be displayed when the wrong parameter is passed in. 2. The path of the inference model that has been converted by yourself. At this time, the model path must contains model and params files. When choosing this method, you need to give the name of rec_algorithm | ch_rec_mv3_crnn_enhance | +| rec_model_dir | the text recognition inference model folder. There are two ways to transfer parameters, 1. None: Automatically download the built-in model to `~/.paddleocr/rec`; 2. The path of the inference model converted by yourself, the model and params files must be included in the model path | None | | rec_image_shape | image shape of recognition algorithm | "3,32,320" | | rec_char_type | Character type of recognition algorithm, Chinese (ch) or English (en) | ch | | rec_batch_num | When performing recognition, the batchsize of forward images | 30 | -| rec_char_dict_path | the alphabet path which needs to be modified to your own path when `rec_model_Name` use mode 2 | | +| max_text_length | The maximum text length that the recognition algorithm can recognize | 25 | +| rec_char_dict_path | the alphabet path which needs to be modified to your own path when `rec_model_Name` use mode 2 | ./ppocr/utils/ppocr_keys_v1.txt | | use_space_char | Whether to recognize spaces | TRUE | | enable_mkldnn | Whether to enable mkldnn | FALSE | -| model_storage_directory | Download model save path when det_model_name or rec_model_name use mode 1 | ~/.paddleocr | | det | Enable detction when `ppocr.ocr` func exec | TRUE | | rec | Enable detction when `ppocr.ocr` func exec | TRUE | From c581ff51a8c22c10ae7e98abff318ea09613f6a0 Mon Sep 17 00:00:00 2001 From: WenmuZhou Date: Mon, 24 Aug 2020 11:30:56 +0800 Subject: [PATCH 39/70] =?UTF-8?q?model=5Fstorage=5Fdirectory=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E5=8F=96=E6=B6=88=EF=BC=8C=E6=94=B9=E4=B8=BAdet=5Fmod?= =?UTF-8?q?el=5Fdir=E5=92=8Crec=5Fmodel=5Fdir?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- paddleocr.py | 133 ++++++++++++++++++++++----------------------------- 1 file changed, 57 insertions(+), 76 deletions(-) diff --git a/paddleocr.py b/paddleocr.py index 3c356bb3..65bca7ae 100644 --- a/paddleocr.py +++ b/paddleocr.py @@ -29,25 +29,19 @@ from tools.infer import predict_system from ppocr.utils.utility import initial_logger logger = initial_logger() -from ppocr.utils.utility import check_and_read_gif +from ppocr.utils.utility import check_and_read_gif, get_image_file_list __all__ = ['PaddleOCR'] model_params = { - 'ch_det_mv3_db': { - 'url': - 'https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db_infer.tar', - 'algorithm': 'DB', - }, - 'ch_rec_mv3_crnn_enhance': { - 'url': - 'https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance_infer.tar', - 'algorithm': 'CRNN' - }, + 'det': 'https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db_infer.tar', + 'rec': + 'https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance_infer.tar', } SUPPORT_DET_MODEL = ['DB'] -SUPPORT_REC_MODEL = ['Rosetta', 'CRNN', 'STARNet', 'RARE'] +SUPPORT_REC_MODEL = ['CRNN'] +BASE_DIR = os.path.expanduser("~/.paddleocr/") def download_with_progressbar(url, save_path): @@ -65,34 +59,29 @@ def download_with_progressbar(url, save_path): sys.exit(0) -def download_and_unzip(url, model_storage_directory): - tmp_path = os.path.join(model_storage_directory, url.split('/')[-1]) - print('download {} to {}'.format(url, tmp_path)) - os.makedirs(model_storage_directory, exist_ok=True) - download_with_progressbar(url, tmp_path) - with tarfile.open(tmp_path, 'r') as tarObj: - for filename in tarObj.getnames(): - tarObj.extract(filename, model_storage_directory) - os.remove(tmp_path) - - -def maybe_download(model_storage_directory, model_name, mode='det'): - algorithm = None +def maybe_download(model_storage_directory, url): # using custom model - if os.path.exists(os.path.join(model_name, 'model')) and os.path.exists( - os.path.join(model_name, 'params')): - return model_name, algorithm - # using the model of paddleocr - model_path = os.path.join(model_storage_directory, model_name) - if not os.path.exists(os.path.join(model_path, - 'model')) or not os.path.exists( - os.path.join(model_path, 'params')): - assert model_name in model_params, 'model must in {}'.format( - model_params.keys()) - download_and_unzip(model_params[model_name]['url'], - model_storage_directory) - algorithm = model_params[model_name]['algorithm'] - return model_path, algorithm + if not os.path.exists(os.path.join( + model_storage_directory, 'model')) or not os.path.exists( + os.path.join(model_storage_directory, 'params')): + tmp_path = os.path.join(model_storage_directory, url.split('/')[-1]) + print('download {} to {}'.format(url, tmp_path)) + os.makedirs(model_storage_directory, exist_ok=True) + download_with_progressbar(url, tmp_path) + with tarfile.open(tmp_path, 'r') as tarObj: + for member in tarObj.getmembers(): + if "model" in member.name: + filename = 'model' + elif "params" in member.name: + filename = 'params' + else: + continue + file = tarObj.extractfile(member) + with open( + os.path.join(model_storage_directory, filename), + 'wb') as f: + f.write(file.read()) + os.remove(tmp_path) def parse_args(): @@ -111,7 +100,7 @@ def parse_args(): # params for text detector parser.add_argument("--image_dir", type=str) parser.add_argument("--det_algorithm", type=str, default='DB') - parser.add_argument("--det_model_name", type=str, default='ch_det_mv3_db') + parser.add_argument("--det_model_dir", type=str, default=None) parser.add_argument("--det_max_side_len", type=float, default=960) # DB parmas @@ -126,11 +115,11 @@ def parse_args(): # params for text recognizer parser.add_argument("--rec_algorithm", type=str, default='CRNN') - parser.add_argument( - "--rec_model_name", type=str, default='ch_rec_mv3_crnn_enhance') + parser.add_argument("--rec_model_dir", type=str, default=None) parser.add_argument("--rec_image_shape", type=str, default="3, 32, 320") parser.add_argument("--rec_char_type", type=str, default='ch') parser.add_argument("--rec_batch_num", type=int, default=30) + parser.add_argument("--max_text_length", type=int, default=25) parser.add_argument( "--rec_char_dict_path", type=str, @@ -138,53 +127,30 @@ def parse_args(): parser.add_argument("--use_space_char", type=bool, default=True) parser.add_argument("--enable_mkldnn", type=bool, default=False) - parser.add_argument("--model_storage_directory", type=str, default=False) parser.add_argument("--det", type=str2bool, default=True) parser.add_argument("--rec", type=str2bool, default=True) return parser.parse_args() class PaddleOCR(predict_system.TextSystem): - def __init__(self, - det_model_name='ch_det_mv3_db', - rec_model_name='ch_rec_mv3_crnn_enhance', - model_storage_directory=None, - log_level=20, - **kwargs): + def __init__(self, **kwargs): """ paddleocr package args: - det_model_name: det_model name, keep same with filename in paddleocr. default is ch_det_mv3_db - det_model_name: rec_model name, keep same with filename in paddleocr. default is ch_rec_mv3_crnn_enhance - model_storage_directory: model save path. default is ~/.paddleocr - det model will save to model_storage_directory/det_model - rec model will save to model_storage_directory/rec_model - log_level: **kwargs: other params show in paddleocr --help """ - logger.setLevel(log_level) postprocess_params = parse_args() - # init model dir - if model_storage_directory: - self.model_storage_directory = model_storage_directory - else: - self.model_storage_directory = os.path.expanduser( - "~/.paddleocr/") + '/model' - Path(self.model_storage_directory).mkdir(parents=True, exist_ok=True) - - # download model - det_model_path, det_algorithm = maybe_download( - self.model_storage_directory, det_model_name, 'det') - rec_model_path, rec_algorithm = maybe_download( - self.model_storage_directory, rec_model_name, 'rec') - # update model and post_process params postprocess_params.__dict__.update(**kwargs) - postprocess_params.det_model_dir = det_model_path - postprocess_params.rec_model_dir = rec_model_path - if det_algorithm is not None: - postprocess_params.det_algorithm = det_algorithm - if rec_algorithm is not None: - postprocess_params.rec_algorithm = rec_algorithm + + # init model dir + if postprocess_params.det_model_dir is None: + postprocess_params.det_model_dir = os.path.join(BASE_DIR, 'det') + if postprocess_params.rec_model_dir is None: + postprocess_params.rec_model_dir = os.path.join(BASE_DIR, 'rec') + print(postprocess_params) + # download model + maybe_download(postprocess_params.det_model_dir, model_params['det']) + maybe_download(postprocess_params.rec_model_dir, model_params['rec']) if postprocess_params.det_algorithm not in SUPPORT_DET_MODEL: logger.error('det_algorithm must in {}'.format(SUPPORT_DET_MODEL)) @@ -229,3 +195,18 @@ class PaddleOCR(predict_system.TextSystem): img = [img] rec_res, elapse = self.text_recognizer(img) return rec_res + + +def main(): + # for com + args = parse_args() + image_file_list = get_image_file_list(args.image_dir) + if len(image_file_list) == 0: + logger.error('no images find in {}'.format(args.image_dir)) + return + ocr_engine = PaddleOCR() + for img_path in image_file_list: + print(img_path) + result = ocr_engine.ocr(img_path, det=args.det, rec=args.rec) + for line in result: + print(line) From 8346621bcf73a659f9aa4b6dadcc3796758f1629 Mon Sep 17 00:00:00 2001 From: WenmuZhou Date: Mon, 24 Aug 2020 16:25:36 +0800 Subject: [PATCH 40/70] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=A8=A1=E5=9E=8B=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/doc_ch/whl.md | 31 +++++++++++++++++++++++++++++++ doc/doc_en/{whl.md => whl_en.md} | 32 ++++++++++++++++++++++++++++++++ setup.py | 2 +- 3 files changed, 64 insertions(+), 1 deletion(-) rename doc/doc_en/{whl.md => whl_en.md} (91%) diff --git a/doc/doc_ch/whl.md b/doc/doc_ch/whl.md index 1328f8c5..9df1791d 100644 --- a/doc/doc_ch/whl.md +++ b/doc/doc_ch/whl.md @@ -134,6 +134,37 @@ paddleocr --image_dir PaddleOCR/doc/imgs_words/ch/word_1.jpg --det false ['韩国小馆', 0.9907421] ``` +## 自定义模型 +当内置模型无法满足需求时,需要使用到自己训练的模型。 +首先,参照[inference.md](./inference.md) 第一节转换将检测和识别模型转换为inference模型,然后按照如下方式使用 + +### 代码使用 +```python +from paddleocr import PaddleOCR, draw_ocr +# 检测模型和识别模型路径下必须含有model和params文件 +ocr = PaddleOCR(det_model_dir='your_det_model_dir',rec_model_dir='your_rec_model_dir') +img_path = 'PaddleOCR/doc/imgs/11.jpg' +result = ocr.ocr(img_path) +for line in result: + print(line) + +# 显示结果 +from PIL import Image +image = Image.open(img_path).convert('RGB') +boxes = [line[0] for line in result] +txts = [line[1][0] for line in result] +scores = [line[1][1] for line in result] +im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = Image.fromarray(im_show) +im_show.save('result.jpg') +``` + +### 通过命令行使用 + +```bash +paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg --det_model_dir your_det_model_dir --rec_model_dir your_rec_model_dir +``` + ## 参数说明 | 字段 | 说明 | 默认值 | diff --git a/doc/doc_en/whl.md b/doc/doc_en/whl_en.md similarity index 91% rename from doc/doc_en/whl.md rename to doc/doc_en/whl_en.md index 2edf2037..3e12a9b5 100644 --- a/doc/doc_en/whl.md +++ b/doc/doc_en/whl_en.md @@ -138,6 +138,38 @@ Output will be a list, each item contains text and recognition confidence ['PAIN', 0.990372] ``` +## Use custom model +When the built-in model cannot meet the needs, you need to use your own trained model. +First, refer to the first section of [inference_en.md](./inference_en.md) to convert your det and rec model to inference model, and then use it as follows + +### 1. Use by code + +```python +from paddleocr import PaddleOCR,draw_ocr +# The path of detection and recognition model must contain model and params files +ocr = PaddleOCR(det_model_dir='your_det_model_dir',rec_model_dir='your_rec_model_dir') +img_path = 'PaddleOCR/doc/imgs_en/img_12.jpg' +result = ocr.ocr(img_path) +for line in result: + print(line) + +# draw result +from PIL import Image +image = Image.open(img_path).convert('RGB') +boxes = [line[0] for line in result] +txts = [line[1][0] for line in result] +scores = [line[1][1] for line in result] +im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = Image.fromarray(im_show) +im_show.save('result.jpg') +``` + +### Use by command line + +```bash +paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg --det_model_dir your_det_model_dir --rec_model_dir your_rec_model_dir +``` + ## Parameter Description | Parameter | Description | Default value | diff --git a/setup.py b/setup.py index 28409139..7141f170 100644 --- a/setup.py +++ b/setup.py @@ -21,7 +21,7 @@ with open('requirments.txt', encoding="utf-8-sig") as f: def readme(): - with open('doc/doc_en/whl.md', encoding="utf-8-sig") as f: + with open('doc/doc_en/whl_en.md', encoding="utf-8-sig") as f: README = f.read() return README From bd32a9002128e65443c6834e205b7d9b13be0f97 Mon Sep 17 00:00:00 2001 From: WenmuZhou Date: Mon, 24 Aug 2020 16:59:43 +0800 Subject: [PATCH 41/70] =?UTF-8?q?=E8=B7=AF=E5=BE=84=E6=B7=BB=E5=8A=A0{}?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/doc_ch/whl.md | 4 ++-- doc/doc_en/whl_en.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/doc_ch/whl.md b/doc/doc_ch/whl.md index 9df1791d..280cc2f6 100644 --- a/doc/doc_ch/whl.md +++ b/doc/doc_ch/whl.md @@ -142,7 +142,7 @@ paddleocr --image_dir PaddleOCR/doc/imgs_words/ch/word_1.jpg --det false ```python from paddleocr import PaddleOCR, draw_ocr # 检测模型和识别模型路径下必须含有model和params文件 -ocr = PaddleOCR(det_model_dir='your_det_model_dir',rec_model_dir='your_rec_model_dir') +ocr = PaddleOCR(det_model_dir='{your_det_model_dir}',rec_model_dir='{your_rec_model_dir}') img_path = 'PaddleOCR/doc/imgs/11.jpg' result = ocr.ocr(img_path) for line in result: @@ -162,7 +162,7 @@ im_show.save('result.jpg') ### 通过命令行使用 ```bash -paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg --det_model_dir your_det_model_dir --rec_model_dir your_rec_model_dir +paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg --det_model_dir {your_det_model_dir} --rec_model_dir {your_rec_model_dir} ``` ## 参数说明 diff --git a/doc/doc_en/whl_en.md b/doc/doc_en/whl_en.md index 3e12a9b5..73ab78c1 100644 --- a/doc/doc_en/whl_en.md +++ b/doc/doc_en/whl_en.md @@ -147,7 +147,7 @@ First, refer to the first section of [inference_en.md](./inference_en.md) to con ```python from paddleocr import PaddleOCR,draw_ocr # The path of detection and recognition model must contain model and params files -ocr = PaddleOCR(det_model_dir='your_det_model_dir',rec_model_dir='your_rec_model_dir') +ocr = PaddleOCR(det_model_dir='{your_det_model_dir}',rec_model_dir='{your_rec_model_dir}å') img_path = 'PaddleOCR/doc/imgs_en/img_12.jpg' result = ocr.ocr(img_path) for line in result: @@ -167,7 +167,7 @@ im_show.save('result.jpg') ### Use by command line ```bash -paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg --det_model_dir your_det_model_dir --rec_model_dir your_rec_model_dir +paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg --det_model_dir {your_det_model_dir} --rec_model_dir {your_rec_model_dir} ``` ## Parameter Description From 9fea2df2cf5f48e2e9826ea3629c8fb2b62d7a9b Mon Sep 17 00:00:00 2001 From: dyning Date: Mon, 24 Aug 2020 20:53:20 +0800 Subject: [PATCH 42/70] Update update.md --- doc/doc_ch/update.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/doc_ch/update.md b/doc/doc_ch/update.md index 1cd77885..23a47df5 100644 --- a/doc/doc_ch/update.md +++ b/doc/doc_ch/update.md @@ -1,6 +1,8 @@ # 更新 +- 2020.8.24 支持通过whl包安装使用PaddleOCR,具体参考[Paddleocr Package使用说明](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/whl.md) +- 2020.8.21 更新8月18日B站直播课回放和PPT,课节2,易学易用的OCR工具大礼包,[获取地址](https://aistudio.baidu.com/aistudio/education/group/info/1519) - 2020.8.16 开源文本检测算法[SAST](https://arxiv.org/abs/1908.05498)和文本识别算法[SRN](https://arxiv.org/abs/2003.12294) -- 2020.7.23 发布7月21日B站直播课回放和PPT,PaddleOCR开源大礼包全面解读,[获取地址](https://aistudio.baidu.com/aistudio/course/introduce/1519) +- 2020.7.23 发布7月21日B站直播课回放和PPT,课节1,PaddleOCR开源大礼包全面解读,[获取地址](https://aistudio.baidu.com/aistudio/course/introduce/1519) - 2020.7.15 添加基于EasyEdge和Paddle-Lite的移动端DEMO,支持iOS和Android系统 - 2020.7.15 完善预测部署,添加基于C++预测引擎推理、服务化部署和端侧部署方案,以及超轻量级中文OCR模型预测耗时Benchmark - 2020.7.15 整理OCR相关数据集、常用数据标注以及合成工具 From 2783a688fafb743e1d7e5e0d71a1030aa0148285 Mon Sep 17 00:00:00 2001 From: dyning Date: Mon, 24 Aug 2020 20:54:18 +0800 Subject: [PATCH 43/70] Update README_cn.md --- README_cn.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README_cn.md b/README_cn.md index 10bcbc50..8bdcce62 100644 --- a/README_cn.md +++ b/README_cn.md @@ -4,11 +4,11 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力使用者训练出更好的模型,并应用落地。 **近期更新** +- 2020.8.24 支持通过whl包安装使用PaddleOCR,具体参考[Paddleocr Package使用说明](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/whl.md) +- 2020.8.21 更新8月18日B站直播课回放和PPT,课节2,易学易用的OCR工具大礼包,[获取地址](https://aistudio.baidu.com/aistudio/education/group/info/1519) - 2020.8.16 开源文本检测算法[SAST](https://arxiv.org/abs/1908.05498)和文本识别算法[SRN](https://arxiv.org/abs/2003.12294) -- 2020.7.23 发布7月21日B站直播课回放和PPT,PaddleOCR开源大礼包全面解读,[获取地址](https://aistudio.baidu.com/aistudio/course/introduce/1519) +- 2020.7.23 发布7月21日B站直播课回放和PPT,课节1,PaddleOCR开源大礼包全面解读,[获取地址](https://aistudio.baidu.com/aistudio/course/introduce/1519) - 2020.7.15 添加基于EasyEdge和Paddle-Lite的移动端DEMO,支持iOS和Android系统 -- 2020.7.15 完善预测部署,添加基于C++预测引擎推理、服务化部署和端侧部署方案,以及超轻量级中文OCR模型预测耗时Benchmark -- 2020.7.15 整理OCR相关数据集、常用数据标注以及合成工具 - [more](./doc/doc_ch/update.md) From 219cfe2251f4d5fc23f437cd3bb1c4fa7e8537e7 Mon Sep 17 00:00:00 2001 From: dyning Date: Mon, 24 Aug 2020 20:57:46 +0800 Subject: [PATCH 44/70] Update update_en.md --- doc/doc_en/update_en.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/doc_en/update_en.md b/doc/doc_en/update_en.md index dc839d89..5d858558 100644 --- a/doc/doc_en/update_en.md +++ b/doc/doc_en/update_en.md @@ -1,4 +1,5 @@ # RECENT UPDATES +- 2020.8.24 Support the use of PaddleOCR through whl package installation,pelease refer [Paddleocr Package](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/whl_en.md) - 2020.8.16 Release text detection algorithm [SAST](https://arxiv.org/abs/1908.05498) and text recognition algorithm [SRN](https://arxiv.org/abs/2003.12294) - 2020.7.23, Release the playback and PPT of live class on BiliBili station, PaddleOCR Introduction, [address](https://aistudio.baidu.com/aistudio/course/introduce/1519) - 2020.7.15, Add mobile App demo , support both iOS and Android ( based on easyedge and Paddle Lite) From d424243a5d11396634967782169a5a7b7b0b46fc Mon Sep 17 00:00:00 2001 From: dyning Date: Mon, 24 Aug 2020 20:58:40 +0800 Subject: [PATCH 45/70] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 08a27d8e..cbc091c4 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ English | [简体中文](README_cn.md) PaddleOCR aims to create rich, leading, and practical OCR tools that help users train better models and apply them into practice. **Recent updates** +- 2020.8.24 Support the use of PaddleOCR through whl package installation,pelease refer [Paddleocr Package](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/whl_en.md) - 2020.8.16, Release text detection algorithm [SAST](https://arxiv.org/abs/1908.05498) and text recognition algorithm [SRN](https://arxiv.org/abs/2003.12294) - 2020.7.23, Release the playback and PPT of live class on BiliBili station, PaddleOCR Introduction, [address](https://aistudio.baidu.com/aistudio/course/introduce/1519) - 2020.7.15, Add mobile App demo , support both iOS and Android ( based on easyedge and Paddle Lite) From c41a7b5477dd01d6d1048812b80c8c348de1c01e Mon Sep 17 00:00:00 2001 From: dyning Date: Mon, 24 Aug 2020 20:59:52 +0800 Subject: [PATCH 46/70] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cbc091c4..a9210072 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ English | [简体中文](README_cn.md) PaddleOCR aims to create rich, leading, and practical OCR tools that help users train better models and apply them into practice. **Recent updates** -- 2020.8.24 Support the use of PaddleOCR through whl package installation,pelease refer [Paddleocr Package](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/whl_en.md) +- 2020.8.24 Support the use of PaddleOCR through whl package installation,pelease refer [PaddleOCR Package](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/whl_en.md) - 2020.8.16, Release text detection algorithm [SAST](https://arxiv.org/abs/1908.05498) and text recognition algorithm [SRN](https://arxiv.org/abs/2003.12294) - 2020.7.23, Release the playback and PPT of live class on BiliBili station, PaddleOCR Introduction, [address](https://aistudio.baidu.com/aistudio/course/introduce/1519) - 2020.7.15, Add mobile App demo , support both iOS and Android ( based on easyedge and Paddle Lite) From 46c3c752d95da5aa8298c8b8be0b0224c6ada580 Mon Sep 17 00:00:00 2001 From: dyning Date: Mon, 24 Aug 2020 21:00:11 +0800 Subject: [PATCH 47/70] Update update_en.md --- doc/doc_en/update_en.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/doc_en/update_en.md b/doc/doc_en/update_en.md index 5d858558..ca050370 100644 --- a/doc/doc_en/update_en.md +++ b/doc/doc_en/update_en.md @@ -1,5 +1,5 @@ # RECENT UPDATES -- 2020.8.24 Support the use of PaddleOCR through whl package installation,pelease refer [Paddleocr Package](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/whl_en.md) +- 2020.8.24 Support the use of PaddleOCR through whl package installation,pelease refer [PaddleOCR Package](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/whl_en.md) - 2020.8.16 Release text detection algorithm [SAST](https://arxiv.org/abs/1908.05498) and text recognition algorithm [SRN](https://arxiv.org/abs/2003.12294) - 2020.7.23, Release the playback and PPT of live class on BiliBili station, PaddleOCR Introduction, [address](https://aistudio.baidu.com/aistudio/course/introduce/1519) - 2020.7.15, Add mobile App demo , support both iOS and Android ( based on easyedge and Paddle Lite) From 5ffe0988660513f2c35eb39e36fe95568ce70334 Mon Sep 17 00:00:00 2001 From: dyning Date: Tue, 25 Aug 2020 10:07:19 +0800 Subject: [PATCH 48/70] Update quickstart.md --- doc/doc_ch/quickstart.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/doc_ch/quickstart.md b/doc/doc_ch/quickstart.md index fead57f3..a85babce 100644 --- a/doc/doc_ch/quickstart.md +++ b/doc/doc_ch/quickstart.md @@ -5,6 +5,8 @@ 请先参考[快速安装](./installation.md)配置PaddleOCR运行环境。 +*注意:也可以通过 whl 包安装使用PaddleOCR,具体参考[Paddleocr Package使用说明](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/whl.md)* + ## 2.inference模型下载 |模型名称|模型简介|检测模型地址|识别模型地址|支持空格的识别模型地址| From 1252aee48d564c84922289fd7af85c45e788e6d9 Mon Sep 17 00:00:00 2001 From: dyning Date: Tue, 25 Aug 2020 10:07:50 +0800 Subject: [PATCH 49/70] Update quickstart.md --- doc/doc_ch/quickstart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/doc_ch/quickstart.md b/doc/doc_ch/quickstart.md index a85babce..701b50ed 100644 --- a/doc/doc_ch/quickstart.md +++ b/doc/doc_ch/quickstart.md @@ -5,7 +5,7 @@ 请先参考[快速安装](./installation.md)配置PaddleOCR运行环境。 -*注意:也可以通过 whl 包安装使用PaddleOCR,具体参考[Paddleocr Package使用说明](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/whl.md)* +*注意:也可以通过 whl 包安装使用PaddleOCR,具体参考[Paddleocr Package使用说明](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/whl.md)。* ## 2.inference模型下载 From 3d1b3980c9b1201618ef182c530fcb0be6bffc17 Mon Sep 17 00:00:00 2001 From: dyning Date: Tue, 25 Aug 2020 10:22:36 +0800 Subject: [PATCH 50/70] Update quickstart_en.md --- doc/doc_en/quickstart_en.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/doc_en/quickstart_en.md b/doc/doc_en/quickstart_en.md index bf22f22f..730bf369 100644 --- a/doc/doc_en/quickstart_en.md +++ b/doc/doc_en/quickstart_en.md @@ -5,6 +5,7 @@ Please refer to [quick installation](./installation_en.md) to configure the PaddleOCR operating environment. +* Note: Support the use of PaddleOCR through whl package installation,pelease refer [PaddleOCR Package](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/whl_en.md) * ## 2.inference models From fb9e47b262529386983edc21b33abfa16bbf06ac Mon Sep 17 00:00:00 2001 From: dyning Date: Tue, 25 Aug 2020 10:22:57 +0800 Subject: [PATCH 51/70] Update quickstart_en.md --- doc/doc_en/quickstart_en.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/doc_en/quickstart_en.md b/doc/doc_en/quickstart_en.md index 730bf369..d1fa1683 100644 --- a/doc/doc_en/quickstart_en.md +++ b/doc/doc_en/quickstart_en.md @@ -5,7 +5,7 @@ Please refer to [quick installation](./installation_en.md) to configure the PaddleOCR operating environment. -* Note: Support the use of PaddleOCR through whl package installation,pelease refer [PaddleOCR Package](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/whl_en.md) * +*Note: Support the use of PaddleOCR through whl package installation,pelease refer [PaddleOCR Package](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/whl_en.md)。* ## 2.inference models From 1b19050391ddb0a15873f1935649ce855f135db5 Mon Sep 17 00:00:00 2001 From: tink2123 Date: Tue, 25 Aug 2020 15:04:49 +0800 Subject: [PATCH 52/70] Adaptation of Chinese and r34/18 --- ppocr/data/rec/dataset_traversal.py | 48 ++++++++++++++------ ppocr/data/rec/img_tools.py | 12 +++-- ppocr/modeling/backbones/rec_resnet50_fpn.py | 17 +++++++ ppocr/utils/character.py | 8 ++-- tools/infer_rec.py | 4 +- 5 files changed, 64 insertions(+), 25 deletions(-) diff --git a/ppocr/data/rec/dataset_traversal.py b/ppocr/data/rec/dataset_traversal.py index ebee624a..67cbf9b5 100755 --- a/ppocr/data/rec/dataset_traversal.py +++ b/ppocr/data/rec/dataset_traversal.py @@ -214,6 +214,8 @@ class SimpleReader(object): self.mode = params['mode'] self.infer_img = params['infer_img'] self.use_tps = False + if "num_heads" in params: + self.num_heads = params['num_heads'] if "tps" in params: self.use_tps = True self.use_distort = False @@ -251,12 +253,19 @@ class SimpleReader(object): img = cv2.imread(single_img) if img.shape[-1] == 1 or len(list(img.shape)) == 2: img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) - norm_img = process_image( - img=img, - image_shape=self.image_shape, - char_ops=self.char_ops, - tps=self.use_tps, - infer_mode=True) + if self.loss_type == 'srn': + norm_img = process_image_srn( + img=img, + image_shape=self.image_shape, + num_heads=self.num_heads, + max_text_length=self.max_text_length) + else: + norm_img = process_image( + img=img, + image_shape=self.image_shape, + char_ops=self.char_ops, + tps=self.use_tps, + infer_mode=True) yield norm_img else: with open(self.label_file_path, "rb") as fin: @@ -286,14 +295,25 @@ class SimpleReader(object): img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) label = substr[1] - outs = process_image( - img=img, - image_shape=self.image_shape, - label=label, - char_ops=self.char_ops, - loss_type=self.loss_type, - max_text_length=self.max_text_length, - distort=self.use_distort) + if self.loss_type == "srn": + outs = process_image_srn( + img=img, + image_shape=self.image_shape, + num_heads=self.num_heads, + max_text_length=self.max_text_length, + label=label, + char_ops=self.char_ops, + loss_type=self.loss_type) + + else: + outs = process_image( + img=img, + image_shape=self.image_shape, + label=label, + char_ops=self.char_ops, + loss_type=self.loss_type, + max_text_length=self.max_text_length, + distort=self.use_distort) if outs is None: continue yield outs diff --git a/ppocr/data/rec/img_tools.py b/ppocr/data/rec/img_tools.py index 527e0266..8b497e6b 100755 --- a/ppocr/data/rec/img_tools.py +++ b/ppocr/data/rec/img_tools.py @@ -410,7 +410,8 @@ def resize_norm_img_srn(img, image_shape): def srn_other_inputs(image_shape, num_heads, - max_text_length): + max_text_length, + char_num): imgC, imgH, imgW = image_shape feature_dim = int((imgH / 8) * (imgW / 8)) @@ -418,7 +419,7 @@ def srn_other_inputs(image_shape, encoder_word_pos = np.array(range(0, feature_dim)).reshape((feature_dim, 1)).astype('int64') gsrm_word_pos = np.array(range(0, max_text_length)).reshape((max_text_length, 1)).astype('int64') - lbl_weight = np.array([37] * max_text_length).reshape((-1,1)).astype('int64') + lbl_weight = np.array([int(char_num-1)] * max_text_length).reshape((-1,1)).astype('int64') gsrm_attn_bias_data = np.ones((1, max_text_length, max_text_length)) gsrm_slf_attn_bias1 = np.triu(gsrm_attn_bias_data, 1).reshape([-1, 1, max_text_length, max_text_length]) @@ -441,17 +442,18 @@ def process_image_srn(img, loss_type=None): norm_img = resize_norm_img_srn(img, image_shape) norm_img = norm_img[np.newaxis, :] + char_num = char_ops.get_char_num() + [lbl_weight, encoder_word_pos, gsrm_word_pos, gsrm_slf_attn_bias1, gsrm_slf_attn_bias2] = \ - srn_other_inputs(image_shape, num_heads, max_text_length) + srn_other_inputs(image_shape, num_heads, max_text_length,char_num) if label is not None: - char_num = char_ops.get_char_num() text = char_ops.encode(label) if len(text) == 0 or len(text) > max_text_length: return None else: if loss_type == "srn": - text_padded = [37] * max_text_length + text_padded = [int(char_num-1)] * max_text_length for i in range(len(text)): text_padded[i] = text[i] lbl_weight[i] = [1.0] diff --git a/ppocr/modeling/backbones/rec_resnet50_fpn.py b/ppocr/modeling/backbones/rec_resnet50_fpn.py index f6d72377..a0aef487 100755 --- a/ppocr/modeling/backbones/rec_resnet50_fpn.py +++ b/ppocr/modeling/backbones/rec_resnet50_fpn.py @@ -81,6 +81,23 @@ class ResNet(): num_filters=num_filters[block], stride=stride_list[block] if i == 0 else 1, name=conv_name) F.append(conv) + else: + for block in range(len(depth)): + for i in range(depth[block]): + conv_name = "res" + str(block + 2) + chr(97 + i) + + if i == 0 and block != 0: + stride = (2, 1) + else: + stride = (1, 1) + + conv = self.basic_block( + input=conv, + num_filters=num_filters[block], + stride=stride, + if_first=block == i == 0, + name=conv_name) + F.append(conv) base = F[-1] for i in [-2, -3]: diff --git a/ppocr/utils/character.py b/ppocr/utils/character.py index c7c93fc5..b4b2021e 100755 --- a/ppocr/utils/character.py +++ b/ppocr/utils/character.py @@ -26,8 +26,6 @@ class CharacterOps(object): self.character_type = config['character_type'] self.loss_type = config['loss_type'] self.max_text_len = config['max_text_length'] - if self.loss_type == "srn" and self.character_type != "en": - raise Exception("SRN can only support in character_type == en") if self.character_type == "en": self.character_str = "0123456789abcdefghijklmnopqrstuvwxyz" dict_character = list(self.character_str) @@ -160,13 +158,15 @@ def cal_predicts_accuracy_srn(char_ops, acc_num = 0 img_num = 0 + char_num = char_ops.get_char_num() + total_len = preds.shape[0] img_num = int(total_len / max_text_len) for i in range(img_num): cur_label = [] cur_pred = [] for j in range(max_text_len): - if labels[j + i * max_text_len] != 37: #0 + if labels[j + i * max_text_len] != int(char_num-1): #0 cur_label.append(labels[j + i * max_text_len][0]) else: break @@ -178,7 +178,7 @@ def cal_predicts_accuracy_srn(char_ops, elif j == len(cur_label) and j == max_text_len: acc_num += 1 break - elif j == len(cur_label) and preds[j + i * max_text_len][0] == 37: + elif j == len(cur_label) and preds[j + i * max_text_len][0] == int(char_num-1): acc_num += 1 break acc = acc_num * 1.0 / img_num diff --git a/tools/infer_rec.py b/tools/infer_rec.py index 7a81b3d4..fd70cd66 100755 --- a/tools/infer_rec.py +++ b/tools/infer_rec.py @@ -140,12 +140,12 @@ def main(): preds = preds.reshape(-1) preds_text = char_ops.decode(preds) elif loss_type == "srn": - cur_pred = [] + char_num = char_ops.get_char_num() preds = np.array(predict[0]) preds = preds.reshape(-1) probs = np.array(predict[1]) ind = np.argmax(probs, axis=1) - valid_ind = np.where(preds != 37)[0] + valid_ind = np.where(preds != int(char_num-1))[0] if len(valid_ind) == 0: continue score = np.mean(probs[valid_ind, ind[valid_ind]]) From 97cfef3265f42ab98889e26bd398daf60a144480 Mon Sep 17 00:00:00 2001 From: tink2123 Date: Tue, 25 Aug 2020 15:06:31 +0800 Subject: [PATCH 53/70] format doc --- doc/doc_ch/FAQ.md | 2 +- doc/doc_en/FAQ_en.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index 752a4adb..c184135e 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -43,7 +43,7 @@ PaddleOCR已完成Windows和Mac系统适配,运行时注意两点:1、在[ 其中,公开数据集都是开源的,用户可自行搜索下载,也可参考[中文数据集](./datasets.md),合成数据暂不开源,用户可使用开源合成工具自行合成,可参考的合成工具包括[text_renderer](https://github.com/Sanster/text_renderer)、[SynthText](https://github.com/ankush-me/SynthText)、[TextRecognitionDataGenerator](https://github.com/Belval/TextRecognitionDataGenerator)等。 10. **使用带TPS的识别模型预测报错** -报错信息:Input(X) dims[3] and Input(Grid) dims[2] should be equal, but received X dimension[3](320) != Grid dimension[2](100) +报错信息:Input(X) dims[3] and Input(Grid) dims[2] should be equal, but received X dimension[3]\(320) != Grid dimension[2]\(100) 原因:TPS模块暂时无法支持变长的输入,请设置 --rec_image_shape='3,32,100' --rec_char_type='en' 固定输入shape 11. **自定义字典训练的模型,识别结果出现字典里没出现的字** diff --git a/doc/doc_en/FAQ_en.md b/doc/doc_en/FAQ_en.md index a89567f7..25777be7 100644 --- a/doc/doc_en/FAQ_en.md +++ b/doc/doc_en/FAQ_en.md @@ -45,7 +45,7 @@ At present, the open source model, dataset and magnitude are as follows: Among them, the public datasets are opensourced, users can search and download by themselves, or refer to [Chinese data set](./datasets_en.md), synthetic data is not opensourced, users can use open-source synthesis tools to synthesize data themselves. Current available synthesis tools include [text_renderer](https://github.com/Sanster/text_renderer), [SynthText](https://github.com/ankush-me/SynthText), [TextRecognitionDataGenerator](https://github.com/Belval/TextRecognitionDataGenerator), etc. 10. **Error in using the model with TPS module for prediction** -Error message: Input(X) dims[3] and Input(Grid) dims[2] should be equal, but received X dimension[3](108) != Grid dimension[2](100) +Error message: Input(X) dims[3] and Input(Grid) dims[2] should be equal, but received X dimension[3]\(108) != Grid dimension[2]\(100) Solution:TPS does not support variable shape. Please set --rec_image_shape='3,32,100' and --rec_char_type='en' 11. **Custom dictionary used during training, the recognition results show that words do not appear in the dictionary** From 8a78af26df0dd8f15b734cc8db13e25d2a3656a2 Mon Sep 17 00:00:00 2001 From: MissPenguin Date: Wed, 26 Aug 2020 05:01:51 +0000 Subject: [PATCH 54/70] fix hub serving parmas bug --- deploy/hubserving/ocr_det/params.py | 4 +++- deploy/hubserving/ocr_rec/params.py | 4 +++- deploy/hubserving/ocr_system/params.py | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/deploy/hubserving/ocr_det/params.py b/deploy/hubserving/ocr_det/params.py index 0b950114..e88ab45c 100644 --- a/deploy/hubserving/ocr_det/params.py +++ b/deploy/hubserving/ocr_det/params.py @@ -36,4 +36,6 @@ def read_params(): # cfg.rec_char_dict_path = "./ppocr/utils/ppocr_keys_v1.txt" # cfg.use_space_char = True - return cfg \ No newline at end of file + cfg.use_zero_copy_run = False + + return cfg diff --git a/deploy/hubserving/ocr_rec/params.py b/deploy/hubserving/ocr_rec/params.py index a6b2ee19..59772e21 100644 --- a/deploy/hubserving/ocr_rec/params.py +++ b/deploy/hubserving/ocr_rec/params.py @@ -38,4 +38,6 @@ def read_params(): cfg.rec_char_dict_path = "./ppocr/utils/ppocr_keys_v1.txt" cfg.use_space_char = True - return cfg \ No newline at end of file + cfg.use_zero_copy_run = False + + return cfg diff --git a/deploy/hubserving/ocr_system/params.py b/deploy/hubserving/ocr_system/params.py index 6ece2d6f..0ff56d37 100644 --- a/deploy/hubserving/ocr_system/params.py +++ b/deploy/hubserving/ocr_system/params.py @@ -38,4 +38,6 @@ def read_params(): cfg.rec_char_dict_path = "./ppocr/utils/ppocr_keys_v1.txt" cfg.use_space_char = True - return cfg \ No newline at end of file + cfg.use_zero_copy_run = False + + return cfg From c4a3ecdcb6e8ec93752e7b5fb9880de4cc50e414 Mon Sep 17 00:00:00 2001 From: grasswolfs Date: Wed, 26 Aug 2020 16:43:41 +0800 Subject: [PATCH 55/70] test=develop,test=document_fix --- README.md | 298 +++++++++++++--------------- README_cn.md | 228 ---------------------- README_en.md | 231 ++++++++++++++++++++++ doc/doc_ch/FAQ.md | 481 +++++++++++++++++++++++++++++++++++++++++++--- 4 files changed, 823 insertions(+), 415 deletions(-) delete mode 100644 README_cn.md create mode 100644 README_en.md diff --git a/README.md b/README.md index a9210072..4a290960 100644 --- a/README.md +++ b/README.md @@ -1,231 +1,209 @@ -English | [简体中文](README_cn.md) +[English](README_en.md) | 简体中文 -## Introduction -PaddleOCR aims to create rich, leading, and practical OCR tools that help users train better models and apply them into practice. +## 简介 +PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力使用者训练出更好的模型,并应用落地。 -**Recent updates** -- 2020.8.24 Support the use of PaddleOCR through whl package installation,pelease refer [PaddleOCR Package](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/whl_en.md) -- 2020.8.16, Release text detection algorithm [SAST](https://arxiv.org/abs/1908.05498) and text recognition algorithm [SRN](https://arxiv.org/abs/2003.12294) -- 2020.7.23, Release the playback and PPT of live class on BiliBili station, PaddleOCR Introduction, [address](https://aistudio.baidu.com/aistudio/course/introduce/1519) -- 2020.7.15, Add mobile App demo , support both iOS and Android ( based on easyedge and Paddle Lite) -- 2020.7.15, Improve the deployment ability, add the C + + inference , serving deployment. In addition, the benchmarks of the ultra-lightweight OCR model are provided. -- 2020.7.15, Add several related datasets, data annotation and synthesis tools. -- [more](./doc/doc_en/update_en.md) +**近期更新** +- 2020.8.26 更新OCR相关的83个常见问题及解答,具体参考[FAQ](./doc/doc_ch/FAQ.md) +- 2020.8.24 支持通过whl包安装使用PaddleOCR,具体参考[Paddleocr Package使用说明](./doc/doc_ch/whl.md) +- 2020.8.21 更新8月18日B站直播课回放和PPT,课节2,易学易用的OCR工具大礼包,[获取地址](https://aistudio.baidu.com/aistudio/education/group/info/1519) +- 2020.8.16 开源文本检测算法[SAST](https://arxiv.org/abs/1908.05498)和文本识别算法[SRN](https://arxiv.org/abs/2003.12294) +- 2020.7.23 发布7月21日B站直播课回放和PPT,课节1,PaddleOCR开源大礼包全面解读,[获取地址](https://aistudio.baidu.com/aistudio/course/introduce/1519) +- 2020.7.15 添加基于EasyEdge和Paddle-Lite的移动端DEMO,支持iOS和Android系统 +- [more](./doc/doc_ch/update.md) -## Features -- Ultra-lightweight OCR model, total model size is only 8.6M - - Single model supports Chinese/English numbers combination recognition, vertical text recognition, long text recognition - - Detection model DB (4.1M) + recognition model CRNN (4.5M) -- Various text detection algorithms: EAST, DB -- Various text recognition algorithms: Rosetta, CRNN, STAR-Net, RARE -- Support Linux, Windows, macOS and other systems. -## Visualization +## 特性 +- 超轻量级中文OCR模型,总模型仅8.6M + - 单模型支持中英文数字组合识别、竖排文本识别、长文本识别 + - 检测模型DB(4.1M)+识别模型CRNN(4.5M) +- 实用通用中文OCR模型 +- 多种预测推理部署方案,包括服务部署和端侧部署 +- 多种文本检测训练算法,EAST、DB、SAST +- 多种文本识别训练算法,Rosetta、CRNN、STAR-Net、RARE、SRN +- 可运行于Linux、Windows、MacOS等多种系统 -![](doc/imgs_results/11.jpg) +## 快速体验 -![](doc/imgs_results/img_10.jpg) +

-[More visualization](./doc/doc_en/visualization_en.md) +上图是超轻量级中文OCR模型效果展示,更多效果图请见[效果展示页面](./doc/doc_ch/visualization.md)。 -You can also quickly experience the ultra-lightweight OCR : [Online Experience](https://www.paddlepaddle.org.cn/hub/scene/ocr) +- 超轻量级中文OCR在线体验地址:https://www.paddlepaddle.org.cn/hub/scene/ocr +- 移动端DEMO体验(基于EasyEdge和Paddle-Lite, 支持iOS和Android系统):[安装包二维码获取地址](https://ai.baidu.com/easyedge/app/openSource?from=paddlelite) -Mobile DEMO experience (based on EasyEdge and Paddle-Lite, supports iOS and Android systems): [Sign in to the website to obtain the QR code for installing the App](https://ai.baidu.com/easyedge/app/openSource?from=paddlelite) - - Also, you can scan the QR code below to install the App (**Android support only**) + Android手机也可以扫描下面二维码安装体验。
-- [**OCR Quick Start**](./doc/doc_en/quickstart_en.md) -
+## 中文OCR模型列表 -### Supported Models: - -|Model Name|Description |Detection Model link|Recognition Model link| Support for space Recognition Model link| +|模型名称|模型简介|检测模型地址|识别模型地址|支持空格的识别模型地址| |-|-|-|-|-| -|db_crnn_mobile|ultra-lightweight OCR model|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db_infer.tar) / [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_infer.tar) / [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance_infer.tar) / [pre-train model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance.tar) -|db_crnn_server|General OCR model|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db_infer.tar) / [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_infer.tar) / [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_enhance_infer.tar) / [pre-train model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_enhance.tar) +|chinese_db_crnn_mobile|超轻量级中文OCR模型|[inference模型](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db_infer.tar) / [预训练模型](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db.tar)|[inference模型](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_infer.tar) / [预训练模型](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn.tar)|[inference模型](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance_infer.tar) / [预训练模型](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance.tar) +|chinese_db_crnn_server|通用中文OCR模型|[inference模型](https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db_infer.tar) / [预训练模型](https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db.tar)|[inference模型](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_infer.tar) / [预训练模型](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn.tar)|[inference模型](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_enhance_infer.tar) / [预训练模型](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_enhance.tar) +## 文档教程 +- [快速安装](./doc/doc_ch/installation.md) +- [中文OCR模型快速使用](./doc/doc_ch/quickstart.md) +- 算法介绍 + - [文本检测](#文本检测算法) + - [文本识别](#文本识别算法) +- 模型训练/评估 + - [文本检测](./doc/doc_ch/detection.md) + - [文本识别](./doc/doc_ch/recognition.md) + - [yml参数配置文件介绍](./doc/doc_ch/config.md) + - [中文OCR训练预测技巧](./doc/doc_ch/tricks.md) +- 预测部署 + - [基于Python预测引擎推理](./doc/doc_ch/inference.md) + - [基于C++预测引擎推理](./deploy/cpp_infer/readme.md) + - [服务化部署](./doc/doc_ch/serving.md) + - [端侧部署](./deploy/lite/readme.md) + - 模型量化压缩(coming soon) + - [Benchmark](./doc/doc_ch/benchmark.md) +- 数据集 + - [通用中英文OCR数据集](./doc/doc_ch/datasets.md) + - [手写中文OCR数据集](./doc/doc_ch/handwritten_datasets.md) + - [垂类多语言OCR数据集](./doc/doc_ch/vertical_and_multilingual_datasets.md) + - [常用数据标注工具](./doc/doc_ch/data_annotation.md) + - [常用数据合成工具](./doc/doc_ch/data_synthesis.md) +- 效果展示 + - [超轻量级中文OCR效果展示](#超轻量级中文OCR效果展示) + - [通用中文OCR效果展示](#通用中文OCR效果展示) + - [支持空格的中文OCR效果展示](#支持空格的中文OCR效果展示) +- FAQ + - [【精选】OCR精选10个问题](./doc/doc_ch/FAQ.md) + - [【理论篇】OCR通用21个问题](./doc/doc_ch/FAQ.md) + - [【实战篇】PaddleOCR实战53个问题](./doc/doc_ch/FAQ.md) +- [技术交流群](#欢迎加入PaddleOCR技术交流群) +- [参考文献](./doc/doc_ch/reference.md) +- [许可证书](#许可证书) +- [贡献代码](#贡献代码) -## Tutorials -- [Installation](./doc/doc_en/installation_en.md) -- [Quick Start](./doc/doc_en/quickstart_en.md) -- Algorithm introduction - - [Text Detection Algorithm](#TEXTDETECTIONALGORITHM) - - [Text Recognition Algorithm](#TEXTRECOGNITIONALGORITHM) - - [END-TO-END OCR Algorithm](#ENDENDOCRALGORITHM) -- Model training/evaluation - - [Text Detection](./doc/doc_en/detection_en.md) - - [Text Recognition](./doc/doc_en/recognition_en.md) - - [Yml Configuration](./doc/doc_en/config_en.md) - - [Tricks](./doc/doc_en/tricks_en.md) -- Deployment - - [Python Inference](./doc/doc_en/inference_en.md) - - [C++ Inference](./deploy/cpp_infer/readme_en.md) - - [Serving](./doc/doc_en/serving_en.md) - - [Mobile](./deploy/lite/readme_en.md) - - Model Quantization and Compression (coming soon) - - [Benchmark](./doc/doc_en/benchmark_en.md) -- Datasets - - [General OCR Datasets(Chinese/English)](./doc/doc_en/datasets_en.md) - - [HandWritten_OCR_Datasets(Chinese)](./doc/doc_en/handwritten_datasets_en.md) - - [Various OCR Datasets(multilingual)](./doc/doc_en/vertical_and_multilingual_datasets_en.md) - - [Data Annotation Tools](./doc/doc_en/data_annotation_en.md) - - [Data Synthesis Tools](./doc/doc_en/data_synthesis_en.md) -- [FAQ](#FAQ) -- Visualization - - [Ultra-lightweight Chinese/English OCR Visualization](#UCOCRVIS) - - [General Chinese/English OCR Visualization](#GeOCRVIS) - - [Chinese/English OCR Visualization (Support Space Recognition )](#SpaceOCRVIS) -- [Community](#Community) -- [References](./doc/doc_en/reference_en.md) -- [License](#LICENSE) -- [Contribution](#CONTRIBUTION) + +## 算法介绍 + +### 1.文本检测算法 - -## Text Detection Algorithm - -PaddleOCR open source text detection algorithms list: +PaddleOCR开源的文本检测算法列表: - [x] EAST([paper](https://arxiv.org/abs/1704.03155)) - [x] DB([paper](https://arxiv.org/abs/1911.08947)) -- [x] SAST([paper](https://arxiv.org/abs/1908.05498))(Baidu Self-Research) +- [x] SAST([paper](https://arxiv.org/abs/1908.05498))(百度自研) -On the ICDAR2015 dataset, the text detection result is as follows: +在ICDAR2015文本检测公开数据集上,算法效果如下: -|Model|Backbone|precision|recall|Hmean|Download link| +|模型|骨干网络|precision|recall|Hmean|下载链接| |-|-|-|-|-|-| -|EAST|ResNet50_vd|88.18%|85.51%|86.82%|[Download link](https://paddleocr.bj.bcebos.com/det_r50_vd_east.tar)| -|EAST|MobileNetV3|81.67%|79.83%|80.74%|[Download link](https://paddleocr.bj.bcebos.com/det_mv3_east.tar)| -|DB|ResNet50_vd|83.79%|80.65%|82.19%|[Download link](https://paddleocr.bj.bcebos.com/det_r50_vd_db.tar)| -|DB|MobileNetV3|75.92%|73.18%|74.53%|[Download link](https://paddleocr.bj.bcebos.com/det_mv3_db.tar)| -|SAST|ResNet50_vd|92.18%|82.96%|87.33%|[Download link](https://paddleocr.bj.bcebos.com/SAST/sast_r50_vd_icdar2015.tar)| +|EAST|ResNet50_vd|88.18%|85.51%|86.82%|[下载链接](https://paddleocr.bj.bcebos.com/det_r50_vd_east.tar)| +|EAST|MobileNetV3|81.67%|79.83%|80.74%|[下载链接](https://paddleocr.bj.bcebos.com/det_mv3_east.tar)| +|DB|ResNet50_vd|83.79%|80.65%|82.19%|[下载链接](https://paddleocr.bj.bcebos.com/det_r50_vd_db.tar)| +|DB|MobileNetV3|75.92%|73.18%|74.53%|[下载链接](https://paddleocr.bj.bcebos.com/det_mv3_db.tar)| +|SAST|ResNet50_vd|92.18%|82.96%|87.33%|[下载链接](https://paddleocr.bj.bcebos.com/SAST/sast_r50_vd_icdar2015.tar)| -On Total-Text dataset, the text detection result is as follows: +在Total-text文本检测公开数据集上,算法效果如下: -|Model|Backbone|precision|recall|Hmean|Download link| +|模型|骨干网络|precision|recall|Hmean|下载链接| |-|-|-|-|-|-| -|SAST|ResNet50_vd|88.74%|79.80%|84.03%|[Download link](https://paddleocr.bj.bcebos.com/SAST/sast_r50_vd_total_text.tar)| +|SAST|ResNet50_vd|88.74%|79.80%|84.03%|[下载链接](https://paddleocr.bj.bcebos.com/SAST/sast_r50_vd_total_text.tar)| -**Note:** Additional data, like icdar2013, icdar2017, COCO-Text, ArT, was added to the model training of SAST. Download English public dataset in organized format used by PaddleOCR from [Baidu Drive](https://pan.baidu.com/s/12cPnZcVuV1zn5DOd4mqjVw) (download code: 2bpi). +**说明:** SAST模型训练额外加入了icdar2013、icdar2017、COCO-Text、ArT等公开数据集进行调优。PaddleOCR用到的经过整理格式的英文公开数据集下载:[百度云地址](https://pan.baidu.com/s/12cPnZcVuV1zn5DOd4mqjVw) (提取码: 2bpi) -For use of [LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/datasets_en.md#1-icdar2019-lsvt) street view dataset with a total of 3w training data,the related configuration and pre-trained models for text detection task are as follows: -|Model|Backbone|Configuration file|Pre-trained model| + +使用[LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/datasets.md#1icdar2019-lsvt)街景数据集共3w张数据,训练中文检测模型的相关配置和预训练文件如下: + +|模型|骨干网络|配置文件|预训练模型| |-|-|-|-| -|ultra-lightweight OCR model|MobileNetV3|det_mv3_db.yml|[Download link](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db.tar)| -|General OCR model|ResNet50_vd|det_r50_vd_db.yml|[Download link](https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db.tar)| +|超轻量中文模型|MobileNetV3|det_mv3_db.yml|[下载链接](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db.tar)| +|通用中文OCR模型|ResNet50_vd|det_r50_vd_db.yml|[下载链接](https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db.tar)| -* Note: For the training and evaluation of the above DB model, post-processing parameters box_thresh=0.6 and unclip_ratio=1.5 need to be set. If using different datasets and different models for training, these two parameters can be adjusted for better result. +* 注: 上述DB模型的训练和评估,需设置后处理参数box_thresh=0.6,unclip_ratio=1.5,使用不同数据集、不同模型训练,可调整这两个参数进行优化 -For the training guide and use of PaddleOCR text detection algorithms, please refer to the document [Text detection model training/evaluation/prediction](./doc/doc_en/detection_en.md) +PaddleOCR文本检测算法的训练和使用请参考文档教程中[模型训练/评估中的文本检测部分](./doc/doc_ch/detection.md)。 - -## Text Recognition Algorithm + +### 2.文本识别算法 -PaddleOCR open-source text recognition algorithms list: +PaddleOCR开源的文本识别算法列表: - [x] CRNN([paper](https://arxiv.org/abs/1507.05717)) - [x] Rosetta([paper](https://arxiv.org/abs/1910.05085)) - [x] STAR-Net([paper](http://www.bmva.org/bmvc/2016/papers/paper043/index.html)) - [x] RARE([paper](https://arxiv.org/abs/1603.03915v1)) -- [x] SRN([paper](https://arxiv.org/abs/2003.12294))(Baidu Self-Research) +- [x] SRN([paper](https://arxiv.org/abs/2003.12294))(百度自研) -Refer to [DTRB](https://arxiv.org/abs/1904.01906), the training and evaluation result of these above text recognition (using MJSynth and SynthText for training, evaluate on IIIT, SVT, IC03, IC13, IC15, SVTP, CUTE) is as follow: +参考[DTRB](https://arxiv.org/abs/1904.01906)文字识别训练和评估流程,使用MJSynth和SynthText两个文字识别数据集训练,在IIIT, SVT, IC03, IC13, IC15, SVTP, CUTE数据集上进行评估,算法效果如下: -|Model|Backbone|Avg Accuracy|Module combination|Download link| +|模型|骨干网络|Avg Accuracy|模型存储命名|下载链接| |-|-|-|-|-| -|Rosetta|Resnet34_vd|80.24%|rec_r34_vd_none_none_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_r34_vd_none_none_ctc.tar)| -|Rosetta|MobileNetV3|78.16%|rec_mv3_none_none_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_mv3_none_none_ctc.tar)| -|CRNN|Resnet34_vd|82.20%|rec_r34_vd_none_bilstm_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_r34_vd_none_bilstm_ctc.tar)| -|CRNN|MobileNetV3|79.37%|rec_mv3_none_bilstm_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_mv3_none_bilstm_ctc.tar)| -|STAR-Net|Resnet34_vd|83.93%|rec_r34_vd_tps_bilstm_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_r34_vd_tps_bilstm_ctc.tar)| -|STAR-Net|MobileNetV3|81.56%|rec_mv3_tps_bilstm_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_mv3_tps_bilstm_ctc.tar)| -|RARE|Resnet34_vd|84.90%|rec_r34_vd_tps_bilstm_attn|[Download link](https://paddleocr.bj.bcebos.com/rec_r34_vd_tps_bilstm_attn.tar)| -|RARE|MobileNetV3|83.32%|rec_mv3_tps_bilstm_attn|[Download link](https://paddleocr.bj.bcebos.com/rec_mv3_tps_bilstm_attn.tar)| -|SRN|Resnet50_vd_fpn|88.33%|rec_r50fpn_vd_none_srn|[Download link](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar)| +|Rosetta|Resnet34_vd|80.24%|rec_r34_vd_none_none_ctc|[下载链接](https://paddleocr.bj.bcebos.com/rec_r34_vd_none_none_ctc.tar)| +|Rosetta|MobileNetV3|78.16%|rec_mv3_none_none_ctc|[下载链接](https://paddleocr.bj.bcebos.com/rec_mv3_none_none_ctc.tar)| +|CRNN|Resnet34_vd|82.20%|rec_r34_vd_none_bilstm_ctc|[下载链接](https://paddleocr.bj.bcebos.com/rec_r34_vd_none_bilstm_ctc.tar)| +|CRNN|MobileNetV3|79.37%|rec_mv3_none_bilstm_ctc|[下载链接](https://paddleocr.bj.bcebos.com/rec_mv3_none_bilstm_ctc.tar)| +|STAR-Net|Resnet34_vd|83.93%|rec_r34_vd_tps_bilstm_ctc|[下载链接](https://paddleocr.bj.bcebos.com/rec_r34_vd_tps_bilstm_ctc.tar)| +|STAR-Net|MobileNetV3|81.56%|rec_mv3_tps_bilstm_ctc|[下载链接](https://paddleocr.bj.bcebos.com/rec_mv3_tps_bilstm_ctc.tar)| +|RARE|Resnet34_vd|84.90%|rec_r34_vd_tps_bilstm_attn|[下载链接](https://paddleocr.bj.bcebos.com/rec_r34_vd_tps_bilstm_attn.tar)| +|RARE|MobileNetV3|83.32%|rec_mv3_tps_bilstm_attn|[下载链接](https://paddleocr.bj.bcebos.com/rec_mv3_tps_bilstm_attn.tar)| +|SRN|Resnet50_vd_fpn|88.33%|rec_r50fpn_vd_none_srn|[下载链接](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar)| -**Note:** SRN model uses data expansion method to expand the two training sets mentioned above, and the expanded data can be downloaded from [Baidu Drive](https://pan.baidu.com/s/1-HSZ-ZVdqBF2HaBZ5pRAKA) (download code: y3ry). +**说明:** SRN模型使用了数据扰动方法对上述提到对两个训练集进行增广,增广后的数据可以在[百度网盘](https://pan.baidu.com/s/1-HSZ-ZVdqBF2HaBZ5pRAKA)上下载,提取码: y3ry。 +原始论文使用两阶段训练平均精度为89.74%,PaddleOCR中使用one-stage训练,平均精度为88.33%。两种预训练权重均在[下载链接](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar)中。 -The average accuracy of the two-stage training in the original paper is 89.74%, and that of one stage training in paddleocr is 88.33%. Both pre-trained weights can be downloaded [here](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar). +使用[LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/datasets.md#1icdar2019-lsvt)街景数据集根据真值将图crop出来30w数据,进行位置校准。此外基于LSVT语料生成500w合成数据训练中文模型,相关配置和预训练文件如下: -We use [LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/datasets_en.md#1-icdar2019-lsvt) dataset and cropout 30w training data from original photos by using position groundtruth and make some calibration needed. In addition, based on the LSVT corpus, 500w synthetic data is generated to train the model. The related configuration and pre-trained models are as follows: - -|Model|Backbone|Configuration file|Pre-trained model| +|模型|骨干网络|配置文件|预训练模型| |-|-|-|-| -|ultra-lightweight OCR model|MobileNetV3|rec_chinese_lite_train.yml|[Download link](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance_infer.tar) & [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance.tar)| -|General OCR model|Resnet34_vd|rec_chinese_common_train.yml|[Download link](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_enhance_infer.tar) & [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_enhance.tar)| +|超轻量中文模型|MobileNetV3|rec_chinese_lite_train.yml|[下载链接](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn.tar)| +|通用中文OCR模型|Resnet34_vd|rec_chinese_common_train.yml|[下载链接](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn.tar)| -Please refer to the document for training guide and use of PaddleOCR text recognition algorithms [Text recognition model training/evaluation/prediction](./doc/doc_en/recognition_en.md) +PaddleOCR文本识别算法的训练和使用请参考文档教程中[模型训练/评估中的文本识别部分](./doc/doc_ch/recognition.md)。 - -## END-TO-END OCR Algorithm -- [ ] [End2End-PSL](https://arxiv.org/abs/1909.07808)(Baidu Self-Research, coming soon) +## 效果展示 -## Visualization - - -### 1.Ultra-lightweight Chinese/English OCR Visualization [more](./doc/doc_en/visualization_en.md) + +### 1.超轻量级中文OCR效果展示 [more](./doc/doc_ch/visualization.md)
- -### 2. General Chinese/English OCR Visualization [more](./doc/doc_en/visualization_en.md) + +### 2.通用中文OCR效果展示 [more](./doc/doc_ch/visualization.md)
- -### 3.Chinese/English OCR Visualization (Space_support) [more](./doc/doc_en/visualization_en.md) + +### 3.支持空格的中文OCR效果展示 [more](./doc/doc_ch/visualization.md)
- - -## FAQ -1. Error when using attention-based recognition model: KeyError: 'predict' - - The inference of recognition model based on attention loss is still being debugged. For Chinese text recognition, it is recommended to choose the recognition model based on CTC loss first. In practice, it is also found that the recognition model based on attention loss is not as effective as the one based on CTC loss. - -2. About inference speed - - When there are a lot of texts in the picture, the prediction time will increase. You can use `--rec_batch_num` to set a smaller prediction batch size. The default value is 30, which can be changed to 10 or other values. - -3. Service deployment and mobile deployment - - It is expected that the service deployment based on Serving and the mobile deployment based on Paddle Lite will be released successively in mid-to-late June. Stay tuned for more updates. - -4. Release time of self-developed algorithm - - Baidu Self-developed algorithms such as SAST, SRN and end2end PSL will be released in June or July. Please be patient. - -[more](./doc/doc_en/FAQ_en.md) - - -## Community -Scan the QR code below with your wechat and completing the questionnaire, you can access to offical technical exchange group. + +## 欢迎加入PaddleOCR技术交流群 +请扫描下面二维码,完成问卷填写,获取加群二维码和OCR方向的炼丹秘籍
- -## License -This project is released under Apache 2.0 license + +## 许可证书 +本项目的发布受Apache 2.0 license许可认证。 - -## Contribution -We welcome all the contributions to PaddleOCR and appreciate for your feedback very much. + +## 贡献代码 +我们非常欢迎你为PaddleOCR贡献代码,也十分感谢你的反馈。 -- Many thanks to [Khanh Tran](https://github.com/xxxpsyduck) and [Karl Horky](https://github.com/karlhorky) for contributing and revising the English documentation. -- Many thanks to [zhangxin](https://github.com/ZhangXinNan) for contributing the new visualize function、add .gitgnore and discard set PYTHONPATH manually. -- Many thanks to [lyl120117](https://github.com/lyl120117) for contributing the code for printing the network structure. -- Thanks [xiangyubo](https://github.com/xiangyubo) for contributing the handwritten Chinese OCR datasets. -- Thanks [authorfu](https://github.com/authorfu) for contributing Android demo and [xiadeye](https://github.com/xiadeye) contributing iOS demo, respectively. -- Thanks [BeyondYourself](https://github.com/BeyondYourself) for contributing many great suggestions and simplifying part of the code style. -- Thanks [tangmq](https://gitee.com/tangmq) for contributing Dockerized deployment services to PaddleOCR and supporting the rapid release of callable Restful API services. +- 非常感谢 [Khanh Tran](https://github.com/xxxpsyduck) 和 [Karl Horky](https://github.com/karlhorky) 贡献修改英文文档 +- 非常感谢 [zhangxin](https://github.com/ZhangXinNan)([Blog](https://blog.csdn.net/sdlypyzq)) 贡献新的可视化方式、添加.gitgnore、处理手动设置PYTHONPATH环境变量的问题 +- 非常感谢 [lyl120117](https://github.com/lyl120117) 贡献打印网络结构的代码 +- 非常感谢 [xiangyubo](https://github.com/xiangyubo) 贡献手写中文OCR数据集 +- 非常感谢 [authorfu](https://github.com/authorfu) 贡献Android和[xiadeye](https://github.com/xiadeye) 贡献IOS的demo代码 +- 非常感谢 [BeyondYourself](https://github.com/BeyondYourself) 给PaddleOCR提了很多非常棒的建议,并简化了PaddleOCR的部分代码风格。 +- 非常感谢 [tangmq](https://gitee.com/tangmq) 给PaddleOCR增加Docker化部署服务,支持快速发布可调用的Restful API服务。 diff --git a/README_cn.md b/README_cn.md deleted file mode 100644 index 8bdcce62..00000000 --- a/README_cn.md +++ /dev/null @@ -1,228 +0,0 @@ -[English](README.md) | 简体中文 - -## 简介 -PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力使用者训练出更好的模型,并应用落地。 - -**近期更新** -- 2020.8.24 支持通过whl包安装使用PaddleOCR,具体参考[Paddleocr Package使用说明](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/whl.md) -- 2020.8.21 更新8月18日B站直播课回放和PPT,课节2,易学易用的OCR工具大礼包,[获取地址](https://aistudio.baidu.com/aistudio/education/group/info/1519) -- 2020.8.16 开源文本检测算法[SAST](https://arxiv.org/abs/1908.05498)和文本识别算法[SRN](https://arxiv.org/abs/2003.12294) -- 2020.7.23 发布7月21日B站直播课回放和PPT,课节1,PaddleOCR开源大礼包全面解读,[获取地址](https://aistudio.baidu.com/aistudio/course/introduce/1519) -- 2020.7.15 添加基于EasyEdge和Paddle-Lite的移动端DEMO,支持iOS和Android系统 -- [more](./doc/doc_ch/update.md) - - -## 特性 -- 超轻量级中文OCR模型,总模型仅8.6M - - 单模型支持中英文数字组合识别、竖排文本识别、长文本识别 - - 检测模型DB(4.1M)+识别模型CRNN(4.5M) -- 实用通用中文OCR模型 -- 多种预测推理部署方案,包括服务部署和端侧部署 -- 多种文本检测训练算法,EAST、DB -- 多种文本识别训练算法,Rosetta、CRNN、STAR-Net、RARE -- 可运行于Linux、Windows、MacOS等多种系统 - -## 快速体验 - -
- -
- -上图是超轻量级中文OCR模型效果展示,更多效果图请见[效果展示页面](./doc/doc_ch/visualization.md)。 - -- 超轻量级中文OCR在线体验地址:https://www.paddlepaddle.org.cn/hub/scene/ocr -- 移动端DEMO体验(基于EasyEdge和Paddle-Lite, 支持iOS和Android系统):[安装包二维码获取地址](https://ai.baidu.com/easyedge/app/openSource?from=paddlelite) - - Android手机也可以扫描下面二维码安装体验。 - -
- -
- -- [**中文OCR模型快速使用**](./doc/doc_ch/quickstart.md) - - -## 中文OCR模型列表 - -|模型名称|模型简介|检测模型地址|识别模型地址|支持空格的识别模型地址| -|-|-|-|-|-| -|chinese_db_crnn_mobile|超轻量级中文OCR模型|[inference模型](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db_infer.tar) / [预训练模型](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db.tar)|[inference模型](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_infer.tar) / [预训练模型](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn.tar)|[inference模型](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance_infer.tar) / [预训练模型](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance.tar) -|chinese_db_crnn_server|通用中文OCR模型|[inference模型](https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db_infer.tar) / [预训练模型](https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db.tar)|[inference模型](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_infer.tar) / [预训练模型](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn.tar)|[inference模型](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_enhance_infer.tar) / [预训练模型](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_enhance.tar) - -## 文档教程 -- [快速安装](./doc/doc_ch/installation.md) -- [中文OCR模型快速使用](./doc/doc_ch/quickstart.md) -- 算法介绍 - - [文本检测](#文本检测算法) - - [文本识别](#文本识别算法) - - [端到端OCR](#端到端OCR算法) -- 模型训练/评估 - - [文本检测](./doc/doc_ch/detection.md) - - [文本识别](./doc/doc_ch/recognition.md) - - [yml参数配置文件介绍](./doc/doc_ch/config.md) - - [中文OCR训练预测技巧](./doc/doc_ch/tricks.md) -- 预测部署 - - [基于Python预测引擎推理](./doc/doc_ch/inference.md) - - [基于C++预测引擎推理](./deploy/cpp_infer/readme.md) - - [服务化部署](./doc/doc_ch/serving.md) - - [端侧部署](./deploy/lite/readme.md) - - 模型量化压缩(coming soon) - - [Benchmark](./doc/doc_ch/benchmark.md) -- 数据集 - - [通用中英文OCR数据集](./doc/doc_ch/datasets.md) - - [手写中文OCR数据集](./doc/doc_ch/handwritten_datasets.md) - - [垂类多语言OCR数据集](./doc/doc_ch/vertical_and_multilingual_datasets.md) - - [常用数据标注工具](./doc/doc_ch/data_annotation.md) - - [常用数据合成工具](./doc/doc_ch/data_synthesis.md) -- [FAQ](#FAQ) -- 效果展示 - - [超轻量级中文OCR效果展示](#超轻量级中文OCR效果展示) - - [通用中文OCR效果展示](#通用中文OCR效果展示) - - [支持空格的中文OCR效果展示](#支持空格的中文OCR效果展示) -- [技术交流群](#欢迎加入PaddleOCR技术交流群) -- [参考文献](./doc/doc_ch/reference.md) -- [许可证书](#许可证书) -- [贡献代码](#贡献代码) - - -## 算法介绍 - -### 1.文本检测算法 - -PaddleOCR开源的文本检测算法列表: -- [x] EAST([paper](https://arxiv.org/abs/1704.03155)) -- [x] DB([paper](https://arxiv.org/abs/1911.08947)) -- [x] SAST([paper](https://arxiv.org/abs/1908.05498))(百度自研) - -在ICDAR2015文本检测公开数据集上,算法效果如下: - -|模型|骨干网络|precision|recall|Hmean|下载链接| -|-|-|-|-|-|-| -|EAST|ResNet50_vd|88.18%|85.51%|86.82%|[下载链接](https://paddleocr.bj.bcebos.com/det_r50_vd_east.tar)| -|EAST|MobileNetV3|81.67%|79.83%|80.74%|[下载链接](https://paddleocr.bj.bcebos.com/det_mv3_east.tar)| -|DB|ResNet50_vd|83.79%|80.65%|82.19%|[下载链接](https://paddleocr.bj.bcebos.com/det_r50_vd_db.tar)| -|DB|MobileNetV3|75.92%|73.18%|74.53%|[下载链接](https://paddleocr.bj.bcebos.com/det_mv3_db.tar)| -|SAST|ResNet50_vd|92.18%|82.96%|87.33%|[下载链接](https://paddleocr.bj.bcebos.com/SAST/sast_r50_vd_icdar2015.tar)| - -在Total-text文本检测公开数据集上,算法效果如下: - -|模型|骨干网络|precision|recall|Hmean|下载链接| -|-|-|-|-|-|-| -|SAST|ResNet50_vd|88.74%|79.80%|84.03%|[下载链接](https://paddleocr.bj.bcebos.com/SAST/sast_r50_vd_total_text.tar)| - -**说明:** SAST模型训练额外加入了icdar2013、icdar2017、COCO-Text、ArT等公开数据集进行调优。PaddleOCR用到的经过整理格式的英文公开数据集下载:[百度云地址](https://pan.baidu.com/s/12cPnZcVuV1zn5DOd4mqjVw) (提取码: 2bpi) - - -使用[LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/datasets.md#1icdar2019-lsvt)街景数据集共3w张数据,训练中文检测模型的相关配置和预训练文件如下: - -|模型|骨干网络|配置文件|预训练模型| -|-|-|-|-| -|超轻量中文模型|MobileNetV3|det_mv3_db.yml|[下载链接](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db.tar)| -|通用中文OCR模型|ResNet50_vd|det_r50_vd_db.yml|[下载链接](https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db.tar)| - -* 注: 上述DB模型的训练和评估,需设置后处理参数box_thresh=0.6,unclip_ratio=1.5,使用不同数据集、不同模型训练,可调整这两个参数进行优化 - -PaddleOCR文本检测算法的训练和使用请参考文档教程中[模型训练/评估中的文本检测部分](./doc/doc_ch/detection.md)。 - - -### 2.文本识别算法 - -PaddleOCR开源的文本识别算法列表: -- [x] CRNN([paper](https://arxiv.org/abs/1507.05717)) -- [x] Rosetta([paper](https://arxiv.org/abs/1910.05085)) -- [x] STAR-Net([paper](http://www.bmva.org/bmvc/2016/papers/paper043/index.html)) -- [x] RARE([paper](https://arxiv.org/abs/1603.03915v1)) -- [x] SRN([paper](https://arxiv.org/abs/2003.12294))(百度自研) - -参考[DTRB](https://arxiv.org/abs/1904.01906)文字识别训练和评估流程,使用MJSynth和SynthText两个文字识别数据集训练,在IIIT, SVT, IC03, IC13, IC15, SVTP, CUTE数据集上进行评估,算法效果如下: - -|模型|骨干网络|Avg Accuracy|模型存储命名|下载链接| -|-|-|-|-|-| -|Rosetta|Resnet34_vd|80.24%|rec_r34_vd_none_none_ctc|[下载链接](https://paddleocr.bj.bcebos.com/rec_r34_vd_none_none_ctc.tar)| -|Rosetta|MobileNetV3|78.16%|rec_mv3_none_none_ctc|[下载链接](https://paddleocr.bj.bcebos.com/rec_mv3_none_none_ctc.tar)| -|CRNN|Resnet34_vd|82.20%|rec_r34_vd_none_bilstm_ctc|[下载链接](https://paddleocr.bj.bcebos.com/rec_r34_vd_none_bilstm_ctc.tar)| -|CRNN|MobileNetV3|79.37%|rec_mv3_none_bilstm_ctc|[下载链接](https://paddleocr.bj.bcebos.com/rec_mv3_none_bilstm_ctc.tar)| -|STAR-Net|Resnet34_vd|83.93%|rec_r34_vd_tps_bilstm_ctc|[下载链接](https://paddleocr.bj.bcebos.com/rec_r34_vd_tps_bilstm_ctc.tar)| -|STAR-Net|MobileNetV3|81.56%|rec_mv3_tps_bilstm_ctc|[下载链接](https://paddleocr.bj.bcebos.com/rec_mv3_tps_bilstm_ctc.tar)| -|RARE|Resnet34_vd|84.90%|rec_r34_vd_tps_bilstm_attn|[下载链接](https://paddleocr.bj.bcebos.com/rec_r34_vd_tps_bilstm_attn.tar)| -|RARE|MobileNetV3|83.32%|rec_mv3_tps_bilstm_attn|[下载链接](https://paddleocr.bj.bcebos.com/rec_mv3_tps_bilstm_attn.tar)| -|SRN|Resnet50_vd_fpn|88.33%|rec_r50fpn_vd_none_srn|[下载链接](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar)| - -**说明:** SRN模型使用了数据扰动方法对上述提到对两个训练集进行增广,增广后的数据可以在[百度网盘](https://pan.baidu.com/s/1-HSZ-ZVdqBF2HaBZ5pRAKA)上下载,提取码: y3ry。 -原始论文使用两阶段训练平均精度为89.74%,PaddleOCR中使用one-stage训练,平均精度为88.33%。两种预训练权重均在[下载链接](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar)中。 - -使用[LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/datasets.md#1icdar2019-lsvt)街景数据集根据真值将图crop出来30w数据,进行位置校准。此外基于LSVT语料生成500w合成数据训练中文模型,相关配置和预训练文件如下: - -|模型|骨干网络|配置文件|预训练模型| -|-|-|-|-| -|超轻量中文模型|MobileNetV3|rec_chinese_lite_train.yml|[下载链接](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn.tar)| -|通用中文OCR模型|Resnet34_vd|rec_chinese_common_train.yml|[下载链接](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn.tar)| - -PaddleOCR文本识别算法的训练和使用请参考文档教程中[模型训练/评估中的文本识别部分](./doc/doc_ch/recognition.md)。 - - -### 3.端到端OCR算法 -- [ ] [End2End-PSL](https://arxiv.org/abs/1909.07808)(百度自研, coming soon) - -## 效果展示 - - -### 1.超轻量级中文OCR效果展示 [more](./doc/doc_ch/visualization.md) - -
- -
- - -### 2.通用中文OCR效果展示 [more](./doc/doc_ch/visualization.md) - -
- -
- - -### 3.支持空格的中文OCR效果展示 [more](./doc/doc_ch/visualization.md) - -
- -
- - -## FAQ -1. **转换attention识别模型时报错:KeyError: 'predict'** -问题已解,请更新到最新代码。 - -2. **关于推理速度** -图片中的文字较多时,预测时间会增,可以使用--rec_batch_num设置更小预测batch num,默认值为30,可以改为10或其他数值。 - -3. **服务部署与移动端部署** -预计6月中下旬会先后发布基于Serving的服务部署方案和基于Paddle Lite的移动端部署方案,欢迎持续关注。 - -4. **自研算法发布时间** -自研算法SAST、SRN、End2End-PSL都将在7-8月陆续发布,敬请期待。 - -[more](./doc/doc_ch/FAQ.md) - - -## 欢迎加入PaddleOCR技术交流群 -请扫描下面二维码,完成问卷填写,获取加群二维码和OCR方向的炼丹秘籍 - -
- -
- - -## 许可证书 -本项目的发布受Apache 2.0 license许可认证。 - - -## 贡献代码 -我们非常欢迎你为PaddleOCR贡献代码,也十分感谢你的反馈。 - -- 非常感谢 [Khanh Tran](https://github.com/xxxpsyduck) 和 [Karl Horky](https://github.com/karlhorky) 贡献修改英文文档 -- 非常感谢 [zhangxin](https://github.com/ZhangXinNan)([Blog](https://blog.csdn.net/sdlypyzq)) 贡献新的可视化方式、添加.gitgnore、处理手动设置PYTHONPATH环境变量的问题 -- 非常感谢 [lyl120117](https://github.com/lyl120117) 贡献打印网络结构的代码 -- 非常感谢 [xiangyubo](https://github.com/xiangyubo) 贡献手写中文OCR数据集 -- 非常感谢 [authorfu](https://github.com/authorfu) 贡献Android和[xiadeye](https://github.com/xiadeye) 贡献IOS的demo代码 -- 非常感谢 [BeyondYourself](https://github.com/BeyondYourself) 给PaddleOCR提了很多非常棒的建议,并简化了PaddleOCR的部分代码风格。 -- 非常感谢 [tangmq](https://gitee.com/tangmq) 给PaddleOCR增加Docker化部署服务,支持快速发布可调用的Restful API服务。 diff --git a/README_en.md b/README_en.md new file mode 100644 index 00000000..37250da2 --- /dev/null +++ b/README_en.md @@ -0,0 +1,231 @@ +English | [简体中文](README.md) + +## Introduction +PaddleOCR aims to create rich, leading, and practical OCR tools that help users train better models and apply them into practice. + +**Recent updates** +- 2020.8.24 Support the use of PaddleOCR through whl package installation,pelease refer [PaddleOCR Package](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/whl_en.md) +- 2020.8.16, Release text detection algorithm [SAST](https://arxiv.org/abs/1908.05498) and text recognition algorithm [SRN](https://arxiv.org/abs/2003.12294) +- 2020.7.23, Release the playback and PPT of live class on BiliBili station, PaddleOCR Introduction, [address](https://aistudio.baidu.com/aistudio/course/introduce/1519) +- 2020.7.15, Add mobile App demo , support both iOS and Android ( based on easyedge and Paddle Lite) +- 2020.7.15, Improve the deployment ability, add the C + + inference , serving deployment. In addition, the benchmarks of the ultra-lightweight OCR model are provided. +- 2020.7.15, Add several related datasets, data annotation and synthesis tools. +- [more](./doc/doc_en/update_en.md) + +## Features +- Ultra-lightweight OCR model, total model size is only 8.6M + - Single model supports Chinese/English numbers combination recognition, vertical text recognition, long text recognition + - Detection model DB (4.1M) + recognition model CRNN (4.5M) +- Various text detection algorithms: EAST, DB +- Various text recognition algorithms: Rosetta, CRNN, STAR-Net, RARE +- Support Linux, Windows, macOS and other systems. + +## Visualization + +![](doc/imgs_results/11.jpg) + +![](doc/imgs_results/img_10.jpg) + +[More visualization](./doc/doc_en/visualization_en.md) + +You can also quickly experience the ultra-lightweight OCR : [Online Experience](https://www.paddlepaddle.org.cn/hub/scene/ocr) + +Mobile DEMO experience (based on EasyEdge and Paddle-Lite, supports iOS and Android systems): [Sign in to the website to obtain the QR code for installing the App](https://ai.baidu.com/easyedge/app/openSource?from=paddlelite) + + Also, you can scan the QR code below to install the App (**Android support only**) + +
+ +
+ +- [**OCR Quick Start**](./doc/doc_en/quickstart_en.md) + + + +### Supported Models: + +|Model Name|Description |Detection Model link|Recognition Model link| Support for space Recognition Model link| +|-|-|-|-|-| +|db_crnn_mobile|ultra-lightweight OCR model|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db_infer.tar) / [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_infer.tar) / [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance_infer.tar) / [pre-train model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance.tar) +|db_crnn_server|General OCR model|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db_infer.tar) / [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_infer.tar) / [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_enhance_infer.tar) / [pre-train model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_enhance.tar) + + +## Tutorials +- [Installation](./doc/doc_en/installation_en.md) +- [Quick Start](./doc/doc_en/quickstart_en.md) +- Algorithm introduction + - [Text Detection Algorithm](#TEXTDETECTIONALGORITHM) + - [Text Recognition Algorithm](#TEXTRECOGNITIONALGORITHM) + - [END-TO-END OCR Algorithm](#ENDENDOCRALGORITHM) +- Model training/evaluation + - [Text Detection](./doc/doc_en/detection_en.md) + - [Text Recognition](./doc/doc_en/recognition_en.md) + - [Yml Configuration](./doc/doc_en/config_en.md) + - [Tricks](./doc/doc_en/tricks_en.md) +- Deployment + - [Python Inference](./doc/doc_en/inference_en.md) + - [C++ Inference](./deploy/cpp_infer/readme_en.md) + - [Serving](./doc/doc_en/serving_en.md) + - [Mobile](./deploy/lite/readme_en.md) + - Model Quantization and Compression (coming soon) + - [Benchmark](./doc/doc_en/benchmark_en.md) +- Datasets + - [General OCR Datasets(Chinese/English)](./doc/doc_en/datasets_en.md) + - [HandWritten_OCR_Datasets(Chinese)](./doc/doc_en/handwritten_datasets_en.md) + - [Various OCR Datasets(multilingual)](./doc/doc_en/vertical_and_multilingual_datasets_en.md) + - [Data Annotation Tools](./doc/doc_en/data_annotation_en.md) + - [Data Synthesis Tools](./doc/doc_en/data_synthesis_en.md) +- [FAQ](#FAQ) +- Visualization + - [Ultra-lightweight Chinese/English OCR Visualization](#UCOCRVIS) + - [General Chinese/English OCR Visualization](#GeOCRVIS) + - [Chinese/English OCR Visualization (Support Space Recognition )](#SpaceOCRVIS) +- [Community](#Community) +- [References](./doc/doc_en/reference_en.md) +- [License](#LICENSE) +- [Contribution](#CONTRIBUTION) + + +## Text Detection Algorithm + +PaddleOCR open source text detection algorithms list: +- [x] EAST([paper](https://arxiv.org/abs/1704.03155)) +- [x] DB([paper](https://arxiv.org/abs/1911.08947)) +- [x] SAST([paper](https://arxiv.org/abs/1908.05498))(Baidu Self-Research) + +On the ICDAR2015 dataset, the text detection result is as follows: + +|Model|Backbone|precision|recall|Hmean|Download link| +|-|-|-|-|-|-| +|EAST|ResNet50_vd|88.18%|85.51%|86.82%|[Download link](https://paddleocr.bj.bcebos.com/det_r50_vd_east.tar)| +|EAST|MobileNetV3|81.67%|79.83%|80.74%|[Download link](https://paddleocr.bj.bcebos.com/det_mv3_east.tar)| +|DB|ResNet50_vd|83.79%|80.65%|82.19%|[Download link](https://paddleocr.bj.bcebos.com/det_r50_vd_db.tar)| +|DB|MobileNetV3|75.92%|73.18%|74.53%|[Download link](https://paddleocr.bj.bcebos.com/det_mv3_db.tar)| +|SAST|ResNet50_vd|92.18%|82.96%|87.33%|[Download link](https://paddleocr.bj.bcebos.com/SAST/sast_r50_vd_icdar2015.tar)| + +On Total-Text dataset, the text detection result is as follows: + +|Model|Backbone|precision|recall|Hmean|Download link| +|-|-|-|-|-|-| +|SAST|ResNet50_vd|88.74%|79.80%|84.03%|[Download link](https://paddleocr.bj.bcebos.com/SAST/sast_r50_vd_total_text.tar)| + +**Note:** Additional data, like icdar2013, icdar2017, COCO-Text, ArT, was added to the model training of SAST. Download English public dataset in organized format used by PaddleOCR from [Baidu Drive](https://pan.baidu.com/s/12cPnZcVuV1zn5DOd4mqjVw) (download code: 2bpi). + +For use of [LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/datasets_en.md#1-icdar2019-lsvt) street view dataset with a total of 3w training data,the related configuration and pre-trained models for text detection task are as follows: +|Model|Backbone|Configuration file|Pre-trained model| +|-|-|-|-| +|ultra-lightweight OCR model|MobileNetV3|det_mv3_db.yml|[Download link](https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db.tar)| +|General OCR model|ResNet50_vd|det_r50_vd_db.yml|[Download link](https://paddleocr.bj.bcebos.com/ch_models/ch_det_r50_vd_db.tar)| + +* Note: For the training and evaluation of the above DB model, post-processing parameters box_thresh=0.6 and unclip_ratio=1.5 need to be set. If using different datasets and different models for training, these two parameters can be adjusted for better result. + +For the training guide and use of PaddleOCR text detection algorithms, please refer to the document [Text detection model training/evaluation/prediction](./doc/doc_en/detection_en.md) + + +## Text Recognition Algorithm + +PaddleOCR open-source text recognition algorithms list: +- [x] CRNN([paper](https://arxiv.org/abs/1507.05717)) +- [x] Rosetta([paper](https://arxiv.org/abs/1910.05085)) +- [x] STAR-Net([paper](http://www.bmva.org/bmvc/2016/papers/paper043/index.html)) +- [x] RARE([paper](https://arxiv.org/abs/1603.03915v1)) +- [x] SRN([paper](https://arxiv.org/abs/2003.12294))(Baidu Self-Research) + +Refer to [DTRB](https://arxiv.org/abs/1904.01906), the training and evaluation result of these above text recognition (using MJSynth and SynthText for training, evaluate on IIIT, SVT, IC03, IC13, IC15, SVTP, CUTE) is as follow: + +|Model|Backbone|Avg Accuracy|Module combination|Download link| +|-|-|-|-|-| +|Rosetta|Resnet34_vd|80.24%|rec_r34_vd_none_none_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_r34_vd_none_none_ctc.tar)| +|Rosetta|MobileNetV3|78.16%|rec_mv3_none_none_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_mv3_none_none_ctc.tar)| +|CRNN|Resnet34_vd|82.20%|rec_r34_vd_none_bilstm_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_r34_vd_none_bilstm_ctc.tar)| +|CRNN|MobileNetV3|79.37%|rec_mv3_none_bilstm_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_mv3_none_bilstm_ctc.tar)| +|STAR-Net|Resnet34_vd|83.93%|rec_r34_vd_tps_bilstm_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_r34_vd_tps_bilstm_ctc.tar)| +|STAR-Net|MobileNetV3|81.56%|rec_mv3_tps_bilstm_ctc|[Download link](https://paddleocr.bj.bcebos.com/rec_mv3_tps_bilstm_ctc.tar)| +|RARE|Resnet34_vd|84.90%|rec_r34_vd_tps_bilstm_attn|[Download link](https://paddleocr.bj.bcebos.com/rec_r34_vd_tps_bilstm_attn.tar)| +|RARE|MobileNetV3|83.32%|rec_mv3_tps_bilstm_attn|[Download link](https://paddleocr.bj.bcebos.com/rec_mv3_tps_bilstm_attn.tar)| +|SRN|Resnet50_vd_fpn|88.33%|rec_r50fpn_vd_none_srn|[Download link](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar)| + +**Note:** SRN model uses data expansion method to expand the two training sets mentioned above, and the expanded data can be downloaded from [Baidu Drive](https://pan.baidu.com/s/1-HSZ-ZVdqBF2HaBZ5pRAKA) (download code: y3ry). + +The average accuracy of the two-stage training in the original paper is 89.74%, and that of one stage training in paddleocr is 88.33%. Both pre-trained weights can be downloaded [here](https://paddleocr.bj.bcebos.com/SRN/rec_r50fpn_vd_none_srn.tar). + +We use [LSVT](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/datasets_en.md#1-icdar2019-lsvt) dataset and cropout 30w training data from original photos by using position groundtruth and make some calibration needed. In addition, based on the LSVT corpus, 500w synthetic data is generated to train the model. The related configuration and pre-trained models are as follows: + +|Model|Backbone|Configuration file|Pre-trained model| +|-|-|-|-| +|ultra-lightweight OCR model|MobileNetV3|rec_chinese_lite_train.yml|[Download link](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance_infer.tar) & [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_enhance.tar)| +|General OCR model|Resnet34_vd|rec_chinese_common_train.yml|[Download link](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn.tar)|[inference model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_enhance_infer.tar) & [pre-trained model](https://paddleocr.bj.bcebos.com/ch_models/ch_rec_r34_vd_crnn_enhance.tar)| + +Please refer to the document for training guide and use of PaddleOCR text recognition algorithms [Text recognition model training/evaluation/prediction](./doc/doc_en/recognition_en.md) + + +## END-TO-END OCR Algorithm +- [ ] [End2End-PSL](https://arxiv.org/abs/1909.07808)(Baidu Self-Research, coming soon) + +## Visualization + + +### 1.Ultra-lightweight Chinese/English OCR Visualization [more](./doc/doc_en/visualization_en.md) + +
+ +
+ + +### 2. General Chinese/English OCR Visualization [more](./doc/doc_en/visualization_en.md) + +
+ +
+ + +### 3.Chinese/English OCR Visualization (Space_support) [more](./doc/doc_en/visualization_en.md) + +
+ +
+ + + +## FAQ +1. Error when using attention-based recognition model: KeyError: 'predict' + + The inference of recognition model based on attention loss is still being debugged. For Chinese text recognition, it is recommended to choose the recognition model based on CTC loss first. In practice, it is also found that the recognition model based on attention loss is not as effective as the one based on CTC loss. + +2. About inference speed + + When there are a lot of texts in the picture, the prediction time will increase. You can use `--rec_batch_num` to set a smaller prediction batch size. The default value is 30, which can be changed to 10 or other values. + +3. Service deployment and mobile deployment + + It is expected that the service deployment based on Serving and the mobile deployment based on Paddle Lite will be released successively in mid-to-late June. Stay tuned for more updates. + +4. Release time of self-developed algorithm + + Baidu Self-developed algorithms such as SAST, SRN and end2end PSL will be released in June or July. Please be patient. + +[more](./doc/doc_en/FAQ_en.md) + + +## Community +Scan the QR code below with your wechat and completing the questionnaire, you can access to offical technical exchange group. + +
+ +
+ + +## License +This project is released under Apache 2.0 license + + +## Contribution +We welcome all the contributions to PaddleOCR and appreciate for your feedback very much. + +- Many thanks to [Khanh Tran](https://github.com/xxxpsyduck) and [Karl Horky](https://github.com/karlhorky) for contributing and revising the English documentation. +- Many thanks to [zhangxin](https://github.com/ZhangXinNan) for contributing the new visualize function、add .gitgnore and discard set PYTHONPATH manually. +- Many thanks to [lyl120117](https://github.com/lyl120117) for contributing the code for printing the network structure. +- Thanks [xiangyubo](https://github.com/xiangyubo) for contributing the handwritten Chinese OCR datasets. +- Thanks [authorfu](https://github.com/authorfu) for contributing Android demo and [xiadeye](https://github.com/xiadeye) contributing iOS demo, respectively. +- Thanks [BeyondYourself](https://github.com/BeyondYourself) for contributing many great suggestions and simplifying part of the code style. +- Thanks [tangmq](https://gitee.com/tangmq) for contributing Dockerized deployment services to PaddleOCR and supporting the rapid release of callable Restful API services. diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index 752a4adb..346d4c2b 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -1,25 +1,292 @@ -## FAQ +# FAQ -1. **预测报错:got an unexpected keyword argument 'gradient_clip'** -安装的paddle版本不对,目前本项目仅支持paddle1.7,近期会适配到1.8。 +## 写在前面 -2. **转换attention识别模型时报错:KeyError: 'predict'** -问题已解决,请更新到最新代码。 +- 我们收集整理了issues和用户群中的常见问题和解答,并且会不断更新,旨在为OCR的开发者提供一些参考,也希望帮助大家少走一些弯路。 -3. **关于推理速度** -图片中的文字较多时,预测时间会增,可以使用--rec_batch_num设置更小预测batch num,默认值为30,可以改为10或其他数值。 +- OCR领域大佬众多,本文档回答主要依赖有限的项目实践,难免挂一漏万,如有遗漏和不足,也**希望有识之士帮忙补充和修正**,万分感谢。 -4. **服务部署与移动端部署** -预计6月中下旬会先后发布基于Serving的服务部署方案和基于Paddle Lite的移动端部署方案,欢迎持续关注。 -5. **自研算法发布时间** -自研算法SAST、SRN、End2End-PSL都将在7-8月陆续发布,敬请期待。 +## PaddleOCR常见问题汇总(持续更新) -6. **如何在Windows或Mac系统上运行** -PaddleOCR已完成Windows和Mac系统适配,运行时注意两点:1、在[快速安装](./installation.md)时,如果不想安装docker,可跳过第一步,直接从第二步安装paddle开始。2、inference模型下载时,如果没有安装wget,可直接点击模型链接或将链接地址复制到浏览器进行下载,并解压放置到相应目录。 +* [【精选】OCR精选10个问题](#【精选】OCR精选10个问题) +* [【理论篇】OCR通用21个问题](#【理论篇】OCR通用问题) + * [基础知识3题](#基础知识) + * [数据集4题](#数据集) + * [模型训练调优6题](#模型训练调优) + * [预测部署8题](#预测部署) +* [【实战篇】PaddleOCR实战53个问题](#【实战篇】PaddleOCR实战问题) + * [使用咨询16题](#使用咨询) + * [数据集9题](#数据集) + * [模型训练调优13题](#模型训练调优) + * [预测部署15题](#[预测部署) -7. **超轻量模型和通用OCR模型的区别** -目前PaddleOCR开源了2个中文模型,分别是8.6M超轻量中文模型和通用中文OCR模型。两者对比信息如下: + + + +## 【精选】OCR精选10个问题 + +#### Q1.1.1:基于深度学习的文字检测方法有哪几种?各有什么优缺点? + +**A**:常用的基于深度学习的文字检测方法一般可以分为基于回归的、基于分割的两大类,当然还有一些将两者进行结合的方法。 +(1)基于回归的方法分为box回归和像素值回归。a. 采用box回归的方法主要有CTPN、Textbox系列和EAST,这类算法对规则形状文本检测效果较好,但无法准确检测不规则形状文本。 b. 像素值回归的方法主要有CRAFT和SA-Text,这类算法能够检测弯曲文本且对小文本效果优秀但是实时性能不够。 +(2)基于分割的算法,如PSENet,这类算法不受文本形状的限制,对各种形状的文本都能取得较好的效果,但是往往后处理比较复杂,导致耗时严重。目前也有一些算法专门针对这个问题进行改进,如DB,将二值化进行近似,使其可导,融入训练,从而获取更准确的边界,大大降低了后处理的耗时。 + +#### Q1.1.2:对于中文行文本识别,CTC和Attention哪种更优? + +**A**:(1)从效果上来看,通用OCR场景CTC的识别效果优于Attention,因为带识别的字典中的字符比较多,常用中文汉字三千字以上,如果训练样本不足的情况下,对于这些字符的序列关系挖掘比较困难。中文场景下Attention模型的优势无法体现。而且Attention适合短语句识别,对长句子识别比较差。 +(2)从训练和预测速度上,Attention的串行解码结构限制了预测速度,而CTC网络结构更高效,预测速度上更有优势。 + +#### Q1.1.3:弯曲形变的文字识别需要怎么处理?TPS应用场景是什么,是否好用? + +**A**:(1)在大多数情况下,如果遇到的场景弯曲形变不是太严重,检测4个顶点,然后直接通过仿射变换转正识别就足够了。 +(2)如果不能满足需求,可以尝试使用TPS(Thin Plate Spline),即薄板样条插值。TPS是一种插值算法,经常用于图像变形等,通过少量的控制点就可以驱动图像进行变化。一般用在有弯曲形变的文本识别中,当检测到不规则的/弯曲的(如,使用基于分割的方法检测算法)文本区域,往往先使用TPS算法对文本区域矫正成矩形再进行识别,如,STAR-Net、RARE等识别算法中引入了TPS模块。 +**Warning**:TPS看起来美好,在实际应用时经常发现并不够鲁棒,并且会增加耗时,需要谨慎使用。 + +#### Q1.1.4:简单的对于精度要求不高的OCR任务,数据集需要准备多少张呢? + +**A**:(1)训练数据的数量和需要解决问题的复杂度有关系。难度越大,精度要求越高,则数据集需求越大,而且一般情况实际中的训练数据越多效果越好。 +(2)对于精度要求不高的场景,检测任务和识别任务需要的数据量是不一样的。对于检测任务,500张图像可以保证基本的检测效果。对于识别任务,需要保证识别字典中每个字符出现在不同场景的行文本图像数目需要大于200张(举例,如果有字典中有5个字,每个字都需要出现在200张图片以上,那么最少要求的图像数量应该在200-1000张之间),这样可以保证基本的识别效果。 + +#### Q1.1.5:背景干扰的文字(如印章盖到落款上,需要识别落款或者印章中的文字),如何识别? + +**A**:(1)在人眼确认可识别的条件下,对于背景有干扰的文字,首先要保证检测框足够准确,如果检测框不准确,需要考虑是否可以通过过滤颜色等方式对图像预处理并且增加更多相关的训练数据;在识别的部分,注意在训练数据中加入背景干扰类的扩增图像。 +(2)如果MobileNet模型不能满足需求,可以尝试ResNet系列大模型来获得更好的效果 +。 + +#### Q1.1.6:OCR领域常用的评估指标是什么? + +**A**:对于两阶段的可以分开来看,分别是检测和识别阶段 + +(1)检测阶段:先按照检测框和标注框的IOU评估,IOU大于某个阈值判断为检测准确。这里检测框和标注框不同于一般的通用目标检测框,是采用多边形进行表示。 + +检测准确率det_precision:正确的检测框个数在全部检测框的占比,主要是判断检测指标. + +检测召回率det_recall:正确的检测框个数在全部标注框的占比,主要是判断漏检的指标。 + +检测 F1-Score: +$$ F1\_Score= \frac{2 \times det\_precision \times det\_recall}{det\_precision+det\_recall}$$ + +(2)识别阶段: +字符识别准确率rec_precision,即正确识别的文本行占标注的文本行数量的比例,只有整行文本识别对才算正确识别。 + +(3)端到端统计: +端对端准确率e2e_precision:准确检测并正确识别文本行在全部标注文本行的占比; +端到端召回率e2e_recall:准确检测并正确识别文本行在 检测到的文本行数量 的占比;准确检测的标准是检测框与标注框的IOU大于某个阈值,正确识别的的检测框中的文本与标注的文本相同。 + + +端到端 F1-Score: +$$ F1\_Score= \frac{2 \times e2e\_precision \times e2e\_recall}{e2e\_precision+e2e\_recall}$$ + +#### Q1.1.7:单张图上多语种并存识别(如单张图印刷体和手写文字并存),应该如何处理? + +**A**:单张图像中存在多种类型文本的情况很常见,典型的以学生的试卷为代表,一张图像同时存在手写体和印刷体两种文本,这类情况下,可以尝试”1个检测模型+1个N分类模型+N个识别模型”的解决方案。 +其中不同类型文本共用同一个检测模型,N分类模型指额外训练一个分类器,将检测到的文本进行分类,如手写+印刷的情况就是二分类,N种语言就是N分类,在识别的部分,针对每个类型的文本单独训练一个识别模型,如手写+印刷的场景,就需要训练一个手写体识别模型,一个印刷体识别模型,如果一个文本框的分类结果是手写体,那么就传给手写体识别模型进行识别,其他情况同理。 + +#### Q1.1.8:请问PaddleOCR项目中的中文超轻量和通用模型用了哪些数据集?训练多少样本,gpu什么配置,跑了多少个epoch,大概跑了多久? + +**A**: +(1)检测的话,LSVT街景数据集共3W张图像,超轻量模型,150epoch左右,2卡V100 跑了不到2天;通用模型:2卡V100 150epoch 不到4天。 +(2) +识别的话,520W左右的数据集(真实数据26W+合成数据500W)训练,超轻量模型:4卡V100,总共训练了5天左右。通用模型:4卡V100,共训练6天。 + +超轻量模型训练分为2个阶段: +<1>全量数据训练50epoch,耗时3天 +<2>合成数据+真实数据按照1:1数据采样,进行finetune训练200epoch,耗时2天 + +通用模型训练: +真实数据+合成数据,动态采样(1:1)训练,200epoch,耗时 6天左右。 + + +#### Q1.1.9:PaddleOCR模型推理方式有几种?各自的优缺点是什么 + +**A**:目前推理方式支持基于训练引擎推理和基于预测引擎推理。 +(1)基于训练引擎推理不需要转换模型,但是需要先组网再load参数,语言只支持python,不适合系统集成。 +(2)基于预测引擎的推理需要先转换模型为inference格式,然后可以进行不需要组网的推理,语言支持c++和python,适合系统集成。 + +#### Q1.1.10:PaddleOCR中,对于模型预测加速,CPU加速的途径有哪些?基于TenorRT加速GPU对输入有什么要求? + +**A**:(1)CPU可以使用mkldnn进行加速;对于python inference的话,可以把enable_mkldnn改为true,[参考代码](https://github.com/PaddlePaddle/PaddleOCR/blob/549108fe0aa0d87c0a3b2d471f1c653e89daab80/tools/infer/utility.py#L73),对于cpp inference的话,在配置文件里面配置use_mkldnn 1即可,[参考代码](https://github.com/PaddlePaddle/PaddleOCR/blob/549108fe0aa0d87c0a3b2d471f1c653e89daab80/deploy/cpp_infer/tools/config.txt#L6) +(2)GPU需要注意变长输入问题等,TRT6 之后才支持变长输入 + + +## 【理论篇】OCR通用问题 +### 基础知识 + +#### Q2.1.1:CRNN能否识别两行的文字?还是说必须一行? + +**A**:CRNN是一种基于1D-CTC的算法,其原理决定无法识别2行或多行的文字,只能单行识别。 + +#### Q2.1.2:怎么判断行文本图像是否是颠倒的? + +**A**:有两种方案:(1)原始图像和颠倒图像都进行识别预测,取得分较高的为识别结果。 +(2)训练一个正常图像和颠倒图像的方向分类器进行判断。 + +#### Q2.1.3:目前OCR普遍是二阶段,端到端的方案在业界落地情况如何? + +**A**:端到端在文字分布密集的业务场景,效率会比较有保证,精度的话看自己业务数据积累情况,如果行级别的识别数据积累比较多的话two-stage会比较好。百度的落地场景,比如工业仪表识别、车牌识别都用到端到端解决方案。 + + +### 数据集 + +#### Q2.2.1:支持空格的模型,标注数据的时候是不是要标注空格?中间几个空格都要标注出来么? + +**A**:如果需要检测和识别模型,就需要在标注的时候把空格标注出来,而且在字典中增加空格对应的字符。标注过程中,如果中间几个空格标注一个就行。 + +#### Q2.2.2:如果考虑支持竖排文字识别,相关的数据集如何合成? + +**A**:竖排文字与横排文字合成方式相同,只是选择了垂直字体。合成工具推荐:[text_renderer](https://github.com/Sanster/text_renderer) + +#### Q2.2.3:训练文字识别模型,真实数据有30w,合成数据有500w,需要做样本均衡吗? + +**A**:需要,一般需要保证一个batch中真实数据样本和合成数据样本的比例是1:1~1:3左右效果比较理想。如果合成数据过大,会过拟合到合成数据,预测效果往往不佳。还有一种**启发性**的尝试是可以先用大量合成数据训练一个base模型,然后再用真实数据微调,在一些简单场景效果也是会有提升的。 + +#### Q2.2.4:请问一下,竖排文字识别时候,字的特征已经变了,这种情况在数据集和字典标注是新增一个类别还是多个角度的字共享一个类别? + +**A**:可以根据实际场景做不同的尝试,共享一个类别是可以收敛,效果也还不错。但是如果分开训练,同类样本之间一致性更好,更容易收敛,识别效果会更优。 + +### 训练训练调优 + +#### Q2.3.1:如何更换文本检测/识别的backbone? +**A**:无论是文字检测,还是文字识别,骨干网络的选择是预测效果和预测效率的权衡。一般,选择更大规模的骨干网络,例如ResNet101_vd,则检测或识别更准确,但预测耗时相应也会增加。而选择更小规模的骨干网络,例如MobileNetV3_small_x0_35,则预测更快,但检测或识别的准确率会大打折扣。幸运的是不同骨干网络的检测或识别效果与在ImageNet数据集图像1000分类任务效果正相关。[**飞桨图像分类套件PaddleClas**](https://github.com/PaddlePaddle/PaddleClas)汇总了ResNet_vd、Res2Net、HRNet、MobileNetV3、GhostNet等23种系列的分类网络结构,在上述图像分类任务的top1识别准确率,GPU(V100和T4)和CPU(骁龙855)的预测耗时以及相应的[**117个预训练模型下载地址**](https://paddleclas.readthedocs.io/zh_CN/latest/models/models_intro.html)。 + (1)文字检测骨干网络的替换,主要是确定类似与ResNet的4个stages,以方便集成后续的类似FPN的检测头。此外,对于文字检测问题,使用ImageNet训练的分类预训练模型,可以加速收敛和效果提升。 + (2)文字识别的骨干网络的替换,需要注意网络宽高stride的下降位置。由于文本识别一般宽高比例很大,因此高度下降频率少一些,宽度下降频率多一些。可以参考PaddleOCR中[MobileNetV3骨干网络](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/ppocr/modeling/backbones/rec_mobilenet_v3.py)的改动。 + +#### Q2.3.2:文本识别训练不加LSTM是否可以收敛? + +**A**:理论上是可以收敛的,加上LSTM模块主要是为了挖掘文字之间的序列关系,提升识别效果。对于有明显上下文语义的场景效果会比较明显。 + +#### Q2.3.3:文本识别中LSTM和GRU如何选择? + +**A**:从项目实践经验来看,序列模块采用LSTM的识别效果优于GRU,但是LSTM的计算量比GRU大一些,可以根据自己实际情况选择。 + +#### Q2.3.4:对于CRNN模型,backbone采用DenseNet和ResNet_vd,哪种网络结构更好? + +**A**:Backbone的识别效果在CRNN模型上的效果,与Imagenet 1000 图像分类任务上识别效果和效率一致。在图像分类任务上ResnNet_vd(79%+)的识别精度明显优于DenseNet(77%+),此外对于GPU,Nvidia针对ResNet系列模型做了优化,预测效率更高,所以相对而言,resnet_vd是较好选择。如果是移动端,可以优先考虑MobileNetV3系列。 + +#### Q2.3.5:训练识别时,如何选择合适的网络输入shape? + +**A**:一般高度采用32,最长宽度的选择,有两种方法: +(1)统计训练样本图像的宽高比分布。最大宽高比的选取考虑满足80%的训练样本。 +(2)统计训练样本文字数目。最长字符数目的选取考虑满足80%的训练样本。然后中文字符长宽比近似认为是1,英文认为3:1,预估一个最长宽度。 + +#### Q2.3.6:如何识别文字比较长的文本? + +**A**:在中文识别模型训练时,并不是采用直接将训练样本缩放到[3,32,320]进行训练,而是先等比例缩放图像,保证图像高度为32,宽度不足320的部分补0,宽高比大于10的样本直接丢弃。预测时,如果是单张图像预测,则按上述操作直接对图像缩放,不做宽度320的限制。如果是多张图预测,则采用batch方式预测,每个batch的宽度动态变换,采用这个batch中最长宽度。 + +### 预测部署 + +#### Q2.4.1:请问对于图片中的密集文字,有什么好的处理办法吗? + +**A**:可以先试用预训练模型测试一下,例如DB+CRNN,判断下密集文字图片中是检测还是识别的问题,然后针对性的改善。还有一种是如果图象中密集文字较小,可以尝试增大图像分辨率,对图像进行一定范围内的拉伸,将文字稀疏化,提高识别效果。 + +#### Q2.4.2:对于一些在识别时稍微模糊的文本,有没有一些图像增强的方式? + +**A**:在人类肉眼可以识别的前提下,可以考虑图像处理中的均值滤波、中值滤波或者高斯滤波等模糊算子尝试。也可以尝试从数据扩增扰动来强化模型鲁棒性,另外新的思路有对抗性训练和超分SR思路,可以尝试借鉴。但目前业界尚无普遍认可的最优方案,建议优先在数据采集阶段增加一些限制提升图片质量。 + +#### Q2.4.3:对于特定文字检测,例如身份证只检测姓名,检测指定区域文字更好,还是检测全部区域再筛选更好? + +**A**:两个角度来说明一般检测全部区域再筛选更好。 +(1)由于特定文字和非特定文字之间的视觉特征并没有很强的区分行,只检测指定区域,容易造成特定文字漏检。 +(2)产品的需求可能是变化的,不排除后续对于模型需求变化的可能性(比如又需要增加一个字段),相比于训练模型,后处理的逻辑会更容易调整。 + +#### Q2.4.4:对于小白如何快速入门中文OCR项目实践? + +**A**:建议可以先了解OCR方向的基础知识,大概了解基础的检测和识别模型算法。然后在Github上可以查看OCR方向相关的repo。目前来看,从内容的完备性来看,PaddleOCR的中英文双语教程文档是有明显优势的,在数据集、模型训练、预测部署文档详实,可以快速入手。而且还有微信用户群答疑,非常适合学习实践。项目地址:[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) + +#### Q2.4.5:如何识别带空格的英文行文本图像? + +**A**:空格识别可以考虑以下两种方案: +(1)优化文本检测算法。检测结果在空格处将文本断开。这种方案在检测数据标注时,需要将含有空格的文本行分成好多段。 +(2)优化文本识别算法。在识别字典里面引入空格字符,然后在识别的训练数据中,如果用空行,进行标注。此外,合成数据时,通过拼接训练数据,生成含有空格的文本。 + +#### Q2.4.6:中英文一起识别时也可以加空格字符来训练吗 + +**A**:中文识别可以加空格当做分隔符训练,具体的效果如何没法给出直接评判,根据实际业务数据训练来判断。 + +#### Q2.4.7:低像素文字或者字号比较小的文字有什么超分辨率方法吗 + +**A**:超分辨率方法分为传统方法和基于深度学习的方法。基于深度学习的方法中,比较经典的有SRCNN,另外CVPR2020也有一篇超分辨率的工作可以参考:Unpaired Image Super-Resolution using Pseudo-Supervision,但是没有充分的实践验证过,需要看实际场景下的效果。 + +#### Q2.4.8:表格识别有什么好的模型 或者论文推荐么 + +**A**:表格目前学术界比较成熟的解决方案不多 ,可以尝试下分割的论文方案。 + + + +## 【实战篇】PaddleOCR实战问题 + +### 使用咨询 + +#### Q3.1.1:OSError: [WinError 126] 找不到指定的模块。mac pro python 3.4 shapely import 问题 + +**A**:这个问题是因为shapely库安装有误,可以参考 [#212](https://github.com/PaddlePaddle/PaddleOCR/issues/212) 这个issue重新安装一下 + +#### Q3.1.2:安装了paddle-gpu,运行时提示没有安装gpu版本的paddle,可能是什么原因? + +**A**:用户同时安装了paddle cpu和gpu版本,都删掉之后,重新安装gpu版本的padle就好了 + +#### Q3.1.3:试用报错:Cannot load cudnn shared library,是什么原因呢? + +**A**:需要把cudnn lib添加到LD_LIBRARY_PATH中去。 + +#### Q3.1.4:PaddlePaddle怎么指定GPU运行 os.environ["CUDA_VISIBLE_DEVICES"]这种不生效 + +**A**:通过设置 export CUDA_VISIBLE_DEVICES='0'环境变量 + +#### Q3.1.5:windows下训练没有问题,aistudio中提示数据路径有问题 + +**A**:需要把`\`改为`/`(windows和linux的文件夹分隔符不一样,windows下的是`\`,linux下是`/`) + +#### Q3.1.6:gpu版的paddle虽然能在cpu上运行,但是必须要有gpu设备 + +**A**:export CUDA_VISIBLE_DEVICES='',CPU是可以正常跑的 + +#### Q3.1.7:预测报错ImportError: dlopen: cannot load any more object with static TLS + +**A**:glibc的版本问题,运行需要glibc的版本号大于2.23。 + +#### Q3.1.8:提供的inference model和预训练模型的区别 + +**A**:inference model为固化模型,文件中包含网络结构和网络参数,多用于预测部署。预训练模型是训练过程中保存好的模型,多用于fine-tune训练或者断点训练。 + +#### Q3.1.9:模型的解码部分有后处理? + +**A**:有的检测的后处理在ppocr/postprocess路径下,识别的后处理均在ppocr/utils/character.py文件内 + +#### Q3.1.10:PaddleOCR中文模型是否支持数字识别? + +**A**:支持的,可以看下ppocr/utils/ppocr_keys_v1.txt 这个文件,是支持的识别字符列表,其中包含了数字识别。 + +#### Q3.1.11:PaddleOCR如何做到横排和竖排同时支持的? + +**A**:合成了一批竖排文字,逆时针旋转90度后加入训练集与横排一起训练。预测时根据图片长款比判断是否为竖排,若为竖排则将crop出的文本逆时针旋转90度后送入识别网络。 + +#### Q3.1.12:如何获取检测文本框的坐标? + +**A**:文本检测的结果有box和文本信息, 具体 [参考代码](https://github.com/PaddlePaddle/PaddleOCR/blob/9d33e36df550762b204d5fbfd7977a25e31b2c44/tools/infer/predict_system.py#L13) + +#### Q3.1.13:识别模型框出来的位置太紧凑,会丢失边缘的文字信息,导致识别错误 + +**A**: 可以在命令中加入 --det_db_unclip_ratio ,参数[定义位置](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/tools/infer/utility.py#L49),这个参数是检测后处理时控制文本框大小的,默认2.0,可以尝试改成2.5或者更大 +,反之,如果觉得文本框不够紧凑,也可以把该参数调小。 + +#### Q3.1.14:英文手写体识别有计划提供的预训练模型吗? + +**A**:近期也在开展需求调研,如果企业用户需求较多,我们会考虑增加相应的研发投入,后续提供对应的预训练模型,如果有需求欢迎通过issue或者加入微信群联系我们。 + +#### Q3.1.17:超轻量模型和通用OCR模型的区别? + + +**A**:理论上只要有相应的数据集,都是可以的。当然手写识别毕竟和印刷体有区别,对应训练调优策略可能需要适配性优化。 + + +#### Q3.1.16:PaddleOCR的算法可以用于手写文字检测识别吗?后续有计划推出手写预训练模型么? + +PaddleOCR已完成Windows和Mac系统适配,并且python预测支持使用pip包安装。运行时注意两点:1、在[快速安装](./installation.md)时,如果不想安装docker,可跳过第一步,直接从第二步安装paddle开始。2、inference模型下载时,如果没有安装wget,可直接点击模型链接或将链接地址复制到浏览器进行下载,并解压放置到相应目录。 + +#### Q3.1.15:PaddleOCR是否支持在Windows或Mac系统上运行? +**A**:目前PaddleOCR开源了2个中文模型,分别是8.6M超轻量中文模型和通用中文OCR模型。两者对比信息如下: - 相同点:两者使用相同的**算法**和**训练数据**; - 不同点:不同之处在于**骨干网络**和**通道参数**,超轻量模型使用MobileNetV3作为骨干网络,通用模型使用Resnet50_vd作为检测模型backbone,Resnet34_vd作为识别模型backbone,具体参数差异可对比两种模型训练的配置文件. @@ -28,26 +295,186 @@ PaddleOCR已完成Windows和Mac系统适配,运行时注意两点:1、在[ |8.6M超轻量中文OCR模型|MobileNetV3+MobileNetV3|det_mv3_db.yml|rec_chinese_lite_train.yml| |通用中文OCR模型|Resnet50_vd+Resnet34_vd|det_r50_vd_db.yml|rec_chinese_common_train.yml| -8. **是否有计划开源仅识别数字或仅识别英文+数字的模型** -暂不计划开源仅数字、仅数字+英文、或其他小垂类专用模型。PaddleOCR开源了多种检测、识别算法供用户自定义训练,两种中文模型也是基于开源的算法库训练产出,有小垂类需求的小伙伴,可以按照教程准备好数据,选择合适的配置文件,自行训练,相信能有不错的效果。训练有任何问题欢迎提issue或在交流群提问,我们会及时解答。 +#### Q3.1.18:是否有计划开源仅识别数字或仅识别英文+数字的模型 -9. **开源模型使用的训练数据是什么,能否开源** -目前开源的模型,数据集和量级如下: +**A**:目前主要是开源通用类OCR模型,暂不计划开源小垂类专用模型。PaddleOCR开源了多种检测、识别算法供用户自定义训练,两种中文模型也是基于开源的算法库训练产出,有小垂类需求的小伙伴,可以按照教程准备好数据,选择合适的配置文件,自行训练,相信能有不错的效果。训练有任何问题欢迎提issue或在交流群提问,我们会及时解答。 + + + +### 数据集 + +#### Q3.2.1:如何制作PaddleOCR支持的数据格式 + +**A**:可以参考检测与识别训练文档,里面有数据格式详细介绍。[检测文档](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/detection.md),[识别文档](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/recognition.md) + +#### Q3.2.2:请问一下,如果想用预训练模型,但是我的数据里面又出现了预训练模型字符集中没有的字符,新的字符是在字符集前面添加还是在后面添加? + +**A**:在后面添加,修改dict之后,就改变了模型最后一层fc的结构,之前训练到的参数没有用到,相当于从头训练,因此acc是0。 + +#### Q3.2.3:如何调试数据读取程序? + +**A**:tools/train.py中有一个test_reader()函数用于调试数据读取。 + +#### Q3.2.4:开源模型使用的训练数据是什么,能否开源? + +**A**:目前开源的模型,数据集和量级如下: - 检测: 英文数据集,ICDAR2015 中文数据集,LSVT街景数据集训练数据3w张图片 - 识别: 英文数据集,MJSynth和SynthText合成数据,数据量上千万。 中文数据集,LSVT街景数据集根据真值将图crop出来,并进行位置校准,总共30w张图像。此外基于LSVT的语料,合成数据500w。 - 其中,公开数据集都是开源的,用户可自行搜索下载,也可参考[中文数据集](./datasets.md),合成数据暂不开源,用户可使用开源合成工具自行合成,可参考的合成工具包括[text_renderer](https://github.com/Sanster/text_renderer)、[SynthText](https://github.com/ankush-me/SynthText)、[TextRecognitionDataGenerator](https://github.com/Belval/TextRecognitionDataGenerator)等。 -10. **使用带TPS的识别模型预测报错** -报错信息:Input(X) dims[3] and Input(Grid) dims[2] should be equal, but received X dimension[3](320) != Grid dimension[2](100) -原因:TPS模块暂时无法支持变长的输入,请设置 --rec_image_shape='3,32,100' --rec_char_type='en' 固定输入shape +#### Q3.2.5:请问中文字符集多大呢?支持生僻字识别吗? -11. **自定义字典训练的模型,识别结果出现字典里没出现的字** -预测时没有设置采用的自定义字典路径。设置方法是在预测时,通过增加输入参数rec_char_dict_path来设置。 +**A**:中文字符集是6623, 支持生僻字识别。训练样本中有部分生僻字,但样本不多,如果有特殊需求建议使用自己的数据集做fine-tune。 -12. **cpp infer与python inference的结果不一致,相差较大** -导出的inference model版本与预测库版本需要保持一致,比如在Windows下,Paddle官网提供的预测库版本是1.8,而PaddleOCR提供的inference model 版本是1.7,因此最终预测结果会有差别。可以在Paddle1.8环境下导出模型,再基于该模型进行预测。 +#### Q3.2.6:中文文本检测、文本识别构建训练集的话,大概需要多少数据量 + +**A**:检测需要的数据相对较少,在PaddleOCR模型的基础上进行Fine-tune,一般需要500张可达到不错的效果。 +识别分英文和中文,一般英文场景需要几十万数据可达到不错的效果,中文则需要几百万甚至更多。 + +#### Q3.2.7:中文识别模型如何选择? + +**A**:中文模型共有2大类:通用模型和超轻量模型。他们各自的优势如下: +超轻量模型具有更小的模型大小,更快的预测速度。适合用于端侧使用。 +通用模型具有更高的模型精度,适合对模型大小不敏感的场景。 +此外基于以上模型,PaddleOCR还提供了支持空格识别的模型,主要针对中文场景中的英文句子。 +您可以根据实际使用需求进行选择。 + +#### Q3.2.8:图像旋转90° 文本检测可以正常检测到具体文本位置,但是识别准确度大幅降低,是否会考虑增加相应的旋转预处理? + +**A**:目前模型只支持两种方向的文字:水平和垂直。 为了降低模型大小,加快模型预测速度,PaddleOCR暂时没有加入图片的方向判断。建议用户在识别前自行转正,后期也会考虑添加选择角度判断。 + +#### Q3.2.9:同一张图通用检测出21个条目,轻量级检测出26个 ,难道不是轻量级的好吗? + +**A**:可以主要参考可视化效果,通用模型更倾向于检测一整行文字,轻量级可能会有一行文字被分成两段检测的情况,不是数量越多,效果就越好。 + +### 模型训练 +调优 + +#### Q3.3.1:文本长度超过25,应该怎么处理? + +**A**:默认训练时的文本可识别的最大长度为25,超过25的文本会被忽略不参与训练。如果您训练样本中的长文本较多,可以修改配置文件中的 max\_text\_length 字段,设置为更大的最长文本长度,具体位置在[这里](https://github.com/PaddlePaddle/PaddleOCR/blob/fb9e47b262529386983edc21b33abfa16bbf06ac/configs/rec/rec_chinese_lite_train.yml#L13)。 + +#### Q3.3.2:配置文件里面检测的阈值设置么? + +**A**:有的,检测相关的参数主要有以下几个: +``max_side_len:预测时图像resize的长边尺寸 +thresh: 用于二值化输出图的阈值 +box_thresh:用于过滤文本框的阈值,低于此阈值的文本框不要 +unclip_ratio: 文本框扩张的系数,关系到文本框的大小`` + +这些参数的默认值见[代码](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/tools/infer/utility.py#L40),可以通过从命令行传递参数进行修改。 + +#### Q3.3.3:我想请教一下,你们在训练识别时候,lsvt里的非矩形框文字,你们是怎么做处理的呢。忽略掉还是去最小旋转框? + +**A**:现在是忽略处理的 + +#### Q3.3.4:训练过程中,如何恰当的停止训练(直接kill,经常还有显存占用的问题) + +**A**:可以通过下面的脚本终止所有包含train.py字段的进程,ps -axu | grep train.py | awk '{print $2}' | xargs kill -9 + +#### Q3.3.5:读数据进程数设置4~8时训练一会进程接连defunct后gpu利用率一直为0卡死 + +**A**:修改多进程的队列数后解决, 将[代码段]( https://github.com/PaddlePaddle/PaddleOCR/blob/549108fe0aa0d87c0a3b2d471f1c653e89daab80/ppocr/data/reader_main.py#L75 ) 修改为: + +``` +return paddle.reader.multiprocess_reader(readers, False, queue_size=320) + +``` + +#### Q3.3.6:可不可以将pretrain_weights设置为空呢?想从零开始训练一个model + +**A**:这个是可以的,在训练通用识别模型的时候,pretrain_weights就设置为空,但是这样可能需要更长的迭代轮数才能达到相同的精度。 + +#### Q3.3.7:PaddleOCR默认不是200个step保存一次模型吗?为啥文件夹下面都没有生成 + +**A**:eval_batch_step [4000, 5000]改为[0, 5000] 就是从第0次迭代开始,每5000迭代保存一次模型 + +#### Q3.3.8:如何进行模型微调? + +**A**:注意配置好匹配的数据集合适,然后在finetune训练时,可以加载我们提供的预训练模型,设置配置文件中Global.pretrain_weights 参数为要加载的预训练模型路径。 + +#### Q3.3.9:文本检测换成自己的数据没法训练,有一些”###”是什么意思? + +**A**:数据格式有问题,”###” 表示要被忽略的文本区域,所以你的数据都被跳过了,可以换成其他任意字符或者就写个空的。 + +#### Q3.3.10:copy_from_cpu这个地方,这块input不变(t_data的size不变)连续调用两次copy_from_cpu()时,这里面的gpu_place会重新malloc GPU内存吗?还是只有当ele_size变化时才会重新在GPU上malloc呢? + +**A**:小于等于的时候都不会重新分配,只有大于的时候才会重新分配 + +#### Q3.3.11:自己训练出来的未inference转换的模型 可以当作预训练模型吗? + +**A**:可以的,但是如果训练数据两量少的话,可能会过拟合到少量数据上,泛化性能不佳。 +#### Q3.3.13:使用带TPS的识别模型预测报错 + +**A**:直接更换配置文件里的Backbone.function即可,格式为:网络文件路径,网络Class名词。如果所需的backbone在PaddleOCR里没有提供,可以参照PaddleClas里面的网络结构,进行修改尝试。具体修改原则可以参考OCR通用问题中 "如何更换文本检测/识别的backbone" 的回答。 + +#### Q3.3.12:如何更换文本检测/识别的backbone? +**A**:报错信息:'''Input(X) dims[3] and Input(Grid) dims[2] should be equal, but received X dimension[3](320) != Grid dimension[2](100) +**A**:TPS模块暂时无法支持变长的输入,请设置 --rec_image_shape='3,32,100' --rec_char_type='en' 固定输入shape + +### 预测部署 + +#### Q3.4.1:如何pip安装opt模型转换工具? + +**A**:由于OCR端侧部署需要某些算子的支持,这些算子仅在Paddle-Lite 最新develop分支中,所以需要自己编译opt模型转换工具。opt工具可以通过编译PaddleLite获得,编译步骤参考:https://github.com/PaddlePaddle/PaddleOCR/blob/0791714b91/deploy/lite/readme.md 中2.1 模型优化部分。 + +#### Q3.4.2:如何将PaddleOCR预测模型封装成SDK + +**A**:如果是Python的话,可以使用tools/infer/predict_system.py中的TextSystem进行sdk封装,如果是c++的话,可以使用deploy/cpp_infer/src下面的DBDetector和CRNNRecognizer完成封装 + +#### Q3.4.3:服务部署可以只发布 文本识别模型么?(不带文本检测模型) + +**A**:可以的。默认的服务部署是检测和识别串联预测的。也支持单独发布文本检测或文本识别模型,比如使用PaddleHUBPaddleOCR 模型时,deploy下有三个文件夹,分别是 +ocr_det:检测预测 +ocr_rec: 识别预测 +ocr_system: 检测识别串联预测 +每个模块是单独分开的,所以可以选择只发布文本识别模型。使用PaddleServing部署时同理。 + + +#### Q3.4.4:为什么PaddleOCR检测预测是只支持一张图片测试?即test_batch_size_per_card=1 + +**A**:测试的时候,对图像等比例缩放,最长边960,不同图像等比例缩放后长宽不一致,无法组成batch,所以设置为test_batch_size为1。 + +#### Q3.4.5:为什么使用c++ inference和py inference结果不一致 + +**A**:可能是导出的inference model版本与预测库版本需要保持一致,比如在Windows下,Paddle官网提供的预测库版本是1.8,而PaddleOCR提供的inference model 版本是1.7,因此最终预测结果会有差别。可以在Paddle1.8环境下导出模型,再基于该模型进行预测。 +此外也需要保证两者的预测参数配置完全一致。 + +#### Q3.4.6:为什么第一张张图预测时间很长,第二张之后预测时间会降低? + +**A**:第一张图需要初始化,耗时较多。完成模型加载后,之后的预测时间很短。 + +#### Q3.4.70:请问opt工具可以直接转int8量化后的模型为.nb文件吗 + +**A**:有的,PaddleLite提供完善的opt工具,可以参考[文档](https://paddle-lite.readthedocs.io/zh/latest/user_guides/post_quant_with_data.html) + +#### Q3.4.8:请问在安卓端怎么设置这个参数 --det_db_unclip_ratio=3 + +**A**:在安卓APK上无法设置,没有暴露这个接口,如果使用的是PaddledOCR/deploy/lite/的demo,可以修改config.txt中的对应参数来设置 + +#### Q3.4.9:PaddleOCR模型是否可以转换成ONNX模型? + +**A**:目前不支持转ONNX + +#### Q3.4.1:使用opt工具对检测模型转换时报错 can not found op arguments for node conv2_b_attr + +**A**:这个问题大概率是编译opt工具的Paddle-Lite不是develop分支,建议使用Paddle-Lite 的develop分支编译opt工具。 + +#### Q3.4.11:libopenblas.so找不到是什么意思? + +**A**:目前包括mkl和openblas两种版本的预测库,推荐使用mkl的预测库,如果下载的预测库是mkl的,编译的时候也需要勾选`with_mkl`选项 +,以Linux下编译为例,需要在设置这里为ON,`-DWITH_MKL=ON`,[参考链接](https://github.com/PaddlePaddle/PaddleOCR/blob/8a78af26df0dd8f15b734cc8db13e25d2a3656a2/deploy/cpp_infer/tools/build.sh#L12)。此外,使用预测库时,推荐在Linux或者Windows上进行开发,不推荐在MacOS上开发。 +#### Q3.4.12:使用自定义字典训练,inference时如何修改 + +**A**:使用了自定义字典的话,用inference预测时,需要通过 --rec_char_dict_path 修改字典路径。详细操作可参考[文档](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/inference.md#%E8%87%AA%E5%AE%9A%E4%B9%89%E6%96%87%E6%9C%AC%E8%AF%86%E5%88%AB%E5%AD%97%E5%85%B8%E7%9A%84%E6%8E%A8%E7%90%86) + +#### Q3.4.13:能否返回单字字符的位置? + +**A**:训练的时候标注是整个文本行的标注,所以预测的也是文本行位置,如果要获取单字符位置信息,可以根据预测的文本,计算字符数量,再去根据整个文本行的位置信息,估计文本块中每个字符的位置。 + +#### Q3.4.16: +**A**:目前有Inference部署,serving部署和手机端Paddle Lite部署,可根据不同场景做灵活的选择:Inference部署适用于本地离线部署,serving部署适用于云端部署,Paddle Lite部署适用于手机端集成。 From 29ba105c91540bd42fbf007ab7d4337e6f5a52b8 Mon Sep 17 00:00:00 2001 From: grasswolfs Date: Wed, 26 Aug 2020 17:17:07 +0800 Subject: [PATCH 56/70] test=develop,update_docs --- doc/doc_ch/FAQ.md | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index 346d4c2b..d95d4cbf 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -10,7 +10,7 @@ ## PaddleOCR常见问题汇总(持续更新) * [【精选】OCR精选10个问题](#【精选】OCR精选10个问题) -* [【理论篇】OCR通用21个问题](#【理论篇】OCR通用问题) +* [【理论篇】OCR通用21个问题](#【理论篇】OCR通用问题) * [基础知识3题](#基础知识) * [数据集4题](#数据集) * [模型训练调优6题](#模型训练调优) @@ -60,24 +60,19 @@ (1)检测阶段:先按照检测框和标注框的IOU评估,IOU大于某个阈值判断为检测准确。这里检测框和标注框不同于一般的通用目标检测框,是采用多边形进行表示。 -检测准确率det_precision:正确的检测框个数在全部检测框的占比,主要是判断检测指标. +检测准确率:正确的检测框个数在全部检测框的占比,主要是判断检测指标. -检测召回率det_recall:正确的检测框个数在全部标注框的占比,主要是判断漏检的指标。 +检测召回率:正确的检测框个数在全部标注框的占比,主要是判断漏检的指标。 -检测 F1-Score: -$$ F1\_Score= \frac{2 \times det\_precision \times det\_recall}{det\_precision+det\_recall}$$ (2)识别阶段: -字符识别准确率rec_precision,即正确识别的文本行占标注的文本行数量的比例,只有整行文本识别对才算正确识别。 +字符识别准确率,即正确识别的文本行占标注的文本行数量的比例,只有整行文本识别对才算正确识别。 (3)端到端统计: -端对端准确率e2e_precision:准确检测并正确识别文本行在全部标注文本行的占比; -端到端召回率e2e_recall:准确检测并正确识别文本行在 检测到的文本行数量 的占比;准确检测的标准是检测框与标注框的IOU大于某个阈值,正确识别的的检测框中的文本与标注的文本相同。 +端对端准确率:准确检测并正确识别文本行在全部标注文本行的占比; +端到端召回率:准确检测并正确识别文本行在 检测到的文本行数量 的占比;准确检测的标准是检测框与标注框的IOU大于某个阈值,正确识别的的检测框中的文本与标注的文本相同。 -端到端 F1-Score: -$$ F1\_Score= \frac{2 \times e2e\_precision \times e2e\_recall}{e2e\_precision+e2e\_recall}$$ - #### Q1.1.7:单张图上多语种并存识别(如单张图印刷体和手写文字并存),应该如何处理? **A**:单张图像中存在多种类型文本的情况很常见,典型的以学生的试卷为代表,一张图像同时存在手写体和印刷体两种文本,这类情况下,可以尝试”1个检测模型+1个N分类模型+N个识别模型”的解决方案。 @@ -91,8 +86,8 @@ $$ F1\_Score= \frac{2 \times e2e\_precision \times e2e\_recall}{e2e\_precision+e 识别的话,520W左右的数据集(真实数据26W+合成数据500W)训练,超轻量模型:4卡V100,总共训练了5天左右。通用模型:4卡V100,共训练6天。 超轻量模型训练分为2个阶段: -<1>全量数据训练50epoch,耗时3天 -<2>合成数据+真实数据按照1:1数据采样,进行finetune训练200epoch,耗时2天 +(1)全量数据训练50epoch,耗时3天 +(2)合成数据+真实数据按照1:1数据采样,进行finetune训练200epoch,耗时2天 通用模型训练: 真实数据+合成数据,动态采样(1:1)训练,200epoch,耗时 6天左右。 @@ -448,7 +443,7 @@ ocr_system: 检测识别串联预测 **A**:第一张图需要初始化,耗时较多。完成模型加载后,之后的预测时间很短。 -#### Q3.4.70:请问opt工具可以直接转int8量化后的模型为.nb文件吗 +#### Q3.4.7:请问opt工具可以直接转int8量化后的模型为.nb文件吗 **A**:有的,PaddleLite提供完善的opt工具,可以参考[文档](https://paddle-lite.readthedocs.io/zh/latest/user_guides/post_quant_with_data.html) @@ -460,7 +455,7 @@ ocr_system: 检测识别串联预测 **A**:目前不支持转ONNX -#### Q3.4.1:使用opt工具对检测模型转换时报错 can not found op arguments for node conv2_b_attr +#### Q3.4.10:使用opt工具对检测模型转换时报错 can not found op arguments for node conv2_b_attr **A**:这个问题大概率是编译opt工具的Paddle-Lite不是develop分支,建议使用Paddle-Lite 的develop分支编译opt工具。 @@ -476,5 +471,5 @@ ocr_system: 检测识别串联预测 **A**:训练的时候标注是整个文本行的标注,所以预测的也是文本行位置,如果要获取单字符位置信息,可以根据预测的文本,计算字符数量,再去根据整个文本行的位置信息,估计文本块中每个字符的位置。 -#### Q3.4.16: +#### Q3.4.16:PaddleOCR模型部署方式有哪几种? **A**:目前有Inference部署,serving部署和手机端Paddle Lite部署,可根据不同场景做灵活的选择:Inference部署适用于本地离线部署,serving部署适用于云端部署,Paddle Lite部署适用于手机端集成。 From 46af364e121c6346d6640a6083e895c43957aeab Mon Sep 17 00:00:00 2001 From: dyning Date: Wed, 26 Aug 2020 17:22:08 +0800 Subject: [PATCH 57/70] Update FAQ.md --- doc/doc_ch/FAQ.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index d95d4cbf..de22d1fe 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -471,5 +471,5 @@ ocr_system: 检测识别串联预测 **A**:训练的时候标注是整个文本行的标注,所以预测的也是文本行位置,如果要获取单字符位置信息,可以根据预测的文本,计算字符数量,再去根据整个文本行的位置信息,估计文本块中每个字符的位置。 -#### Q3.4.16:PaddleOCR模型部署方式有哪几种? +#### Q3.4.14:PaddleOCR模型部署方式有哪几种? **A**:目前有Inference部署,serving部署和手机端Paddle Lite部署,可根据不同场景做灵活的选择:Inference部署适用于本地离线部署,serving部署适用于云端部署,Paddle Lite部署适用于手机端集成。 From 6b73e5f47a78f744ceed7987f645918d990ebe01 Mon Sep 17 00:00:00 2001 From: dyning Date: Wed, 26 Aug 2020 17:25:52 +0800 Subject: [PATCH 58/70] Update FAQ.md --- doc/doc_ch/FAQ.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index de22d1fe..ca548423 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -270,7 +270,7 @@ **A**:近期也在开展需求调研,如果企业用户需求较多,我们会考虑增加相应的研发投入,后续提供对应的预训练模型,如果有需求欢迎通过issue或者加入微信群联系我们。 -#### Q3.1.17:超轻量模型和通用OCR模型的区别? +#### Q3.1.15:超轻量模型和通用OCR模型的区别? **A**:理论上只要有相应的数据集,都是可以的。当然手写识别毕竟和印刷体有区别,对应训练调优策略可能需要适配性优化。 @@ -280,7 +280,7 @@ PaddleOCR已完成Windows和Mac系统适配,并且python预测支持使用pip包安装。运行时注意两点:1、在[快速安装](./installation.md)时,如果不想安装docker,可跳过第一步,直接从第二步安装paddle开始。2、inference模型下载时,如果没有安装wget,可直接点击模型链接或将链接地址复制到浏览器进行下载,并解压放置到相应目录。 -#### Q3.1.15:PaddleOCR是否支持在Windows或Mac系统上运行? +#### Q3.1.17:PaddleOCR是否支持在Windows或Mac系统上运行? **A**:目前PaddleOCR开源了2个中文模型,分别是8.6M超轻量中文模型和通用中文OCR模型。两者对比信息如下: - 相同点:两者使用相同的**算法**和**训练数据**; - 不同点:不同之处在于**骨干网络**和**通道参数**,超轻量模型使用MobileNetV3作为骨干网络,通用模型使用Resnet50_vd作为检测模型backbone,Resnet34_vd作为识别模型backbone,具体参数差异可对比两种模型训练的配置文件. @@ -377,7 +377,6 @@ unclip_ratio: 文本框扩张的系数,关系到文本框的大小`` ``` return paddle.reader.multiprocess_reader(readers, False, queue_size=320) - ``` #### Q3.3.6:可不可以将pretrain_weights设置为空呢?想从零开始训练一个model @@ -403,11 +402,13 @@ return paddle.reader.multiprocess_reader(readers, False, queue_size=320) #### Q3.3.11:自己训练出来的未inference转换的模型 可以当作预训练模型吗? **A**:可以的,但是如果训练数据两量少的话,可能会过拟合到少量数据上,泛化性能不佳。 -#### Q3.3.13:使用带TPS的识别模型预测报错 + +#### Q3.3.12:如何更换文本检测/识别的backbone? **A**:直接更换配置文件里的Backbone.function即可,格式为:网络文件路径,网络Class名词。如果所需的backbone在PaddleOCR里没有提供,可以参照PaddleClas里面的网络结构,进行修改尝试。具体修改原则可以参考OCR通用问题中 "如何更换文本检测/识别的backbone" 的回答。 -#### Q3.3.12:如何更换文本检测/识别的backbone? +#### Q3.3.13:使用带TPS的识别模型预测报错 + **A**:报错信息:'''Input(X) dims[3] and Input(Grid) dims[2] should be equal, but received X dimension[3](320) != Grid dimension[2](100) **A**:TPS模块暂时无法支持变长的输入,请设置 --rec_image_shape='3,32,100' --rec_char_type='en' 固定输入shape From 8deee752aae9e4e4a1094a8e5e11f2c993bd1846 Mon Sep 17 00:00:00 2001 From: dyning Date: Wed, 26 Aug 2020 17:27:41 +0800 Subject: [PATCH 59/70] Update FAQ.md --- doc/doc_ch/FAQ.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index ca548423..a97b8cc3 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -15,11 +15,11 @@ * [数据集4题](#数据集) * [模型训练调优6题](#模型训练调优) * [预测部署8题](#预测部署) -* [【实战篇】PaddleOCR实战53个问题](#【实战篇】PaddleOCR实战问题) - * [使用咨询16题](#使用咨询) +* [【实战篇】PaddleOCR实战54个问题](#【实战篇】PaddleOCR实战问题) + * [使用咨询18题](#使用咨询) * [数据集9题](#数据集) * [模型训练调优13题](#模型训练调优) - * [预测部署15题](#[预测部署) + * [预测部署14题](#[预测部署) From 6c60f8e2e7ae287442496a4d6c652bc3d333eb30 Mon Sep 17 00:00:00 2001 From: dyning Date: Wed, 26 Aug 2020 17:27:55 +0800 Subject: [PATCH 60/70] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a290960..c828163f 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力使用者训练出更好的模型,并应用落地。 **近期更新** -- 2020.8.26 更新OCR相关的83个常见问题及解答,具体参考[FAQ](./doc/doc_ch/FAQ.md) +- 2020.8.26 更新OCR相关的85个常见问题及解答,具体参考[FAQ](./doc/doc_ch/FAQ.md) - 2020.8.24 支持通过whl包安装使用PaddleOCR,具体参考[Paddleocr Package使用说明](./doc/doc_ch/whl.md) - 2020.8.21 更新8月18日B站直播课回放和PPT,课节2,易学易用的OCR工具大礼包,[获取地址](https://aistudio.baidu.com/aistudio/education/group/info/1519) - 2020.8.16 开源文本检测算法[SAST](https://arxiv.org/abs/1908.05498)和文本识别算法[SRN](https://arxiv.org/abs/2003.12294) From bf321ecd984f863b032252ac5599fa9eab855c17 Mon Sep 17 00:00:00 2001 From: dyning Date: Wed, 26 Aug 2020 17:30:57 +0800 Subject: [PATCH 61/70] Update FAQ.md --- doc/doc_ch/FAQ.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index a97b8cc3..affe9e6d 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -263,7 +263,7 @@ #### Q3.1.13:识别模型框出来的位置太紧凑,会丢失边缘的文字信息,导致识别错误 -**A**: 可以在命令中加入 --det_db_unclip_ratio ,参数[定义位置](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/tools/infer/utility.py#L49),这个参数是检测后处理时控制文本框大小的,默认2.0,可以尝试改成2.5或者更大 +**A**: 可以在命令中加入 --det_db_unclip_ratio ,参考[定义位置](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/tools/infer/utility.py#L49),这个参数是检测后处理时控制文本框大小的,默认2.0,可以尝试改成2.5或者更大 ,反之,如果觉得文本框不够紧凑,也可以把该参数调小。 #### Q3.1.14:英文手写体识别有计划提供的预训练模型吗? @@ -272,13 +272,12 @@ #### Q3.1.15:超轻量模型和通用OCR模型的区别? - **A**:理论上只要有相应的数据集,都是可以的。当然手写识别毕竟和印刷体有区别,对应训练调优策略可能需要适配性优化。 #### Q3.1.16:PaddleOCR的算法可以用于手写文字检测识别吗?后续有计划推出手写预训练模型么? -PaddleOCR已完成Windows和Mac系统适配,并且python预测支持使用pip包安装。运行时注意两点:1、在[快速安装](./installation.md)时,如果不想安装docker,可跳过第一步,直接从第二步安装paddle开始。2、inference模型下载时,如果没有安装wget,可直接点击模型链接或将链接地址复制到浏览器进行下载,并解压放置到相应目录。 +**A**:PaddleOCR已完成Windows和Mac系统适配,并且python预测支持使用pip包安装。运行时注意两点:1、在[快速安装](./installation.md)时,如果不想安装docker,可跳过第一步,直接从第二步安装paddle开始。2、inference模型下载时,如果没有安装wget,可直接点击模型链接或将链接地址复制到浏览器进行下载,并解压放置到相应目录。 #### Q3.1.17:PaddleOCR是否支持在Windows或Mac系统上运行? **A**:目前PaddleOCR开源了2个中文模型,分别是8.6M超轻量中文模型和通用中文OCR模型。两者对比信息如下: @@ -295,7 +294,6 @@ PaddleOCR已完成Windows和Mac系统适配,并且python预测支持使用pip **A**:目前主要是开源通用类OCR模型,暂不计划开源小垂类专用模型。PaddleOCR开源了多种检测、识别算法供用户自定义训练,两种中文模型也是基于开源的算法库训练产出,有小垂类需求的小伙伴,可以按照教程准备好数据,选择合适的配置文件,自行训练,相信能有不错的效果。训练有任何问题欢迎提issue或在交流群提问,我们会及时解答。 - ### 数据集 #### Q3.2.1:如何制作PaddleOCR支持的数据格式 From 5edb619cdd7405f1f6946547320f84f27f15a85e Mon Sep 17 00:00:00 2001 From: tink2123 Date: Wed, 26 Aug 2020 20:14:13 +0800 Subject: [PATCH 62/70] rename rec_resnet_fpn --- configs/rec/rec_r50fpn_vd_none_srn.yml | 2 +- ...{rec_resnet50_fpn.py => rec_resnet_fpn.py} | 137 +++++++++++++----- 2 files changed, 98 insertions(+), 41 deletions(-) rename ppocr/modeling/backbones/{rec_resnet50_fpn.py => rec_resnet_fpn.py} (59%) diff --git a/configs/rec/rec_r50fpn_vd_none_srn.yml b/configs/rec/rec_r50fpn_vd_none_srn.yml index 7a0f136c..30709e47 100755 --- a/configs/rec/rec_r50fpn_vd_none_srn.yml +++ b/configs/rec/rec_r50fpn_vd_none_srn.yml @@ -27,7 +27,7 @@ Architecture: function: ppocr.modeling.architectures.rec_model,RecModel Backbone: - function: ppocr.modeling.backbones.rec_resnet50_fpn,ResNet + function: ppocr.modeling.backbones.rec_resnet_fpn,ResNet layers: 50 Head: diff --git a/ppocr/modeling/backbones/rec_resnet50_fpn.py b/ppocr/modeling/backbones/rec_resnet_fpn.py similarity index 59% rename from ppocr/modeling/backbones/rec_resnet50_fpn.py rename to ppocr/modeling/backbones/rec_resnet_fpn.py index a0aef487..0a05b5de 100755 --- a/ppocr/modeling/backbones/rec_resnet50_fpn.py +++ b/ppocr/modeling/backbones/rec_resnet_fpn.py @@ -22,12 +22,12 @@ import paddle import paddle.fluid as fluid from paddle.fluid.param_attr import ParamAttr - -__all__ = ["ResNet", "ResNet18", "ResNet34", "ResNet50", "ResNet101", "ResNet152"] +__all__ = [ + "ResNet", "ResNet18", "ResNet34", "ResNet50", "ResNet101", "ResNet152" +] Trainable = True -w_nolr = fluid.ParamAttr( - trainable = Trainable) +w_nolr = fluid.ParamAttr(trainable=Trainable) train_parameters = { "input_size": [3, 224, 224], "input_mean": [0.485, 0.456, 0.406], @@ -40,12 +40,12 @@ train_parameters = { } } + class ResNet(): def __init__(self, params): self.layers = params['layers'] self.params = train_parameters - def __call__(self, input): layers = self.layers supported_layers = [18, 34, 50, 101, 152] @@ -60,12 +60,17 @@ class ResNet(): depth = [3, 4, 23, 3] elif layers == 152: depth = [3, 8, 36, 3] - stride_list = [(2,2),(2,2),(1,1),(1,1)] + stride_list = [(2, 2), (2, 2), (1, 1), (1, 1)] num_filters = [64, 128, 256, 512] conv = self.conv_bn_layer( - input=input, num_filters=64, filter_size=7, stride=2, act='relu', name="conv1") - F = [] + input=input, + num_filters=64, + filter_size=7, + stride=2, + act='relu', + name="conv1") + F = [] if layers >= 50: for block in range(len(depth)): for i in range(depth[block]): @@ -79,7 +84,8 @@ class ResNet(): conv = self.bottleneck_block( input=conv, num_filters=num_filters[block], - stride=stride_list[block] if i == 0 else 1, name=conv_name) + stride=stride_list[block] if i == 0 else 1, + name=conv_name) F.append(conv) else: for block in range(len(depth)): @@ -100,22 +106,45 @@ class ResNet(): F.append(conv) base = F[-1] - for i in [-2, -3]: + for i in [-2, -3]: b, c, w, h = F[i].shape - if (w,h) == base.shape[2:]: + if (w, h) == base.shape[2:]: base = base else: - base = fluid.layers.conv2d_transpose( input=base, num_filters=c,filter_size=4, stride=2, - padding=1,act=None, + base = fluid.layers.conv2d_transpose( + input=base, + num_filters=c, + filter_size=4, + stride=2, + padding=1, + act=None, param_attr=w_nolr, bias_attr=w_nolr) - base = fluid.layers.batch_norm(base, act = "relu", param_attr=w_nolr, bias_attr=w_nolr) + base = fluid.layers.batch_norm( + base, act="relu", param_attr=w_nolr, bias_attr=w_nolr) base = fluid.layers.concat([base, F[i]], axis=1) - base = fluid.layers.conv2d(base, num_filters=c, filter_size=1, param_attr=w_nolr, bias_attr=w_nolr) - base = fluid.layers.conv2d(base, num_filters=c, filter_size=3,padding = 1, param_attr=w_nolr, bias_attr=w_nolr) - base = fluid.layers.batch_norm(base, act = "relu", param_attr=w_nolr, bias_attr=w_nolr) + base = fluid.layers.conv2d( + base, + num_filters=c, + filter_size=1, + param_attr=w_nolr, + bias_attr=w_nolr) + base = fluid.layers.conv2d( + base, + num_filters=c, + filter_size=3, + padding=1, + param_attr=w_nolr, + bias_attr=w_nolr) + base = fluid.layers.batch_norm( + base, act="relu", param_attr=w_nolr, bias_attr=w_nolr) - base = fluid.layers.conv2d(base, num_filters=512, filter_size=1,bias_attr=w_nolr,param_attr=w_nolr) + base = fluid.layers.conv2d( + base, + num_filters=512, + filter_size=1, + bias_attr=w_nolr, + param_attr=w_nolr) return base @@ -130,13 +159,14 @@ class ResNet(): conv = fluid.layers.conv2d( input=input, num_filters=num_filters, - filter_size= 2 if stride==(1,1) else filter_size, - dilation = 2 if stride==(1,1) else 1, + filter_size=2 if stride == (1, 1) else filter_size, + dilation=2 if stride == (1, 1) else 1, stride=stride, padding=(filter_size - 1) // 2, groups=groups, act=None, - param_attr=ParamAttr(name=name + "_weights",trainable = Trainable), + param_attr=ParamAttr( + name=name + "_weights", trainable=Trainable), bias_attr=False, name=name + '.conv2d.output.1') @@ -144,28 +174,35 @@ class ResNet(): bn_name = "bn_" + name else: bn_name = "bn" + name[3:] - return fluid.layers.batch_norm(input=conv, - act=act, - name=bn_name + '.output.1', - param_attr=ParamAttr(name=bn_name + '_scale',trainable = Trainable), - bias_attr=ParamAttr(bn_name + '_offset',trainable = Trainable), - moving_mean_name=bn_name + '_mean', - moving_variance_name=bn_name + '_variance', ) + return fluid.layers.batch_norm( + input=conv, + act=act, + name=bn_name + '.output.1', + param_attr=ParamAttr( + name=bn_name + '_scale', trainable=Trainable), + bias_attr=ParamAttr( + bn_name + '_offset', trainable=Trainable), + moving_mean_name=bn_name + '_mean', + moving_variance_name=bn_name + '_variance', ) def shortcut(self, input, ch_out, stride, is_first, name): ch_in = input.shape[1] if ch_in != ch_out or stride != 1 or is_first == True: - if stride == (1,1): + if stride == (1, 1): return self.conv_bn_layer(input, ch_out, 1, 1, name=name) - else: #stride == (2,2) + else: #stride == (2,2) return self.conv_bn_layer(input, ch_out, 1, stride, name=name) - + else: return input def bottleneck_block(self, input, num_filters, stride, name): conv0 = self.conv_bn_layer( - input=input, num_filters=num_filters, filter_size=1, act='relu', name=name + "_branch2a") + input=input, + num_filters=num_filters, + filter_size=1, + act='relu', + name=name + "_branch2a") conv1 = self.conv_bn_layer( input=conv0, num_filters=num_filters, @@ -174,16 +211,36 @@ class ResNet(): act='relu', name=name + "_branch2b") conv2 = self.conv_bn_layer( - input=conv1, num_filters=num_filters * 4, filter_size=1, act=None, name=name + "_branch2c") + input=conv1, + num_filters=num_filters * 4, + filter_size=1, + act=None, + name=name + "_branch2c") - short = self.shortcut(input, num_filters * 4, stride, is_first=False, name=name + "_branch1") + short = self.shortcut( + input, + num_filters * 4, + stride, + is_first=False, + name=name + "_branch1") - return fluid.layers.elementwise_add(x=short, y=conv2, act='relu', name=name + ".add.output.5") + return fluid.layers.elementwise_add( + x=short, y=conv2, act='relu', name=name + ".add.output.5") def basic_block(self, input, num_filters, stride, is_first, name): - conv0 = self.conv_bn_layer(input=input, num_filters=num_filters, filter_size=3, act='relu', stride=stride, - name=name + "_branch2a") - conv1 = self.conv_bn_layer(input=conv0, num_filters=num_filters, filter_size=3, act=None, - name=name + "_branch2b") - short = self.shortcut(input, num_filters, stride, is_first, name=name + "_branch1") + conv0 = self.conv_bn_layer( + input=input, + num_filters=num_filters, + filter_size=3, + act='relu', + stride=stride, + name=name + "_branch2a") + conv1 = self.conv_bn_layer( + input=conv0, + num_filters=num_filters, + filter_size=3, + act=None, + name=name + "_branch2b") + short = self.shortcut( + input, num_filters, stride, is_first, name=name + "_branch1") return fluid.layers.elementwise_add(x=short, y=conv1, act='relu') From cbb82c6b2f0d1f90058ab53db7b1904b71d96807 Mon Sep 17 00:00:00 2001 From: grasswolfs Date: Wed, 26 Aug 2020 20:16:52 +0800 Subject: [PATCH 63/70] test=develop,update_docs --- doc/doc_ch/FAQ.md | 49 ++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index affe9e6d..90a92bb0 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -9,48 +9,54 @@ ## PaddleOCR常见问题汇总(持续更新) -* [【精选】OCR精选10个问题](#【精选】OCR精选10个问题) -* [【理论篇】OCR通用21个问题](#【理论篇】OCR通用问题) +* [【精选】OCR精选10个问题](#OCR精选10个问题) +* [【理论篇】OCR通用21个问题](#OCR通用问题) * [基础知识3题](#基础知识) * [数据集4题](#数据集) * [模型训练调优6题](#模型训练调优) * [预测部署8题](#预测部署) -* [【实战篇】PaddleOCR实战54个问题](#【实战篇】PaddleOCR实战问题) - * [使用咨询18题](#使用咨询) +* [【实战篇】PaddleOCR实战53个问题](#PaddleOCR实战问题) + * [使用咨询17题](#使用咨询) * [数据集9题](#数据集) * [模型训练调优13题](#模型训练调优) * [预测部署14题](#[预测部署) - + ## 【精选】OCR精选10个问题 #### Q1.1.1:基于深度学习的文字检测方法有哪几种?各有什么优缺点? **A**:常用的基于深度学习的文字检测方法一般可以分为基于回归的、基于分割的两大类,当然还有一些将两者进行结合的方法。 + (1)基于回归的方法分为box回归和像素值回归。a. 采用box回归的方法主要有CTPN、Textbox系列和EAST,这类算法对规则形状文本检测效果较好,但无法准确检测不规则形状文本。 b. 像素值回归的方法主要有CRAFT和SA-Text,这类算法能够检测弯曲文本且对小文本效果优秀但是实时性能不够。 + (2)基于分割的算法,如PSENet,这类算法不受文本形状的限制,对各种形状的文本都能取得较好的效果,但是往往后处理比较复杂,导致耗时严重。目前也有一些算法专门针对这个问题进行改进,如DB,将二值化进行近似,使其可导,融入训练,从而获取更准确的边界,大大降低了后处理的耗时。 #### Q1.1.2:对于中文行文本识别,CTC和Attention哪种更优? **A**:(1)从效果上来看,通用OCR场景CTC的识别效果优于Attention,因为带识别的字典中的字符比较多,常用中文汉字三千字以上,如果训练样本不足的情况下,对于这些字符的序列关系挖掘比较困难。中文场景下Attention模型的优势无法体现。而且Attention适合短语句识别,对长句子识别比较差。 + (2)从训练和预测速度上,Attention的串行解码结构限制了预测速度,而CTC网络结构更高效,预测速度上更有优势。 #### Q1.1.3:弯曲形变的文字识别需要怎么处理?TPS应用场景是什么,是否好用? **A**:(1)在大多数情况下,如果遇到的场景弯曲形变不是太严重,检测4个顶点,然后直接通过仿射变换转正识别就足够了。 + (2)如果不能满足需求,可以尝试使用TPS(Thin Plate Spline),即薄板样条插值。TPS是一种插值算法,经常用于图像变形等,通过少量的控制点就可以驱动图像进行变化。一般用在有弯曲形变的文本识别中,当检测到不规则的/弯曲的(如,使用基于分割的方法检测算法)文本区域,往往先使用TPS算法对文本区域矫正成矩形再进行识别,如,STAR-Net、RARE等识别算法中引入了TPS模块。 **Warning**:TPS看起来美好,在实际应用时经常发现并不够鲁棒,并且会增加耗时,需要谨慎使用。 #### Q1.1.4:简单的对于精度要求不高的OCR任务,数据集需要准备多少张呢? **A**:(1)训练数据的数量和需要解决问题的复杂度有关系。难度越大,精度要求越高,则数据集需求越大,而且一般情况实际中的训练数据越多效果越好。 + (2)对于精度要求不高的场景,检测任务和识别任务需要的数据量是不一样的。对于检测任务,500张图像可以保证基本的检测效果。对于识别任务,需要保证识别字典中每个字符出现在不同场景的行文本图像数目需要大于200张(举例,如果有字典中有5个字,每个字都需要出现在200张图片以上,那么最少要求的图像数量应该在200-1000张之间),这样可以保证基本的识别效果。 #### Q1.1.5:背景干扰的文字(如印章盖到落款上,需要识别落款或者印章中的文字),如何识别? **A**:(1)在人眼确认可识别的条件下,对于背景有干扰的文字,首先要保证检测框足够准确,如果检测框不准确,需要考虑是否可以通过过滤颜色等方式对图像预处理并且增加更多相关的训练数据;在识别的部分,注意在训练数据中加入背景干扰类的扩增图像。 + (2)如果MobileNet模型不能满足需求,可以尝试ResNet系列大模型来获得更好的效果 。 @@ -96,15 +102,18 @@ #### Q1.1.9:PaddleOCR模型推理方式有几种?各自的优缺点是什么 **A**:目前推理方式支持基于训练引擎推理和基于预测引擎推理。 + (1)基于训练引擎推理不需要转换模型,但是需要先组网再load参数,语言只支持python,不适合系统集成。 + (2)基于预测引擎的推理需要先转换模型为inference格式,然后可以进行不需要组网的推理,语言支持c++和python,适合系统集成。 #### Q1.1.10:PaddleOCR中,对于模型预测加速,CPU加速的途径有哪些?基于TenorRT加速GPU对输入有什么要求? **A**:(1)CPU可以使用mkldnn进行加速;对于python inference的话,可以把enable_mkldnn改为true,[参考代码](https://github.com/PaddlePaddle/PaddleOCR/blob/549108fe0aa0d87c0a3b2d471f1c653e89daab80/tools/infer/utility.py#L73),对于cpp inference的话,在配置文件里面配置use_mkldnn 1即可,[参考代码](https://github.com/PaddlePaddle/PaddleOCR/blob/549108fe0aa0d87c0a3b2d471f1c653e89daab80/deploy/cpp_infer/tools/config.txt#L6) + (2)GPU需要注意变长输入问题等,TRT6 之后才支持变长输入 - + ## 【理论篇】OCR通用问题 ### 基础知识 @@ -144,7 +153,9 @@ #### Q2.3.1:如何更换文本检测/识别的backbone? **A**:无论是文字检测,还是文字识别,骨干网络的选择是预测效果和预测效率的权衡。一般,选择更大规模的骨干网络,例如ResNet101_vd,则检测或识别更准确,但预测耗时相应也会增加。而选择更小规模的骨干网络,例如MobileNetV3_small_x0_35,则预测更快,但检测或识别的准确率会大打折扣。幸运的是不同骨干网络的检测或识别效果与在ImageNet数据集图像1000分类任务效果正相关。[**飞桨图像分类套件PaddleClas**](https://github.com/PaddlePaddle/PaddleClas)汇总了ResNet_vd、Res2Net、HRNet、MobileNetV3、GhostNet等23种系列的分类网络结构,在上述图像分类任务的top1识别准确率,GPU(V100和T4)和CPU(骁龙855)的预测耗时以及相应的[**117个预训练模型下载地址**](https://paddleclas.readthedocs.io/zh_CN/latest/models/models_intro.html)。 + (1)文字检测骨干网络的替换,主要是确定类似与ResNet的4个stages,以方便集成后续的类似FPN的检测头。此外,对于文字检测问题,使用ImageNet训练的分类预训练模型,可以加速收敛和效果提升。 + (2)文字识别的骨干网络的替换,需要注意网络宽高stride的下降位置。由于文本识别一般宽高比例很大,因此高度下降频率少一些,宽度下降频率多一些。可以参考PaddleOCR中[MobileNetV3骨干网络](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/ppocr/modeling/backbones/rec_mobilenet_v3.py)的改动。 #### Q2.3.2:文本识别训练不加LSTM是否可以收敛? @@ -208,7 +219,7 @@ **A**:表格目前学术界比较成熟的解决方案不多 ,可以尝试下分割的论文方案。 - + ## 【实战篇】PaddleOCR实战问题 ### 使用咨询 @@ -263,23 +274,21 @@ #### Q3.1.13:识别模型框出来的位置太紧凑,会丢失边缘的文字信息,导致识别错误 -**A**: 可以在命令中加入 --det_db_unclip_ratio ,参考[定义位置](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/tools/infer/utility.py#L49),这个参数是检测后处理时控制文本框大小的,默认2.0,可以尝试改成2.5或者更大 -,反之,如果觉得文本框不够紧凑,也可以把该参数调小。 +**A**: 可以在命令中加入 --det_db_unclip_ratio ,参数[定义位置](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/tools/infer/utility.py#L49),这个参数是检测后处理时控制文本框大小的,默认2.0,可以尝试改成2.5或者更大,反之,如果觉得文本框不够紧凑,也可以把该参数调小。 #### Q3.1.14:英文手写体识别有计划提供的预训练模型吗? **A**:近期也在开展需求调研,如果企业用户需求较多,我们会考虑增加相应的研发投入,后续提供对应的预训练模型,如果有需求欢迎通过issue或者加入微信群联系我们。 -#### Q3.1.15:超轻量模型和通用OCR模型的区别? - +#### Q3.1.15:PaddleOCR的算法可以用于手写文字检测识别吗?后续有计划推出手写预训练模型么? **A**:理论上只要有相应的数据集,都是可以的。当然手写识别毕竟和印刷体有区别,对应训练调优策略可能需要适配性优化。 -#### Q3.1.16:PaddleOCR的算法可以用于手写文字检测识别吗?后续有计划推出手写预训练模型么? +#### Q3.1.16:PaddleOCR是否支持在Windows或Mac系统上运行? -**A**:PaddleOCR已完成Windows和Mac系统适配,并且python预测支持使用pip包安装。运行时注意两点:1、在[快速安装](./installation.md)时,如果不想安装docker,可跳过第一步,直接从第二步安装paddle开始。2、inference模型下载时,如果没有安装wget,可直接点击模型链接或将链接地址复制到浏览器进行下载,并解压放置到相应目录。 +**A**:PaddleOCR已完成Windows和Mac系统适配,运行时注意两点:1、在[快速安装](./installation.md)时,如果不想安装docker,可跳过第一步,直接从第二步安装paddle开始。2、inference模型下载时,如果没有安装wget,可直接点击模型链接或将链接地址复制到浏览器进行下载,并解压放置到相应目录。 -#### Q3.1.17:PaddleOCR是否支持在Windows或Mac系统上运行? +#### Q3.1.17:PaddleOCR开源的超轻量模型和通用OCR模型的区别? **A**:目前PaddleOCR开源了2个中文模型,分别是8.6M超轻量中文模型和通用中文OCR模型。两者对比信息如下: - 相同点:两者使用相同的**算法**和**训练数据**; - 不同点:不同之处在于**骨干网络**和**通道参数**,超轻量模型使用MobileNetV3作为骨干网络,通用模型使用Resnet50_vd作为检测模型backbone,Resnet34_vd作为识别模型backbone,具体参数差异可对比两种模型训练的配置文件. @@ -289,10 +298,6 @@ |8.6M超轻量中文OCR模型|MobileNetV3+MobileNetV3|det_mv3_db.yml|rec_chinese_lite_train.yml| |通用中文OCR模型|Resnet50_vd+Resnet34_vd|det_r50_vd_db.yml|rec_chinese_common_train.yml| -#### Q3.1.18:是否有计划开源仅识别数字或仅识别英文+数字的模型 - -**A**:目前主要是开源通用类OCR模型,暂不计划开源小垂类专用模型。PaddleOCR开源了多种检测、识别算法供用户自定义训练,两种中文模型也是基于开源的算法库训练产出,有小垂类需求的小伙伴,可以按照教程准备好数据,选择合适的配置文件,自行训练,相信能有不错的效果。训练有任何问题欢迎提issue或在交流群提问,我们会及时解答。 - ### 数据集 @@ -375,6 +380,7 @@ unclip_ratio: 文本框扩张的系数,关系到文本框的大小`` ``` return paddle.reader.multiprocess_reader(readers, False, queue_size=320) + ``` #### Q3.3.6:可不可以将pretrain_weights设置为空呢?想从零开始训练一个model @@ -400,13 +406,11 @@ return paddle.reader.multiprocess_reader(readers, False, queue_size=320) #### Q3.3.11:自己训练出来的未inference转换的模型 可以当作预训练模型吗? **A**:可以的,但是如果训练数据两量少的话,可能会过拟合到少量数据上,泛化性能不佳。 - -#### Q3.3.12:如何更换文本检测/识别的backbone? +#### Q3.3.12:使用带TPS的识别模型预测报错 **A**:直接更换配置文件里的Backbone.function即可,格式为:网络文件路径,网络Class名词。如果所需的backbone在PaddleOCR里没有提供,可以参照PaddleClas里面的网络结构,进行修改尝试。具体修改原则可以参考OCR通用问题中 "如何更换文本检测/识别的backbone" 的回答。 -#### Q3.3.13:使用带TPS的识别模型预测报错 - +#### Q3.3.13:如何更换文本检测/识别的backbone? **A**:报错信息:'''Input(X) dims[3] and Input(Grid) dims[2] should be equal, but received X dimension[3](320) != Grid dimension[2](100) **A**:TPS模块暂时无法支持变长的输入,请设置 --rec_image_shape='3,32,100' --rec_char_type='en' 固定输入shape @@ -462,6 +466,7 @@ ocr_system: 检测识别串联预测 **A**:目前包括mkl和openblas两种版本的预测库,推荐使用mkl的预测库,如果下载的预测库是mkl的,编译的时候也需要勾选`with_mkl`选项 ,以Linux下编译为例,需要在设置这里为ON,`-DWITH_MKL=ON`,[参考链接](https://github.com/PaddlePaddle/PaddleOCR/blob/8a78af26df0dd8f15b734cc8db13e25d2a3656a2/deploy/cpp_infer/tools/build.sh#L12)。此外,使用预测库时,推荐在Linux或者Windows上进行开发,不推荐在MacOS上开发。 + #### Q3.4.12:使用自定义字典训练,inference时如何修改 **A**:使用了自定义字典的话,用inference预测时,需要通过 --rec_char_dict_path 修改字典路径。详细操作可参考[文档](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/inference.md#%E8%87%AA%E5%AE%9A%E4%B9%89%E6%96%87%E6%9C%AC%E8%AF%86%E5%88%AB%E5%AD%97%E5%85%B8%E7%9A%84%E6%8E%A8%E7%90%86) From 98a979a6bf2a19fe2dc3a1a9f7a0115ca2913bdd Mon Sep 17 00:00:00 2001 From: grasswolfs Date: Wed, 26 Aug 2020 20:44:17 +0800 Subject: [PATCH 64/70] test=develop,update_docs --- doc/doc_ch/FAQ.md | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index 90a92bb0..0a419c12 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -290,8 +290,8 @@ #### Q3.1.17:PaddleOCR开源的超轻量模型和通用OCR模型的区别? **A**:目前PaddleOCR开源了2个中文模型,分别是8.6M超轻量中文模型和通用中文OCR模型。两者对比信息如下: - - 相同点:两者使用相同的**算法**和**训练数据**; - - 不同点:不同之处在于**骨干网络**和**通道参数**,超轻量模型使用MobileNetV3作为骨干网络,通用模型使用Resnet50_vd作为检测模型backbone,Resnet34_vd作为识别模型backbone,具体参数差异可对比两种模型训练的配置文件. +- 相同点:两者使用相同的**算法**和**训练数据**; +- 不同点:不同之处在于**骨干网络**和**通道参数**,超轻量模型使用MobileNetV3作为骨干网络,通用模型使用Resnet50_vd作为检测模型backbone,Resnet34_vd作为识别模型backbone,具体参数差异可对比两种模型训练的配置文件. |模型|骨干网络|检测训练配置|识别训练配置| |-|-|-|-| @@ -316,13 +316,16 @@ #### Q3.2.4:开源模型使用的训练数据是什么,能否开源? **A**:目前开源的模型,数据集和量级如下: - - 检测: - 英文数据集,ICDAR2015 - 中文数据集,LSVT街景数据集训练数据3w张图片 - - 识别: - 英文数据集,MJSynth和SynthText合成数据,数据量上千万。 - 中文数据集,LSVT街景数据集根据真值将图crop出来,并进行位置校准,总共30w张图像。此外基于LSVT的语料,合成数据500w。 - 其中,公开数据集都是开源的,用户可自行搜索下载,也可参考[中文数据集](./datasets.md),合成数据暂不开源,用户可使用开源合成工具自行合成,可参考的合成工具包括[text_renderer](https://github.com/Sanster/text_renderer)、[SynthText](https://github.com/ankush-me/SynthText)、[TextRecognitionDataGenerator](https://github.com/Belval/TextRecognitionDataGenerator)等。 + +- 检测: + - 英文数据集,ICDAR2015 + - 中文数据集,LSVT街景数据集训练数据3w张图片 + +- 识别: + - 英文数据集,MJSynth和SynthText合成数据,数据量上千万。 + - 中文数据集,LSVT街景数据集根据真值将图crop出来,并进行位置校准,总共30w张图像。此外基于LSVT的语料,合成数据500w。 + +其中,公开数据集都是开源的,用户可自行搜索下载,也可参考[中文数据集](./datasets.md),合成数据暂不开源,用户可使用开源合成工具自行合成,可参考的合成工具包括[text_renderer](https://github.com/Sanster/text_renderer)、[SynthText](https://github.com/ankush-me/SynthText)、[TextRecognitionDataGenerator](https://github.com/Belval/TextRecognitionDataGenerator)等。 #### Q3.2.5:请问中文字符集多大呢?支持生僻字识别吗? @@ -372,7 +375,12 @@ unclip_ratio: 文本框扩张的系数,关系到文本框的大小`` #### Q3.3.4:训练过程中,如何恰当的停止训练(直接kill,经常还有显存占用的问题) -**A**:可以通过下面的脚本终止所有包含train.py字段的进程,ps -axu | grep train.py | awk '{print $2}' | xargs kill -9 +**A**:可以通过下面的脚本终止所有包含train.py字段的进程, + +``` +ps -axu | grep train.py | awk '{print $2}' | xargs kill -9 + +``` #### Q3.3.5:读数据进程数设置4~8时训练一会进程接连defunct后gpu利用率一直为0卡死 @@ -410,8 +418,7 @@ return paddle.reader.multiprocess_reader(readers, False, queue_size=320) **A**:直接更换配置文件里的Backbone.function即可,格式为:网络文件路径,网络Class名词。如果所需的backbone在PaddleOCR里没有提供,可以参照PaddleClas里面的网络结构,进行修改尝试。具体修改原则可以参考OCR通用问题中 "如何更换文本检测/识别的backbone" 的回答。 -#### Q3.3.13:如何更换文本检测/识别的backbone? -**A**:报错信息:'''Input(X) dims[3] and Input(Grid) dims[2] should be equal, but received X dimension[3](320) != Grid dimension[2](100) +#### Q3.3.13:如何更换文本检测/识别的backbone?报错信息:'''Input(X) dims[3] and Input(Grid) dims[2] should be equal, but received X dimension[3](320) != Grid dimension[2](100) **A**:TPS模块暂时无法支持变长的输入,请设置 --rec_image_shape='3,32,100' --rec_char_type='en' 固定输入shape ### 预测部署 From 0b7d93d51322d5beee1c23469aa60ec1dc7e63bc Mon Sep 17 00:00:00 2001 From: grasswolfs Date: Wed, 26 Aug 2020 21:21:24 +0800 Subject: [PATCH 65/70] test=develop,update_docs --- doc/doc_ch/FAQ.md | 56 +++++++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index 0a419c12..fe36c44e 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -2,7 +2,7 @@ ## 写在前面 -- 我们收集整理了issues和用户群中的常见问题和解答,并且会不断更新,旨在为OCR的开发者提供一些参考,也希望帮助大家少走一些弯路。 +- 我们收集整理了开源以来在issues和用户群中的常见问题并且给出了简要解答,旨在为OCR的开发者提供一些参考,也希望帮助大家少走一些弯路。 - OCR领域大佬众多,本文档回答主要依赖有限的项目实践,难免挂一漏万,如有遗漏和不足,也**希望有识之士帮忙补充和修正**,万分感谢。 @@ -19,7 +19,7 @@ * [使用咨询17题](#使用咨询) * [数据集9题](#数据集) * [模型训练调优13题](#模型训练调优) - * [预测部署14题](#[预测部署) + * [预测部署14题](#预测部署) @@ -64,11 +64,7 @@ **A**:对于两阶段的可以分开来看,分别是检测和识别阶段 -(1)检测阶段:先按照检测框和标注框的IOU评估,IOU大于某个阈值判断为检测准确。这里检测框和标注框不同于一般的通用目标检测框,是采用多边形进行表示。 - -检测准确率:正确的检测框个数在全部检测框的占比,主要是判断检测指标. - -检测召回率:正确的检测框个数在全部标注框的占比,主要是判断漏检的指标。 +(1)检测阶段:先按照检测框和标注框的IOU评估,IOU大于某个阈值判断为检测准确。这里检测框和标注框不同于一般的通用目标检测框,是采用多边形进行表示。检测准确率:正确的检测框个数在全部检测框的占比,主要是判断检测指标。检测召回率:正确的检测框个数在全部标注框的占比,主要是判断漏检的指标。 (2)识别阶段: @@ -149,7 +145,7 @@ **A**:可以根据实际场景做不同的尝试,共享一个类别是可以收敛,效果也还不错。但是如果分开训练,同类样本之间一致性更好,更容易收敛,识别效果会更优。 -### 训练训练调优 +### 模型训练调优 #### Q2.3.1:如何更换文本检测/识别的backbone? **A**:无论是文字检测,还是文字识别,骨干网络的选择是预测效果和预测效率的权衡。一般,选择更大规模的骨干网络,例如ResNet101_vd,则检测或识别更准确,但预测耗时相应也会增加。而选择更小规模的骨干网络,例如MobileNetV3_small_x0_35,则预测更快,但检测或识别的准确率会大打折扣。幸运的是不同骨干网络的检测或识别效果与在ImageNet数据集图像1000分类任务效果正相关。[**飞桨图像分类套件PaddleClas**](https://github.com/PaddlePaddle/PaddleClas)汇总了ResNet_vd、Res2Net、HRNet、MobileNetV3、GhostNet等23种系列的分类网络结构,在上述图像分类任务的top1识别准确率,GPU(V100和T4)和CPU(骁龙855)的预测耗时以及相应的[**117个预训练模型下载地址**](https://paddleclas.readthedocs.io/zh_CN/latest/models/models_intro.html)。 @@ -173,7 +169,9 @@ #### Q2.3.5:训练识别时,如何选择合适的网络输入shape? **A**:一般高度采用32,最长宽度的选择,有两种方法: + (1)统计训练样本图像的宽高比分布。最大宽高比的选取考虑满足80%的训练样本。 + (2)统计训练样本文字数目。最长字符数目的选取考虑满足80%的训练样本。然后中文字符长宽比近似认为是1,英文认为3:1,预估一个最长宽度。 #### Q2.3.6:如何识别文字比较长的文本? @@ -193,7 +191,9 @@ #### Q2.4.3:对于特定文字检测,例如身份证只检测姓名,检测指定区域文字更好,还是检测全部区域再筛选更好? **A**:两个角度来说明一般检测全部区域再筛选更好。 + (1)由于特定文字和非特定文字之间的视觉特征并没有很强的区分行,只检测指定区域,容易造成特定文字漏检。 + (2)产品的需求可能是变化的,不排除后续对于模型需求变化的可能性(比如又需要增加一个字段),相比于训练模型,后处理的逻辑会更容易调整。 #### Q2.4.4:对于小白如何快速入门中文OCR项目实践? @@ -203,7 +203,9 @@ #### Q2.4.5:如何识别带空格的英文行文本图像? **A**:空格识别可以考虑以下两种方案: + (1)优化文本检测算法。检测结果在空格处将文本断开。这种方案在检测数据标注时,需要将含有空格的文本行分成好多段。 + (2)优化文本识别算法。在识别字典里面引入空格字符,然后在识别的训练数据中,如果用空行,进行标注。此外,合成数据时,通过拼接训练数据,生成含有空格的文本。 #### Q2.4.6:中英文一起识别时也可以加空格字符来训练吗 @@ -212,7 +214,7 @@ #### Q2.4.7:低像素文字或者字号比较小的文字有什么超分辨率方法吗 -**A**:超分辨率方法分为传统方法和基于深度学习的方法。基于深度学习的方法中,比较经典的有SRCNN,另外CVPR2020也有一篇超分辨率的工作可以参考:Unpaired Image Super-Resolution using Pseudo-Supervision,但是没有充分的实践验证过,需要看实际场景下的效果。 +**A**:超分辨率方法分为传统方法和基于深度学习的方法。基于深度学习的方法中,比较经典的有SRCNN,另外CVPR2020也有一篇超分辨率的工作可以参考文章:Unpaired Image Super-Resolution using Pseudo-Supervision,但是没有充分的实践验证过,需要看实际场景下的效果。 #### Q2.4.8:表格识别有什么好的模型 或者论文推荐么 @@ -286,7 +288,11 @@ #### Q3.1.16:PaddleOCR是否支持在Windows或Mac系统上运行? -**A**:PaddleOCR已完成Windows和Mac系统适配,运行时注意两点:1、在[快速安装](./installation.md)时,如果不想安装docker,可跳过第一步,直接从第二步安装paddle开始。2、inference模型下载时,如果没有安装wget,可直接点击模型链接或将链接地址复制到浏览器进行下载,并解压放置到相应目录。 +**A**:PaddleOCR已完成Windows和Mac系统适配,运行时注意两点: + +(1)在[快速安装](./installation.md)时,如果不想安装docker,可跳过第一步,直接从第二步安装paddle开始。 + +(2)inference模型下载时,如果没有安装wget,可直接点击模型链接或将链接地址复制到浏览器进行下载,并解压放置到相应目录。 #### Q3.1.17:PaddleOCR开源的超轻量模型和通用OCR模型的区别? **A**:目前PaddleOCR开源了2个中文模型,分别是8.6M超轻量中文模型和通用中文OCR模型。两者对比信息如下: @@ -352,8 +358,7 @@ **A**:可以主要参考可视化效果,通用模型更倾向于检测一整行文字,轻量级可能会有一行文字被分成两段检测的情况,不是数量越多,效果就越好。 -### 模型训练 -调优 +### 模型训练调优 #### Q3.3.1:文本长度超过25,应该怎么处理? @@ -379,7 +384,6 @@ unclip_ratio: 文本框扩张的系数,关系到文本框的大小`` ``` ps -axu | grep train.py | awk '{print $2}' | xargs kill -9 - ``` #### Q3.3.5:读数据进程数设置4~8时训练一会进程接连defunct后gpu利用率一直为0卡死 @@ -397,7 +401,7 @@ return paddle.reader.multiprocess_reader(readers, False, queue_size=320) #### Q3.3.7:PaddleOCR默认不是200个step保存一次模型吗?为啥文件夹下面都没有生成 -**A**:eval_batch_step [4000, 5000]改为[0, 5000] 就是从第0次迭代开始,每5000迭代保存一次模型 +**A**:因为默认保存的起始点不是0,而是4000,将eval_batch_step [4000, 5000]改为[0, 2000] 就是从第0次迭代开始,每2000迭代保存一次模型 #### Q3.3.8:如何进行模型微调? @@ -414,29 +418,33 @@ return paddle.reader.multiprocess_reader(readers, False, queue_size=320) #### Q3.3.11:自己训练出来的未inference转换的模型 可以当作预训练模型吗? **A**:可以的,但是如果训练数据两量少的话,可能会过拟合到少量数据上,泛化性能不佳。 + #### Q3.3.12:使用带TPS的识别模型预测报错 **A**:直接更换配置文件里的Backbone.function即可,格式为:网络文件路径,网络Class名词。如果所需的backbone在PaddleOCR里没有提供,可以参照PaddleClas里面的网络结构,进行修改尝试。具体修改原则可以参考OCR通用问题中 "如何更换文本检测/识别的backbone" 的回答。 -#### Q3.3.13:如何更换文本检测/识别的backbone?报错信息:'''Input(X) dims[3] and Input(Grid) dims[2] should be equal, but received X dimension[3](320) != Grid dimension[2](100) -**A**:TPS模块暂时无法支持变长的输入,请设置 --rec_image_shape='3,32,100' --rec_char_type='en' 固定输入shape +#### Q3.3.13:如何更换文本检测/识别的backbone?报错信息:``Input(X) dims[3] and Input(Grid) dims[2] should be equal, but received X dimension[3](320) != Grid dimension[2](100) `` + +**A**:TPS模块暂时无法支持变长的输入,请设置 ``--rec_image_shape='3,32,100' --rec_char_type='en' 固定输入shape`` ### 预测部署 #### Q3.4.1:如何pip安装opt模型转换工具? -**A**:由于OCR端侧部署需要某些算子的支持,这些算子仅在Paddle-Lite 最新develop分支中,所以需要自己编译opt模型转换工具。opt工具可以通过编译PaddleLite获得,编译步骤参考:https://github.com/PaddlePaddle/PaddleOCR/blob/0791714b91/deploy/lite/readme.md 中2.1 模型优化部分。 +**A**:由于OCR端侧部署需要某些算子的支持,这些算子仅在Paddle-Lite 最新develop分支中,所以需要自己编译opt模型转换工具。opt工具可以通过编译PaddleLite获得,编译步骤参考[lite部署文档](https://github.com/PaddlePaddle/PaddleOCR/blob/0791714b91/deploy/lite/readme.md) 中2.1 模型优化部分。 #### Q3.4.2:如何将PaddleOCR预测模型封装成SDK **A**:如果是Python的话,可以使用tools/infer/predict_system.py中的TextSystem进行sdk封装,如果是c++的话,可以使用deploy/cpp_infer/src下面的DBDetector和CRNNRecognizer完成封装 -#### Q3.4.3:服务部署可以只发布 文本识别模型么?(不带文本检测模型) +#### Q3.4.3:服务部署可以只发布文本识别,而不带文本检测模型么? **A**:可以的。默认的服务部署是检测和识别串联预测的。也支持单独发布文本检测或文本识别模型,比如使用PaddleHUBPaddleOCR 模型时,deploy下有三个文件夹,分别是 -ocr_det:检测预测 -ocr_rec: 识别预测 -ocr_system: 检测识别串联预测 + +- ocr_det:检测预测 +- ocr_rec: 识别预测 +- ocr_system: 检测识别串联预测 + 每个模块是单独分开的,所以可以选择只发布文本识别模型。使用PaddleServing部署时同理。 @@ -444,14 +452,14 @@ ocr_system: 检测识别串联预测 **A**:测试的时候,对图像等比例缩放,最长边960,不同图像等比例缩放后长宽不一致,无法组成batch,所以设置为test_batch_size为1。 -#### Q3.4.5:为什么使用c++ inference和py inference结果不一致 +#### Q3.4.5:为什么使用c++ inference和python inference结果不一致? **A**:可能是导出的inference model版本与预测库版本需要保持一致,比如在Windows下,Paddle官网提供的预测库版本是1.8,而PaddleOCR提供的inference model 版本是1.7,因此最终预测结果会有差别。可以在Paddle1.8环境下导出模型,再基于该模型进行预测。 此外也需要保证两者的预测参数配置完全一致。 #### Q3.4.6:为什么第一张张图预测时间很长,第二张之后预测时间会降低? -**A**:第一张图需要初始化,耗时较多。完成模型加载后,之后的预测时间很短。 +**A**:第一张图需要显存资源初始化,耗时较多。完成模型加载后,之后的预测时间会明显缩短。 #### Q3.4.7:请问opt工具可以直接转int8量化后的模型为.nb文件吗 @@ -463,7 +471,7 @@ ocr_system: 检测识别串联预测 #### Q3.4.9:PaddleOCR模型是否可以转换成ONNX模型? -**A**:目前不支持转ONNX +**A**:目前暂不支持转ONNX,相关工作在研发中。 #### Q3.4.10:使用opt工具对检测模型转换时报错 can not found op arguments for node conv2_b_attr From 1faec73faddc4de9da12a6ef4d8ab9df4f3c666f Mon Sep 17 00:00:00 2001 From: dyning Date: Wed, 26 Aug 2020 21:38:29 +0800 Subject: [PATCH 66/70] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c828163f..3243f3ce 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力使用者训练出更好的模型,并应用落地。 **近期更新** -- 2020.8.26 更新OCR相关的85个常见问题及解答,具体参考[FAQ](./doc/doc_ch/FAQ.md) +- 2020.8.26 更新OCR相关的84个常见问题及解答,具体参考[FAQ](./doc/doc_ch/FAQ.md) - 2020.8.24 支持通过whl包安装使用PaddleOCR,具体参考[Paddleocr Package使用说明](./doc/doc_ch/whl.md) - 2020.8.21 更新8月18日B站直播课回放和PPT,课节2,易学易用的OCR工具大礼包,[获取地址](https://aistudio.baidu.com/aistudio/education/group/info/1519) - 2020.8.16 开源文本检测算法[SAST](https://arxiv.org/abs/1908.05498)和文本识别算法[SRN](https://arxiv.org/abs/2003.12294) From 0d4ccd456ba52068fada7a4116a8f818452ff63b Mon Sep 17 00:00:00 2001 From: dyning Date: Thu, 27 Aug 2020 09:56:00 +0800 Subject: [PATCH 67/70] Update FAQ.md --- doc/doc_ch/FAQ.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index fe36c44e..f782a164 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -71,8 +71,9 @@ 字符识别准确率,即正确识别的文本行占标注的文本行数量的比例,只有整行文本识别对才算正确识别。 (3)端到端统计: -端对端准确率:准确检测并正确识别文本行在全部标注文本行的占比; -端到端召回率:准确检测并正确识别文本行在 检测到的文本行数量 的占比;准确检测的标准是检测框与标注框的IOU大于某个阈值,正确识别的的检测框中的文本与标注的文本相同。 +端对端召回率:准确检测并正确识别文本行在全部标注文本行的占比; +端到端准确率:准确检测并正确识别文本行在 检测到的文本行数量 的占比; +准确检测的标准是检测框与标注框的IOU大于某个阈值,正确识别的的检测框中的文本与标注的文本相同。 #### Q1.1.7:单张图上多语种并存识别(如单张图印刷体和手写文字并存),应该如何处理? From 1147bd3a81ba79a413fcd1357d67f4cbecbed89f Mon Sep 17 00:00:00 2001 From: WenmuZhou Date: Thu, 27 Aug 2020 15:10:41 +0800 Subject: [PATCH 68/70] =?UTF-8?q?=E6=B7=BB=E5=8A=A0use=5Fzero=5Fcopy=5Frun?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- paddleocr.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/paddleocr.py b/paddleocr.py index 65bca7ae..d3d73cb1 100644 --- a/paddleocr.py +++ b/paddleocr.py @@ -129,6 +129,7 @@ def parse_args(): parser.add_argument("--det", type=str2bool, default=True) parser.add_argument("--rec", type=str2bool, default=True) + parser.add_argument("--use_zero_copy_run", type=bool, default=False) return parser.parse_args() @@ -209,4 +210,4 @@ def main(): print(img_path) result = ocr_engine.ocr(img_path, det=args.det, rec=args.rec) for line in result: - print(line) + print(line) \ No newline at end of file From 91f6f24385041ef901deddb43b5d4f705e0ff7aa Mon Sep 17 00:00:00 2001 From: tink2123 Date: Thu, 27 Aug 2020 20:57:53 +0800 Subject: [PATCH 69/70] formate code --- ppocr/modeling/heads/self_attention/model.py | 577 +------------------ 1 file changed, 9 insertions(+), 568 deletions(-) diff --git a/ppocr/modeling/heads/self_attention/model.py b/ppocr/modeling/heads/self_attention/model.py index 8ac1458b..66b9c937 100644 --- a/ppocr/modeling/heads/self_attention/model.py +++ b/ppocr/modeling/heads/self_attention/model.py @@ -7,6 +7,11 @@ import paddle.fluid.layers as layers # Set seed for CE dropout_seed = None +encoder_data_input_fields = ( + "src_word", + "src_pos", + "src_slf_attn_bias", ) + def wrap_layer_with_block(layer, block_idx): """ @@ -45,25 +50,6 @@ def wrap_layer_with_block(layer, block_idx): return layer_wrapper -def position_encoding_init(n_position, d_pos_vec): - """ - Generate the initial values for the sinusoid position encoding table. - """ - channels = d_pos_vec - position = np.arange(n_position) - num_timescales = channels // 2 - log_timescale_increment = (np.log(float(1e4) / float(1)) / - (num_timescales - 1)) - inv_timescales = np.exp(np.arange( - num_timescales)) * -log_timescale_increment - scaled_time = np.expand_dims(position, 1) * np.expand_dims(inv_timescales, - 0) - signal = np.concatenate([np.sin(scaled_time), np.cos(scaled_time)], axis=1) - signal = np.pad(signal, [[0, 0], [0, np.mod(channels, 2)]], 'constant') - position_enc = signal - return position_enc.astype("float32") - - def multi_head_attention(queries, keys, values, @@ -271,7 +257,7 @@ post_process_layer = pre_post_process_layer def prepare_encoder( - src_word, #[b,t,c] + src_word, # [b,t,c] src_pos, src_vocab_size, src_emb_dim, @@ -286,7 +272,7 @@ def prepare_encoder( This module is used at the bottom of the encoder stacks. """ - src_word_emb = src_word #layers.concat(res,axis=1) + src_word_emb = src_word # layers.concat(res,axis=1) src_word_emb = layers.cast(src_word_emb, 'float32') # print("src_word_emb",src_word_emb) @@ -338,12 +324,6 @@ def prepare_decoder(src_word, is_test=False) if dropout_rate else enc_input -# prepare_encoder = partial( -# prepare_encoder_decoder, pos_enc_param_name=pos_enc_param_names[0]) -# prepare_decoder = partial( -# prepare_encoder_decoder, pos_enc_param_name=pos_enc_param_names[1]) - - def encoder_layer(enc_input, attn_bias, n_head, @@ -412,234 +392,6 @@ def encoder(enc_input, return enc_output -def decoder_layer(dec_input, - enc_output, - slf_attn_bias, - dec_enc_attn_bias, - n_head, - d_key, - d_value, - d_model, - d_inner_hid, - prepostprocess_dropout, - attention_dropout, - relu_dropout, - preprocess_cmd, - postprocess_cmd, - cache=None, - gather_idx=None): - """ The layer to be stacked in decoder part. - The structure of this module is similar to that in the encoder part except - a multi-head attention is added to implement encoder-decoder attention. - """ - slf_attn_output = multi_head_attention( - pre_process_layer(dec_input, preprocess_cmd, prepostprocess_dropout), - None, - None, - slf_attn_bias, - d_key, - d_value, - d_model, - n_head, - attention_dropout, - cache=cache, - gather_idx=gather_idx) - slf_attn_output = post_process_layer( - dec_input, - slf_attn_output, - postprocess_cmd, - prepostprocess_dropout, ) - enc_attn_output = multi_head_attention( - pre_process_layer(slf_attn_output, preprocess_cmd, - prepostprocess_dropout), - enc_output, - enc_output, - dec_enc_attn_bias, - d_key, - d_value, - d_model, - n_head, - attention_dropout, - cache=cache, - gather_idx=gather_idx, - static_kv=True) - enc_attn_output = post_process_layer( - slf_attn_output, - enc_attn_output, - postprocess_cmd, - prepostprocess_dropout, ) - ffd_output = positionwise_feed_forward( - pre_process_layer(enc_attn_output, preprocess_cmd, - prepostprocess_dropout), - d_inner_hid, - d_model, - relu_dropout, ) - dec_output = post_process_layer( - enc_attn_output, - ffd_output, - postprocess_cmd, - prepostprocess_dropout, ) - return dec_output - - -def decoder(dec_input, - enc_output, - dec_slf_attn_bias, - dec_enc_attn_bias, - n_layer, - n_head, - d_key, - d_value, - d_model, - d_inner_hid, - prepostprocess_dropout, - attention_dropout, - relu_dropout, - preprocess_cmd, - postprocess_cmd, - caches=None, - gather_idx=None): - """ - The decoder is composed of a stack of identical decoder_layer layers. - """ - for i in range(n_layer): - dec_output = decoder_layer( - dec_input, - enc_output, - dec_slf_attn_bias, - dec_enc_attn_bias, - n_head, - d_key, - d_value, - d_model, - d_inner_hid, - prepostprocess_dropout, - attention_dropout, - relu_dropout, - preprocess_cmd, - postprocess_cmd, - cache=None if caches is None else caches[i], - gather_idx=gather_idx) - dec_input = dec_output - dec_output = pre_process_layer(dec_output, preprocess_cmd, - prepostprocess_dropout) - return dec_output - - -def make_all_inputs(input_fields): - """ - Define the input data layers for the transformer model. - """ - inputs = [] - for input_field in input_fields: - input_var = layers.data( - name=input_field, - shape=input_descs[input_field][0], - dtype=input_descs[input_field][1], - lod_level=input_descs[input_field][2] - if len(input_descs[input_field]) == 3 else 0, - append_batch_size=False) - inputs.append(input_var) - return inputs - - -def make_all_py_reader_inputs(input_fields, is_test=False): - reader = layers.py_reader( - capacity=20, - name="test_reader" if is_test else "train_reader", - shapes=[input_descs[input_field][0] for input_field in input_fields], - dtypes=[input_descs[input_field][1] for input_field in input_fields], - lod_levels=[ - input_descs[input_field][2] - if len(input_descs[input_field]) == 3 else 0 - for input_field in input_fields - ]) - return layers.read_file(reader), reader - - -def transformer(src_vocab_size, - trg_vocab_size, - max_length, - n_layer, - n_head, - d_key, - d_value, - d_model, - d_inner_hid, - prepostprocess_dropout, - attention_dropout, - relu_dropout, - preprocess_cmd, - postprocess_cmd, - weight_sharing, - label_smooth_eps, - bos_idx=0, - use_py_reader=False, - is_test=False): - if weight_sharing: - assert src_vocab_size == trg_vocab_size, ( - "Vocabularies in source and target should be same for weight sharing." - ) - - data_input_names = encoder_data_input_fields + \ - decoder_data_input_fields[:-1] + label_data_input_fields - - if use_py_reader: - all_inputs, reader = make_all_py_reader_inputs(data_input_names, - is_test) - else: - all_inputs = make_all_inputs(data_input_names) - # print("all inputs",all_inputs) - enc_inputs_len = len(encoder_data_input_fields) - dec_inputs_len = len(decoder_data_input_fields[:-1]) - enc_inputs = all_inputs[0:enc_inputs_len] - dec_inputs = all_inputs[enc_inputs_len:enc_inputs_len + dec_inputs_len] - label = all_inputs[-2] - weights = all_inputs[-1] - - enc_output = wrap_encoder( - src_vocab_size, 64, n_layer, n_head, d_key, d_value, d_model, - d_inner_hid, prepostprocess_dropout, attention_dropout, relu_dropout, - preprocess_cmd, postprocess_cmd, weight_sharing, enc_inputs) - - predict = wrap_decoder( - trg_vocab_size, - max_length, - n_layer, - n_head, - d_key, - d_value, - d_model, - d_inner_hid, - prepostprocess_dropout, - attention_dropout, - relu_dropout, - preprocess_cmd, - postprocess_cmd, - weight_sharing, - dec_inputs, - enc_output, ) - - # Padding index do not contribute to the total loss. The weights is used to - # cancel padding index in calculating the loss. - if label_smooth_eps: - label = layers.label_smooth( - label=layers.one_hot( - input=label, depth=trg_vocab_size), - epsilon=label_smooth_eps) - - cost = layers.softmax_with_cross_entropy( - logits=predict, - label=label, - soft_label=True if label_smooth_eps else False) - weighted_cost = cost * weights - sum_cost = layers.reduce_sum(weighted_cost) - token_num = layers.reduce_sum(weights) - token_num.stop_gradient = True - avg_cost = sum_cost / token_num - return sum_cost, avg_cost, predict, token_num, reader if use_py_reader else None - - def wrap_encoder_forFeature(src_vocab_size, max_length, n_layer, @@ -662,44 +414,8 @@ def wrap_encoder_forFeature(src_vocab_size, img """ - if enc_inputs is None: - # This is used to implement independent encoder program in inference. - conv_features, src_pos, src_slf_attn_bias = make_all_inputs( - encoder_data_input_fields) - else: - conv_features, src_pos, src_slf_attn_bias = enc_inputs # - b, t, c = conv_features.shape - #""" - # insert cnn - #""" - #import basemodel - # feat = basemodel.resnet_50(img) - - # mycrnn = basemodel.CRNN() - # feat = mycrnn.ocr_convs(img,use_cudnn=TrainTaskConfig.use_gpu) - # b, c, w, h = feat.shape - # src_word = layers.reshape(feat, shape=[-1, c, w * h]) - - #myconv8 = basemodel.conv8() - #feat = myconv8.net(img ) - #b , c, h, w = feat.shape#h=6 - #print(feat) - #layers.Print(feat,message="conv_feat",summarize=10) - - #feat =layers.conv2d(feat,c,filter_size =[4 , 1],act="relu") - #feat = layers.pool2d(feat,pool_stride=(3,1),pool_size=(3,1)) - #src_word = layers.squeeze(feat,axes=[2]) #src_word [-1,c,ww] - - #feat = layers.transpose(feat, [0,3,1,2]) - #src_word = layers.reshape(feat,[-1,w, c*h]) - #src_word = layers.im2sequence( - # input=feat, - # stride=[1, 1], - # filter_size=[feat.shape[2], 1]) - #layers.Print(src_word,message="src_word",summarize=10) - - # print('feat',feat) - #print("src_word",src_word) + conv_features, src_pos, src_slf_attn_bias = enc_inputs # + b, t, c = conv_features.shape enc_input = prepare_encoder( conv_features, @@ -755,37 +471,7 @@ def wrap_encoder(src_vocab_size, encoder_data_input_fields) else: src_word, src_pos, src_slf_attn_bias = enc_inputs # - #""" - # insert cnn - #""" - #import basemodel - # feat = basemodel.resnet_50(img) - # mycrnn = basemodel.CRNN() - # feat = mycrnn.ocr_convs(img,use_cudnn=TrainTaskConfig.use_gpu) - # b, c, w, h = feat.shape - # src_word = layers.reshape(feat, shape=[-1, c, w * h]) - - #myconv8 = basemodel.conv8() - #feat = myconv8.net(img ) - #b , c, h, w = feat.shape#h=6 - #print(feat) - #layers.Print(feat,message="conv_feat",summarize=10) - - #feat =layers.conv2d(feat,c,filter_size =[4 , 1],act="relu") - #feat = layers.pool2d(feat,pool_stride=(3,1),pool_size=(3,1)) - #src_word = layers.squeeze(feat,axes=[2]) #src_word [-1,c,ww] - - #feat = layers.transpose(feat, [0,3,1,2]) - #src_word = layers.reshape(feat,[-1,w, c*h]) - #src_word = layers.im2sequence( - # input=feat, - # stride=[1, 1], - # filter_size=[feat.shape[2], 1]) - #layers.Print(src_word,message="src_word",summarize=10) - - # print('feat',feat) - #print("src_word",src_word) enc_input = prepare_decoder( src_word, src_pos, @@ -811,248 +497,3 @@ def wrap_encoder(src_vocab_size, preprocess_cmd, postprocess_cmd, ) return enc_output - - -def wrap_decoder(trg_vocab_size, - max_length, - n_layer, - n_head, - d_key, - d_value, - d_model, - d_inner_hid, - prepostprocess_dropout, - attention_dropout, - relu_dropout, - preprocess_cmd, - postprocess_cmd, - weight_sharing, - dec_inputs=None, - enc_output=None, - caches=None, - gather_idx=None, - bos_idx=0): - """ - The wrapper assembles together all needed layers for the decoder. - """ - if dec_inputs is None: - # This is used to implement independent decoder program in inference. - trg_word, trg_pos, trg_slf_attn_bias, trg_src_attn_bias, enc_output = \ - make_all_inputs(decoder_data_input_fields) - else: - trg_word, trg_pos, trg_slf_attn_bias, trg_src_attn_bias = dec_inputs - - dec_input = prepare_decoder( - trg_word, - trg_pos, - trg_vocab_size, - d_model, - max_length, - prepostprocess_dropout, - bos_idx=bos_idx, - word_emb_param_name="src_word_emb_table" - if weight_sharing else "trg_word_emb_table") - dec_output = decoder( - dec_input, - enc_output, - trg_slf_attn_bias, - trg_src_attn_bias, - n_layer, - n_head, - d_key, - d_value, - d_model, - d_inner_hid, - prepostprocess_dropout, - attention_dropout, - relu_dropout, - preprocess_cmd, - postprocess_cmd, - caches=caches, - gather_idx=gather_idx) - return dec_output - # Reshape to 2D tensor to use GEMM instead of BatchedGEMM - dec_output = layers.reshape( - dec_output, shape=[-1, dec_output.shape[-1]], inplace=True) - if weight_sharing: - predict = layers.matmul( - x=dec_output, - y=fluid.default_main_program().global_block().var( - "trg_word_emb_table"), - transpose_y=True) - else: - predict = layers.fc(input=dec_output, - size=trg_vocab_size, - bias_attr=False) - if dec_inputs is None: - # Return probs for independent decoder program. - predict = layers.softmax(predict) - return predict - - -def fast_decode(src_vocab_size, - trg_vocab_size, - max_in_len, - n_layer, - n_head, - d_key, - d_value, - d_model, - d_inner_hid, - prepostprocess_dropout, - attention_dropout, - relu_dropout, - preprocess_cmd, - postprocess_cmd, - weight_sharing, - beam_size, - max_out_len, - bos_idx, - eos_idx, - use_py_reader=False): - """ - Use beam search to decode. Caches will be used to store states of history - steps which can make the decoding faster. - """ - data_input_names = encoder_data_input_fields + fast_decoder_data_input_fields - - if use_py_reader: - all_inputs, reader = make_all_py_reader_inputs(data_input_names) - else: - all_inputs = make_all_inputs(data_input_names) - - enc_inputs_len = len(encoder_data_input_fields) - dec_inputs_len = len(fast_decoder_data_input_fields) - enc_inputs = all_inputs[0:enc_inputs_len] #enc_inputs tensor - dec_inputs = all_inputs[enc_inputs_len:enc_inputs_len + - dec_inputs_len] #dec_inputs tensor - - enc_output = wrap_encoder( - src_vocab_size, - 64, ##to do !!!!!???? - n_layer, - n_head, - d_key, - d_value, - d_model, - d_inner_hid, - prepostprocess_dropout, - attention_dropout, - relu_dropout, - preprocess_cmd, - postprocess_cmd, - weight_sharing, - enc_inputs, - bos_idx=bos_idx) - start_tokens, init_scores, parent_idx, trg_src_attn_bias = dec_inputs - - def beam_search(): - max_len = layers.fill_constant( - shape=[1], - dtype=start_tokens.dtype, - value=max_out_len, - force_cpu=True) - step_idx = layers.fill_constant( - shape=[1], dtype=start_tokens.dtype, value=0, force_cpu=True) - cond = layers.less_than(x=step_idx, y=max_len) # default force_cpu=True - while_op = layers.While(cond) - # array states will be stored for each step. - ids = layers.array_write( - layers.reshape(start_tokens, (-1, 1)), step_idx) - scores = layers.array_write(init_scores, step_idx) - # cell states will be overwrited at each step. - # caches contains states of history steps in decoder self-attention - # and static encoder output projections in encoder-decoder attention - # to reduce redundant computation. - caches = [ - { - "k": # for self attention - layers.fill_constant_batch_size_like( - input=start_tokens, - shape=[-1, n_head, 0, d_key], - dtype=enc_output.dtype, - value=0), - "v": # for self attention - layers.fill_constant_batch_size_like( - input=start_tokens, - shape=[-1, n_head, 0, d_value], - dtype=enc_output.dtype, - value=0), - "static_k": # for encoder-decoder attention - layers.create_tensor(dtype=enc_output.dtype), - "static_v": # for encoder-decoder attention - layers.create_tensor(dtype=enc_output.dtype) - } for i in range(n_layer) - ] - - with while_op.block(): - pre_ids = layers.array_read(array=ids, i=step_idx) - # Since beam_search_op dosen't enforce pre_ids' shape, we can do - # inplace reshape here which actually change the shape of pre_ids. - pre_ids = layers.reshape(pre_ids, (-1, 1, 1), inplace=True) - pre_scores = layers.array_read(array=scores, i=step_idx) - # gather cell states corresponding to selected parent - pre_src_attn_bias = layers.gather( - trg_src_attn_bias, index=parent_idx) - pre_pos = layers.elementwise_mul( - x=layers.fill_constant_batch_size_like( - input=pre_src_attn_bias, # cann't use lod tensor here - value=1, - shape=[-1, 1, 1], - dtype=pre_ids.dtype), - y=step_idx, - axis=0) - logits = wrap_decoder( - trg_vocab_size, - max_in_len, - n_layer, - n_head, - d_key, - d_value, - d_model, - d_inner_hid, - prepostprocess_dropout, - attention_dropout, - relu_dropout, - preprocess_cmd, - postprocess_cmd, - weight_sharing, - dec_inputs=(pre_ids, pre_pos, None, pre_src_attn_bias), - enc_output=enc_output, - caches=caches, - gather_idx=parent_idx, - bos_idx=bos_idx) - # intra-beam topK - topk_scores, topk_indices = layers.topk( - input=layers.softmax(logits), k=beam_size) - accu_scores = layers.elementwise_add( - x=layers.log(topk_scores), y=pre_scores, axis=0) - # beam_search op uses lod to differentiate branches. - accu_scores = layers.lod_reset(accu_scores, pre_ids) - # topK reduction across beams, also contain special handle of - # end beams and end sentences(batch reduction) - selected_ids, selected_scores, gather_idx = layers.beam_search( - pre_ids=pre_ids, - pre_scores=pre_scores, - ids=topk_indices, - scores=accu_scores, - beam_size=beam_size, - end_id=eos_idx, - return_parent_idx=True) - layers.increment(x=step_idx, value=1.0, in_place=True) - # cell states(caches) have been updated in wrap_decoder, - # only need to update beam search states here. - layers.array_write(selected_ids, i=step_idx, array=ids) - layers.array_write(selected_scores, i=step_idx, array=scores) - layers.assign(gather_idx, parent_idx) - layers.assign(pre_src_attn_bias, trg_src_attn_bias) - length_cond = layers.less_than(x=step_idx, y=max_len) - finish_cond = layers.logical_not(layers.is_empty(x=selected_ids)) - layers.logical_and(x=length_cond, y=finish_cond, out=cond) - - finished_ids, finished_scores = layers.beam_search_decode( - ids, scores, beam_size=beam_size, end_id=eos_idx) - return finished_ids, finished_scores - - finished_ids, finished_scores = beam_search() - return finished_ids, finished_scores, reader if use_py_reader else None From b626aa3e4149b47204127ac1f40888423a2222a8 Mon Sep 17 00:00:00 2001 From: tink2123 Date: Fri, 28 Aug 2020 11:10:57 +0800 Subject: [PATCH 70/70] formate code --- ppocr/data/rec/dataset_traversal.py | 1 + ppocr/modeling/heads/self_attention/model.py | 32 ++++++-------------- 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/ppocr/data/rec/dataset_traversal.py b/ppocr/data/rec/dataset_traversal.py index 67cbf9b5..84f325b9 100755 --- a/ppocr/data/rec/dataset_traversal.py +++ b/ppocr/data/rec/dataset_traversal.py @@ -257,6 +257,7 @@ class SimpleReader(object): norm_img = process_image_srn( img=img, image_shape=self.image_shape, + char_ops=self.char_ops, num_heads=self.num_heads, max_text_length=self.max_text_length) else: diff --git a/ppocr/modeling/heads/self_attention/model.py b/ppocr/modeling/heads/self_attention/model.py index 66b9c937..8bf34e4a 100644 --- a/ppocr/modeling/heads/self_attention/model.py +++ b/ppocr/modeling/heads/self_attention/model.py @@ -4,9 +4,6 @@ import numpy as np import paddle.fluid as fluid import paddle.fluid.layers as layers -# Set seed for CE -dropout_seed = None - encoder_data_input_fields = ( "src_word", "src_pos", @@ -186,10 +183,7 @@ def multi_head_attention(queries, weights = layers.softmax(product) if dropout_rate: weights = layers.dropout( - weights, - dropout_prob=dropout_rate, - seed=dropout_seed, - is_test=False) + weights, dropout_prob=dropout_rate, seed=None, is_test=False) out = layers.matmul(weights, v) return out @@ -221,7 +215,7 @@ def positionwise_feed_forward(x, d_inner_hid, d_hid, dropout_rate): act="relu") if dropout_rate: hidden = layers.dropout( - hidden, dropout_prob=dropout_rate, seed=dropout_seed, is_test=False) + hidden, dropout_prob=dropout_rate, seed=None, is_test=False) out = layers.fc(input=hidden, size=d_hid, num_flatten_dims=2) return out @@ -245,10 +239,7 @@ def pre_post_process_layer(prev_out, out, process_cmd, dropout_rate=0.): elif cmd == "d": # add dropout if dropout_rate: out = layers.dropout( - out, - dropout_prob=dropout_rate, - seed=dropout_seed, - is_test=False) + out, dropout_prob=dropout_rate, seed=None, is_test=False) return out @@ -272,9 +263,8 @@ def prepare_encoder( This module is used at the bottom of the encoder stacks. """ - src_word_emb = src_word # layers.concat(res,axis=1) + src_word_emb = src_word src_word_emb = layers.cast(src_word_emb, 'float32') - # print("src_word_emb",src_word_emb) src_word_emb = layers.scale(x=src_word_emb, scale=src_emb_dim**0.5) src_pos_enc = layers.embedding( @@ -285,7 +275,7 @@ def prepare_encoder( src_pos_enc.stop_gradient = True enc_input = src_word_emb + src_pos_enc return layers.dropout( - enc_input, dropout_prob=dropout_rate, seed=dropout_seed, + enc_input, dropout_prob=dropout_rate, seed=None, is_test=False) if dropout_rate else enc_input @@ -310,7 +300,7 @@ def prepare_decoder(src_word, param_attr=fluid.ParamAttr( name=word_emb_param_name, initializer=fluid.initializer.Normal(0., src_emb_dim**-0.5))) - # print("target_word_emb",src_word_emb) + src_word_emb = layers.scale(x=src_word_emb, scale=src_emb_dim**0.5) src_pos_enc = layers.embedding( src_pos, @@ -320,7 +310,7 @@ def prepare_decoder(src_word, src_pos_enc.stop_gradient = True enc_input = src_word_emb + src_pos_enc return layers.dropout( - enc_input, dropout_prob=dropout_rate, seed=dropout_seed, + enc_input, dropout_prob=dropout_rate, seed=None, is_test=False) if dropout_rate else enc_input @@ -465,12 +455,8 @@ def wrap_encoder(src_vocab_size, img, src_pos, src_slf_attn_bias = enc_inputs img """ - if enc_inputs is None: - # This is used to implement independent encoder program in inference. - src_word, src_pos, src_slf_attn_bias = make_all_inputs( - encoder_data_input_fields) - else: - src_word, src_pos, src_slf_attn_bias = enc_inputs # + + src_word, src_pos, src_slf_attn_bias = enc_inputs # enc_input = prepare_decoder( src_word,