Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jobily
PaddleOCR
提交
8614dab6
P
PaddleOCR
项目概览
jobily
/
PaddleOCR
与 Fork 源项目一致
Fork自
PaddlePaddle / PaddleOCR
通知
1
Star
0
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看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
8614dab6
编写于
1月 18, 2021
作者:
D
dyning
提交者:
GitHub
1月 18, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1754 from dyning/dy
add faq 20210117
上级
17346d85
5021b5a9
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
40 addition
and
30 deletion
+40
-30
README_ch.md
README_ch.md
+3
-3
doc/doc_ch/FAQ.md
doc/doc_ch/FAQ.md
+37
-27
未找到文件。
README_ch.md
浏览文件 @
8614dab6
...
...
@@ -8,7 +8,7 @@ PaddleOCR同时支持动态图与静态图两种编程范式
-
静态图版本:develop分支
**近期更新**
-
2021.1.1
1
[
FAQ
](
./doc/doc_ch/FAQ.md
)
新增5个高频问题,总数147
个,每周一都会更新,欢迎大家持续关注。
-
2021.1.1
8
[
FAQ
](
./doc/doc_ch/FAQ.md
)
新增5个高频问题,总数152
个,每周一都会更新,欢迎大家持续关注。
-
2020.12.15 更新数据合成工具
[
Style-Text
](
./StyleText/README_ch.md
)
,可以批量合成大量与目标场景类似的图像,在多个场景验证,效果明显提升。
-
2020.11.25 更新半自动标注工具
[
PPOCRLabel
](
./PPOCRLabel/README_ch.md
)
,辅助开发者高效完成标注任务,输出格式与PP-OCR训练任务完美衔接。
-
2020.9.22 更新PP-OCR技术文章,https://arxiv.org/abs/2009.09941
...
...
@@ -101,8 +101,8 @@ PaddleOCR同时支持动态图与静态图两种编程范式
-
[
效果展示
](
#效果展示
)
-
FAQ
-
[
【精选】OCR精选10个问题
](
./doc/doc_ch/FAQ.md
)
-
[
【理论篇】OCR通用3
1
个问题
](
./doc/doc_ch/FAQ.md
)
-
[
【实战篇】PaddleOCR实战1
06
个问题
](
./doc/doc_ch/FAQ.md
)
-
[
【理论篇】OCR通用3
2
个问题
](
./doc/doc_ch/FAQ.md
)
-
[
【实战篇】PaddleOCR实战1
10
个问题
](
./doc/doc_ch/FAQ.md
)
-
[
技术交流群
](
#欢迎加入PaddleOCR技术交流群
)
-
[
参考文献
](
./doc/doc_ch/reference.md
)
-
[
许可证书
](
#许可证书
)
...
...
doc/doc_ch/FAQ.md
浏览文件 @
8614dab6
...
...
@@ -9,47 +9,41 @@
## PaddleOCR常见问题汇总(持续更新)
*
[
近期更新(2021.1.1
1
)
](
#近期更新
)
*
[
近期更新(2021.1.1
8
)
](
#近期更新
)
*
[
【精选】OCR精选10个问题
](
#OCR精选10个问题
)
*
[
【理论篇】OCR通用3
1
个问题
](
#OCR通用问题
)
*
[
【理论篇】OCR通用3
2
个问题
](
#OCR通用问题
)
*
[
基础知识7题
](
#基础知识
)
*
[
数据集7题
](
#数据集2
)
*
[
模型训练调优1
7
题
](
#模型训练调优2
)
*
[
【实战篇】PaddleOCR实战1
06
个问题
](
#PaddleOCR实战问题
)
*
[
模型训练调优1
8
题
](
#模型训练调优2
)
*
[
【实战篇】PaddleOCR实战1
10
个问题
](
#PaddleOCR实战问题
)
*
[
使用咨询36题
](
#使用咨询
)
*
[
数据集17题
](
#数据集3
)
*
[
模型训练调优2
6
题
](
#模型训练调优3
)
*
[
预测部署2
7
题
](
#预测部署3
)
*
[
模型训练调优2
8
题
](
#模型训练调优3
)
*
[
预测部署2
9
题
](
#预测部署3
)
<a
name=
"近期更新"
></a>
## 近期更新(2021.1.1
1
)
## 近期更新(2021.1.1
8
)
#### Q
3.1.32 能否修改StyleText配置文件中的分辨率
?
#### Q
2.3.18: 在PP-OCR系统中,文本检测的骨干网络为什么没有使用SE模块
?
**A**
:S
tyleText目前的训练数据主要是高度32的图片,建议不要改变高度。未来我们会支持更丰富的分辨率。
**A**
:S
E模块是MobileNetV3网络一个重要模块,目的是估计特征图每个特征通道重要性,给特征图每个特征分配权重,提高网络的表达能力。但是,对于文本检测,输入网络的分辨率比较大,一般是640
\*
640,利用SE模块估计特征图每个特征通道重要性比较困难,网络提升能力有限,但是该模块又比较耗时,因此在PP-OCR系统中,文本检测的骨干网络没有使用SE模块。实验也表明,当去掉SE模块,超轻量模型大小可以减小40%,文本检测效果基本不受影响。详细可以参考PP-OCR技术文章,https://arxiv.org/abs/2009.09941.
#### Q3.
1.33 StyleText是否可以更换字体文件
?
#### Q3.
3.27: PaddleOCR关于文本识别模型的训练,支持的数据增强方式有哪些
?
**A**
:StyleText项目中的字体文件为标准字体,主要用作模型的输入部分,不能够修改。
StyleText的用途主要是:提取style_image中的字体、背景等style信息,根据语料生成同样style的图片。
**A**
:文本识别支持的数据增强方式有随机小幅度裁剪、图像平衡、添加白噪声、颜色漂移、图像反色和Text Image Augmentation(TIA)变换等。可以参考
[
代码
](
https://github.com/PaddlePaddle/PaddleOCR/blob/17346d854e90e95decdc8585479924d9cb03831c/ppocr/data/imaug/rec_img_aug.py
)
中的warp函数。
#### Q3.
1.34 StyleText批量生成图片为什么没有输出
?
#### Q3.
3.28: 关于dygraph分支中,文本识别模型训练,要使用数据增强应该如何设置
?
**A**
:需要检查以下您配置文件中的路径是否都存在。尤其要注意的是
[
label_file配置
](
https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/StyleText/README_ch.md#%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B
)
。
如果您使用的style_image输入没有label信息,您依然需要提供一个图片文件列表。
**A**
:可以参考
[
配置文件
](
PaddleOCR/configs/rec/ch_ppocr_v2.0/rec_chinese_lite_train_v2.0.yml
)
在Train
[
'dataset'
][
'transforms'
]
添加RecAug字段,使数据增强生效。可以通过添加对aug_prob设置,表示每种数据增强采用的概率。aug_prob默认是0.4.由于tia数据增强特殊性,默认不采用,可以通过添加use_tia设置,使tia数据增强生效。详细设置可以参考
[
ISSUE 1744
](
https://github.com/PaddlePaddle/PaddleOCR/issues/1744
)
。
#### Q3.
1.35 怎样把OCR输出的结果组成有意义的语句呢
?
#### Q3.
4.28: PP-OCR系统中,文本检测的结果有置信度吗
?
**A**
:OCR输出的结果包含坐标信息和文字内容两部分。如果您不关心文字的顺序,那么可以直接按box的序号连起来。
如果需要将文字按照一定的顺序排列,则需要您设定一些规则,对文字的坐标进行处理,例如按照坐标从上到下,从左到右连接识别结果。
对于一些有规律的垂类场景,可以设定模板,根据位置、内容进行匹配。
例如识别身份证照片,可以先匹配"姓名","性别"等关键字,根据这些关键字的坐标去推测其他信息的位置,再与识别的结果匹配。
**A**
:文本检测的结果有置信度,由于推理过程中没有使用,所以没有显示的返回到最终结果中。如果需要文本检测结果的置信度,可以在
[
文本检测DB的后处理代码
](
https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/ppocr/postprocess/db_postprocess.py
)
的155行,添加scores信息。这样,在
[
检测预测代码
](
https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/tools/infer/predict_det.py
)
的197行,就可以拿到文本检测的scores信息。
#### Q3.1.36 如何识别竹简上的古文?
**A**
:对于字符都是普通的汉字字符的情况,只要标注足够的数据,finetune模型就可以了。如果数据量不足,您可以尝试StyleText工具。
而如果使用的字符是特殊的古文字、甲骨文、象形文字等,那么首先需要构建一个古文字的字典,之后再进行训练。
#### Q3.4.29: DB文本检测,特征提取网络金字塔构建的部分代码在哪儿?
**A**
:特征提取网络金字塔构建的部分:
[
代码位置
](
https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/ppocr/modeling/necks/db_fpn.py
)
。ppocr/modeling文件夹里面是组网相关的代码,其中architectures是文本检测或者文本识别整体流程代码;backbones是骨干网络相关代码;necks是类似与FPN的颈函数代码;heads是提取文本检测或者文本识别预测结果相关的头函数;transforms是类似于TPS特征预处理模块。更多的信息可以参考
[
代码组织结构
](
https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/doc/doc_ch/tree.md
)
。
<a
name=
"OCR精选10个问题"
></a>
...
...
@@ -292,7 +286,9 @@ StyleText的用途主要是:提取style_image中的字体、背景等style信
**A**
:StyleText模型生成的数据主要用于OCR识别模型的训练。PaddleOCR目前识别模型的输入为32 x N,因此当前版本模型主要适用高度为32的数据。
建议要合成的数据尺寸设置为32 x N。尺寸相差不多的数据也可以生成,尺寸很大或很小的数据效果确实不佳。
#### Q2.3.18: 在PP-OCR系统中,文本检测的骨干网络为什么没有使用SE模块?
**A**
:SE模块是MobileNetV3网络一个重要模块,目的是估计特征图每个特征通道重要性,给特征图每个特征分配权重,提高网络的表达能力。但是,对于文本检测,输入网络的分辨率比较大,一般是640
\*
640,利用SE模块估计特征图每个特征通道重要性比较困难,网络提升能力有限,但是该模块又比较耗时,因此在PP-OCR系统中,文本检测的骨干网络没有使用SE模块。实验也表明,当去掉SE模块,超轻量模型大小可以减小40%,文本检测效果基本不受影响。详细可以参考PP-OCR技术文章,https://arxiv.org/abs/2009.09941.
<a
name=
"PaddleOCR实战问题"
></a>
## 【实战篇】PaddleOCR实战问题
...
...
@@ -602,7 +598,6 @@ det_db_unclip_ratio: 文本框扩张的系数,关系到文本框的大小``
ps
-axu
|
grep
train.py |
awk
'{print $2}'
| xargs
kill
-9
```
#### Q3.3.5:可不可以将pretrain_weights设置为空呢?想从零开始训练一个model
**A**
:这个是可以的,在训练通用识别模型的时候,pretrain_weights就设置为空,但是这样可能需要更长的迭代轮数才能达到相同的精度。
...
...
@@ -710,6 +705,14 @@ ps -axu | grep train.py | awk '{print $2}' | xargs kill -9
**A**
:cosine_decay表示在训练的过程中,学习率按照cosine的变化趋势逐渐下降至0,在迭代轮数更长的情况下,比常量的学习率变化策略会有更好的收敛效果,因此在实际训练的时候,均采用了cosine_decay,来获得精度更高的模型。
#### Q3.3.27: PaddleOCR关于文本识别模型的训练,支持的数据增强方式有哪些?
**A**
:文本识别支持的数据增强方式有随机小幅度裁剪、图像平衡、添加白噪声、颜色漂移、图像反色和Text Image Augmentation(TIA)变换等。可以参考
[
代码
](
https://github.com/PaddlePaddle/PaddleOCR/blob/17346d854e90e95decdc8585479924d9cb03831c/ppocr/data/imaug/rec_img_aug.py
)
中的warp函数。
#### Q3.3.28: 关于dygraph分支中,文本识别模型训练,要使用数据增强应该如何设置?
**A**
:可以参考
[
配置文件
](
PaddleOCR/configs/rec/ch_ppocr_v2.0/rec_chinese_lite_train_v2.0.yml
)
在Train
[
'dataset'
][
'transforms'
]
添加RecAug字段,使数据增强生效。可以通过添加对aug_prob设置,表示每种数据增强采用的概率。aug_prob默认是0.4.由于tia数据增强特殊性,默认不采用,可以通过添加use_tia设置,使tia数据增强生效。详细设置可以参考
[
ISSUE 1744
](
https://github.com/PaddlePaddle/PaddleOCR/issues/1744
)
。
<a
name=
"预测部署3"
></a>
### 预测部署
...
...
@@ -823,13 +826,13 @@ 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
#### Q3.4.25
: PaddleOCR模型Python端预测和C++预测结果不一致?
#### Q3.4.25: PaddleOCR模型Python端预测和C++预测结果不一致?
正常来说,python端预测和C++预测文本是一致的,如果预测结果差异较大,
建议首先排查diff出现在检测模型还是识别模型,或者尝试换其他模型是否有类似的问题。
其次,检查python端和C++端数据处理部分是否存在差异,建议保存环境,更新PaddleOCR代码再试下。
如果更新代码或者更新代码都没能解决,建议在PaddleOCR微信群里或者issue中抛出您的问题。
### Q3.4.26: 目前paddle hub serving 只支持 imgpath,如果我想用imgurl 去哪里改呢?
###
#
Q3.4.26: 目前paddle hub serving 只支持 imgpath,如果我想用imgurl 去哪里改呢?
**A**
:图片是在这里读取的:https://github.com/PaddlePaddle/PaddleOCR/blob/67ef25d593c4eabfaaceb22daade4577f53bed81/deploy/hubserving/ocr_system/module.py#L55,
可以参考下面的写法,将url path转化为np array(https://cloud.tencent.com/developer/article/1467840)
...
...
@@ -839,7 +842,14 @@ img_array = np.array(bytearray(response.read()), dtype=np.uint8)
img = cv.imdecode(img_array, -1)
```
### Q3.4.27: C++ 端侧部署可以只对OCR的检测部署吗?
###
#
Q3.4.27: C++ 端侧部署可以只对OCR的检测部署吗?
**A**
:可以的,识别和检测模块是解耦的。如果想对检测部署,需要自己修改一下main函数,
只保留检测相关就可以:https://github.com/PaddlePaddle/PaddleOCR/blob/de3e2e7cd3b8b65ee02d7a41e570fa5b511a3c1d/deploy/cpp_infer/src/main.cpp#L72
#### Q3.4.28: PP-OCR系统中,文本检测的结果有置信度吗?
**A**
:文本检测的结果有置信度,由于推理过程中没有使用,所以没有显示的返回到最终结果中。如果需要文本检测结果的置信度,可以在
[
文本检测DB的后处理代码
](
https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/ppocr/postprocess/db_postprocess.py
)
的155行,添加scores信息。这样,在
[
检测预测代码
](
https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/tools/infer/predict_det.py
)
的197行,就可以拿到文本检测的scores信息。
#### Q3.4.29: DB文本检测,特征提取网络金字塔构建的部分代码在哪儿?
**A**
:特征提取网络金字塔构建的部分:
[
代码位置
](
https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/ppocr/modeling/necks/db_fpn.py
)
。ppocr/modeling文件夹里面是组网相关的代码,其中architectures是文本检测或者文本识别整体流程代码;backbones是骨干网络相关代码;necks是类似与FPN的颈函数代码;heads是提取文本检测或者文本识别预测结果相关的头函数;transforms是类似于TPS特征预处理模块。更多的信息可以参考
[
代码组织结构
](
https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/doc/doc_ch/tree.md
)
。
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录