Merge pull request #1174 from tink2123/for_faq

Update faq
This commit is contained in:
xiaoting 2020-11-16 13:15:30 +08:00 committed by GitHub
commit 4cf85329cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 54 additions and 29 deletions

View File

@ -4,7 +4,7 @@
PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库助力使用者训练出更好的模型并应用落地。
**近期更新**
- 2020.11.9 [FAQ](./doc/doc_ch/FAQ.md)新增5个高频问题共计104个常见问题及解答,并且计划以后每周一都会更新,欢迎大家持续关注。
- 2020.11.16 [FAQ](./doc/doc_ch/FAQ.md)新增5个高频问题共计109个常见问题及解答,并且计划以后每周一都会更新,欢迎大家持续关注。
- 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.17 更新超轻量ppocr_mobile系列和通用ppocr_server系列中英文ocr模型媲美商业效果。[模型下载](#模型下载)
@ -97,8 +97,8 @@ PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库助力
- [效果展示](#效果展示)
- FAQ
- [【精选】OCR精选10个问题](./doc/doc_ch/FAQ.md)
- [【理论篇】OCR通用25个问题](./doc/doc_ch/FAQ.md)
- [【实战篇】PaddleOCR实战69个问题](./doc/doc_ch/FAQ.md)
- [【理论篇】OCR通用27个问题](./doc/doc_ch/FAQ.md)
- [【实战篇】PaddleOCR实战72个问题](./doc/doc_ch/FAQ.md)
- [技术交流群](#欢迎加入PaddleOCR技术交流群)
- [参考文献](./doc/doc_ch/reference.md)
- [许可证书](#许可证书)

View File

@ -9,48 +9,48 @@
## PaddleOCR常见问题汇总(持续更新)
* [近期更新2020.11.09](#近期更新)
* [近期更新2020.11.16](#近期更新)
* [【精选】OCR精选10个问题](#OCR精选10个问题)
* [【理论篇】OCR通用25个问题](#OCR通用问题)
* [基础知识6题](#基础知识)
* [【理论篇】OCR通用27个问题](#OCR通用问题)
* [基础知识7题](#基础知识)
* [数据集5题](#数据集)
* [模型训练调优6题](#模型训练调优)
* [模型训练调优7题](#模型训练调优)
* [预测部署8题](#预测部署)
* [【实战篇】PaddleOCR实战69个问题](#PaddleOCR实战问题)
* [【实战篇】PaddleOCR实战72个问题](#PaddleOCR实战问题)
* [使用咨询19题](#使用咨询)
* [数据集10题](#数据集)
* [模型训练调优21题](#模型训练调优)
* [预测部署19题](#预测部署)
* [预测部署21题](#预测部署)
<a name="近期更新"></a>
## 近期更新2020.11.09
## 近期更新2020.11.16
#### Q2.1.6 预处理部分图片的长和宽为什么要处理成32的倍数
**A**以检测中的resnet骨干网络为例图像输入网络之后需要经过5次2倍降采样共32倍因此建议输入的图像尺寸为32的倍数
#### Q3.4.20文档场景中使用DB模型会出现整行漏检的情况应该怎么解决
**A**可以在预测时调小 det_db_box_thresh 阈值默认为0.5, 可调小至0.3观察效果
#### 3.1.19:训练的时候报错`reader raised an exception`,但是具体不知道是啥问题?
#### Q2.1.7:类似泰语这样的小语种,部分字会占用两个字符甚至三个字符,请问如何制作字典。
**A**这个一般是因为标注文件格式有问题或者是标注文件中的图片路径有问题导致的,在[tools/train.py](../../tools/train.py)文件中有一个`test_reader`的函数,基于这个去检查一下数据的格式以及标注,确认没问题之后再进行模型训练
**A**处理字符的时候,把多字符的当作一个字就行,字典中每行是一个字
#### Q3.3.21: 使用合成数据精调小模型后效果可以但是还没开源的小infer模型效果好这是为什么呢
#### Q2.3.7识别训练时训练集精度已经到达90了但验证集精度一直在70涨不上去怎么办
**A**
**A**训练集精度90测试集70多的话应该是过拟合了有两个可尝试的方法
1要保证使用的配置文件和pretrain weights是对应的
1加入更多的增广方式或者调大增广prob的[概率](https://github.com/PaddlePaddle/PaddleOCR/blob/a501603d54ff5513fc4fc760319472e59da25424/ppocr/data/rec/img_tools.py#L307)默认为0.4。
2在微调时一般都需要真实数据如果使用合成数据效果反而可能会有下降PaddleOCR中放出的识别inference模型也是基于预训练模型在真实数据上微调得到的效果提升比较明显
3在训练的时候文本长度超过25的训练图像都会被丢弃因此需要看下真正参与训练的图像有多少太少的话也容易过拟合。
#### Q3.4.18:对于一些尺寸较大的文档类图片,在检测时会有较多的漏检,怎么避免这种漏检的问题呢?
**A**PaddleOCR中在图像最长边大于960时将图像等比例缩放为长边960的图像再进行预测对于这种图像可以通过修改det_max_side_len增大检测的最长边[tools/infer/utility.py#L45](../../tools/infer/utility.py#L45)
2调大系统的[l2 dcay值](https://github.com/PaddlePaddle/PaddleOCR/blob/a501603d54ff5513fc4fc760319472e59da25424/configs/rec/ch_ppocr_v1.1/rec_chinese_lite_train_v1.1.yml#L47)
#### Q3.4.19在使用训练好的识别模型进行预测的时候发现有很多重复的字这个怎么解决呢
#### Q3.4.21自己训练的det模型在同一张图片上inference模型与eval模型结果差别很大为什么
**A**:可以看下训练的尺度和预测的尺度是否相同,如果训练的尺度为`[3, 32, 320]`,预测的尺度为`[3, 64, 640]`,则会有比较多的重复识别现象。
**A**这是由于图片预处理不同造成的。如果训练的det模型图片输入并不是默认的shape[600, 600]
eval的程序中图片预处理方式与train时一致由xxx_reader.yml中的test_image_shape参数决定缩放大小
但predict_eval.py中的图片预处理方式由程序里的preprocess_params决定最好不要传入max_side_len而是传入和训练时一样大小的test_image_shape。
#### 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)可以解决问题。
<a name="OCR精选10个问题"></a>
@ -166,6 +166,9 @@
#### Q2.1.6 预处理部分图片的长和宽为什么要处理成32的倍数
**A**以检测中的resnet骨干网络为例图像输入网络之后需要经过5次2倍降采样共32倍因此建议输入的图像尺寸为32的倍数。
#### Q2.1.7:类似泰语这样的小语种,部分字会占用两个字符甚至三个字符,请问如何制作字典。
**A**:处理字符的时候,把多字符的当作一个字就行,字典中每行是一个字。
### 数据集
@ -223,6 +226,14 @@
**A**:在中文识别模型训练时,并不是采用直接将训练样本缩放到[3,32,320]进行训练而是先等比例缩放图像保证图像高度为32宽度不足320的部分补0宽高比大于10的样本直接丢弃。预测时如果是单张图像预测则按上述操作直接对图像缩放不做宽度320的限制。如果是多张图预测则采用batch方式预测每个batch的宽度动态变换采用这个batch中最长宽度。
#### Q2.3.7识别训练时训练集精度已经到达90了但验证集精度一直在70涨不上去怎么办
**A**训练集精度90测试集70多的话应该是过拟合了有两个可尝试的方法
1加入更多的增广方式或者调大增广prob的[概率](https://github.com/PaddlePaddle/PaddleOCR/blob/a501603d54ff5513fc4fc760319472e59da25424/ppocr/data/rec/img_tools.py#L307)默认为0.4。
2调大系统的[l2 dcay值](https://github.com/PaddlePaddle/PaddleOCR/blob/a501603d54ff5513fc4fc760319472e59da25424/configs/rec/ch_ppocr_v1.1/rec_chinese_lite_train_v1.1.yml#L47)
### 预测部署
#### Q2.4.1:请问对于图片中的密集文字,有什么好的处理办法吗?
@ -266,6 +277,7 @@
**A**:表格目前学术界比较成熟的解决方案不多 ,可以尝试下分割的论文方案。
<a name="PaddleOCR实战问题"></a>
## 【实战篇】PaddleOCR实战问题
@ -349,7 +361,7 @@
|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|
#### 3.1.18:如何加入自己的检测算法?
#### Q3.1.18:如何加入自己的检测算法?
**A**1. 在ppocr/modeling对应目录下分别选择backbonehead。如果没有可用的可以新建文件并添加
2. 在ppocr/data下选择对应的数据处理处理方式如果没有可用的可以新建文件并添加
3. 在ppocr/losses下新建文件并编写loss
@ -357,7 +369,7 @@
5. 将上面四个步骤里新添加的类或函数参照yml文件写到配置中
#### 3.1.19:训练的时候报错`reader raised an exception`,但是具体不知道是啥问题?
#### Q3.1.19:训练的时候报错`reader raised an exception`,但是具体不知道是啥问题?
**A**:这个一般是因为标注文件格式有问题或者是标注文件中的图片路径有问题导致的,在[tools/train.py](../../tools/train.py)文件中有一个`test_reader`的函数,基于这个去检查一下数据的格式以及标注,确认没问题之后再进行模型训练。
@ -623,7 +635,20 @@ return paddle.reader.multiprocess_reader(readers, False, queue_size=320)
**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]`,则会有比较多的重复识别现象。
#### Q3.4.20文档场景中使用DB模型会出现整行漏检的情况应该怎么解决
**A**:可以在预测时调小 det_db_box_thresh 阈值默认为0.5, 可调小至0.3观察效果。
#### Q3.4.21自己训练的det模型在同一张图片上inference模型与eval模型结果差别很大为什么
**A**这是由于图片预处理不同造成的。如果训练的det模型图片输入并不是默认的shape[600, 600]eval的程序中图片预处理方式与train时一致
由xxx_reader.yml中的test_image_shape参数决定缩放大小但predict_eval.py中的图片预处理方式由程序里的preprocess_params决定
最好不要传入max_side_len而是传入和训练时一样大小的test_image_shape。
#### 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)可以解决问题。