Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_41840029
PaddleOCR
提交
6644fb96
P
PaddleOCR
项目概览
weixin_41840029
/
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看板
未验证
提交
6644fb96
编写于
10月 26, 2020
作者:
D
dyning
提交者:
GitHub
10月 26, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #991 from WenmuZhou/fix_faq
近期更新问题更新
上级
e81c10e0
a0708d2e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
48 addition
and
21 deletion
+48
-21
README_ch.md
README_ch.md
+1
-1
doc/doc_ch/FAQ.md
doc/doc_ch/FAQ.md
+47
-20
未找到文件。
README_ch.md
浏览文件 @
6644fb96
...
...
@@ -4,7 +4,7 @@
PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力使用者训练出更好的模型,并应用落地。
**近期更新**
-
2020.10.
19
[
FAQ
](
./doc/doc_ch/FAQ.md
)
新增5个高频问题,共计89
个常见问题及解答,并且计划以后每周一都会更新,欢迎大家持续关注。
-
2020.10.
26
[
FAQ
](
./doc/doc_ch/FAQ.md
)
新增5个高频问题,共计94
个常见问题及解答,并且计划以后每周一都会更新,欢迎大家持续关注。
-
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模型,媲美商业效果。
[
模型下载
](
#模型下载
)
...
...
doc/doc_ch/FAQ.md
浏览文件 @
6644fb96
...
...
@@ -9,43 +9,45 @@
## PaddleOCR常见问题汇总(持续更新)
*
[
近期更新(2020.10.
19
)
](
#近期更新
)
*
[
近期更新(2020.10.
26
)
](
#近期更新
)
*
[
【精选】OCR精选10个问题
](
#OCR精选10个问题
)
*
[
【理论篇】OCR通用2
1
个问题
](
#OCR通用问题
)
*
[
基础知识
3
题
](
#基础知识
)
*
[
【理论篇】OCR通用2
3
个问题
](
#OCR通用问题
)
*
[
基础知识
5
题
](
#基础知识
)
*
[
数据集4题
](
#数据集
)
*
[
模型训练调优6题
](
#模型训练调优
)
*
[
预测部署8题
](
#预测部署
)
*
[
【实战篇】PaddleOCR实战
58
个问题
](
#PaddleOCR实战问题
)
*
[
使用咨询
17
题
](
#使用咨询
)
*
[
【实战篇】PaddleOCR实战
61
个问题
](
#PaddleOCR实战问题
)
*
[
使用咨询
20
题
](
#使用咨询
)
*
[
数据集10题
](
#数据集
)
*
[
模型训练调优15题
](
#模型训练调优
)
*
[
预测部署16题
](
#预测部署
)
<a
name=
"近期更新"
></a>
## 近期更新(2020.10.
19
)
## 近期更新(2020.10.
26
)
#### Q3.3.14:使用之前版本的代码加载最新1.1版的通用检测预训练模型,提示在模型文件.pdparams中找不到bn4e_branch2a_variance是什么情况?是网络结构发生了变化吗?
**A**
:1.1版的轻量检测模型去掉了mv3结构中的se模块,可以对比下这两个配置文件:
[
det_mv3_db.yml
](
https://github.com/PaddlePaddle/PaddleOCR/blob/develop/configs/det/det_mv3_db.yml
)
,
[
det_mv3_db_v1.1.yml
](
https://github.com/PaddlePaddle/PaddleOCR/blob/develop/configs/det/det_mv3_db_v1.1.yml
)
#### Q2.1.4 印章如何识别
**A**
: 1. 使用带tps的识别网络或abcnet,2.使用极坐标变换将图片拉平之后使用crnn
#### Q3.3.15: 训练中使用的字典需要与加载的预训练模型使用的字典一样吗?
**A**
:是的,训练的字典与你使用该模型进行预测的字典需要保持一致的。
#### Q2.1.5 多语言的字典里是混合了不同的语种,这个是有什么讲究吗?统一到一个字典里会对精度造成多大的损失?
**A**
:统一到一个字典里,会造成最后一层FC过大,增加模型大小。如果有特殊需求的话,可以把需要的几种语言合并字典训练模型,合并字典之后如果引入过多的形近字,可能会造成精度损失,字符平衡的问题可能也需要考虑一下。在PaddleOCR里暂时将语言字典分开。
#### Q3.
2.10: crnn+ctc模型训练所用的垂直文本(旋转至水平方向)是如何生成的
?
#### Q3.
3.16: 如何对检测模型finetune,比如冻结前面的层或某些层使用小的学习率学习
?
**A**
:方法与合成水平方向文字一致,只是将字体替换成了垂直字体。
**A**
:如果是冻结某些层,可以将变量的stop_gradient属性设置为True,这样计算这个变量之前的所有参数都不会更新了,参考:https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/faq/train_cn.html#id4
如果对某些层使用更小的学习率学习,静态图里还不是很方便,一个方法是在参数初始化的时候,给权重的属性设置固定的学习率,参考:https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/fluid/param_attr/ParamAttr_cn.html#paramattr
实际上我们实验发现,直接加载模型去fine-tune,不设置某些层不同学习率,效果也都不错
#### Q3.4.15: hubserving、pdserving这两种部署方式区别是什么?
#### Q3.3.17: 使用通用中文模型作为预训练模型,更改了字典文件,出现ctc_fc_b not used的错误
**A**
:修改了字典之后,识别模型的最后一层FC纬度发生了改变,没有办法加载参数。这里是一个警告,可以忽略,正常训练即可。
**A**
:hubserving原本是paddlehub的配套服务部署工具,可以很方便的将paddlehub内置的模型部署为服务,paddleocr使用了这个功能,并将模型路径等参数暴露出来方便用户自定义修改。paddle serving是面向所有paddle模型的部署工具,文档中可以看到我们提供了快速版和标准版,其中快速版和hubserving的本质是一样的,而标准版基于rpc,更稳定,更适合分布式部署。
#### Q3.4.16: hub serving部署服务时如何多gpu同时利用起来,export CUDA_VISIBLE_DEVICES=0,1 方式吗?
**A**
:hubserving的部署方式目前暂不支持多卡预测,除非手动启动多个serving,不同端口对应不同卡。或者可以使用paddleserving进行部署,部署工具已经发布:https://github.com/PaddlePaddle/PaddleOCR/tree/develop/deploy/pdserving ,在启动服务时--gpu_id 0,1 这样就可以
#### Q3.1.18:如何加入自己的检测算法?
**A**
:1. 在ppocr/modeling对应目录下分别选择backbone,head。如果没有可用的可以新建文件并添加
2.
在ppocr/data下选择对应的数据处理处理方式,如果没有可用的可以新建文件并添加
3.
在ppocr/losses下新建文件并编写loss
4.
在ppocr/postprocess下新建文件并编写后处理算法
5.
将上面四个步骤里新添加的类或函数参照yml文件写到配置中
<a
name=
"OCR精选10个问题"
></a>
## 【精选】OCR精选10个问题
...
...
@@ -151,6 +153,11 @@
**A**
:端到端在文字分布密集的业务场景,效率会比较有保证,精度的话看自己业务数据积累情况,如果行级别的识别数据积累比较多的话two-stage会比较好。百度的落地场景,比如工业仪表识别、车牌识别都用到端到端解决方案。
#### Q2.1.4 印章如何识别
**A**
: 1. 使用带tps的识别网络或abcnet,2.使用极坐标变换将图片拉平之后使用crnn
#### Q2.1.5 多语言的字典里是混合了不同的语种,这个是有什么讲究吗?统一到一个字典里会对精度造成多大的损失?
**A**
:统一到一个字典里,会造成最后一层FC过大,增加模型大小。如果有特殊需求的话,可以把需要的几种语言合并字典训练模型,合并字典之后如果引入过多的形近字,可能会造成精度损失,字符平衡的问题可能也需要考虑一下。在PaddleOCR里暂时将语言字典分开。
### 数据集
...
...
@@ -329,6 +336,13 @@
|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:如何加入自己的检测算法?
**A**
:1. 在ppocr/modeling对应目录下分别选择backbone,head。如果没有可用的可以新建文件并添加
2.
在ppocr/data下选择对应的数据处理处理方式,如果没有可用的可以新建文件并添加
3.
在ppocr/losses下新建文件并编写loss
4.
在ppocr/postprocess下新建文件并编写后处理算法
5.
将上面四个步骤里新添加的类或函数参照yml文件写到配置中
### 数据集
...
...
@@ -388,6 +402,7 @@
**A**
:方法与合成水平方向文字一致,只是将字体替换成了垂直字体。
### 模型训练调优
#### Q3.3.1:文本长度超过25,应该怎么处理?
...
...
@@ -465,6 +480,18 @@ return paddle.reader.multiprocess_reader(readers, False, queue_size=320)
**A**
:是的,训练的字典与你使用该模型进行预测的字典需要保持一致的。
#### Q3.3.16: 如何对检测模型finetune,比如冻结前面的层或某些层使用小的学习率学习?
**A**
:
**A**
:如果是冻结某些层,可以将变量的stop_gradient属性设置为True,这样计算这个变量之前的所有参数都不会更新了,参考:https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/faq/train_cn.html#id4
如果对某些层使用更小的学习率学习,静态图里还不是很方便,一个方法是在参数初始化的时候,给权重的属性设置固定的学习率,参考:https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/fluid/param_attr/ParamAttr_cn.html#paramattr
实际上我们实验发现,直接加载模型去fine-tune,不设置某些层不同学习率,效果也都不错
#### Q3.3.17: 使用通用中文模型作为预训练模型,更改了字典文件,出现ctc_fc_b not used的错误
**A**
:修改了字典之后,识别模型的最后一层FC纬度发生了改变,没有办法加载参数。这里是一个警告,可以忽略,正常训练即可。
### 预测部署
#### Q3.4.1:如何pip安装opt模型转换工具?
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录