简体中文 | English

Style Text

目录

一、工具简介

数据合成工具Style-Text - 图1

数据合成工具Style-Text - 图2

Style-Text数据合成工具是基于百度和华科合作研发的文本编辑算法《Editing Text in the Wild》https://arxiv.org/abs/1908.03047

不同于常用的基于GAN的数据合成工具,Style-Text主要框架包括:1.文本前景风格迁移模块 2.背景抽取模块 3.融合模块。经过这样三步,就可以迅速实现图像文本风格迁移。下图是一些该数据合成工具效果图。

数据合成工具Style-Text - 图3

二、环境配置

  1. 参考快速安装,安装PaddleOCR。
  2. 进入StyleText目录,下载模型,并解压:
  1. cd StyleText
  2. wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/style_text/style_text_models.zip
  3. unzip style_text_models.zip

如果您将模型保存再其他位置,请在configs/config.yml中修改模型文件的地址,修改时需要同时修改这三个配置:

  1. bg_generator:
  2. pretrain: style_text_models/bg_generator
  3. ...
  4. text_generator:
  5. pretrain: style_text_models/text_generator
  6. ...
  7. fusion_generator:
  8. pretrain: style_text_models/fusion_generator

三、快速上手

合成单张图

输入一张风格图和一段文字语料,运行tools/synth_image,合成单张图片,结果图像保存在当前目录下:

  1. python3 tools/synth_image.py -c configs/config.yml --style_image examples/style_images/2.jpg --text_corpus PaddleOCR --language en
  • 注1:语言选项和语料相对应,目前支持英文(en)、简体中文(ch)和韩语(ko)。
  • 注2:Style-Text生成的数据主要应用于OCR识别场景。基于当前PaddleOCR识别模型的设计,我们主要支持高度在32左右的风格图像。 如果输入图像尺寸相差过多,效果可能不佳。
  • 注3:可以通过修改配置文件configs/config.yml中的use_gpu(true或者false)参数来决定是否使用GPU进行预测。

例如,输入如下图片和语料”PaddleOCR”:

数据合成工具Style-Text - 图4

生成合成数据fake_fusion.jpg

数据合成工具Style-Text - 图5

除此之外,程序还会生成并保存中间结果fake_bg.jpg:为风格参考图去掉文字后的背景;

数据合成工具Style-Text - 图6

fake_text.jpg:是用提供的字符串,仿照风格参考图中文字的风格,生成在灰色背景上的文字图片。

数据合成工具Style-Text - 图7

批量合成

在实际应用场景中,经常需要批量合成图片,补充到训练集中。Style-Text可以使用一批风格图片和语料,批量合成数据。合成过程如下:

  1. configs/dataset_config.yml中配置目标场景风格图像和语料的路径,具体如下:

    • Global
      • output_dir::保存合成数据的目录。
    • StyleSampler
      • image_home:风格图片目录;
      • label_file:风格图片路径列表文件,如果所用数据集有label,则label_file为label文件路径;
      • with_label:标志label_file是否为label文件。
    • CorpusGenerator
      • method:语料生成方法,目前有FileCorpusEnNumCorpus可选。如果使用EnNumCorpus,则不需要填写其他配置,否则需要修改corpus_filelanguage
      • language:语料的语种,目前支持英文(en)、简体中文(ch)和韩语(ko);
      • corpus_file: 语料文件路径。语料文件应使用文本文件。语料生成器首先会将语料按行切分,之后每次随机选取一行。

    语料文件格式示例:

    1. PaddleOCR
    2. 飞桨文字识别
    3. StyleText
    4. 风格文本图像数据合成
    5. ...

    Style-Text也提供了一批中英韩5万张通用场景数据用作文本风格图像,便于合成场景丰富的文本图像,下图给出了一些示例。

    中英韩5万张通用场景数据: 下载地址

数据合成工具Style-Text - 图8

  1. 运行tools/synth_dataset合成数据:

    1. python3 tools/synth_dataset.py -c configs/dataset_config.yml

    我们在examples目录下提供了样例图片和语料。

    数据合成工具Style-Text - 图9 数据合成工具Style-Text - 图10

    直接运行上述命令,可以在output_data中产生样例输出,包括图片和用于训练识别模型的标注文件:

    数据合成工具Style-Text - 图11

    其中label目录下的标注文件为程序运行过程中产生的缓存,如果程序在中途异常终止,可以使用缓存的标注文件。 如果程序正常运行完毕,则会在output_data下生成label.txt,为最终的标注结果。

四、应用案例

下面以金属表面英文数字识别和通用韩语识别两个场景为例,说明使用Style-Text合成数据,来提升文本识别效果的实际案例。下图给出了一些真实场景图像和合成图像的示例:

数据合成工具Style-Text - 图12

在添加上述合成数据进行训练后,识别模型的效果提升,如下表所示:

场景字符原始数据测试数据只使用原始数据
识别准确率
新增合成数据同时使用合成数据
识别准确率
指标提升
金属表面英文和数字22036500.5938200000.754616%
随机背景韩语563112300.30121000000.505720%

五、代码结构

  1. StyleText
  2. |-- arch // 网络结构定义文件
  3. | |-- base_module.py
  4. | |-- decoder.py
  5. | |-- encoder.py
  6. | |-- spectral_norm.py
  7. | `-- style_text_rec.py
  8. |-- configs // 配置文件
  9. | |-- config.yml
  10. | `-- dataset_config.yml
  11. |-- engine // 数据合成引擎
  12. | |-- corpus_generators.py // 从文本采样或随机生成语料
  13. | |-- predictors.py // 调用网络生成数据
  14. | |-- style_samplers.py // 采样风格图片
  15. | |-- synthesisers.py // 调度各个模块,合成数据
  16. | |-- text_drawers.py // 生成标准文字图片,用作输入
  17. | `-- writers.py // 将合成的图片和标签写入本地目录
  18. |-- examples // 示例文件
  19. | |-- corpus
  20. | | `-- example.txt
  21. | |-- image_list.txt
  22. | `-- style_images
  23. | |-- 1.jpg
  24. | `-- 2.jpg
  25. |-- fonts // 字体文件
  26. | |-- ch_standard.ttf
  27. | |-- en_standard.ttf
  28. | `-- ko_standard.ttf
  29. |-- tools // 程序入口
  30. | |-- __init__.py
  31. | |-- synth_dataset.py // 批量合成数据
  32. | `-- synth_image.py // 合成单张图片
  33. `-- utils // 其他基础功能模块
  34. |-- config.py
  35. |-- load_params.py
  36. |-- logging.py
  37. |-- math_functions.py
  38. `-- sys_funcs.py