Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
s920243400
PaddleOCR
提交
fd5ea74b
P
PaddleOCR
项目概览
s920243400
/
PaddleOCR
与 Fork 源项目一致
Fork自
PaddlePaddle / PaddleOCR
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleOCR
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
fd5ea74b
编写于
3月 10, 2021
作者:
W
Wei Shengyu
提交者:
GitHub
3月 10, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update FAQ (#2189)
* update FAQ
上级
f0b10328
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
84 addition
and
34 deletion
+84
-34
README_ch.md
README_ch.md
+1
-1
doc/doc_ch/FAQ.md
doc/doc_ch/FAQ.md
+83
-33
未找到文件。
README_ch.md
浏览文件 @
fd5ea74b
...
@@ -8,7 +8,7 @@ PaddleOCR同时支持动态图与静态图两种编程范式
...
@@ -8,7 +8,7 @@ PaddleOCR同时支持动态图与静态图两种编程范式
-
静态图版本:develop分支
-
静态图版本:develop分支
**近期更新**
**近期更新**
-
2021.3.
1
[
FAQ
](
./doc/doc_ch/FAQ.md
)
新增5个高频问题,总数177
个,每周一都会更新,欢迎大家持续关注。
-
2021.3.
8
[
FAQ
](
./doc/doc_ch/FAQ.md
)
新增6个高频问题,总数183
个,每周一都会更新,欢迎大家持续关注。
-
2021.2.8 正式发布PaddleOCRv2.0(branch release/2.0)并设置为推荐用户使用的默认分支. 发布的详细内容,请参考: https://github.com/PaddlePaddle/PaddleOCR/releases/tag/v2.0.0
-
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
)
-
2021.1.26,28,29 PaddleOCR官方研发团队带来技术深入解读三日直播课,1月26日、28日、29日晚上19:30,
[
直播地址
](
https://live.bilibili.com/21689802
)
-
2021.1.21 更新多语言识别模型,目前支持语种超过27种,
[
多语言模型下载
](
./doc/doc_ch/models_list.md
)
,包括中文简体、中文繁体、英文、法文、德文、韩文、日文、意大利文、西班牙文、葡萄牙文、俄罗斯文、阿拉伯文等,后续计划可以参考
[
多语言研发计划
](
https://github.com/PaddlePaddle/PaddleOCR/issues/1048
)
-
2021.1.21 更新多语言识别模型,目前支持语种超过27种,
[
多语言模型下载
](
./doc/doc_ch/models_list.md
)
,包括中文简体、中文繁体、英文、法文、德文、韩文、日文、意大利文、西班牙文、葡萄牙文、俄罗斯文、阿拉伯文等,后续计划可以参考
[
多语言研发计划
](
https://github.com/PaddlePaddle/PaddleOCR/issues/1048
)
...
...
doc/doc_ch/FAQ.md
浏览文件 @
fd5ea74b
...
@@ -9,47 +9,54 @@
...
@@ -9,47 +9,54 @@
## PaddleOCR常见问题汇总(持续更新)
## PaddleOCR常见问题汇总(持续更新)
*
[
近期更新(2021.3.
1
)
](
#近期更新
)
*
[
近期更新(2021.3.
8
)
](
#近期更新
)
*
[
【精选】OCR精选10个问题
](
#OCR精选10个问题
)
*
[
【精选】OCR精选10个问题
](
#OCR精选10个问题
)
*
[
【理论篇】OCR通用32个问题
](
#OCR通用问题
)
*
[
【理论篇】OCR通用32个问题
](
#OCR通用问题
)
*
[
基础知识7题
](
#基础知识
)
*
[
基础知识7题
](
#基础知识
)
*
[
数据集7题
](
#数据集2
)
*
[
数据集7题
](
#数据集2
)
*
[
模型训练调优18题
](
#模型训练调优2
)
*
[
模型训练调优18题
](
#模型训练调优2
)
*
[
【实战篇】PaddleOCR实战130个问题
](
#PaddleOCR实战问题
)
*
[
【实战篇】PaddleOCR实战130个问题
](
#PaddleOCR实战问题
)
*
[
使用咨询
48
题
](
#使用咨询
)
*
[
使用咨询
52
题
](
#使用咨询
)
*
[
数据集18题
](
#数据集3
)
*
[
数据集18题
](
#数据集3
)
*
[
模型训练调优3
0
题
](
#模型训练调优3
)
*
[
模型训练调优3
2
题
](
#模型训练调优3
)
*
[
预测部署39题
](
#预测部署3
)
*
[
预测部署39题
](
#预测部署3
)
<a
name=
"近期更新"
></a>
<a
name=
"近期更新"
></a>
## 近期更新(2021.3.1)
## 近期更新(2021.3.8)
#### Q3.1.49: 只想要识别票据中的部分片段,重新训练它的话,只需要训练文本检测模型就可以了吗?问文本识别,方向分类还是用原来的模型这样可以吗?
#### Q3.1.44: 文字识别训练,设置图像高度不等于32时报错
**A**
:可以的。PaddleOCR的检测、识别、方向分类器三个模型是独立的,在实际使用中可以优化和替换其中任何一个模型。
**A**
:ctc decode的时候,输入需要是1维向量,因此降采样之后,建议特征图高度为1,ppocr中,特征图会降采样32倍,之后高度正好为1,所以有2种解决方案
-
指定输入shape高度为32(推荐)
-
在backbone的mv3中添加更多的降采样模块,保证输出的特征图高度为1
#### Q3.1.45: 增大batch_size模型训练速度没有明显提升
#### Q3.1.50: 为什么在checkpoints中load下载的预训练模型会报错?
如果bs打得太大,加速效果不明显的话,可以试一下增大初始化内存的值,运行代码前设置环境变量:
```
export FLAGS_initial_cpu_memory_in_mb=2000 # 设置初始化内存约2G左右
```
#### Q3.1.46: 动态图分支(dygraph,release/2.0),训练模型和推理模型效果不一致
**A**
: 这里有两个不同的概念:
当前问题表现为:使用训练完的模型直接测试结果较好,但是转换为inference model后,预测结果不一致;出现这个问题一般是两个原因:
-
pretrained_model:指预训练模型,是已经训练完成的模型。这时会load预训练模型的参数,但并不会load学习率、优化器以及训练状态等。如果需要finetune,应该使用pretrained。
-
1. 预处理函数设置的不一致
-
checkpoints:指之前训练的中间结果,例如前一次训练到了100个epoch,想接着训练。这时会load尝试所有信息,包括模型的参数,之前的状态等。
-
2. 后处理参数不一致
repo中config.yml文件的前后处理参数和inference预测默认的超参数有不一致的地方,建议排查下训练模型预测和inference预测的前后处理,
参考
[
issue
](
https://github.com/PaddlePaddle/PaddleOCR/issues/2080
)
。
#### Q3.1.47: paddleocr package 报错 FatalError: `Process abort signal` is detected by the operating system
这里应该使用pretrained_model而不是checkpoints
首先,按照
[
安装文档
](
./installation.md
)
安装PaddleOCR的运行环境;另外,检查python环境,python3.6/3.8上可能会出现这个问题,建议用python3.7,
参考
[
issue
](
https://github.com/PaddlePaddle/PaddleOCR/issues/2069
)
。
#### Q3.1.51: 如何用PaddleOCR识别视频中的文字?
#### Q3.1.48: 下载的识别模型解压后缺失文件,没有期望的inference.pdiparams, inference.pdmodel等文件
**A**
: 目前PaddleOCR主要针对图像做处理,如果需要视频识别,可以先对视频抽帧,然后用PPOCR识别。
用解压软件解压可能会出现这个问题,建议二次解压下或者用命令行解压
`tar xf `
#### Q3.1.52: 相机采集的图像为四通道,应该如何处理?
**A**
: 有两种方式处理:
-
如果没有其他需要,可以在解码数据的时候指定模式为三通道,例如如果使用opencv,可以使用cv::imread(img_path, cv::IMREAD_COLOR)。
-
如果其他模块需要处理四通道的图像,那也可以在输入PaddleOCR模块之前进行转换,例如使用cvCvtColor(&img,img3chan,CV_RGBA2RGB)。
#### Q3.3.31: Cosine学习率的更新策略是怎样的?训练过程中为什么会在一个值上停很久?
**A**
: Cosine学习率的说明可以参考https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/optimizer/lr/CosineAnnealingDecay_cn.html#cosineannealingdecay
在PaddleOCR中,为了让学习率更加平缓,我们将其中的epoch调整成了iter。
学习率的更新会和总的iter数量有关。当iter比较大时,会经过较多iter才能看出学习率的值有变化。
#### Q3.3.32: 之前的CosineWarmup方法为什么不见了?
**A**
: 我们对代码结构进行了调整,目前的Cosine可以覆盖原有的CosineWarmup的功能,只需要在配置文件中增加相应配置即可。
<a
name=
"OCR精选10个问题"
></a>
<a
name=
"OCR精选10个问题"
></a>
...
@@ -515,7 +522,6 @@ release/2.0-rc1-0是基于Paddle 2.0rc1的稳定版本,release/2.0是基于Pad
...
@@ -515,7 +522,6 @@ release/2.0-rc1-0是基于Paddle 2.0rc1的稳定版本,release/2.0是基于Pad
#### Q3.1.43:使用StyleText进行数据合成时,文本(TextInput)的长度远超StyleInput的长度,该怎么处理与合成呢?
#### Q3.1.43:使用StyleText进行数据合成时,文本(TextInput)的长度远超StyleInput的长度,该怎么处理与合成呢?
**A**
:在使用StyleText进行数据合成的时候,建议StyleInput的长度长于TextInput的长度。有2种方法可以处理上述问题:
**A**
:在使用StyleText进行数据合成的时候,建议StyleInput的长度长于TextInput的长度。有2种方法可以处理上述问题:
1.
将StyleInput按列的方向进行复制与扩充,直到其超过TextInput的长度。
1.
将StyleInput按列的方向进行复制与扩充,直到其超过TextInput的长度。
...
@@ -525,32 +531,56 @@ release/2.0-rc1-0是基于Paddle 2.0rc1的稳定版本,release/2.0是基于Pad
...
@@ -525,32 +531,56 @@ release/2.0-rc1-0是基于Paddle 2.0rc1的稳定版本,release/2.0是基于Pad
#### Q3.1.44: 文字识别训练,设置图像高度不等于32时报错
#### Q3.1.44: 文字识别训练,设置图像高度不等于32时报错
**A**
:ctc decode的时候,输入需要是1维向量,因此降采样之后,建议特征图高度为1,ppocr中,特征图会降采样32倍,之后高度正好为1,所以有2种解决方案
**A**
:ctc decode的时候,输入需要是1维向量,因此降采样之后,建议特征图高度为1,ppocr中,特征图会降采样32倍,之后高度正好为1,所以有2种解决方案
-
指定输入shape高度为32(推荐)
-
指定输入shape高度为32(推荐)
-
在backbone的mv3中添加更多的降采样模块,保证输出的特征图高度为1
-
在backbone的mv3中添加更多的降采样模块,保证输出的特征图高度为1
#### Q3.1.45: 增大batch_size模型训练速度没有明显提升
#### Q3.1.45: 增大batch_size模型训练速度没有明显提升
如果bs打得太大,加速效果不明显的话,可以试一下增大初始化内存的值,运行代码前设置环境变量:
**A**
:如果batch_size打得太大,加速效果不明显的话,可以试一下增大初始化内存的值,运行代码前设置环境变量:
```
```
export FLAGS_initial_cpu_memory_in_mb=2000 # 设置初始化内存约2G左右
export FLAGS_initial_cpu_memory_in_mb=2000 # 设置初始化内存约2G左右
```
```
#### Q3.1.46: 动态图分支(dygraph,release/2.0),训练模型和推理模型效果不一致
#### Q3.1.46: 动态图分支(dygraph,release/2.0),训练模型和推理模型效果不一致
当前问题表现为:使用训练完的模型直接测试结果较好,但是转换为inference model后,预测结果不一致;出现这个问题一般是两个原因:
-
1. 预处理函数设置的不一致
**A**
:当前问题表现为:使用训练完的模型直接测试结果较好,但是转换为inference model后,预测结果不一致;出现这个问题一般是两个原因:
-
2. 后处理参数不一致
1.
预处理函数设置的不一致
2.
后处理参数不一致
repo中config.yml文件的前后处理参数和inference预测默认的超参数有不一致的地方,建议排查下训练模型预测和inference预测的前后处理,
repo中config.yml文件的前后处理参数和inference预测默认的超参数有不一致的地方,建议排查下训练模型预测和inference预测的前后处理,
参考
[
issue
](
https://github.com/PaddlePaddle/PaddleOCR/issues/2080
)
。
参考
[
issue
](
https://github.com/PaddlePaddle/PaddleOCR/issues/2080
)
。
#### Q3.1.47: paddleocr package 报错 FatalError: `Process abort signal` is detected by the operating system
#### Q3.1.47: paddleocr package 报错 FatalError: `Process abort signal` is detected by the operating system
首先,按照
[
安装文档
](
./installation.md
)
安装PaddleOCR的运行环境;另外,检查python环境,python3.6/3.8上可能会出现这个问题,建议用python3.7,
参考
[
issue
](
https://github.com/PaddlePaddle/PaddleOCR/issues/2069
)
。
**A**
:首先,按照
[
安装文档
](
./installation.md
)
安装PaddleOCR的运行环境;另外,检查python环境,python3.6/3.8上可能会出现这个问题,建议用python3.7,
参考
[
issue
](
https://github.com/PaddlePaddle/PaddleOCR/issues/2069
)
。
#### Q3.1.48: 下载的识别模型解压后缺失文件,没有期望的inference.pdiparams, inference.pdmodel等文件
#### Q3.1.48: 下载的识别模型解压后缺失文件,没有期望的inference.pdiparams, inference.pdmodel等文件
用解压软件解压可能会出现这个问题,建议二次解压下或者用命令行解压
`tar xf `
**A**
:用解压软件解压可能会出现这个问题,建议二次解压下或者用命令行解压
`tar xf `
#### Q3.1.49: 只想要识别票据中的部分片段,重新训练它的话,只需要训练文本检测模型就可以了吗?问文本识别,方向分类还是用原来的模型这样可以吗?
**A**
:可以的。PaddleOCR的检测、识别、方向分类器三个模型是独立的,在实际使用中可以优化和替换其中任何一个模型。
#### Q3.1.50: 为什么在checkpoints中load下载的预训练模型会报错?
**A**
: 这里有两个不同的概念:
-
pretrained_model:指预训练模型,是已经训练完成的模型。这时会load预训练模型的参数,但并不会load学习率、优化器以及训练状态等。如果需要finetune,应该使用pretrained。
-
checkpoints:指之前训练的中间结果,例如前一次训练到了100个epoch,想接着训练。这时会load尝试所有信息,包括模型的参数,之前的状态等。
这里应该使用pretrained_model而不是checkpoints
#### Q3.1.51: 如何用PaddleOCR识别视频中的文字?
**A**
: 目前PaddleOCR主要针对图像做处理,如果需要视频识别,可以先对视频抽帧,然后用PPOCR识别。
#### Q3.1.52: 相机采集的图像为四通道,应该如何处理?
**A**
: 有两种方式处理:
-
如果没有其他需要,可以在解码数据的时候指定模式为三通道,例如如果使用opencv,可以使用cv::imread(img_path, cv::IMREAD_COLOR)。
-
如果其他模块需要处理四通道的图像,那也可以在输入PaddleOCR模块之前进行转换,例如使用cvCvtColor(&img,img3chan,CV_RGBA2RGB)。
<a
name=
"数据集3"
></a>
<a
name=
"数据集3"
></a>
### 数据集
### 数据集
...
@@ -796,8 +826,27 @@ ps -axu | grep train.py | awk '{print $2}' | xargs kill -9
...
@@ -796,8 +826,27 @@ ps -axu | grep train.py | awk '{print $2}' | xargs kill -9
**A**
:1.1和2.0的模型一样,微调时,垂直排列的文字需要逆时针旋转 90°后加入训练,上下颠倒的需要旋转为水平的。
**A**
:1.1和2.0的模型一样,微调时,垂直排列的文字需要逆时针旋转 90°后加入训练,上下颠倒的需要旋转为水平的。
#### Q3.3.30: 模型训练过程中如何得到 best_accuracy 模型?
#### Q3.3.30: 模型训练过程中如何得到 best_accuracy 模型?
**A**
:配置文件里的eval_batch_step字段用来控制多少次iter进行一次eval,在eval完成后会自动生成 best_accuracy 模型,所以如果希望很快就能拿到best_accuracy模型,可以将eval_batch_step改小一点,如改为[10,10],这样表示第10次迭代后,以后没隔10个迭代就进行一次模型的评估。
**A**
:配置文件里的eval_batch_step字段用来控制多少次iter进行一次eval,在eval完成后会自动生成 best_accuracy 模型,所以如果希望很快就能拿到best_accuracy模型,可以将eval_batch_step改小一点,如改为[10,10],这样表示第10次迭代后,以后没隔10个迭代就进行一次模型的评估。
#### Q3.3.31: Cosine学习率的更新策略是怎样的?训练过程中为什么会在一个值上停很久?
**A**
: Cosine学习率的说明可以参考
[
这里
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/optimizer/lr/CosineAnnealingDecay_cn.html#cosineannealingdecay
)
在PaddleOCR中,为了让学习率更加平缓,我们将其中的epoch调整成了iter。
学习率的更新会和总的iter数量有关。当iter比较大时,会经过较多iter才能看出学习率的值有变化。
#### Q3.3.32: 之前的CosineWarmup方法为什么不见了?
**A**
: 我们对代码结构进行了调整,目前的Cosine可以覆盖原有的CosineWarmup的功能,只需要在配置文件中增加相应配置即可。
例如下面的代码,可以设置warmup为2个epoch:
```
lr:
name: Cosine
learning_rate: 0.001
warmup_epoch: 2
```
<a
name=
"预测部署3"
></a>
<a
name=
"预测部署3"
></a>
### 预测部署
### 预测部署
...
@@ -912,7 +961,8 @@ ps -axu | grep train.py | awk '{print $2}' | xargs kill -9
...
@@ -912,7 +961,8 @@ ps -axu | grep train.py | awk '{print $2}' | xargs kill -9
**A**
:使用EAST或SAST模型进行推理预测时,需要在命令中指定参数--det_algorithm="EAST" 或 --det_algorithm="SAST",使用DB时不用指定是因为该参数默认值是"DB":https://github.com/PaddlePaddle/PaddleOCR/blob/e7a708e9fdaf413ed7a14da8e4a7b4ac0b211e42/tools/infer/utility.py#L43
**A**
:使用EAST或SAST模型进行推理预测时,需要在命令中指定参数--det_algorithm="EAST" 或 --det_algorithm="SAST",使用DB时不用指定是因为该参数默认值是"DB":https://github.com/PaddlePaddle/PaddleOCR/blob/e7a708e9fdaf413ed7a14da8e4a7b4ac0b211e42/tools/infer/utility.py#L43
#### Q3.4.25: PaddleOCR模型Python端预测和C++预测结果不一致?
#### Q3.4.25: PaddleOCR模型Python端预测和C++预测结果不一致?
正常来说,python端预测和C++预测文本是一致的,如果预测结果差异较大,
**A**
:正常来说,python端预测和C++预测文本是一致的,如果预测结果差异较大,
建议首先排查diff出现在检测模型还是识别模型,或者尝试换其他模型是否有类似的问题。
建议首先排查diff出现在检测模型还是识别模型,或者尝试换其他模型是否有类似的问题。
其次,检查python端和C++端数据处理部分是否存在差异,建议保存环境,更新PaddleOCR代码再试下。
其次,检查python端和C++端数据处理部分是否存在差异,建议保存环境,更新PaddleOCR代码再试下。
如果更新代码或者更新代码都没能解决,建议在PaddleOCR微信群里或者issue中抛出您的问题。
如果更新代码或者更新代码都没能解决,建议在PaddleOCR微信群里或者issue中抛出您的问题。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录