improve the reading experience of some documents (#13562)
parent
b6211b936b
commit
28c7be63ec
|
@ -2,6 +2,7 @@
|
|||
comments: true
|
||||
hide:
|
||||
- navigation
|
||||
- toc
|
||||
---
|
||||
|
||||
1. **Prediction error: got an unexpected keyword argument 'gradient_clip'**
|
||||
|
|
85
docs/FAQ.md
85
docs/FAQ.md
|
@ -2,6 +2,7 @@
|
|||
comments: true
|
||||
hide:
|
||||
- navigation
|
||||
- toc
|
||||
---
|
||||
|
||||
> 恭喜你发现宝藏!
|
||||
|
@ -30,11 +31,11 @@ OCR领域大佬众多,本文档回答主要依赖有限的项目实践,难
|
|||
|
||||
#### Q: PaddleOCR提供的文本识别算法包括哪些?
|
||||
|
||||
A: PaddleOCR主要提供五种文本识别算法,包括CRNN\StarNet\RARE\Rosetta和SRN, 其中CRNN\StarNet和Rosetta是基于ctc的文字识别算法,RARE是基于attention的文字识别算法;SRN为百度自研的文本识别算法,引入了语义信息,显著提升了准确率。 详情可参照如下页面: 文本识别算法
|
||||
**A**:PaddleOCR主要提供五种文本识别算法,包括CRNN\StarNet\RARE\Rosetta和SRN, 其中CRNN\StarNet和Rosetta是基于ctc的文字识别算法,RARE是基于attention的文字识别算法;SRN为百度自研的文本识别算法,引入了语义信息,显著提升了准确率。 详情可参照如下页面: 文本识别算法
|
||||
|
||||
#### Q: 文本识别方法CRNN关键技术有哪些?
|
||||
|
||||
A: CRNN 关键技术包括三部分。(1)CNN提取图像卷积特征。(2)深层双向LSTM网络,在卷积特征的基础上继续提取文字序列特征。(3)Connectionist Temporal Classification(CTC),解决训练时字符无法对齐的问题。
|
||||
**A**:CRNN 关键技术包括三部分。(1)CNN提取图像卷积特征。(2)深层双向LSTM网络,在卷积特征的基础上继续提取文字序列特征。(3)Connectionist Temporal Classification(CTC),解决训练时字符无法对齐的问题。
|
||||
|
||||
#### Q: 对于中文行文本识别,CTC和Attention哪种更优?
|
||||
|
||||
|
@ -54,7 +55,7 @@ A: CRNN 关键技术包括三部分。(1)CNN提取图像卷积特征。(2
|
|||
|
||||
#### Q: 请问端到端的pgnet相比于DB+CRNN在准确率上有优势吗?或者是pgnet最擅长的场景是什么场景呢?
|
||||
|
||||
A: pgnet是端到端算法,检测识别一步到位,不用分开训练2个模型,也支持弯曲文本的识别,但是在中文上的效果还没有充分验证;db+crnn的验证更充分,应用相对成熟,常规非弯曲的文本都能解的不错。
|
||||
**A**:pgnet是端到端算法,检测识别一步到位,不用分开训练2个模型,也支持弯曲文本的识别,但是在中文上的效果还没有充分验证;db+crnn的验证更充分,应用相对成熟,常规非弯曲的文本都能解的不错。
|
||||
|
||||
#### Q: 目前OCR普遍是二阶段,端到端的方案在业界落地情况如何?
|
||||
|
||||
|
@ -62,11 +63,11 @@ A: pgnet是端到端算法,检测识别一步到位,不用分开训练2个
|
|||
|
||||
#### Q: 二阶段的端到端的场景文本识别方法的不足有哪些?
|
||||
|
||||
A: 这类方法一般需要设计针对ROI提取特征的方法,而ROI操作一般比较耗时。
|
||||
**A**:这类方法一般需要设计针对ROI提取特征的方法,而ROI操作一般比较耗时。
|
||||
|
||||
#### Q: AAAI 2021最新的端到端场景文本识别PGNet算法有什么特点?
|
||||
|
||||
A: PGNet不需要字符级别的标注,NMS操作以及ROI操作。同时提出预测文本行内的阅读顺序模块和基于图的修正模块来提升文本识别效果。该算法是百度自研,近期会在PaddleOCR开源。
|
||||
**A**:PGNet不需要字符级别的标注,NMS操作以及ROI操作。同时提出预测文本行内的阅读顺序模块和基于图的修正模块来提升文本识别效果。该算法是百度自研,近期会在PaddleOCR开源。
|
||||
|
||||
### 1.4 评估方法
|
||||
|
||||
|
@ -94,7 +95,7 @@ A: PGNet不需要字符级别的标注,NMS操作以及ROI操作。同时提出
|
|||
|
||||
#### Q:请问对于图片中的密集文字,有什么好的处理办法吗?
|
||||
|
||||
A:可以先试用预训练模型测试一下,例如DB+CRNN,判断下密集文字图片中是检测还是识别的问题,然后针对性的改善。还有一种是如果图象中密集文字较小,可以尝试增大图像分辨率,对图像进行一定范围内的拉伸,将文字稀疏化,提高识别效果。
|
||||
**A**:可以先试用预训练模型测试一下,例如DB+CRNN,判断下密集文字图片中是检测还是识别的问题,然后针对性的改善。还有一种是如果图象中密集文字较小,可以尝试增大图像分辨率,对图像进行一定范围内的拉伸,将文字稀疏化,提高识别效果。
|
||||
|
||||
#### Q: 文本行较紧密的情况下如何准确检测?
|
||||
|
||||
|
@ -102,19 +103,19 @@ A:可以先试用预训练模型测试一下,例如DB+CRNN,判断下密集
|
|||
|
||||
#### Q:对于一些在识别时稍微模糊的文本,有没有一些图像增强的方式?
|
||||
|
||||
A:在人类肉眼可以识别的前提下,可以考虑图像处理中的均值滤波、中值滤波或者高斯滤波等模糊算子尝试。也可以尝试从数据扩增扰动来强化模型鲁棒性,另外新的思路有对抗性训练和超分SR思路,可以尝试借鉴。但目前业界尚无普遍认可的最优方案,建议优先在数据采集阶段增加一些限制提升图片质量。
|
||||
**A**:在人类肉眼可以识别的前提下,可以考虑图像处理中的均值滤波、中值滤波或者高斯滤波等模糊算子尝试。也可以尝试从数据扩增扰动来强化模型鲁棒性,另外新的思路有对抗性训练和超分SR思路,可以尝试借鉴。但目前业界尚无普遍认可的最优方案,建议优先在数据采集阶段增加一些限制提升图片质量。
|
||||
|
||||
#### Q:低像素文字或者字号比较小的文字有什么超分辨率方法吗
|
||||
|
||||
A:超分辨率方法分为传统方法和基于深度学习的方法。基于深度学习的方法中,比较经典的有SRCNN,另外CVPR2020也有一篇超分辨率的工作可以参考文章:Unpaired Image Super-Resolution using Pseudo-Supervision,但是没有充分的实践验证过,需要看实际场景下的效果。
|
||||
**A**:超分辨率方法分为传统方法和基于深度学习的方法。基于深度学习的方法中,比较经典的有SRCNN,另外CVPR2020也有一篇超分辨率的工作可以参考文章:Unpaired Image Super-Resolution using Pseudo-Supervision,但是没有充分的实践验证过,需要看实际场景下的效果。
|
||||
|
||||
#### Q:对于一些尺寸较大的文档类图片,在检测时会有较多的漏检,怎么避免这种漏检的问题呢?
|
||||
|
||||
A:PaddleOCR中在图像最长边大于960时,将图像等比例缩放为长边960的图像再进行预测,对于这种图像,可以通过修改det_limit_side_len,增大检测的最长边:tools/infer/utility.py#L42
|
||||
**A**:PaddleOCR中在图像最长边大于960时,将图像等比例缩放为长边960的图像再进行预测,对于这种图像,可以通过修改det_limit_side_len,增大检测的最长边:tools/infer/utility.py#L42
|
||||
|
||||
#### Q:文档场景中,使用DB模型会出现整行漏检的情况应该怎么解决?
|
||||
|
||||
A:可以在预测时调小 det_db_box_thresh 阈值,默认为0.5, 可调小至0.3观察效果。
|
||||
**A**:可以在预测时调小 det_db_box_thresh 阈值,默认为0.5, 可调小至0.3观察效果。
|
||||
|
||||
#### Q: 弯曲文本(如略微形变的文档图像)漏检问题
|
||||
|
||||
|
@ -138,19 +139,19 @@ A:可以在预测时调小 det_db_box_thresh 阈值,默认为0.5, 可调小
|
|||
|
||||
#### Q: 如何识别招牌或者广告图中的艺术字?
|
||||
|
||||
A: 招牌或者广告图中的艺术字是文本识别一个非常有挑战性的难题,因为艺术字中的单字和印刷体相比,变化非常大。如果需要识别的艺术字是在一个词典列表内,可以将改每个词典认为是一个待识别图像模板,通过通用图像检索识别系统解决识别问题。可以尝试使用PaddleClas的图像识别系统。
|
||||
**A**: 招牌或者广告图中的艺术字是文本识别一个非常有挑战性的难题,因为艺术字中的单字和印刷体相比,变化非常大。如果需要识别的艺术字是在一个词典列表内,可以将改每个词典认为是一个待识别图像模板,通过通用图像检索识别系统解决识别问题。可以尝试使用PaddleClas的图像识别系统。
|
||||
|
||||
#### Q: 印章如何识别
|
||||
|
||||
A:1. 使用带tps的识别网络或abcnet,2.使用极坐标变换将图片拉平之后使用crnn
|
||||
**A**:1. 使用带tps的识别网络或abcnet,2.使用极坐标变换将图片拉平之后使用crnn
|
||||
|
||||
#### Q: 使用预训练模型进行预测,对于特定字符识别识别效果较差,怎么解决?
|
||||
|
||||
A: 由于我们所提供的识别模型是基于通用大规模数据集进行训练的,部分字符可能在训练集中包含较少,因此您可以构建特定场景的数据集,基于我们提供的预训练模型进行微调。建议用于微调的数据集中,每个字符出现的样本数量不低于300,但同时需要注意不同字符的数量均衡。具体可以参考:微调。
|
||||
**A**: 由于我们所提供的识别模型是基于通用大规模数据集进行训练的,部分字符可能在训练集中包含较少,因此您可以构建特定场景的数据集,基于我们提供的预训练模型进行微调。建议用于微调的数据集中,每个字符出现的样本数量不低于300,但同时需要注意不同字符的数量均衡。具体可以参考:微调。
|
||||
|
||||
#### Q: 在使用训练好的识别模型进行预测的时候,发现有很多重复的字,这个怎么解决呢?
|
||||
|
||||
A:可以看下训练的尺度和预测的尺度是否相同,如果训练的尺度为[3, 32, 320],预测的尺度为[3, 64, 640],则会有比较多的重复识别现象。
|
||||
**A**:可以看下训练的尺度和预测的尺度是否相同,如果训练的尺度为[3, 32, 320],预测的尺度为[3, 64, 640],则会有比较多的重复识别现象。
|
||||
|
||||
#### Q: 图像正常识别出来的文字是OK的,旋转90度后识别出来的结果就比较差,有什么方法可以优化?
|
||||
|
||||
|
@ -219,22 +220,22 @@ A:可以看下训练的尺度和预测的尺度是否相同,如果训练的
|
|||
|
||||
#### Q: 增大batch_size模型训练速度没有明显提升
|
||||
|
||||
A:如果batch_size打得太大,加速效果不明显的话,可以试一下增大初始化内存的值,运行代码前设置环境变量:
|
||||
**A**:如果batch_size打得太大,加速效果不明显的话,可以试一下增大初始化内存的值,运行代码前设置环境变量:
|
||||
export FLAGS_initial_cpu_memory_in_mb=2000 # 设置初始化内存约2G左右
|
||||
|
||||
#### Q: 预测时提示图像过大,显存、内存溢出了,应该如何处理?
|
||||
|
||||
A: 可以按照这个PR的修改来缓解显存、内存占用 #2230
|
||||
**A**:可以按照这个PR的修改来缓解显存、内存占用 #2230
|
||||
|
||||
#### Q: 识别训练时,训练集精度已经到达90了,但验证集精度一直在70,涨不上去怎么办?
|
||||
|
||||
A:训练集精度90,测试集70多的话,应该是过拟合了,有两个可尝试的方法:(1)加入更多的增广方式或者调大增广prob的概率,默认为0.4。(2)调大系统的l2 decay值
|
||||
**A**:训练集精度90,测试集70多的话,应该是过拟合了,有两个可尝试的方法:(1)加入更多的增广方式或者调大增广prob的概率,默认为0.4。(2)调大系统的l2 decay值
|
||||
|
||||
### 1.7 补充资料
|
||||
|
||||
#### Q: 对于小白如何快速入门中文OCR项目实践?
|
||||
|
||||
A:建议可以先了解OCR方向的基础知识,大概了解基础的检测和识别模型算法。然后在Github上可以查看OCR方向相关的repo。目前来看,从内容的完备性来看,PaddleOCR的中英文双语教程文档是有明显优势的,在数据集、模型训练、预测部署文档详实,可以快速入手。而且还有微信用户群答疑,非常适合学习实践。项目地址:PaddleOCR AI 快车道课程:<https://aistudio.baidu.com/aistudio/course/introduce/1519>
|
||||
**A**:建议可以先了解OCR方向的基础知识,大概了解基础的检测和识别模型算法。然后在Github上可以查看OCR方向相关的repo。目前来看,从内容的完备性来看,PaddleOCR的中英文双语教程文档是有明显优势的,在数据集、模型训练、预测部署文档详实,可以快速入手。而且还有微信用户群答疑,非常适合学习实践。项目地址:PaddleOCR AI 快车道课程:<https://aistudio.baidu.com/aistudio/course/introduce/1519>
|
||||
|
||||
## 2. PaddleOCR实战问题
|
||||
|
||||
|
@ -262,15 +263,15 @@ A:建议可以先了解OCR方向的基础知识,大概了解基础的检测
|
|||
|
||||
#### Q:OSError: [WinError 126] 找不到指定的模块。mac pro python 3.4 shapely import 问题
|
||||
|
||||
A:这个问题是因为shapely库安装有误,可以参考 #212 这个issue重新安装一下
|
||||
**A**:这个问题是因为shapely库安装有误,可以参考 #212 这个issue重新安装一下
|
||||
|
||||
#### Q:PaddlePaddle怎么指定GPU运行 os.environ["CUDA_VISIBLE_DEVICES"]这种不生效
|
||||
|
||||
A:通过设置 export CUDA_VISIBLE_DEVICES='0'环境变量
|
||||
**A**:通过设置 export CUDA_VISIBLE_DEVICES='0'环境变量
|
||||
|
||||
#### Q:PaddleOCR是否支持在Windows或Mac系统上运行?
|
||||
|
||||
A:PaddleOCR已完成Windows和Mac系统适配,运行时注意两点:
|
||||
**A**:PaddleOCR已完成Windows和Mac系统适配,运行时注意两点:
|
||||
(1)在快速安装时,如果不想安装docker,可跳过第一步,直接从第二步安装paddle开始。
|
||||
(2)inference模型下载时,如果没有安装wget,可直接点击模型链接或将链接地址复制到浏览器进行下载,并解压放置到相应目录。
|
||||
|
||||
|
@ -297,11 +298,11 @@ A:PaddleOCR已完成Windows和Mac系统适配,运行时注意两点:
|
|||
|
||||
#### Q:训练文字识别模型,真实数据有30w,合成数据有500w,需要做样本均衡吗?
|
||||
|
||||
A:需要,一般需要保证一个batch中真实数据样本和合成数据样本的比例是5:1~10:1左右效果比较理想。如果合成数据过大,会过拟合到合成数据,预测效果往往不佳。还有一种启发性的尝试是可以先用大量合成数据训练一个base模型,然后再用真实数据微调,在一些简单场景效果也是会有提升的。
|
||||
**A**:需要,一般需要保证一个batch中真实数据样本和合成数据样本的比例是5:1~10:1左右效果比较理想。如果合成数据过大,会过拟合到合成数据,预测效果往往不佳。还有一种启发性的尝试是可以先用大量合成数据训练一个base模型,然后再用真实数据微调,在一些简单场景效果也是会有提升的。
|
||||
|
||||
#### Q: 当训练数据量少时,如何获取更多的数据?
|
||||
|
||||
A:当训练数据量少时,可以尝试以下三种方式获取更多的数据:(1)人工采集更多的训练数据,最直接也是最有效的方式。(2)基于PIL和opencv基本图像处理或者变换。例如PIL中ImageFont, Image, ImageDraw三个模块将文字写到背景中,opencv的旋转仿射变换,高斯滤波等。(3)利用数据生成算法合成数据,例如pix2pix等算法。
|
||||
**A**:当训练数据量少时,可以尝试以下三种方式获取更多的数据:(1)人工采集更多的训练数据,最直接也是最有效的方式。(2)基于PIL和opencv基本图像处理或者变换。例如PIL中ImageFont, Image, ImageDraw三个模块将文字写到背景中,opencv的旋转仿射变换,高斯滤波等。(3)利用数据生成算法合成数据,例如pix2pix等算法。
|
||||
|
||||
### 2.4 数据标注与生成
|
||||
|
||||
|
@ -345,7 +346,7 @@ StyleText的用途主要是:提取style_image中的字体、背景等style信
|
|||
|
||||
#### Q:如何更换文本检测/识别的backbone?
|
||||
|
||||
A:无论是文字检测,还是文字识别,骨干网络的选择是预测效果和预测效率的权衡。一般,选择更大规模的骨干网络,例如ResNet101_vd,则检测或识别更准确,但预测耗时相应也会增加。而选择更小规模的骨干网络,例如MobileNetV3_small_x0_35,则预测更快,但检测或识别的准确率会大打折扣。幸运的是不同骨干网络的检测或识别效果与在ImageNet数据集图像1000分类任务效果正相关。飞桨图像分类套件PaddleClas汇总了ResNet_vd、Res2Net、HRNet、MobileNetV3、GhostNet等23种系列的分类网络结构,在上述图像分类任务的top1识别准确率,GPU(V100和T4)和CPU(骁龙855)的预测耗时以及相应的117个预训练模型下载地址。
|
||||
**A**:无论是文字检测,还是文字识别,骨干网络的选择是预测效果和预测效率的权衡。一般,选择更大规模的骨干网络,例如ResNet101_vd,则检测或识别更准确,但预测耗时相应也会增加。而选择更小规模的骨干网络,例如MobileNetV3_small_x0_35,则预测更快,但检测或识别的准确率会大打折扣。幸运的是不同骨干网络的检测或识别效果与在ImageNet数据集图像1000分类任务效果正相关。飞桨图像分类套件PaddleClas汇总了ResNet_vd、Res2Net、HRNet、MobileNetV3、GhostNet等23种系列的分类网络结构,在上述图像分类任务的top1识别准确率,GPU(V100和T4)和CPU(骁龙855)的预测耗时以及相应的117个预训练模型下载地址。
|
||||
|
||||
(1)文字检测骨干网络的替换,主要是确定类似于ResNet的4个stages,以方便集成后续的类似FPN的检测头。此外,对于文字检测问题,使用ImageNet训练的分类预训练模型,可以加速收敛和效果提升。
|
||||
|
||||
|
@ -357,11 +358,11 @@ A:无论是文字检测,还是文字识别,骨干网络的选择是预测
|
|||
|
||||
#### Q: 下载的识别模型解压后缺失文件,没有期望的inference.pdiparams, inference.pdmodel等文件
|
||||
|
||||
A:用解压软件解压可能会出现这个问题,建议二次解压下或者用命令行解压tar xf
|
||||
**A**:用解压软件解压可能会出现这个问题,建议二次解压下或者用命令行解压tar xf
|
||||
|
||||
#### Q: 为什么在checkpoints中load下载的预训练模型会报错?
|
||||
|
||||
A: 这里有两个不同的概念:
|
||||
**A**:这里有两个不同的概念:
|
||||
|
||||
pretrained_model:指预训练模型,是已经训练完成的模型。这时会load预训练模型的参数,但并不会load学习率、优化器以及训练状态等。如果需要finetune,应该使用pretrained。
|
||||
checkpoints:指之前训练的中间结果,例如前一次训练到了100个epoch,想接着训练。这时会load尝试所有信息,包括模型的参数,之前的状态等。
|
||||
|
@ -378,11 +379,11 @@ checkpoints:指之前训练的中间结果,例如前一次训练到了100个
|
|||
|
||||
#### Q: DB检测训练输入尺寸640,可以改大一些吗?
|
||||
|
||||
A:不建议改大。检测模型训练输入尺寸是预处理中random crop后的尺寸,并非直接将原图进行resize,多数场景下这个尺寸并不小了,改大后可能反而并不合适,而且训练会变慢。另外,代码里可能有的地方参数按照预设输入尺寸适配的,改大后可能有隐藏风险。
|
||||
**A**:不建议改大。检测模型训练输入尺寸是预处理中random crop后的尺寸,并非直接将原图进行resize,多数场景下这个尺寸并不小了,改大后可能反而并不合适,而且训练会变慢。另外,代码里可能有的地方参数按照预设输入尺寸适配的,改大后可能有隐藏风险。
|
||||
|
||||
#### Q: 预处理部分,图片的长和宽为什么要处理成32的倍数?
|
||||
|
||||
A:以检测中的resnet骨干网络为例,图像输入网络之后,需要经过5次2倍降采样,共32倍,因此建议输入的图像尺寸为32的倍数。
|
||||
**A**:以检测中的resnet骨干网络为例,图像输入网络之后,需要经过5次2倍降采样,共32倍,因此建议输入的图像尺寸为32的倍数。
|
||||
|
||||
#### Q: 在识别模型中,为什么降采样残差结构的stride为(2, 1)?
|
||||
|
||||
|
@ -398,7 +399,7 @@ A:以检测中的resnet骨干网络为例,图像输入网络之后,需要
|
|||
|
||||
#### Q:识别模型框出来的位置太紧凑,会丢失边缘的文字信息,导致识别错误
|
||||
|
||||
A:可以在命令中加入 --det_db_unclip_ratio ,参数定义位置,这个参数是检测后处理时控制文本框大小的,默认1.6,可以尝试改成2.5或者更大,反之,如果觉得文本框不够紧凑,也可以把该参数调小。
|
||||
**A**:可以在命令中加入 --det_db_unclip_ratio ,参数定义位置,这个参数是检测后处理时控制文本框大小的,默认1.6,可以尝试改成2.5或者更大,反之,如果觉得文本框不够紧凑,也可以把该参数调小。
|
||||
|
||||
### 2.7 模型结构
|
||||
|
||||
|
@ -488,7 +489,7 @@ A:可以在命令中加入 --det_db_unclip_ratio ,参数定义位置,这
|
|||
|
||||
#### Q: PP-OCR检测效果不好,该如何优化?
|
||||
|
||||
A: 具体问题具体分析:
|
||||
**A**: 具体问题具体分析:
|
||||
如果在你的场景上检测效果不可用,首选是在你的数据上做finetune训练;
|
||||
如果图像过大,文字过于密集,建议不要过度压缩图像,可以尝试修改检测预处理的resize逻辑,防止图像被过度压缩;
|
||||
检测框大小过于紧贴文字或检测框过大,可以调整db_unclip_ratio这个参数,加大参数可以扩大检测框,减小参数可以减小检测框大小;
|
||||
|
@ -517,14 +518,14 @@ A: 具体问题具体分析:
|
|||
|
||||
#### Q: 动态图分支(dygraph,release/2.0),训练模型和推理模型效果不一致
|
||||
|
||||
A:当前问题表现为:使用训练完的模型直接测试结果较好,但是转换为inference model后,预测结果不一致;出现这个问题一般是两个原因:
|
||||
**A**:当前问题表现为:使用训练完的模型直接测试结果较好,但是转换为inference model后,预测结果不一致;出现这个问题一般是两个原因:
|
||||
|
||||
1. 预处理函数设置的不一致
|
||||
2. 后处理参数不一致 repo中config.yml文件的前后处理参数和inference预测默认的超参数有不一致的地方,建议排查下训练模型预测和inference预测的前后处理, 参考issue。
|
||||
|
||||
#### Q: 自己训练的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。
|
||||
**A**:这是由于图片预处理不同造成的。如果训练的det模型图片输入并不是默认的shape[600, 600],eval的程序中图片预处理方式与train时一致 (由xxx_reader.yml中的test_image_shape参数决定缩放大小,但predict_eval.py中的图片预处理方式由程序里的preprocess_params决定, 最好不要传入max_side_len,而是传入和训练时一样大小的test_image_shape。
|
||||
|
||||
#### Q: 训练模型和测试模型的检测结果差距较大
|
||||
|
||||
|
@ -532,7 +533,7 @@ A:这是由于图片预处理不同造成的。如果训练的det模型图片
|
|||
|
||||
#### Q: PaddleOCR模型Python端预测和C++预测结果不一致?
|
||||
|
||||
A:正常来说,python端预测和C++预测文本是一致的,如果预测结果差异较大, 建议首先排查diff出现在检测模型还是识别模型,或者尝试换其他模型是否有类似的问题。 其次,检查python端和C++端数据处理部分是否存在差异,建议保存环境,更新PaddleOCR代码再试下。 如果更新代码或者更新代码都没能解决,建议在PaddleOCR微信群里或者issue中抛出您的问题。
|
||||
**A**:正常来说,python端预测和C++预测文本是一致的,如果预测结果差异较大, 建议首先排查diff出现在检测模型还是识别模型,或者尝试换其他模型是否有类似的问题。 其次,检查python端和C++端数据处理部分是否存在差异,建议保存环境,更新PaddleOCR代码再试下。 如果更新代码或者更新代码都没能解决,建议在PaddleOCR微信群里或者issue中抛出您的问题。
|
||||
|
||||
用户总结的排查步骤:<https://github.com/PaddlePaddle/PaddleOCR/issues/2470>
|
||||
|
||||
|
@ -540,7 +541,7 @@ A:正常来说,python端预测和C++预测文本是一致的,如果预测
|
|||
|
||||
#### Q: 某个类别的样本比较少,通过增加训练的迭代次数或者是epoch,变相增加小样本的数目,这样能缓解这个问题么?
|
||||
|
||||
A: 尽量保证类别均衡, 某些类别样本少,可以通过补充合成数据的方式处理;实验证明训练集中出现频次较少的字符,识别效果会比较差,增加迭代次数不能改变样本量少的问题。
|
||||
**A**: 尽量保证类别均衡, 某些类别样本少,可以通过补充合成数据的方式处理;实验证明训练集中出现频次较少的字符,识别效果会比较差,增加迭代次数不能改变样本量少的问题。
|
||||
|
||||
#### Q:文本检测换成自己的数据没法训练,有一些”###”是什么意思?
|
||||
|
||||
|
@ -548,11 +549,11 @@ A: 尽量保证类别均衡, 某些类别样本少,可以通过补充合
|
|||
|
||||
#### Q:如何调试数据读取程序?
|
||||
|
||||
A:tools/train.py中有一个test_reader()函数用于调试数据读取。
|
||||
**A**:tools/train.py中有一个test_reader()函数用于调试数据读取。
|
||||
|
||||
#### Q:中文文本检测、文本识别构建训练集的话,大概需要多少数据量
|
||||
|
||||
A:检测需要的数据相对较少,在PaddleOCR模型的基础上进行Fine-tune,一般需要500张可达到不错的效果。 识别分英文和中文,一般英文场景需要几十万数据可达到不错的效果,中文则需要几百万甚至更多。
|
||||
**A**:检测需要的数据相对较少,在PaddleOCR模型的基础上进行Fine-tune,一般需要500张可达到不错的效果。 识别分英文和中文,一般英文场景需要几十万数据可达到不错的效果,中文则需要几百万甚至更多。
|
||||
|
||||
#### Q: config yml文件中的ratio_list参数的作用是什么?
|
||||
|
||||
|
@ -638,11 +639,11 @@ lr:
|
|||
|
||||
#### Q: 为什么PaddleOCR检测预测是只支持一张图片测试?即test_batch_size_per_card=1
|
||||
|
||||
A:测试的时候,对图像等比例缩放,最长边960,不同图像等比例缩放后长宽不一致,无法组成batch,所以设置为test_batch_size为1。
|
||||
**A**:测试的时候,对图像等比例缩放,最长边960,不同图像等比例缩放后长宽不一致,无法组成batch,所以设置为test_batch_size为1。
|
||||
|
||||
#### Q: PaddleOCR支持tensorrt推理吗?
|
||||
|
||||
A: 支持的,需要在编译的时候将CMakeLists.txt文件当中,将相关代码option(WITH_TENSORRT "Compile demo with TensorRT." OFF)的OFF改成ON。关于服务器端部署的更多设置,可以参考飞桨官网
|
||||
**A**:支持的,需要在编译的时候将CMakeLists.txt文件当中,将相关代码option(WITH_TENSORRT "Compile demo with TensorRT." OFF)的OFF改成ON。关于服务器端部署的更多设置,可以参考飞桨官网
|
||||
|
||||
#### Q: 如何使用TensorRT加速PaddleOCR预测?
|
||||
|
||||
|
@ -678,11 +679,11 @@ python3 tools/infer/predict_rec.py --image_dir="./doc/imgs_words/ch/word_4.jpg"
|
|||
|
||||
#### Q:hubserving、pdserving这两种部署方式区别是什么?
|
||||
|
||||
A:hubserving原本是paddlehub的配套服务部署工具,可以很方便的将paddlehub内置的模型部署为服务,paddleocr使用了这个功能,并将模型路径等参数暴露出来方便用户自定义修改。paddle serving是面向所有paddle模型的部署工具,文档中可以看到我们提供了快速版和标准版,其中快速版和hubserving的本质是一样的,而标准版基于rpc,更稳定,更适合分布式部署。
|
||||
**A**:hubserving原本是paddlehub的配套服务部署工具,可以很方便的将paddlehub内置的模型部署为服务,paddleocr使用了这个功能,并将模型路径等参数暴露出来方便用户自定义修改。paddle serving是面向所有paddle模型的部署工具,文档中可以看到我们提供了快速版和标准版,其中快速版和hubserving的本质是一样的,而标准版基于rpc,更稳定,更适合分布式部署。
|
||||
|
||||
#### Q: 目前paddle hub serving 只支持 imgpath,如果我想用imgurl 去哪里改呢?
|
||||
|
||||
A:图片是在[这里](https://github.com/PaddlePaddle/PaddleOCR/blob/67ef25d593c4eabfaaceb22daade4577f53bed81/deploy/hubserving/ocr_system/module.py#L55)读取的, 可以参考下面的写法,将url path转化为np array
|
||||
**A**:图片是在[这里](https://github.com/PaddlePaddle/PaddleOCR/blob/67ef25d593c4eabfaaceb22daade4577f53bed81/deploy/hubserving/ocr_system/module.py#L55)读取的, 可以参考下面的写法,将url path转化为np array
|
||||
|
||||
```
|
||||
response = request.urlopen('http://i1.whymtj.com/uploads/tu/201902/9999/52491ae4ba.jpg')
|
||||
|
@ -692,11 +693,11 @@ img = cv.imdecode(img_array, -1)
|
|||
|
||||
#### Q: C++ 端侧部署可以只对OCR的检测部署吗?
|
||||
|
||||
A:可以的,识别和检测模块是解耦的。如果想对检测部署,需要自己修改一下main函数, 只保留检测相关就可以: [参考](https://github.com/PaddlePaddle/PaddleOCR/blob/de3e2e7cd3b8b65ee02d7a41e570fa5b511a3c1d/deploy/cpp_infer/src/main.cpp#L72)
|
||||
**A**:可以的,识别和检测模块是解耦的。如果想对检测部署,需要自己修改一下main函数, 只保留检测相关就可以: [参考](https://github.com/PaddlePaddle/PaddleOCR/blob/de3e2e7cd3b8b65ee02d7a41e570fa5b511a3c1d/deploy/cpp_infer/src/main.cpp#L72)
|
||||
|
||||
#### Q:服务部署可以只发布文本识别,而不带文本检测模型么?
|
||||
|
||||
A:可以的。默认的服务部署是检测和识别串联预测的。也支持单独发布文本检测或文本识别模型,比如使用PaddleHUBPaddleOCR 模型时,deploy下有三个文件夹,分别是
|
||||
**A**:可以的。默认的服务部署是检测和识别串联预测的。也支持单独发布文本检测或文本识别模型,比如使用PaddleHUBPaddleOCR 模型时,deploy下有三个文件夹,分别是
|
||||
ocr_det:检测预测
|
||||
ocr_rec: 识别预测
|
||||
ocr_system: 检测识别串联预测
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
---
|
||||
comments: true
|
||||
hide:
|
||||
- navigation
|
||||
- toc
|
||||
---
|
||||
|
||||
### Recently Update
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
---
|
||||
comments: true
|
||||
hide:
|
||||
- navigation
|
||||
- toc
|
||||
---
|
||||
|
||||
### 更新
|
||||
|
|
|
@ -250,7 +250,6 @@ extra_javascript:
|
|||
extra_css:
|
||||
- https://unpkg.com/katex@0/dist/katex.min.css
|
||||
|
||||
|
||||
nav:
|
||||
- Home: index.md
|
||||
- 快速开始: quick_start.md
|
||||
|
@ -355,6 +354,7 @@ nav:
|
|||
- Text Telescope: algorithm/super_resolution/algorithm_sr_telescope.md
|
||||
- 公式识别算法:
|
||||
- CAN: algorithm/formula_recognition/algorithm_rec_can.md
|
||||
- LaTeX-OCR: algorithm/formula_recognition/algorithm_rec_latex_ocr.md
|
||||
- 端到端OCR算法:
|
||||
- PGNet: algorithm/end_to_end/algorithm_e2e_pgnet.md
|
||||
- 表格识别算法:
|
||||
|
|
Loading…
Reference in New Issue