diff --git a/README_ch.md b/README_ch.md index 954ea33dfd697133024771aa8e6ddd883e720a1e..eafce6c2eecee4f65d4c8cfbfd9b0558deed3d9e 100755 --- a/README_ch.md +++ b/README_ch.md @@ -8,8 +8,8 @@ PaddleOCR同时支持动态图与静态图两种编程范式 - 静态图版本:develop分支 **近期更新** -- **【预告】 PaddleOCR研发团队对最新发版内容技术深入解读,4月13日晚上19:00,[直播地址](https://live.bilibili.com/21689802)** -- 2021.4.12 [FAQ](./doc/doc_ch/FAQ.md)新增5个高频问题,总数203个,每周一都会更新,欢迎大家持续关注。 +- 2021.4.20 [FAQ](./doc/doc_ch/FAQ.md)新增5个高频问题,总数208个,每周一都会更新,欢迎大家持续关注。 +- PaddleOCR研发团队对最新发版内容技术深入解读,4月13日晚上19:00,[直播地址](https://live.bilibili.com/21689802)。 - 2021.4.8 release 2.1版本,新增AAAI 2021论文[端到端识别算法PGNet](./doc/doc_ch/pgnet.md)开源,[多语言模型](./doc/doc_ch/multi_languages.md)支持种类增加到80+。 - 2021.2.8 正式发布PaddleOCRv2.0(branch release/2.0)并设置为推荐用户使用的默认分支. 发布的详细内容,请参考: https://github.com/PaddlePaddle/PaddleOCR/releases/tag/v2.0.0 - 2021.1.26,28,29 PaddleOCR官方研发团队带来技术深入解读三日直播课,1月26日、28日、29日晚上19:30,[直播地址](https://live.bilibili.com/21689802) diff --git a/doc/doc_ch/FAQ.md b/doc/doc_ch/FAQ.md index 77874f8c8dfa0813c9fc4c7a65861ccb8a0531da..6f008d97faacc80cdf28dc6b47fe3a403a98425e 100755 --- a/doc/doc_ch/FAQ.md +++ b/doc/doc_ch/FAQ.md @@ -9,34 +9,41 @@ ## PaddleOCR常见问题汇总(持续更新) -* [近期更新(2021.4.12)](#近期更新) +* [近期更新(2021.4.20)](#近期更新) * [【精选】OCR精选10个问题](#OCR精选10个问题) * [【理论篇】OCR通用43个问题](#OCR通用问题) * [基础知识13题](#基础知识) * [数据集9题](#数据集2) * [模型训练调优21题](#模型训练调优2) * [【实战篇】PaddleOCR实战150个问题](#PaddleOCR实战问题) - * [使用咨询57题](#使用咨询) + * [使用咨询61题](#使用咨询) * [数据集18题](#数据集3) * [模型训练调优34题](#模型训练调优3) - * [预测部署41题](#预测部署3) + * [预测部署42题](#预测部署3) -## 近期更新(2021.4.12) -#### Q2.2.9: 端到端算法PGNet使用的是什么类型的数据集呢? -**A**: PGNet目前可以使用四点标注数据集,也可以使用多点标注数据集(十四点),多点标注训练的效果要比四点的好,一种可以尝试的策略是先在四点数据集上训练,之后用多点数据集在此基础上继续训练。 +## 近期更新(2021.4.20) -#### Q2.3.21: 端到端算法PGNet是否支持中文识别,速度会很慢嘛? -**A**:目前开源的PGNet算法模型主要是用于检测英文数字,对于中文的识别需要自己训练,大家可以使用开源的端到端中文数据集,而对于复杂文本(弯曲文本)的识别,也可以自己构造一批数据集针对进行训练,对于推理速度,可以先将模型转换为inference再进行预测,速度应该会相当可观。 +#### Q3.1.58: 使用PGNet进行eval报错? +**A**: 需要注意,我们目前在release/2.1更新了评测代码,目前支持A,B两种评测模式: +* A模式:该模式主要为了方便用户使用,与训练集一样的标注文件就可以正常进行eval操作, 代码中默认是A模式。 +* B模式:该模式主要为了保证我们的评测代码可以和Total Text官方的评测方式对齐,该模式下直接加载官方提供的mat文件进行eval。 -#### Q3.1.57: 端到端算法PGNet提供了两种后处理方式,两者之间有什么区别呢? -**A**: 两种后处理的区别主要在于速度的推理,config中PostProcess有fast/slow两种模式,slow模式的后处理速度慢,精度相对较高,fast模式的后处理速度快,精度也在可接受的范围之内。建议使用速度快的后处理方式。 +#### Q3.1.59: 使用预训练模型进行预测,对于特定字符识别识别效果较差,怎么解决? +**A**: 由于我们所提供的识别模型是基于通用大规模数据集进行训练的,部分字符可能在训练集中包含较少,因此您可以构建特定场景的数据集,基于我们提供的预训练模型进行微调。建议用于微调的数据集中,每个字符出现的样本数量不低于300,但同时需要注意不同字符的数量均衡。具体可以参考:[微调](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.1/doc/doc_ch/recognition.md#2-%E5%90%AF%E5%8A%A8%E8%AE%AD%E7%BB%83) -#### Q3.3.34: 表格识别中,如何提高单字的识别结果? -**A**: 首先需要确认一下检测模型有没有有效的检测出单个字符,如果没有的话,需要在训练集当中添加相应的单字数据集。 +#### Q3.1.60: PGNet有中文预训练模型吗? +**A**: 目前我们尚未提供针对中文的预训练模型,如有需要,可以尝试自己训练。具体需要修改的地方有: + 1. [config文件中](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.1/configs/e2e/e2e_r50_vd_pg.yml#L23-L24),字典文件路径及语种设置; + 1. [网络结构中](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.1/ppocr/modeling/heads/e2e_pg_head.py#L181),`out_channels`修改为字典中的字符数目+1(考虑到空格); + 1. [loss中](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.1/ppocr/losses/e2e_pg_loss.py#L93),修改`37`为字典中的字符数目+1(考虑到空格); -#### Q3.4.41: PaddleOCR持tensorrt推理吗? -**A**: 支持的,需要在编译的时候将CMakeLists.txt文件当中,将相关代码`option(WITH_TENSORRT "Compile demo with TensorRT." OFF)`的OFF改成ON。关于服务器端部署的更多设置,可以参考[飞桨官网](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/05_inference_deployment/inference/native_infer.html) +#### Q3.1.61: 用于PGNet的训练集,文本框的标注有要求吗? +**A**: PGNet支持多点标注,比如4点、8点、14点等。但需要注意的是,标注点尽可能分布均匀(相邻标注点间隔距离均匀一致),且label文件中的标注点需要从标注框的左上角开始,按标注点顺时针顺序依次编写,以上问题都可能对训练精度造成影响。 +我们提供的,基于Total Text数据集的PGNet预训练模型使用了14点标注方式。 + +#### Q3.4.42: 在使用PaddleLite进行预测部署时,启动预测后卡死/手机死机? +**A**: 请检查模型转换时所用PaddleLite的版本,和预测库的版本是否对齐。即PaddleLite版本为2.8,则预测库版本也要为2.8。 ## 【精选】OCR精选10个问题 @@ -613,6 +620,24 @@ repo中config.yml文件的前后处理参数和inference预测默认的超参数 #### Q3.1.57: 端到端算法PGNet提供了两种后处理方式,两者之间有什么区别呢? **A**: 两种后处理的区别主要在于速度的推理,config中PostProcess有fast/slow两种模式,slow模式的后处理速度慢,精度相对较高,fast模式的后处理速度快,精度也在可接受的范围之内。建议使用速度快的后处理方式。 +#### Q3.1.58: 使用PGNet进行eval报错? +**A**: 需要注意,我们目前在release/2.1更新了评测代码,目前支持A,B两种评测模式: +* A模式:该模式主要为了方便用户使用,与训练集一样的标注文件就可以正常进行eval操作, 代码中默认是A模式。 +* B模式:该模式主要为了保证我们的评测代码可以和Total Text官方的评测方式对齐,该模式下直接加载官方提供的mat文件进行eval。 + +#### Q3.1.59: 使用预训练模型进行预测,对于特定字符识别识别效果较差,怎么解决? +**A**: 由于我们所提供的识别模型是基于通用大规模数据集进行训练的,部分字符可能在训练集中包含较少,因此您可以构建特定场景的数据集,基于我们提供的预训练模型进行微调。建议用于微调的数据集中,每个字符出现的样本数量不低于300,但同时需要注意不同字符的数量均衡。具体可以参考:[微调](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.1/doc/doc_ch/recognition.md#2-%E5%90%AF%E5%8A%A8%E8%AE%AD%E7%BB%83)。 + +#### Q3.1.60: PGNet有中文预训练模型吗? +**A**: 目前我们尚未提供针对中文的预训练模型,如有需要,可以尝试自己训练。具体需要修改的地方有: + 1. [config文件中](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.1/configs/e2e/e2e_r50_vd_pg.yml#L23-L24),字典文件路径及语种设置; + 1. [网络结构中](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.1/ppocr/modeling/heads/e2e_pg_head.py#L181),`out_channels`修改为字典中的字符数目+1(考虑到空格); + 1. [loss中](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.1/ppocr/losses/e2e_pg_loss.py#L93),修改`37`为字典中的字符数目+1(考虑到空格); + +#### Q3.1.61: 用于PGNet的训练集,文本框的标注有要求吗? +**A**: PGNet支持多点标注,比如4点、8点、14点等。但需要注意的是,标注点尽可能分布均匀(相邻标注点间隔距离均匀一致),且label文件中的标注点需要从标注框的左上角开始,按标注点顺时针顺序依次编写,以上问题都可能对训练精度造成影响。 +我们提供的,基于Total Text数据集的PGNet预训练模型使用了14点标注方式。 + @@ -1086,3 +1111,6 @@ nvidia-smi --lock-gpu-clocks=1590 -i 0 #### Q3.4.41: PaddleOCR支持tensorrt推理吗? **A**: 支持的,需要在编译的时候将CMakeLists.txt文件当中,将相关代码`option(WITH_TENSORRT "Compile demo with TensorRT." OFF)`的OFF改成ON。关于服务器端部署的更多设置,可以参考[飞桨官网](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/05_inference_deployment/inference/native_infer.html) + +#### Q3.4.42: 在使用PaddleLite进行预测部署时,启动预测后卡死/手机死机? +**A**: 请检查模型转换时所用PaddleLite的版本,和预测库的版本是否对齐。即PaddleLite版本为2.8,则预测库版本也要为2.8。