README.md 4.8 KB
Newer Older
P
peterzhang2029 已提交
1 2 3 4 5 6
# 场景文字识别 (STR, Scene Text Recognition)

## STR任务简介

在现实生活中,包括路牌、菜单、大厦标语在内的很多场景均会有文字出现,这些场景的照片中的文字为图片场景的理解提供了更多信息,\[[1](#参考文献)\]使用深度学习模型自动识别路牌中的文字,帮助街景应用获取更加准确的地址信息。

P
peterzhang2029 已提交
7
本例将演示如何用 PaddlePaddle 完成 **场景文字识别 (STR, Scene Text Recognition)** 任务。以下图为例,给定一个场景图片,STR需要从图片中识别出对应的文字"keep"。
P
peterzhang2029 已提交
8 9 10 11 12 13

<p align="center">
<img src="./images/503.jpg"/><br/>
图 1. 数据示例 "keep"
</p>

14

P
peterzhang2029 已提交
15 16
## 使用 PaddlePaddle 训练与预测

P
peterzhang2029 已提交
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
### 安装依赖包
```bash
pip install -r requirements.txt
```

### 指定训练配置参数

通过 `config.py` 脚本修改训练和模型配置参数,脚本中有对可配置参数的详细解释,示例如下:
```python
class TrainerConfig(object):

      # Whether to use GPU in training or not.
      use_gpu = True
      # The number of computing threads.
      trainer_count = 1

      # The training batch size.
      batch_size = 10

      ...


class ModelConfig(object):

      # Number of the filters for convolution group.
      filter_num = 8

      ...
```
修改 `config.py` 对参数进行调整。例如,通过修改 `use_gpu` 参数来指定是否使用 GPU 进行训练。

P
peterzhang2029 已提交
48
### 模型训练
49
训练脚本 [./train.py](./train.py) 中设置了如下命令行参数:
P
peterzhang2029 已提交
50 51

```
P
peterzhang2029 已提交
52 53 54 55 56 57 58 59
Options:
  --train_file_list_path TEXT  The path of the file which contains path list
                               of train image files.  [required]
  --test_file_list_path TEXT   The path of the file which contains path list
                               of test image files.  [required]
  --model_save_dir TEXT        The path to save the trained models (default:
                               'models').
  --help                       Show this message and exit.
P
peterzhang2029 已提交
60

P
peterzhang2029 已提交
61
```
P
peterzhang2029 已提交
62

63
- `train_file_list` 训练数据的列表文件,每行一个路径加对应的text,具体格式为:
P
peterzhang2029 已提交
64 65
```
word_1.png, "PROPER"
66
word_2.png, "FOOD"
P
peterzhang2029 已提交
67
```
P
peterzhang2029 已提交
68 69
- `test_file_list` 测试数据的列表文件,格式同上。
- `model_save_dir` 模型参数会的保存目录目录, 默认为当前目录下的`models`目录。
P
peterzhang2029 已提交
70 71 72

### 具体执行的过程:

73
1.从官方网站下载数据\[[2](#参考文献)\](Task 2.3: Word Recognition (2013 edition)),会有三个文件: Challenge2_Training_Task3_Images_GT.zip、Challenge2_Test_Task3_Images.zip和 Challenge2_Test_Task3_GT.txt。
P
peterzhang2029 已提交
74 75
分别对应训练集的图片和图片对应的单词,测试集的图片,测试数据对应的单词,然后执行以下命令,对数据解压并移动至目标文件夹:

P
peterzhang2029 已提交
76
```bash
P
peterzhang2029 已提交
77 78 79 80 81 82 83
mkdir -p data/train_data
mkdir -p data/test_data
unzip Challenge2_Training_Task3_Images_GT.zip -d data/train_data
unzip Challenge2_Test_Task3_Images.zip -d data/test_data
mv Challenge2_Test_Task3_GT.txt data/test_data
```

P
peterzhang2029 已提交
84
2.获取训练数据文件夹中 `gt.txt` 的路径 (data/train_data)和测试数据文件夹中`Challenge2_Test_Task3_GT.txt`的路径(data/test_data)。
P
peterzhang2029 已提交
85

P
peterzhang2029 已提交
86 87 88 89 90
3.执行如下命令进行训练:
```bash
python train.py \
--train_file_list_path 'data/train_data/gt.txt' \
--test_file_list_path 'data/test_data/Challenge2_Test_Task3_GT.txt'
P
peterzhang2029 已提交
91
```
P
peterzhang2029 已提交
92
4.训练过程中,模型参数会自动备份到指定目录,默认会保存在 `./models` 目录下。
P
peterzhang2029 已提交
93 94


P
peterzhang2029 已提交
95 96 97 98 99 100 101 102 103
### 预测
预测部分由 `infer.py` 完成,使用的是最优路径解码算法,即:在每个时间步选择一个概率最大的字符。在使用过程中,需要在 `infer.py` 中指定具体的模型目录、图片固定尺寸、batch_size(默认设置为10)和图片文件的列表文件。执行如下代码:
```bash
python infer.py \
--model_path 'models/params_pass_00000.tar.gz' \
--image_shape '173,46' \
--infer_file_list_path 'data/test_data/Challenge2_Test_Task3_GT.txt'
```
即可进行预测。
P
peterzhang2029 已提交
104 105 106 107 108 109 110 111 112

### 其他数据集

-   [SynthText in the Wild Dataset](http://www.robots.ox.ac.uk/~vgg/data/scenetext/)(41G)
-   [ICDAR 2003 Robust Reading Competitions](http://www.iapr-tc11.org/mediawiki/index.php?title=ICDAR_2003_Robust_Reading_Competitions)

### 注意事项

- 由于模型依赖的 `warp CTC` 只有CUDA的实现,本模型只支持 GPU 运行
P
peterzhang2029 已提交
113
- 本模型参数较多,占用显存比较大,实际执行时可以调节`batch_size`控制显存占用
114
- 本模型使用的数据集较小,可以选用其他更大的数据集\[[3](#参考文献)\]来训练需要的模型
P
peterzhang2029 已提交
115 116 117 118

## 参考文献

1. [Google Now Using ReCAPTCHA To Decode Street View Addresses](https://techcrunch.com/2012/03/29/google-now-using-recaptcha-to-decode-street-view-addresses/)
119 120
2. [Focused Scene Text](http://rrc.cvc.uab.es/?ch=2&com=introduction)
3. [SynthText in the Wild Dataset](http://www.robots.ox.ac.uk/~vgg/data/scenetext/)