Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
models
提交
d38f9aa9
M
models
项目概览
PaddlePaddle
/
models
大约 1 年 前同步成功
通知
222
Star
6828
Fork
2962
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
602
列表
看板
标记
里程碑
合并请求
255
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
models
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
602
Issue
602
列表
看板
标记
里程碑
合并请求
255
合并请求
255
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
d38f9aa9
编写于
4月 01, 2018
作者:
W
wanghaoshuang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Format readme.
上级
e4fa9682
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
42 addition
and
24 deletion
+42
-24
fluid/ocr_recognition/README.md
fluid/ocr_recognition/README.md
+42
-24
未找到文件。
fluid/ocr_recognition/README.md
浏览文件 @
d38f9aa9
...
@@ -8,7 +8,9 @@
...
@@ -8,7 +8,9 @@
这里将介绍如何在PaddlePaddle fluid下使用CRNN-CTC 和 CRNN-Attention模型对图片中的文字内容进行识别。
这里将介绍如何在PaddlePaddle fluid下使用CRNN-CTC 和 CRNN-Attention模型对图片中的文字内容进行识别。
## 1. CRNN-CTC
## 1. CRNN-CTC
本章的任务是识别含有单行汉语字符图片,首先采用卷积将图片转为
`features map`
, 然后使用
`im2sequence op`
将
`features map`
转为
`sequence`
,经过
`双向GRU RNN`
得到每个step的汉语字符的概率分布。训练过程选用的损失函数为CTC loss,最终的评估指标为
`instance error rate`
。
本章的任务是识别含有单行汉语字符图片,首先采用卷积将图片转为
`features map`
, 然后使用
`im2sequence op`
将
`features map`
转为
`sequence`
,经过
`双向GRU RNN`
得到每个step的汉语字符的概率分布。训练过程选用的损失函数为CTC loss,最终的评估指标为
`instance error rate`
。
本路径下各个文件的作用如下:
本路径下各个文件的作用如下:
-
**ctc_reader.py : **
下载、读取、处理数据。提供方法
`train()`
和
`test()`
分别产生训练集和测试集的数据迭代器。
-
**ctc_reader.py : **
下载、读取、处理数据。提供方法
`train()`
和
`test()`
分别产生训练集和测试集的数据迭代器。
...
@@ -16,10 +18,11 @@
...
@@ -16,10 +18,11 @@
-
**ctc_train.py : **
用于模型的训练,可通过命令
`python train.py --help`
获得使用方法。
-
**ctc_train.py : **
用于模型的训练,可通过命令
`python train.py --help`
获得使用方法。
-
**inference.py : **
加载训练好的模型文件,对新数据进行预测。可通过命令
`python inference.py --help`
获得使用方法。
-
**inference.py : **
加载训练好的模型文件,对新数据进行预测。可通过命令
`python inference.py --help`
获得使用方法。
-
**eval.py : **
评估模型在指定数据集上的效果。可通过命令
`python inference.py --help`
获得使用方法。
-
**eval.py : **
评估模型在指定数据集上的效果。可通过命令
`python inference.py --help`
获得使用方法。
-
**utility.py : **
实现的一些通用方法,包括参数配置、tensor的构造等。
-
**utility.py : **
实现的一些通用方法,包括参数配置、tensor的构造等。
### 1.1 数据
### 1.1 数据
数据的下载和简单预处理都在
`ctc_reader.py`
中实现。
数据的下载和简单预处理都在
`ctc_reader.py`
中实现。
#### 1.1.1 数据格式
#### 1.1.1 数据格式
...
@@ -39,7 +42,9 @@
...
@@ -39,7 +42,9 @@
#### 1.1.2 数据准备
#### 1.1.2 数据准备
**A. 训练集**
**A. 训练集**
我们需要把所有参与训练的图片放入同一个文件夹,暂且记为
`train_images`
。然后用一个list文件存放每张图片的信息,包括图片大小、图片名称和对应的label,这里暂记该list文件为
`train_list`
,其格式如下所示:
我们需要把所有参与训练的图片放入同一个文件夹,暂且记为
`train_images`
。然后用一个list文件存放每张图片的信息,包括图片大小、图片名称和对应的label,这里暂记该list文件为
`train_list`
,其格式如下所示:
```
```
...
@@ -50,9 +55,12 @@
...
@@ -50,9 +55,12 @@
...
...
157 48 00387_0622.jpg 2397,1707,5919,1278
157 48 00387_0622.jpg 2397,1707,5919,1278
```
```
<center>
文件train_list
</center>
<center>
文件train_list
</center>
上述文件中的每一行表示一张图片,每行被空格分为四列,前两列分别表示图片的宽和高,第三列表示图片的名称,第四列表示该图片对应的sequence label。
上述文件中的每一行表示一张图片,每行被空格分为四列,前两列分别表示图片的宽和高,第三列表示图片的名称,第四列表示该图片对应的sequence label。
最终我们应有以下类似文件结构:
最终我们应有以下类似文件结构:
```
```
|-train_data
|-train_data
|- train_list
|- train_list
...
@@ -62,16 +70,21 @@
...
@@ -62,16 +70,21 @@
|- 00007_0219.jpg
|- 00007_0219.jpg
| ...
| ...
```
```
在训练时,我们通过选项
`--train_images`
和
`--train_list`
分别设置准备好的
`train_images`
和
`train_list`
。
在训练时,我们通过选项
`--train_images`
和
`--train_list`
分别设置准备好的
`train_images`
和
`train_list`
。
>**注:** 如果`--train_images` 和 `--train_list`都未设置或设置为None, ctc_reader.py会自动下载使用[示例数据](http://cloud.dlnel.org/filepub/?uuid=df937251-3c0b-480d-9a7b-0080dfeee65c),并将其缓存到`$HOME/.cache/paddle/dataset/ctc_data/data/` 路径下。
>**注:** 如果`--train_images` 和 `--train_list`都未设置或设置为None, ctc_reader.py会自动下载使用[示例数据](http://cloud.dlnel.org/filepub/?uuid=df937251-3c0b-480d-9a7b-0080dfeee65c),并将其缓存到`$HOME/.cache/paddle/dataset/ctc_data/data/` 路径下。
**B. 测试集和评估集**
**B. 测试集和评估集**
测试集、评估集的准备方式与训练集相同。
测试集、评估集的准备方式与训练集相同。
在训练阶段,测试集的路径通过train.py的选项
`--test_images`
和
`--test_list`
来设置。
在训练阶段,测试集的路径通过train.py的选项
`--test_images`
和
`--test_list`
来设置。
在评估时,评估集的路径通过eval.py的选项
`--input_images_dir`
和
`--input_images_list`
来设置。
在评估时,评估集的路径通过eval.py的选项
`--input_images_dir`
和
`--input_images_list`
来设置。
**C. 待预测数据集**
**C. 待预测数据集**
待预测数据集的格式与训练集也类似,只不过list文件中的最后一列可以放任意占位字符或字符串,如下所示:
待预测数据集的格式与训练集也类似,只不过list文件中的最后一列可以放任意占位字符或字符串,如下所示:
```
```
...
@@ -80,66 +93,70 @@
...
@@ -80,66 +93,70 @@
338 48 00007_0219.jpg s
338 48 00007_0219.jpg s
...
...
```
```
在做inference时,通过inference.py的选项
`--input_images_dir`
和
`--input_images_list`
来设置输入数据的路径。
在做inference时,通过inference.py的选项
`--input_images_dir`
和
`--input_images_list`
来设置输入数据的路径。
#### 1.2 训练
#### 1.2 训练
通过以下命令调用训练脚本进行训练:
通过以下命令调用训练脚本进行训练:
```
```
python ctc_train.py [options]
python ctc_train.py [options]
```
```
其中,options支持配置以下训练相关的参数:
其中,options支持配置以下训练相关的参数:
**- -batch_size : **
Minibatch 大小,默认为32.
**- -batch_size : **
Minibatch 大小,默认为32.
**- -pass_num : **
训练多少个pass。默认为100。
**- -pass_num : **
训练多少个pass。默认为100。
**- -log_period : **
每隔多少个minibatch打印一次训练日志, 默认为1000.
**- -log_period : **
每隔多少个minibatch打印一次训练日志, 默认为1000.
**- -save_model_period : **
每隔多少个minibatch保存一次模型。默认为15000。
**- -save_model_period : **
每隔多少个minibatch保存一次模型。默认为15000。
如果设置为-1,则永不保存模型。
如果设置为-1,则永不保存模型。
**- -eval_period : **
每隔多少个minibatch用测试集测试一次模型。默认为15000。如果设置为-1,则永不进行测试。
**- -eval_period : **
每隔多少个minibatch用测试集测试一次模型。默认为15000。如果设置为-1,则永不进行测试。
**- -save_model_dir : **
保存模型文件的路径,默认为“./models”,如果指定路径不存在,则会自动创建路径。
**- -save_model_dir : **
保存模型文件的路径,默认为“./models”,如果指定路径不存在,则会自动创建路径。
**- -init_model : **
初始化模型的路径。如果模型是以单个文件存储的,这里需要指定具体文件的路径;如果模型是以多个文件存储的,这里只需指定多个文件所在文件夹的路径。该选项默认为 None,意思是不用预训练模型做初始化。
**- -init_model : **
初始化模型的路径。如果模型是以单个文件存储的,这里需要指定具体文件的路径;如果模型是以多个文件存储的,这里只需指定多个文件所在文件夹的路径。该选项默认为 None,意思是不用预训练模型做初始化。
**- -learning_rate : **
全局learning rate. 默认为 0.001.
**- -learning_rate : **
全局learning rate. 默认为 0.001.
**- -l2 : **
L2 regularizer. 默认为0.0004.
**- -l2 : **
L2 regularizer. 默认为0.0004.
**- -max_clip : **
Max gradient clipping threshold. 默认为10.0.
**- -max_clip : **
Max gradient clipping threshold. 默认为10.0.
**- -momentum : **
Momentum. 默认为0.9.
**- -momentum : **
Momentum. 默认为0.9.
**- -rnn_hidden_size: **
RNN 隐藏层大小。 默认为200。
**- -rnn_hidden_size: **
RNN 隐藏层大小。 默认为200。
**- -device DEVICE : **
设备ID。设置为-1,训练在CPU执行;设置为0,训练在GPU上执行。默认为0。
**- -device DEVICE : **
设备ID。设置为-1,训练在CPU执行;设置为0,训练在GPU上执行。默认为0。
**- -min_average_window : **
Min average window. 默认为10000.
**- -min_average_window : **
Min average window. 默认为10000.
**- -max_average_window : **
Max average window. 建议大小设置为一个pass内minibatch的数量。默认为15625.
**- -max_average_window : **
Max average window. 建议大小设置为一个pass内minibatch的数量。默认为15625.
**- -average_window : **
Average window. 默认为0.15.
**- -average_window : **
Average window. 默认为0.15.
**- -parallel : **
是否使用多卡进行训练。默认为True.
**- -parallel : **
是否使用多卡进行训练。默认为True.
**- -train_images : **
存放训练集图片的路径,如果设置为None,ctc_reader会自动下载使用默认数据集。如果使用自己的数据进行训练,需要修改该选项。默认为None。
**- -train_images : **
存放训练集图片的路径,如果设置为None,ctc_reader会自动下载使用默认数据集。如果使用自己的数据进行训练,需要修改该选项。默认为None。
**- -train_list : **
存放训练集图片信息的list文件,如果设置为None,ctc_reader会自动下载使用默认数据集。如果使用自己的数据进行训练,需要修改该选项。默认为None。
**- -train_list : **
存放训练集图片信息的list文件,如果设置为None,ctc_reader会自动下载使用默认数据集。如果使用自己的数据进行训练,需要修改该选项。默认为None。
**- -test_images : **
存放测试集图片的路径,如果设置为None,ctc_reader会自动下载使用默认数据集。如果使用自己的数据进行测试,需要修改该选项。默认为None。
**- -test_images : **
存放测试集图片的路径,如果设置为None,ctc_reader会自动下载使用默认数据集。如果使用自己的数据进行测试,需要修改该选项。默认为None。
**- -test_list : **
存放测试集图片信息的list文件,如果设置为None,ctc_reader会自动下载使用默认数据集。如果使用自己的数据进行测试,需要修改该选项。默认为None。
**- -test_list : **
存放测试集图片信息的list文件,如果设置为None,ctc_reader会自动下载使用默认数据集。如果使用自己的数据进行测试,需要修改该选项。默认为None。
**- -num_classes : **
字符集的大小。如果设置为None, 则使用ctc_reader提供的字符集大小。如果使用自己的数据进行训练,需要修改该选项。默认为None.
**- -num_classes : **
字符集的大小。如果设置为None, 则使用ctc_reader提供的字符集大小。如果使用自己的数据进行训练,需要修改该选项。默认为None.
### 1.3 Inference
### 1.3 Inference
通过以下命令调用预测脚本进行预测:
通过以下命令调用预测脚本进行预测:
```
```
python inference.py [options]
python inference.py [options]
```
```
...
@@ -148,17 +165,18 @@ python inference.py [options]
...
@@ -148,17 +165,18 @@ python inference.py [options]
**--model_path : **
用来做预测的模型文件。如果模型是以单个文件存储的,这里需要指定具体文件的路径;如果模型是以多个文件存储的,这里只需指定多个文件所在文件夹的路径。为必设置选项。
**--model_path : **
用来做预测的模型文件。如果模型是以单个文件存储的,这里需要指定具体文件的路径;如果模型是以多个文件存储的,这里只需指定多个文件所在文件夹的路径。为必设置选项。
**--input_images_dir : **
存放待预测图片的文件夹路径。如果设置为None, 则使用ctc_reader提供的默认数据。默认为None.
**--input_images_dir : **
存放待预测图片的文件夹路径。如果设置为None, 则使用ctc_reader提供的默认数据。默认为None.
**--input_images_list : **
存放待预测图片信息的list文件的路径。如果设置为None, 则使用ctc_reader提供的默认数据。默认为None.
**--input_images_list : **
存放待预测图片信息的list文件的路径。如果设置为None, 则使用ctc_reader提供的默认数据。默认为None.
**--device DEVICE :**
设备ID。设置为-1,运行在CPU上;设置为0,运行在GPU上。默认为0。
**--device DEVICE :**
设备ID。设置为-1,运行在CPU上;设置为0,运行在GPU上。默认为0。
预测结果会print到标准输出。
预测结果会print到标准输出。
### 1.4 Evaluate
### 1.4 Evaluate
通过以下命令调用评估脚本用指定数据集对模型进行评估:
通过以下命令调用评估脚本用指定数据集对模型进行评估:
```
```
python eval.py [options]
python eval.py [options]
```
```
...
@@ -167,8 +185,8 @@ python eval.py [options]
...
@@ -167,8 +185,8 @@ python eval.py [options]
**--model_path : **
待评估模型的文件路径。如果模型是以单个文件存储的,这里需要指定具体文件的路径;如果模型是以多个文件存储的,这里只需指定多个文件所在文件夹的路径。为必设置选项。
**--model_path : **
待评估模型的文件路径。如果模型是以单个文件存储的,这里需要指定具体文件的路径;如果模型是以多个文件存储的,这里只需指定多个文件所在文件夹的路径。为必设置选项。
**--input_images_dir : **
存放待评估图片的文件夹路径。如果设置为None, 则使用ctc_reader提供的默认数据。默认为None.
**--input_images_dir : **
存放待评估图片的文件夹路径。如果设置为None, 则使用ctc_reader提供的默认数据。默认为None.
**--input_images_list : **
存放待评估图片信息的list文件的路径。如果设置为None, 则使用ctc_reader提供的默认数据。默认为None.
**--input_images_list : **
存放待评估图片信息的list文件的路径。如果设置为None, 则使用ctc_reader提供的默认数据。默认为None.
**--device DEVICE :**
设备ID。设置为-1,运行在CPU上;设置为0,运行在GPU上。默认为0。
**--device DEVICE :**
设备ID。设置为-1,运行在CPU上;设置为0,运行在GPU上。默认为0。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录