【场景文字识别】场景文字识别

导语

PaddlePaddle提供了丰富的运算单元,帮助大家以模块化的方式构建起千变万化的深度学习模型来解决不同的应用问题。这里,我们针对常见的机器学习任务,提供了不同的神经网络模型供大家学习和使用。本周推文目录如下:

3.19:【图像分类】

如何转化模型文件

3.20:【图像分类】

使用经典模型进行图像分类

3.21:【目标检测】

SSD目标检测

3.22:【场景文字识别】

场景文字识别

【场景文字识别】

|1. STR任务简介

许多场景图像中包含着丰富的文本信息,对理解图像信息有着重要作用,能够极大地帮助人们认知和理解场景图像的内容。场景文字识别是在图像背景复杂、分辨率低下、字体多样、分布随意等情况下,将图像信息转化为文字序列的过程,可认为是一种特别的翻译过程:将图像输入翻译为自然语言输出。场景图像文字识别技术的发展也促进了一些新型应用的产生,如通过自动识别路牌中的文字帮助街景应用获取更加准确的地址信息等。

在场景文字识别任务中,我们介绍如何将基于CNN的图像特征提取和基于RNN的序列翻译技术结合,免除人工定义特征,避免字符分割,使用自动学习到的图像特征,完成端到端地无约束字符定位和识别。

本例将演示如何用 PaddlePaddle 完成 场景文字识别 (STR, Scene Text Recognition) 。任务如下图所示,给定一张场景图片,STR需要从中识别出对应的文字"keep"。

图 1. 输入数据示例 "keep"

|2. 使用 PaddlePaddle 训练与预测

[1]安装依赖包

pip install -r requirements.txt

[2]修改配置参数

config.py脚本中包含了模型配置和训练相关的参数以及对应的详细解释,代码片段如下:

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

...

classModelConfig(object):

# Number of the filters for convolutiongroup.

filter_num = 8

...

修改config.py脚本可以实现对参数的调整。例如,通过修改use_gpu参数来指定是否使用 GPU 进行训练。

[3]模型训练

训练脚本 ./train.py 中设置了如下命令行参数:

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]

--label_dict_path TEXT

The path of label dictionary. If this parameter

is set, but the file does not exist, label

dictionay will be built from the training data

automatically. [required]

--model_save_dir TEXT

The path to save the trained models (default:

'models').

--help

Show this message and exit.

train_file_list:训练数据的列表文件,每行由图片的存储路径和对应的标记文本组成,格式为:

word_1.png, "PROPER"

word_2.png, "FOOD"

test_file_list:测试数据的列表文件,格式同上。

label_dict_path:训练数据中标记字典的存储路径,如果指定路径中字典文件不存在,程序会使用训练数据中的标记数据自动生成标记字典。

model_save_dir:模型参数的保存目录,默认为./models。

[4]具体执行的过程

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。 分别对应训练集的图片和图片对应的单词、测试集的图片、测试数据对应的单词。然后执行以下命令,对数据解压并移动至目标文件夹:

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

2.获取训练数据文件夹中gt.txt的路径 (data/train_data)和测试数据文件夹中Challenge2_Test_Task3_GT.txt的路径(data/test_data)。

3.执行如下命令进行训练:

python train.py\

--train_file_list_path'data/train_data/gt.txt' \

--test_file_list_path'data/test_data/Challenge2_Test_Task3_GT.txt' \

--label_dict_path'label_dict.txt'

4.训练过程中,模型参数会自动备份到指定目录,默认会保存在./models目录下。

[5]预测

预测部分由infer.py完成,使用的是最优路径解码算法,即:在每个时间步选择一个概率最大的字符。在使用过程中,需要在infer.py中指定具体的模型保存路径、图片固定尺寸、batch_size(默认为10)、标记词典路径和图片文件的列表文件。执行如下代码:

python infer.py\

--model_path'models/params_pass_00000.tar.gz' \

--image_shape'173,46' \

--label_dict_path'label_dict.txt' \

--infer_file_list_path'data/test_data/Challenge2_Test_Task3_GT.txt'

即可进行预测。

[6]其他数据集

SynthText in the Wild Dataset(41G)

(http://www.robots.ox.ac.uk/~vgg/data/scenetext/)

ICDAR 2003 Robust Reading Competitions

(http://www.iapr-tc11.org/mediawiki/index.php?title=ICDAR_2003_Robust_Reading_Competitions)

注意事项

由于模型依赖的warp CTC只有CUDA的实现,本模型只支持 GPU 运行。

本模型参数较多,占用显存比较大,实际执行时可以通过调节batch_size来控制显存占用。

本例使用的数据集较小,如有需要,可以选用其他更大的数据集[3]来训练模型。

【参考文献】

Google Now Using ReCAPTCHA To Decode Street View Addresses

Focused Scene Text

SynthText in the Wild Dataset

end

*原创贴,版权所有,未经许可,禁止转载

*值班小Paddle:wangp

*欢迎在留言区分享您的观点

*为了方便大家问题的跟进解决,我们采用Github Issue来采集信息和追踪进度。大家遇到问题请搜索Github Issue,问题未解决请优先在Github Issue上提问,有助于问题的积累和沉淀

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180322G1T7WV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券