add faq 20201109 (#1127)

add faq 20201109
This commit is contained in:
littletomatodonkey 2020-11-09 10:53:06 +08:00 committed by GitHub
parent ad7f65f70a
commit 03dfd6280e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 51 additions and 27 deletions

View File

@ -4,7 +4,7 @@
PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库助力使用者训练出更好的模型并应用落地。 PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库助力使用者训练出更好的模型并应用落地。
**近期更新** **近期更新**
- 2020.11.2 [FAQ](./doc/doc_ch/FAQ.md)新增5个高频问题共计99个常见问题及解答,并且计划以后每周一都会更新,欢迎大家持续关注。 - 2020.11.9 [FAQ](./doc/doc_ch/FAQ.md)新增5个高频问题共计104个常见问题及解答,并且计划以后每周一都会更新,欢迎大家持续关注。
- 2020.9.22 更新PP-OCR技术文章https://arxiv.org/abs/2009.09941 - 2020.9.22 更新PP-OCR技术文章https://arxiv.org/abs/2009.09941
- 2020.9.19 更新超轻量压缩ppocr_mobile_slim系列模型整体模型3.5M(详见[PP-OCR Pipeline](#PP-OCR)),适合在移动端部署使用。[模型下载](#模型下载) - 2020.9.19 更新超轻量压缩ppocr_mobile_slim系列模型整体模型3.5M(详见[PP-OCR Pipeline](#PP-OCR)),适合在移动端部署使用。[模型下载](#模型下载)
- 2020.9.17 更新超轻量ppocr_mobile系列和通用ppocr_server系列中英文ocr模型媲美商业效果。[模型下载](#模型下载) - 2020.9.17 更新超轻量ppocr_mobile系列和通用ppocr_server系列中英文ocr模型媲美商业效果。[模型下载](#模型下载)
@ -13,7 +13,6 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库助力
- 2020.8.21 更新8月18日B站直播课回放和PPT课节2易学易用的OCR工具大礼包[获取地址](https://aistudio.baidu.com/aistudio/education/group/info/1519) - 2020.8.21 更新8月18日B站直播课回放和PPT课节2易学易用的OCR工具大礼包[获取地址](https://aistudio.baidu.com/aistudio/education/group/info/1519)
- [More](./doc/doc_ch/update.md) - [More](./doc/doc_ch/update.md)
## 特性 ## 特性
- PPOCR系列高质量预训练模型准确的识别效果 - PPOCR系列高质量预训练模型准确的识别效果
@ -98,8 +97,8 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库助力
- [效果展示](#效果展示) - [效果展示](#效果展示)
- FAQ - FAQ
- [【精选】OCR精选10个问题](./doc/doc_ch/FAQ.md) - [【精选】OCR精选10个问题](./doc/doc_ch/FAQ.md)
- [【理论篇】OCR通用24个问题](./doc/doc_ch/FAQ.md) - [【理论篇】OCR通用25个问题](./doc/doc_ch/FAQ.md)
- [【实战篇】PaddleOCR实战65个问题](./doc/doc_ch/FAQ.md) - [【实战篇】PaddleOCR实战69个问题](./doc/doc_ch/FAQ.md)
- [技术交流群](#欢迎加入PaddleOCR技术交流群) - [技术交流群](#欢迎加入PaddleOCR技术交流群)
- [参考文献](./doc/doc_ch/reference.md) - [参考文献](./doc/doc_ch/reference.md)
- [许可证书](#许可证书) - [许可证书](#许可证书)

View File

@ -11,46 +11,44 @@
* [近期更新2020.11.02](#近期更新) * [近期更新2020.11.02](#近期更新)
* [【精选】OCR精选10个问题](#OCR精选10个问题) * [【精选】OCR精选10个问题](#OCR精选10个问题)
* [【理论篇】OCR通用24个问题](#OCR通用问题) * [【理论篇】OCR通用25个问题](#OCR通用问题)
* [基础知识6题](#基础知识) * [基础知识6题](#基础知识)
* [数据集4题](#数据集) * [数据集5题](#数据集)
* [模型训练调优6题](#模型训练调优) * [模型训练调优6题](#模型训练调优)
* [预测部署8题](#预测部署) * [预测部署8题](#预测部署)
* [【实战篇】PaddleOCR实战65个问题](#PaddleOCR实战问题) * [【实战篇】PaddleOCR实战69个问题](#PaddleOCR实战问题)
* [使用咨询20题](#使用咨询) * [使用咨询19题](#使用咨询)
* [数据集10题](#数据集) * [数据集10题](#数据集)
* [模型训练调优18题](#模型训练调优) * [模型训练调优21题](#模型训练调优)
* [预测部署17题](#预测部署) * [预测部署19题](#预测部署)
<a name="近期更新"></a> <a name="近期更新"></a>
## 近期更新2020.11.02 ## 近期更新2020.11.09
#### Q3.4.17 预测内存泄漏问题 #### Q2.1.6 预处理部分图片的长和宽为什么要处理成32的倍数
* 以检测中的resnet骨干网络为例图像输入网络之后需要经过5次2倍降采样共32倍因此建议输入的图像尺寸为32的倍数。
**A**1. 使用hubserving出现内存泄漏该问题为已知问题预计在paddle2.0正式版中解决。相关讨论见[issue](https://github.com/PaddlePaddle/PaddleHub/issues/682) #### 3.1.19:训练的时候报错`reader raised an exception`,但是具体不知道是啥问题?
2. C++ 预测出现内存泄漏该问题已经在paddle2.0rc版本中解决建议安装paddle2.0rc版本并更新PaddleOCR代码到最新 **A**:这个一般是因为标注文件格式有问题或者是标注文件中的图片路径有问题导致的,在[tools/train.py](../../tools/train.py)文件中有一个`test_reader`的函数,基于基于这个去检查一下数据的格式以及标注,确认没问题之后再进行模型训练
#### Q3.3.18: cpp_infer 在Windows下使用vs2015编译不通过 #### Q3.3.21: 使用合成数据精调小模型后效果可以但是还没开源的小infer模型效果好这是为什么呢
**A**1. windows上建议使用VS2019工具编译具体编译细节参考[链接](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/deploy/cpp_infer/docs/windows_vs2019_build.md) **A**1. 要保证使用的配置文件和pretrain weights是对应的
2. 在release模式下而不是debug模式下编译参考[issue](https://github.com/PaddlePaddle/PaddleOCR/issues/1023) **A**2. 在微调时一般都需要真实数据如果使用合成数据效果反而可能会有下降PaddleOCR中放出的识别inference模型也是基于预训练模型在真实数据上微调得到的效果提升比较明显
#### Q3.3.19: No module named 'tools.infer' **A**3. 在训练的时候文本长度超过25的训练图像都会被丢弃因此需要看下真正参与训练的图像有多少太少的话也容易过拟合。
**A**1. 确保在PaddleOCR/目录下执行的指令,执行'export PYTHONPATH=.' #### Q3.4.18:对于一些尺寸较大的文档类图片,在检测时会有较多的漏检,怎么避免这种漏检的问题呢?
2. 拉取github上最新代码这个问题在10月底已修复。 **A**PaddleOCR中在图像最长边大于960时将图像等比例缩放为长边960的图像再进行预测对于这种图像可以通过修改det_max_side_len增大检测的最长边[tools/infer/utility.py#L45](../../tools/infer/utility.py#L45)
#### Q3.3.20: 训练模型和测试模型的检测结果差距较大
**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)中,最新代码中两个后处理参数已保持一致。 #### Q3.4.19:在使用训练好的识别模型进行预测的时候,发现有很多重复的字,这个怎么解决呢?
#### Q2.2.5 文本行较紧密的情况下如何准确检测? **A**:可以看下训练的尺度和预测的尺度是否相同,如果训练的尺度为`[3, 32, 320]`,预测的尺度为`[3, 64, 640]`,则会有比较多的重复识别现象。
**A**使用基于分割的方法如DB检测密集文本行时最好收集一批数据进行训练并且在训练时并将生成二值图像的[shrink_ratio](https://github.com/PaddlePaddle/PaddleOCR/blob/e9d533fc1fdf7bbce79947dde54b05011bb1e135/ppocr/data/det/make_shrink_map.py#L46)参数调小一些;
<a name="OCR精选10个问题"></a> <a name="OCR精选10个问题"></a>
@ -163,6 +161,10 @@
#### Q2.1.5 多语言的字典里是混合了不同的语种,这个是有什么讲究吗?统一到一个字典里会对精度造成多大的损失? #### Q2.1.5 多语言的字典里是混合了不同的语种,这个是有什么讲究吗?统一到一个字典里会对精度造成多大的损失?
**A**统一到一个字典里会造成最后一层FC过大增加模型大小。如果有特殊需求的话可以把需要的几种语言合并字典训练模型合并字典之后如果引入过多的形近字可能会造成精度损失字符平衡的问题可能也需要考虑一下。在PaddleOCR里暂时将语言字典分开。 **A**统一到一个字典里会造成最后一层FC过大增加模型大小。如果有特殊需求的话可以把需要的几种语言合并字典训练模型合并字典之后如果引入过多的形近字可能会造成精度损失字符平衡的问题可能也需要考虑一下。在PaddleOCR里暂时将语言字典分开。
#### Q2.1.6 预处理部分图片的长和宽为什么要处理成32的倍数
* 以检测中的resnet骨干网络为例图像输入网络之后需要经过5次2倍降采样共32倍因此建议输入的图像尺寸为32的倍数。
### 数据集 ### 数据集
#### Q2.2.1:支持空格的模型,标注数据的时候是不是要标注空格?中间几个空格都要标注出来么? #### Q2.2.1:支持空格的模型,标注数据的时候是不是要标注空格?中间几个空格都要标注出来么?
@ -183,7 +185,7 @@
#### Q2.2.5 文本行较紧密的情况下如何准确检测? #### Q2.2.5 文本行较紧密的情况下如何准确检测?
**A**使用基于分割的方法如DB检测密集文本行时最好收集一批数据进行训练并且在训练时并将生成二值图像的shrink_ratio参数调小一些 **A**使用基于分割的方法如DB检测密集文本行时最好收集一批数据进行训练并且在训练时并将生成二值图像的shrink_ratio参数调小一些
### 模型训练调优 ### 模型训练调优
@ -353,6 +355,11 @@
5. 将上面四个步骤里新添加的类或函数参照yml文件写到配置中 5. 将上面四个步骤里新添加的类或函数参照yml文件写到配置中
#### 3.1.19:训练的时候报错`reader raised an exception`,但是具体不知道是啥问题?
**A**:这个一般是因为标注文件格式有问题或者是标注文件中的图片路径有问题导致的,在[tools/train.py](../../tools/train.py)文件中有一个`test_reader`的函数,基于基于这个去检查一下数据的格式以及标注,确认没问题之后再进行模型训练。
### 数据集 ### 数据集
#### Q3.2.1如何制作PaddleOCR支持的数据格式 #### Q3.2.1如何制作PaddleOCR支持的数据格式
@ -436,7 +443,7 @@ unclip_ratio: 文本框扩张的系数,关系到文本框的大小``
**A**可以通过下面的脚本终止所有包含train.py字段的进程 **A**可以通过下面的脚本终止所有包含train.py字段的进程
``` ```shell
ps -axu | grep train.py | awk '{print $2}' | xargs kill -9 ps -axu | grep train.py | awk '{print $2}' | xargs kill -9
``` ```
@ -519,6 +526,15 @@ return paddle.reader.multiprocess_reader(readers, False, queue_size=320)
**A**1. 检查两个模型使用的后处理参数是否是一样的训练的后处理参数在配置文件中的PostProcess部分测试模型的后处理参数在tools/infer/utility.py中最新代码中两个后处理参数已保持一致。 **A**1. 检查两个模型使用的后处理参数是否是一样的训练的后处理参数在配置文件中的PostProcess部分测试模型的后处理参数在tools/infer/utility.py中最新代码中两个后处理参数已保持一致。
#### Q3.3.21: 使用合成数据精调小模型后效果可以但是还没开源的小infer模型效果好这是为什么呢
**A**1. 要保证使用的配置文件和pretrain weights是对应的
**A**2. 在微调时一般都需要真实数据如果使用合成数据效果反而可能会有下降PaddleOCR中放出的识别inference模型也是基于预训练模型在真实数据上微调得到的效果提升比较明显
**A**3. 在训练的时候文本长度超过25的训练图像都会被丢弃因此需要看下真正参与训练的图像有多少太少的话也容易过拟合。
### 预测部署 ### 预测部署
#### Q3.4.1如何pip安装opt模型转换工具 #### Q3.4.1如何pip安装opt模型转换工具
@ -598,3 +614,12 @@ return paddle.reader.multiprocess_reader(readers, False, queue_size=320)
**A**1. 使用hubserving出现内存泄漏该问题为已知问题预计在paddle2.0正式版中解决。相关讨论见[issue](https://github.com/PaddlePaddle/PaddleHub/issues/682) **A**1. 使用hubserving出现内存泄漏该问题为已知问题预计在paddle2.0正式版中解决。相关讨论见[issue](https://github.com/PaddlePaddle/PaddleHub/issues/682)
**A**2. C++ 预测出现内存泄漏该问题已经在paddle2.0rc版本中解决建议安装paddle2.0rc版本并更新PaddleOCR代码到最新。 **A**2. C++ 预测出现内存泄漏该问题已经在paddle2.0rc版本中解决建议安装paddle2.0rc版本并更新PaddleOCR代码到最新。
#### Q3.4.18:对于一些尺寸较大的文档类图片,在检测时会有较多的漏检,怎么避免这种漏检的问题呢?
**A**PaddleOCR中在图像最长边大于960时将图像等比例缩放为长边960的图像再进行预测对于这种图像可以通过修改det_max_side_len增大检测的最长边[tools/infer/utility.py#L45](../../tools/infer/utility.py#L45)
#### Q3.4.19:在使用训练好的识别模型进行预测的时候,发现有很多重复的字,这个怎么解决呢?
**A**:可以看下训练的尺度和预测的尺度是否相同,如果训练的尺度为`[3, 32, 320]`,预测的尺度为`[3, 64, 640]`,则会有比较多的重复识别现象。