9ad5c6b2bd | ||
---|---|---|
.. | ||
arch | ||
configs | ||
doc/images | ||
engine | ||
examples | ||
fonts | ||
tools | ||
utils | ||
README.md | ||
README_ch.md | ||
__init__.py |
README.md
Quick Start
Style-Text
is an improvement of the SRNet network proposed in Baidu's self-developed text editing algorithm "Editing Text in the Wild". It is different from the commonly used GAN methods. This tool decomposes the text synthesis task into three sub-modules to improve the effect of synthetic data: text style transfer module, background extraction module and fusion module.
The following figure shows some example results. In addition, the actual nameplate text recognition
scene and the Korean text recognition
scene verify the effectiveness of the synthesis tool, as follows.
Preparation
- Please refer the QUICK INSTALLATION to install PaddlePaddle. Python3 environment is strongly recommended.
- Download the pretrained models and unzip:
cd tools/style_text_rec
wget /path/to/style_text_models.zip
unzip style_text_models.zip
You can dowload models here. If you save the model files in other folders, please edit the three model paths in configs/config.yml
:
bg_generator:
pretrain: style_text_rec/bg_generator
...
text_generator:
pretrain: style_text_models/text_generator
...
fusion_generator:
pretrain: style_text_models/fusion_generator
Demo
- You can use the following commands to run a demo:
python -m tools.synth_image -c configs/config.yml
-
The results are
fake_bg.jpg
,fake_text.jpg
andfake_fusion.jpg
as shown in the figure above. Above them:fake_text.jpg
is the generated image with the same font style asStyle Input
;fake_bg.jpg
is the generated image ofStyle Input
after removing foreground.fake_fusion.jpg
is the final result, that is synthesised byfake_text.jpg
andfake_bg.jpg
.
-
If want to generate image by other
Style Input
orText Input
, you can modify thetools/synth_image.py
:img = cv2.imread("examples/style_images/1.jpg")
: the path ofStyle Input
;corpus = "PaddleOCR"
: theText Input
;- Notice:modify the language option(
language = "en"
) to adaptText Input
, that supporten
,ch
,ko
.
-
We also provide
batch_synth_images
mothod, that can combine corpus and pictures in pairs to generate a batch of data.
Advanced Usage
Components
Style Text Rec
mainly contains the following components:
-
style_samplers
: It can sampleStyle Input
from a dataset. Now, We only provideDatasetSampler
. -
corpus_generators
: It can generate corpus. Now, wo only provide twocorpus_generators
:EnNumCorpus
: It can generate a random string according to a given length, including uppercase and lowercase English letters, numbers and spaces.FileCorpus
: It can read a text file and randomly return the words in it.
-
text_drawers
: It can generateText Input
(text picture in standard font according to the input corpus). Note that when using, you have to modify the language information according to the corpus. -
predictors
: It can call the deep learning model to generate new data based on theStyle Input
andText Input
. -
writers
: It can write the generated pictures(fake_bg.jpg
,fake_text.jpg
andfake_fusion.jpg
) and label information to the disk. -
synthesisers
: It can call the all modules to complete the work.
Generate Dataset
Before the start, you need to prepare some data as material. First, you should have the style reference data for synthesis tasks, which are generally used as datasets for OCR recognition tasks.
-
The referenced dataset can be specifed in
configs/dataset_config.yml
:-
StyleSampler
:method
: The method ofStyleSampler
.image_home
: The directory of pictures.label_file
: The list of pictures path ifwith_label
isfalse
, otherwise, the label file path.with_label
: Thelabel_file
is label file or not.
-
CorpusGenerator
:method
: The mothod ofCorpusGenerator
. IfFileCorpus
used, you need modifycorpus_file
andlanguage
accordingly, ifEnNumCorpus
, other configurations is not needed.language
: The language of the corpus. Needed if method is notEnNumCorpus
.corpus_file
: The corpus file path. Needed if method is notEnNumCorpus
.
-
-
You can run the following command to start synthesis task:
python -m tools.synth_dataset.py -c configs/dataset_config.yml
-
You can using the following command to start multiple synthesis tasks in a multi-threaded manner, which needed to specifying tags by
-t
:python -m tools.synth_dataset.py -t 0 -c configs/dataset_config.yml python -m tools.synth_dataset.py -t 1 -c configs/dataset_config.yml
OCR Recognition Training
After completing the above operations, you can get the synthetic data set for OCR recognition. Next, please complete the training by refering to [OCR Recognition Document](https://github.com/PaddlePaddle/PaddleOCR/blob/dygraph/doc/doc_ch/recognition. md#%E5%90%AF%E5%8A%A8%E8%AE%AD%E7%BB%83).