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

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

...

class ModelConfig(object):

# Number of the filters for convolution group.

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]来训练模型。

【参考文献】

  1. Google Now Using ReCAPTCHA To Decode Street View Addresses
  2. Focused Scene Text
  3. SynthText in the Wild Dataset

end

原文发布于微信公众号 - PaddlePaddle(PaddleOpenSource)

原文发表时间:2018-03-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据挖掘DT机器学习

Weka中BP神经网络的实践(参数调整以及结果分析)

本来想的是以理论和实践相结合,前面讲讲神经网络,后面简单讲下在weka中怎么使用BP神经网络,可惜最后时间不够。因为是讲稿,讲的要比写的多,所以很多地方口语化和...

6028
来自专栏程序员的知识天地

Python学习,这有可能是最详细的PIL库基本概念文章了

PIL有如下几个模块:Image模块、ImageChops模块、ImageCrackCode模块、ImageDraw模块、ImageEnhance模块、Imag...

1033
来自专栏Python小屋

Python+pillow计算椭圆图形几何中心

本文所用测试图像文件位于当前文件夹的testimages子文件夹中,并且图像以白色为背景。 from PIL import Image import os ...

3996
来自专栏人工智能LeadAI

构建并用 TensorFlow Serving 部署 Wide & Deep 模型

4816
来自专栏云时之间

深度学习与TensorFlow:VGG论文复现

3408
来自专栏PaddlePaddle

【图像分类】如何转化模型文件

场景文字识别 图像相比文字能够提供更加生动、容易理解及更具艺术感的信息,是人们转递与交换信息的重要来源。图像分类是根据图像的语义信息对不同类别图像进行区分,是计...

3515
来自专栏人工智能LeadAI

深度学习与TensorFlow:VGG论文复现

上一篇文章我们介绍了下VGG这一个经典的深度学习模型,今天便让我们通过使用VGG开源的VGG16模型去复现一下该论文.

1253
来自专栏AI研习社

Github 代码实践:Pytorch 实现的语义分割器

使用Detectron预训练权重输出 *e2e_mask_rcnn-R-101-FPN_2x* 的示例

2362
来自专栏编程

隐马尔科夫模型 python 实现简单拼音输入法

关键时刻,第一时间送达! ? 在网上看到一篇关于隐马尔科夫模型的介绍,觉得简直不能再神奇,又在网上找到大神的一篇关于如何用隐马尔可夫模型实现中文拼音输入的博客(...

3560
来自专栏简书专栏

基于tensorflow+CNN的新闻文本分类

tensorflow是谷歌google的深度学习框架,tensor中文叫做张量,flow叫做流。 CNN是convolutional neural netwo...

4264

扫码关注云+社区

领取腾讯云代金券