From ce09c1cce25d923c59684e80210bdd624b6a4548 Mon Sep 17 00:00:00 2001 From: LDOUBLEV Date: Mon, 2 Nov 2020 09:57:34 +0800 Subject: [PATCH 1/4] add faq, test=document_fix --- doc/doc_ch/FAQ.md | 64 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 16 deletions(-) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index 7a2f74e4..64d883b0 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -26,28 +26,32 @@ ## 近期更新(2020.10.26) -#### Q2.1.4 印章如何识别 -**A**: 1. 使用带tps的识别网络或abcnet,2.使用极坐标变换将图片拉平之后使用crnn +#### Q3.4.17: 预测内存泄漏问题 -#### Q2.1.5 多语言的字典里是混合了不同的语种,这个是有什么讲究吗?统一到一个字典里会对精度造成多大的损失? -**A**:统一到一个字典里,会造成最后一层FC过大,增加模型大小。如果有特殊需求的话,可以把需要的几种语言合并字典训练模型,合并字典之后如果引入过多的形近字,可能会造成精度损失,字符平衡的问题可能也需要考虑一下。在PaddleOCR里暂时将语言字典分开。 +**A**:1. 使用hubserving出现内存泄漏,该问题为已知问题,预计在paddle2.0正式版中解决。相关讨论见[issue](https://github.com/PaddlePaddle/PaddleHub/issues/682) -#### Q3.3.16: 如何对检测模型finetune,比如冻结前面的层或某些层使用小的学习率学习? +**A**:2. C++ 预测出现内存泄漏,该问题已经在paddle2.0rc版本中解决,建议安装paddle2.0rc版本,并更新PaddleOCR代码到最新。 -**A**:如果是冻结某些层,可以将变量的stop_gradient属性设置为True,这样计算这个变量之前的所有参数都不会更新了,参考:https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/faq/train_cn.html#id4 -如果对某些层使用更小的学习率学习,静态图里还不是很方便,一个方法是在参数初始化的时候,给权重的属性设置固定的学习率,参考:https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/fluid/param_attr/ParamAttr_cn.html#paramattr -实际上我们实验发现,直接加载模型去fine-tune,不设置某些层不同学习率,效果也都不错 +#### Q3.3.18: cpp_infer 在Windows下使用vs2015编译不通过 -#### Q3.3.17: 使用通用中文模型作为预训练模型,更改了字典文件,出现ctc_fc_b not used的错误 -**A**:修改了字典之后,识别模型的最后一层FC纬度发生了改变,没有办法加载参数。这里是一个警告,可以忽略,正常训练即可。 +**A**:1. windows上建议使用VS2019工具编译,具体编译细节参考[链接](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/deploy/cpp_infer/docs/windows_vs2019_build.md) +**A**:2. 在release模式下而不是debug模式下编译,参考[issue](https://github.com/PaddlePaddle/PaddleOCR/issues/1023) + +#### Q3.3.19: No module named 'tools.infer' + +**A**:1. 确保在PaddleOCR/目录下执行的指令,执行'export PYTHONPATH=.' + +**A**:2. 拉取github上最新代码,这个问题在10月底已修复。 + +#### Q3.3.20: 训练模型和测试模型的检测结果差距较大 + +**A**:1. 检查两个模型使用的后处理参数是否是一样的,训练的后处理参数在配置文件中的PostProcess部分,测试模型的后处理参数在tools/infer/utility.py中,最新代码中两个后处理参数已保持一致。 + +#### Q2.2.5: 文本行较紧密的情况下如何准确检测? + +**A**:使用基于分割的方法,如DB,检测密集文本行时,最好收集一批数据进行训练,并且在训练时,并将生成二值图像的shrink_ratio参数调小一些; -#### Q3.1.18:如何加入自己的检测算法? -**A**:1. 在ppocr/modeling对应目录下分别选择backbone,head。如果没有可用的可以新建文件并添加 - 2. 在ppocr/data下选择对应的数据处理处理方式,如果没有可用的可以新建文件并添加 - 3. 在ppocr/losses下新建文件并编写loss - 4. 在ppocr/postprocess下新建文件并编写后处理算法 - 5. 将上面四个步骤里新添加的类或函数参照yml文件写到配置中 ## 【精选】OCR精选10个问题 @@ -177,6 +181,11 @@ **A**:可以根据实际场景做不同的尝试,共享一个类别是可以收敛,效果也还不错。但是如果分开训练,同类样本之间一致性更好,更容易收敛,识别效果会更优。 +#### Q2.2.5: 文本行较紧密的情况下如何准确检测? + +**A**:使用基于分割的方法,如DB,检测密集文本行时,最好收集一批数据进行训练,并且在训练时,并将生成二值图像的shrink_ratio参数调小一些; + + ### 模型训练调优 #### Q2.3.1:如何更换文本检测/识别的backbone? @@ -492,6 +501,23 @@ return paddle.reader.multiprocess_reader(readers, False, queue_size=320) #### Q3.3.17: 使用通用中文模型作为预训练模型,更改了字典文件,出现ctc_fc_b not used的错误 **A**:修改了字典之后,识别模型的最后一层FC纬度发生了改变,没有办法加载参数。这里是一个警告,可以忽略,正常训练即可。 +#### Q3.3.18: cpp_infer 在Windows下使用vs2015编译不通过 + +**A**:1. windows上建议使用VS2019工具编译,具体编译细节参考[链接](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/deploy/cpp_infer/docs/windows_vs2019_build.md) + +**A**:2. 在release模式下而不是debug模式下编译,参考[issue](https://github.com/PaddlePaddle/PaddleOCR/issues/1023) + +#### Q3.3.19: No module named 'tools.infer' + +**A**:1. 确保在PaddleOCR/目录下执行的指令,执行'export PYTHONPATH=.' + +**A**:2. 拉取github上最新代码,这个问题在10月底已修复。 + +#### Q3.3.20: 训练模型和测试模型的检测结果差距较大 + +**A**:1. 检查两个模型使用的后处理参数是否是一样的,训练的后处理参数在配置文件中的PostProcess部分,测试模型的后处理参数在tools/infer/utility.py中,最新代码中两个后处理参数已保持一致。 + + ### 预测部署 #### Q3.4.1:如何pip安装opt模型转换工具? @@ -565,3 +591,9 @@ return paddle.reader.multiprocess_reader(readers, False, queue_size=320) #### Q3.4.16: hub serving部署服务时如何多gpu同时利用起来,export CUDA_VISIBLE_DEVICES=0,1 方式吗? **A**:hubserving的部署方式目前暂不支持多卡预测,除非手动启动多个serving,不同端口对应不同卡。或者可以使用paddleserving进行部署,部署工具已经发布:https://github.com/PaddlePaddle/PaddleOCR/tree/develop/deploy/pdserving ,在启动服务时--gpu_id 0,1 这样就可以 + +#### Q3.4.17: 预测内存泄漏问题 + +**A**:1. 使用hubserving出现内存泄漏,该问题为已知问题,预计在paddle2.0正式版中解决。相关讨论见[issue](https://github.com/PaddlePaddle/PaddleHub/issues/682) + +**A**:2. C++ 预测出现内存泄漏,该问题已经在paddle2.0rc版本中解决,建议安装paddle2.0rc版本,并更新PaddleOCR代码到最新。 From b8a94e48582eac50daa07b4083f4d7a11efca833 Mon Sep 17 00:00:00 2001 From: LDOUBLEV Date: Mon, 2 Nov 2020 10:05:16 +0800 Subject: [PATCH 2/4] add faq, test=document_fix --- README.md | 2 ++ README_ch.md | 1 + 2 files changed, 3 insertions(+) diff --git a/README.md b/README.md index 831bb709..c0293d76 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ English | [简体中文](README_ch.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.11.2 [FAQ](./doc/doc_ch/FAQ.md) 5 new high-frequency questions have been added, a total of 99 frequently questions and answers, and it is planned to be updated every Monday in the future. + Welcome everyone to continue to pay attention. - 2020.9.22 Update the PP-OCR technical article, https://arxiv.org/abs/2009.09941 - 2020.9.19 Update the ultra lightweight compressed ppocr_mobile_slim series models, the overall model size is 3.5M (see [PP-OCR Pipeline](#PP-OCR-Pipeline)), suitable for mobile deployment. [Model Downloads](#Supported-Chinese-model-list) - 2020.9.17 Update the ultra lightweight ppocr_mobile series and general ppocr_server series Chinese and English ocr models, which are comparable to commercial effects. [Model Downloads](#Supported-Chinese-model-list) diff --git a/README_ch.md b/README_ch.md index e22e8b5c..6d28401b 100644 --- a/README_ch.md +++ b/README_ch.md @@ -4,6 +4,7 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力使用者训练出更好的模型,并应用落地。 **近期更新** +- 2020.11.2 [FAQ](./doc/doc_ch/FAQ.md)新增5个高频问题,共计99个常见问题及解答,并且计划以后每周一都会更新,欢迎大家持续关注。 - 2020.10.26 [FAQ](./doc/doc_ch/FAQ.md)新增5个高频问题,共计94个常见问题及解答,并且计划以后每周一都会更新,欢迎大家持续关注。 - 2020.9.22 更新PP-OCR技术文章,https://arxiv.org/abs/2009.09941 - 2020.9.19 更新超轻量压缩ppocr_mobile_slim系列模型,整体模型3.5M(详见[PP-OCR Pipeline](#PP-OCR)),适合在移动端部署使用。[模型下载](#模型下载) From a2937827c20085a22cf4a2f3bb872c39f079e9e8 Mon Sep 17 00:00:00 2001 From: LDOUBLEV Date: Mon, 2 Nov 2020 10:13:29 +0800 Subject: [PATCH 3/4] add faq, test=document_fix --- README.md | 2 -- README_ch.md | 4 ++-- doc/doc_ch/FAQ.md | 10 +++++----- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index c0293d76..831bb709 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,6 @@ English | [简体中文](README_ch.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.11.2 [FAQ](./doc/doc_ch/FAQ.md) 5 new high-frequency questions have been added, a total of 99 frequently questions and answers, and it is planned to be updated every Monday in the future. - Welcome everyone to continue to pay attention. - 2020.9.22 Update the PP-OCR technical article, https://arxiv.org/abs/2009.09941 - 2020.9.19 Update the ultra lightweight compressed ppocr_mobile_slim series models, the overall model size is 3.5M (see [PP-OCR Pipeline](#PP-OCR-Pipeline)), suitable for mobile deployment. [Model Downloads](#Supported-Chinese-model-list) - 2020.9.17 Update the ultra lightweight ppocr_mobile series and general ppocr_server series Chinese and English ocr models, which are comparable to commercial effects. [Model Downloads](#Supported-Chinese-model-list) diff --git a/README_ch.md b/README_ch.md index 6d28401b..92f82c59 100644 --- a/README_ch.md +++ b/README_ch.md @@ -99,8 +99,8 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力 - [效果展示](#效果展示) - FAQ - [【精选】OCR精选10个问题](./doc/doc_ch/FAQ.md) - - [【理论篇】OCR通用23个问题](./doc/doc_ch/FAQ.md) - - [【实战篇】PaddleOCR实战61个问题](./doc/doc_ch/FAQ.md) + - [【理论篇】OCR通用24个问题](./doc/doc_ch/FAQ.md) + - [【实战篇】PaddleOCR实战65个问题](./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 64d883b0..5de455d5 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -11,16 +11,16 @@ * [近期更新(2020.10.26)](#近期更新) * [【精选】OCR精选10个问题](#OCR精选10个问题) -* [【理论篇】OCR通用23个问题](#OCR通用问题) - * [基础知识5题](#基础知识) +* [【理论篇】OCR通用24个问题](#OCR通用问题) + * [基础知识6题](#基础知识) * [数据集4题](#数据集) * [模型训练调优6题](#模型训练调优) * [预测部署8题](#预测部署) -* [【实战篇】PaddleOCR实战61个问题](#PaddleOCR实战问题) +* [【实战篇】PaddleOCR实战65个问题](#PaddleOCR实战问题) * [使用咨询20题](#使用咨询) * [数据集10题](#数据集) - * [模型训练调优15题](#模型训练调优) - * [预测部署16题](#预测部署) + * [模型训练调优18题](#模型训练调优) + * [预测部署17题](#预测部署) From 5e6fc91bfc4cfaafb484c27d9a7462557b73c927 Mon Sep 17 00:00:00 2001 From: LDOUBLEV Date: Mon, 2 Nov 2020 10:37:47 +0800 Subject: [PATCH 4/4] add faq, test=document_fix --- doc/doc_ch/FAQ.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index 5de455d5..d5542635 100644 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -46,11 +46,11 @@ #### Q3.3.20: 训练模型和测试模型的检测结果差距较大 -**A**:1. 检查两个模型使用的后处理参数是否是一样的,训练的后处理参数在配置文件中的PostProcess部分,测试模型的后处理参数在tools/infer/utility.py中,最新代码中两个后处理参数已保持一致。 +**A**:1. 检查两个模型使用的后处理参数是否是一样的,训练的后处理参数在配置文件中的[PostProcess](https://github.com/PaddlePaddle/PaddleOCR/blob/e9d533fc1fdf7bbce79947dde54b05011bb1e135/configs/det/det_mv3_db_v1.1.yml#L54)部分,测试模型的后处理参数在[tools/infer/utility.py](https://github.com/PaddlePaddle/PaddleOCR/blob/e9d533fc1fdf7bbce79947dde54b05011bb1e135/tools/infer/utility.py#L47)中,最新代码中两个后处理参数已保持一致。 #### Q2.2.5: 文本行较紧密的情况下如何准确检测? -**A**:使用基于分割的方法,如DB,检测密集文本行时,最好收集一批数据进行训练,并且在训练时,并将生成二值图像的shrink_ratio参数调小一些; +**A**:使用基于分割的方法,如DB,检测密集文本行时,最好收集一批数据进行训练,并且在训练时,并将生成二值图像的[shrink_ratio](https://github.com/PaddlePaddle/PaddleOCR/blob/e9d533fc1fdf7bbce79947dde54b05011bb1e135/ppocr/data/det/make_shrink_map.py#L46)参数调小一些;