5.1 KiB
5.1 KiB
Style Text Rec
目录
工具简介
Style-Text是对百度自研文本编辑算法《Editing Text in the Wild》中提出的SRNet网络的改进,不同于常用的GAN的方法只选择一个分支,该工具将文本合成任务分解为三个子模块,文本风格迁移模块、背景抽取模块和前背景融合模块,来提升合成数据的效果。下图显示了一些示例结果。
此外,在实际铭牌文本识别场景和韩语文本识别场景,验证了该合成工具的有效性。
环境配置
- 参考快速安装,安装PaddleOCR。强烈建议您使用python3环境。
- 进入
style_text_rec
目录,下载模型,并解压:
cd style_text_rec
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/style_text/style_text_models.zip
unzip style_text_models.zip
如果您将模型保存再其他位置,请在configs/config.yml
中修改模型文件的地址,修改时需要同时修改这三个配置:
bg_generator:
pretrain: style_text_models/bg_generator
...
text_generator:
pretrain: style_text_models/text_generator
...
fusion_generator:
pretrain: style_text_models/fusion_generator
快速上手
- 运行tools/synth_image,生成示例图片:
python3 -m tools.synth_image -c configs/config.yml
- 运行后,会生成
fake_busion.jpg
,即为最终结果。
- 如果您想尝试其他风格图像和文字的效果,可以添加style_image,text_corpus和language参数:
python3 -m tools.synth_image -c configs/config.yml --style_image examples/style_images/2.jpg --text_corpus PaddleOCR --language en
- 注意:语言选项和语料相对应,目前我们支持英文、简体中文和韩语。
- 在
tools/synth_image.py
中,我们还提供了一个batch_synth_images
方法,可以两两组合语料和图片,批量生成一批数据。
高级使用
在开始合成数据集前,需要准备一些素材。
首先,需要风格图片作为合成图片的参考依据,这些数据可以是用作训练OCR识别模型的数据集。本例中使用带有标注文件的数据集作为风格图片.
-
在
configs/dataset_config.yml
中配置输入数据路径。StyleSampler
:method
:使用的风格图片采样方法;image_home
:风格图片目录;label_file
:风格图片路径列表文件,如果所用数据集有label,则label_file为label文件路径;with_label
:标志label_file
是否为label文件。 我们提供了一批样例图供您试用。
CorpusGenerator
:method
:语料生成方法,目前有FileCorpus
和EnNumCorpus
可选。如果使用EnNumCorpus
,则不需要填写其他配置,否则需要修改corpus_file
和language
;language
:语料的语种;corpus_file
: 语料文件路径。
-
运行
tools/synth_dataset
合成数据:python -m tools.synth_dataset -c configs/dataset_config.yml
-
如果您想使用并行方式来快速合成数据,可以通过启动多个进程,在启动时需要指定不同的
tag
(-t
),如下所示:python3 -m tools.synth_dataset -t 0 -c configs/dataset_config.yml python3 -m tools.synth_dataset -t 1 -c configs/dataset_config.yml
应用示例
在完成上述操作后,即可得到用于OCR识别的合成数据集,下面给出了一些数据集生成的示例:
接下来请参考OCR识别文档,完成训练。
项目结构
style_text_rec
|-- arch
| |-- base_module.py
| |-- decoder.py
| |-- encoder.py
| |-- spectral_norm.py
| `-- style_text_rec.py
|-- configs
| |-- config.yml
| `-- dataset_config.yml
|-- engine
| |-- corpus_generators.py
| |-- predictors.py
| |-- style_samplers.py
| |-- synthesisers.py
| |-- text_drawers.py
| `-- writers.py
|-- examples
| |-- corpus
| | `-- example.txt
| |-- image_list.txt
| `-- style_images
| |-- 1.jpg
| `-- 2.jpg
|-- fonts
| |-- ch_standard.ttf
| |-- en_standard.ttf
| `-- ko_standard.ttf
|-- tools
| |-- __init__.py
| |-- synth_dataset.py
| `-- synth_image.py
`-- utils
|-- config.py
|-- load_params.py
|-- logging.py
|-- math_functions.py
`-- sys_funcs.py