From efba14e1ccba3916f0d5675c4fcaeec022dc0851 Mon Sep 17 00:00:00 2001 From: WenmuZhou Date: Mon, 30 Nov 2020 17:30:52 +0800 Subject: [PATCH 1/4] hide argparse when use whl by python --- paddleocr.py | 6 +++--- setup.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/paddleocr.py b/paddleocr.py index 3958f7ad5..9ad05aeaa 100644 --- a/paddleocr.py +++ b/paddleocr.py @@ -117,13 +117,13 @@ def maybe_download(model_storage_directory, url): os.remove(tmp_path) -def parse_args(): +def parse_args(add_help=True): import argparse def str2bool(v): return v.lower() in ("true", "t", "1") - parser = argparse.ArgumentParser() + parser = argparse.ArgumentParser(add_help=add_help) # params for prediction engine parser.add_argument("--use_gpu", type=str2bool, default=True) parser.add_argument("--ir_optim", type=str2bool, default=True) @@ -181,7 +181,7 @@ class PaddleOCR(predict_system.TextSystem): args: **kwargs: other params show in paddleocr --help """ - postprocess_params = parse_args() + postprocess_params = parse_args(add_help=False) postprocess_params.__dict__.update(**kwargs) self.use_angle_cls = postprocess_params.use_angle_cls lang = postprocess_params.lang diff --git a/setup.py b/setup.py index d831a3a34..06fd46de4 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ setup( package_dir={'paddleocr': ''}, include_package_data=True, entry_points={"console_scripts": ["paddleocr= paddleocr.paddleocr:main"]}, - version='1.1.1', + version='1.1.2', 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', From f96bf152f867cee68957498d65eb9c3df3c9f0a9 Mon Sep 17 00:00:00 2001 From: WenmuZhou Date: Mon, 30 Nov 2020 17:48:13 +0800 Subject: [PATCH 2/4] set use_angle_cls defalut valut to false --- paddleocr.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paddleocr.py b/paddleocr.py index 9ad05aeaa..7d1626a9e 100644 --- a/paddleocr.py +++ b/paddleocr.py @@ -170,7 +170,7 @@ def parse_args(add_help=True): parser.add_argument("--lang", type=str, default='ch') parser.add_argument("--det", type=str2bool, default=True) parser.add_argument("--rec", type=str2bool, default=True) - parser.add_argument("--use_angle_cls", type=str2bool, default=True) + parser.add_argument("--use_angle_cls", type=str2bool, default=False) return parser.parse_args() From 706debf678d03d0dbfda0003fa5112760c140124 Mon Sep 17 00:00:00 2001 From: WenmuZhou Date: Mon, 7 Dec 2020 10:20:08 +0800 Subject: [PATCH 3/4] update faq --- README_ch.md | 6 ++--- doc/doc_ch/FAQ.md | 61 ++++++++++++++++++++++++++++++++++------------- 2 files changed, 47 insertions(+), 20 deletions(-) diff --git a/README_ch.md b/README_ch.md index 36478e62c..d5b009b2b 100644 --- a/README_ch.md +++ b/README_ch.md @@ -4,7 +4,7 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力使用者训练出更好的模型,并应用落地。 **近期更新** -- 2020.11.30 [FAQ](./doc/doc_ch/FAQ.md)新增5个高频问题,共计119个常见问题及解答,并且计划以后每周一都会更新,欢迎大家持续关注。 +- 2020.12.04 [FAQ](./doc/doc_ch/FAQ.md)新增5个高频问题,124,并且计划以后每周一都会更新,欢迎大家持续关注。 - 2020.11.25 更新半自动标注工具[PPOCRLabel](./PPOCRLabel/README.md),辅助开发者高效完成标注任务,输出格式与PP-OCR训练任务完美衔接。 - 2020.9.22 更新PP-OCR技术文章,https://arxiv.org/abs/2009.09941 - 2020.9.19 更新超轻量压缩ppocr_mobile_slim系列模型,整体模型3.5M(详见[PP-OCR Pipeline](#PP-OCR)),适合在移动端部署使用。[模型下载](#模型下载) @@ -100,8 +100,8 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力 - [效果展示](#效果展示) - FAQ - [【精选】OCR精选10个问题](./doc/doc_ch/FAQ.md) - - [【理论篇】OCR通用29个问题](./doc/doc_ch/FAQ.md) - - [【实战篇】PaddleOCR实战80个问题](./doc/doc_ch/FAQ.md) + - [【理论篇】OCR通用30个问题](./doc/doc_ch/FAQ.md) + - [【实战篇】PaddleOCR实战84个问题](./doc/doc_ch/FAQ.md) - [技术交流群](#欢迎加入PaddleOCR技术交流群) - [参考文献](./doc/doc_ch/reference.md) - [许可证书](#许可证书) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index 8453a58a5..339ec3623 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -9,43 +9,45 @@ ## PaddleOCR常见问题汇总(持续更新) -* [近期更新(2020.11.30)](#近期更新) +* [近期更新(2020.12.04)](#近期更新) * [【精选】OCR精选10个问题](#OCR精选10个问题) -* [【理论篇】OCR通用29个问题](#OCR通用问题) +* [【理论篇】OCR通用30个问题](#OCR通用问题) * [基础知识7题](#基础知识) * [数据集7题](#数据集2) * [模型训练调优7题](#模型训练调优2) - * [预测部署8题](#预测部署2) -* [【实战篇】PaddleOCR实战80个问题](#PaddleOCR实战问题) + * [预测部署9题](#预测部署2) +* [【实战篇】PaddleOCR实战84个问题](#PaddleOCR实战问题) * [使用咨询20题](#使用咨询) * [数据集17题](#数据集3) - * [模型训练调优21题](#模型训练调优3) - * [预测部署22题](#预测部署3) + * [模型训练调优24题](#模型训练调优3) + * [预测部署23题](#预测部署3) -## 近期更新(2020.11.30) +## 近期更新(2020.12.04) -#### Q3.2.15: 文本标注工具PPOCRLabel有什么特色? +#### Q2.4.9:弯曲文本有试过opencv的TPS进行弯曲校正吗? -**A**: PPOCRLabel是一个半自动文本标注工具,它使用基于PPOCR的中英文OCR模型,预先预测文本检测和识别结果,然后用户对上述结果进行校验和修正就行,大大提高用户的标注效率。同时导出的标注结果直接适配PPOCR训练所需要的数据格式, +**A**:opencv的tps需要标出上下边界对应的点,这些点很难通过传统方法或者深度学习方法获取。PaddleOCR里StarNet网络中的tps模块实现了自动学点,自动校正,可以直接尝试这个。 -#### Q3.2.16: 文本标注工具PPOCRLabel,可以更换模型吗? +#### Q3.3.22: 文字检测时怎么模糊的数据增强? -**A**: PPOCRLabel中OCR部署方式采用的基于pip安装whl包快速推理,可以参考相关文档更换模型路径,进行特定任务的标注适配。基于pip安装whl包快速推理的文档如下,https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_ch/whl.md。 +**A**: 模糊的数据增强需要修改代码进行添加,以DB为例,在这一行之前添加模糊的增强就行 https://github.com/PaddlePaddle/PaddleOCR/blob/develop/ppocr/data/det/db_process.py#L145 -#### Q3.2.17: 文本标注工具PPOCRLabel支持的运行环境有哪些? +#### Q3.3.23: 文字检测时怎么更改图片旋转的角度,实现360度任意旋转? -**A**: PPOCRLabel可运行于Linux、Windows、MacOS等多种系统。操作步骤可以参考文档,https://github.com/PaddlePaddle/PaddleOCR/blob/develop/PPOCRLabel/README.md +**A**: 将这里的(-10,10)) 改为(-180,180)即可 https://github.com/PaddlePaddle/PaddleOCR/blob/develop/ppocr/data/det/data_augment.py#L22 -#### Q2.2.6: 当训练数据量少时,如何获取更多的数据? +#### Q3.3.24: 训练数据的长宽比过大怎么修改shape -**A**: 当训练数据量少时,可以尝试以下三种方式获取更多的数据:(1)人工采集更多的训练数据,最直接也是最有效的方式。(2)基于PIL和opencv基本图像处理或者变换。例如PIL中ImageFont, Image, ImageDraw三个模块将文字写到背景中,opencv的旋转仿射变换,高斯滤波等。(3)利用数据生成算法合成数据,例如pix2pix等算法。 +**A**: 识别修改这里 https://github.com/PaddlePaddle/PaddleOCR/blob/develop/configs/rec/ch_ppocr_v1.1/rec_chinese_common_train_v1.1.yml#L12 -#### Q2.2.7: 论文《Editing Text in the Wild》中文本合成方法SRNet有什么特点? +检测修改这里 https://github.com/PaddlePaddle/PaddleOCR/blob/develop/configs/det/det_mv3_db.yml#L13 -**A**: SRNet是借鉴GAN中图像到图像转换、风格迁移的想法合成文本数据。不同于通用GAN的方法只选择一个分支,SRNet将文本合成任务分解为三个简单的子模块,提升合成数据的效果。这三个子模块为不带背景的文本风格迁移模块、背景抽取模块和融合模块。PaddleOCR计划将在2020年12月中旬开源基于SRNet的实用模型。 +#### Q3.4.23:安装paddleocr后,提示没有paddle + +**A**:这是因为paddlepaddle gpu版本和cpu版本的名称不一致,现在已经在whl的文档里做了安装说明。 ## 【精选】OCR精选10个问题 @@ -282,6 +284,10 @@ **A**:表格目前学术界比较成熟的解决方案不多 ,可以尝试下分割的论文方案。 +#### Q2.4.9:弯曲文本有试过opencv的TPS进行弯曲校正吗? + +**A**:opencv的tps需要标出上下边界对应的点,这个点很难通过传统方法或者深度学习方法获取。PaddleOCR里StarNet网络中的tps模块实现了自动学点,自动校正,可以直接尝试这个。 + @@ -594,6 +600,23 @@ return paddle.reader.multiprocess_reader(readers, False, queue_size=320) (3)在训练的时候,文本长度超过25的训练图像都会被丢弃,因此需要看下真正参与训练的图像有多少,太少的话也容易过拟合。 + +#### Q3.3.22: 文字检测时怎么模糊的数据增强? + +**A**: 模糊的数据增强需要修改代码进行添加,以DB为例,在这一行之前添加模糊的增强就行 https://github.com/PaddlePaddle/PaddleOCR/blob/develop/ppocr/data/det/db_process.py#L145 + +#### Q3.3.23: 文字检测时怎么更改图片旋转的角度,实现360度任意旋转? + +**A**: 将这里的(-10,10)) 改为(-180,180)即可 https://github.com/PaddlePaddle/PaddleOCR/blob/develop/ppocr/data/det/data_augment.py#L22 + + +#### Q3.3.24: 训练数据的长宽比过大怎么修改shape + +**A**: 识别修改这里 https://github.com/PaddlePaddle/PaddleOCR/blob/develop/configs/rec/ch_ppocr_v1.1/rec_chinese_common_train_v1.1.yml#L12 + +检测修改这里 https://github.com/PaddlePaddle/PaddleOCR/blob/develop/configs/det/det_mv3_db.yml#L13 + + ### 预测部署 @@ -696,3 +719,7 @@ return paddle.reader.multiprocess_reader(readers, False, queue_size=320) #### Q3.4.22:训练ccpd车牌数据集,训练集准确率高,测试均是错误的,这是什么原因? **A**:这是因为训练时将shape修改为[3, 70, 220], 预测时对图片resize,会把高度压缩至32,影响测试结果。注释掉[resize代码](https://github.com/PaddlePaddle/PaddleOCR/blob/ed4313d611b7708a7763d4612f00cb7f318a0e1f/tools/infer/predict_rec.py#L54-L55)可以解决问题。 + +#### Q3.4.23:安装paddleocr后,提示没有paddle + +**A**:这是因为paddlepaddle gpu版本和cpu版本的名称不一致,现在已经在whl的文档里做了安装说明。 From 7e7225f434da6128d4daf4cf0129b9d59293c719 Mon Sep 17 00:00:00 2001 From: WenmuZhou Date: Mon, 7 Dec 2020 15:52:37 +0800 Subject: [PATCH 4/4] update link --- doc/doc_ch/FAQ.md | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index 339ec3623..76c3afc08 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -32,22 +32,21 @@ #### Q3.3.22: 文字检测时怎么模糊的数据增强? -**A**: 模糊的数据增强需要修改代码进行添加,以DB为例,在这一行之前添加模糊的增强就行 https://github.com/PaddlePaddle/PaddleOCR/blob/develop/ppocr/data/det/db_process.py#L145 +**A**: 模糊的数据增强需要修改代码进行添加,以DB为例,在[这一行](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/ppocr/data/det/db_process.py#L145) 之前添加模糊的增强就行 #### Q3.3.23: 文字检测时怎么更改图片旋转的角度,实现360度任意旋转? -**A**: 将这里的(-10,10)) 改为(-180,180)即可 https://github.com/PaddlePaddle/PaddleOCR/blob/develop/ppocr/data/det/data_augment.py#L22 +**A**: 将[这里](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/ppocr/data/det/data_augment.py#L22) 的(-10,10) 改为(-180,180)即可 #### Q3.3.24: 训练数据的长宽比过大怎么修改shape -**A**: 识别修改这里 https://github.com/PaddlePaddle/PaddleOCR/blob/develop/configs/rec/ch_ppocr_v1.1/rec_chinese_common_train_v1.1.yml#L12 - -检测修改这里 https://github.com/PaddlePaddle/PaddleOCR/blob/develop/configs/det/det_mv3_db.yml#L13 +**A**: 识别修改[这里](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/configs/rec/ch_ppocr_v1.1/rec_chinese_common_train_v1.1.yml#L12), +检测修改[这里](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/configs/det/det_mv3_db.yml#L13) #### Q3.4.23:安装paddleocr后,提示没有paddle -**A**:这是因为paddlepaddle gpu版本和cpu版本的名称不一致,现在已经在whl的文档里做了安装说明。 +**A**:这是因为paddlepaddle gpu版本和cpu版本的名称不一致,现在已经在[whl的文档](./whl.md)里做了安装说明。 ## 【精选】OCR精选10个问题 @@ -600,21 +599,18 @@ return paddle.reader.multiprocess_reader(readers, False, queue_size=320) (3)在训练的时候,文本长度超过25的训练图像都会被丢弃,因此需要看下真正参与训练的图像有多少,太少的话也容易过拟合。 - #### Q3.3.22: 文字检测时怎么模糊的数据增强? -**A**: 模糊的数据增强需要修改代码进行添加,以DB为例,在这一行之前添加模糊的增强就行 https://github.com/PaddlePaddle/PaddleOCR/blob/develop/ppocr/data/det/db_process.py#L145 +**A**: 模糊的数据增强需要修改代码进行添加,以DB为例,在[这一行](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/ppocr/data/det/db_process.py#L145) 之前添加模糊的增强就行 #### Q3.3.23: 文字检测时怎么更改图片旋转的角度,实现360度任意旋转? -**A**: 将这里的(-10,10)) 改为(-180,180)即可 https://github.com/PaddlePaddle/PaddleOCR/blob/develop/ppocr/data/det/data_augment.py#L22 - +**A**: 将[这里](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/ppocr/data/det/data_augment.py#L22) 的(-10,10) 改为(-180,180)即可 #### Q3.3.24: 训练数据的长宽比过大怎么修改shape -**A**: 识别修改这里 https://github.com/PaddlePaddle/PaddleOCR/blob/develop/configs/rec/ch_ppocr_v1.1/rec_chinese_common_train_v1.1.yml#L12 - -检测修改这里 https://github.com/PaddlePaddle/PaddleOCR/blob/develop/configs/det/det_mv3_db.yml#L13 +**A**: 识别修改[这里](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/configs/rec/ch_ppocr_v1.1/rec_chinese_common_train_v1.1.yml#L12) , +检测修改[这里](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/configs/det/det_mv3_db.yml#L13) @@ -722,4 +718,4 @@ return paddle.reader.multiprocess_reader(readers, False, queue_size=320) #### Q3.4.23:安装paddleocr后,提示没有paddle -**A**:这是因为paddlepaddle gpu版本和cpu版本的名称不一致,现在已经在whl的文档里做了安装说明。 +**A**:这是因为paddlepaddle gpu版本和cpu版本的名称不一致,现在已经在[whl的文档](./whl.md)里做了安装说明。