From fc85051d6472469d1a301b43aafcb767da7258f4 Mon Sep 17 00:00:00 2001
From: littletomatodonkey <2120160898@bit.edu.cn>
Date: Thu, 17 Dec 2020 15:28:19 +0800
Subject: [PATCH] add support for cpu infer (#1480)
* add support for cpu infer
* fix readme
---
StyleText/README.md | 11 ++++++-----
StyleText/README_ch.md | 5 +++--
StyleText/engine/predictors.py | 1 +
StyleText/tools/synth_dataset.py | 8 ++++++++
StyleText/tools/synth_image.py | 6 +++---
5 files changed, 21 insertions(+), 10 deletions(-)
diff --git a/StyleText/README.md b/StyleText/README.md
index 648b12674..632f7b6da 100644
--- a/StyleText/README.md
+++ b/StyleText/README.md
@@ -69,12 +69,13 @@ fusion_generator:
1. You can run `tools/synth_image` and generate the demo image, which is saved in the current folder.
```python
-python3 -m tools.synth_image -c configs/config.yml --style_image examples/style_images/2.jpg --text_corpus PaddleOCR --language en
+python3 tools/synth_image.py -c configs/config.yml --style_image examples/style_images/2.jpg --text_corpus PaddleOCR --language en
```
* Note 1: The language options is correspond to the corpus. Currently, the tool only supports English, Simplified Chinese and Korean.
-* Note 2: Synth-Text is mainly used to generate images for OCR recognition models.
+* Note 2: Synth-Text is mainly used to generate images for OCR recognition models.
So the height of style images should be around 32 pixels. Images in other sizes may behave poorly.
+* Note 3: You can modify `use_gpu` in `configs/config.yml` to determine whether to use GPU for prediction.
For example, enter the following image and corpus `PaddleOCR`.
@@ -122,7 +123,7 @@ In actual application scenarios, it is often necessary to synthesize pictures in
* `corpus_file`: Filepath of the corpus. Corpus file should be a text file which will be split by line-endings('\n'). Corpus generator samples one line each time.
-Example of corpus file:
+Example of corpus file:
```
PaddleOCR
飞桨文字识别
@@ -139,9 +140,9 @@ We provide a general dataset containing Chinese, English and Korean (50,000 imag
2. You can run the following command to start synthesis task:
``` bash
- python -m tools.synth_dataset.py -c configs/dataset_config.yml
+ python3 tools/synth_dataset.py -c configs/dataset_config.yml
```
-We also provide example corpus and images in `examples` folder.
+We also provide example corpus and images in `examples` folder.

diff --git a/StyleText/README_ch.md b/StyleText/README_ch.md
index 0dd5822b1..5b8a3ee0f 100644
--- a/StyleText/README_ch.md
+++ b/StyleText/README_ch.md
@@ -61,11 +61,12 @@ fusion_generator:
输入一张风格图和一段文字语料,运行tools/synth_image,合成单张图片,结果图像保存在当前目录下:
```python
-python3 -m tools.synth_image -c configs/config.yml --style_image examples/style_images/2.jpg --text_corpus PaddleOCR --language en
+python3 tools/synth_image.py -c configs/config.yml --style_image examples/style_images/2.jpg --text_corpus PaddleOCR --language en
```
* 注1:语言选项和语料相对应,目前该工具只支持英文、简体中文和韩语。
* 注2:Style-Text生成的数据主要应用于OCR识别场景。基于当前PaddleOCR识别模型的设计,我们主要支持高度在32左右的风格图像。
如果输入图像尺寸相差过多,效果可能不佳。
+* 注3:可以通过修改配置文件中的`use_gpu`(true或者false)参数来决定是否使用GPU进行预测。
例如,输入如下图片和语料"PaddleOCR":
@@ -127,7 +128,7 @@ python3 -m tools.synth_image -c configs/config.yml --style_image examples/style_
2. 运行`tools/synth_dataset`合成数据:
``` bash
- python -m tools.synth_dataset -c configs/dataset_config.yml
+ python tools/synth_dataset.py -c configs/dataset_config.yml
```
我们在examples目录下提供了样例图片和语料。
diff --git a/StyleText/engine/predictors.py b/StyleText/engine/predictors.py
index d9f4afe4a..a1ba21f1b 100644
--- a/StyleText/engine/predictors.py
+++ b/StyleText/engine/predictors.py
@@ -28,6 +28,7 @@ class StyleTextRecPredictor(object):
], "Generator {} not supported.".format(algorithm)
use_gpu = config["Global"]['use_gpu']
check_gpu(use_gpu)
+ paddle.set_device('gpu' if use_gpu else 'cpu')
self.logger = get_logger()
self.generator = getattr(style_text_rec, algorithm)(config)
self.height = config["Global"]["image_height"]
diff --git a/StyleText/tools/synth_dataset.py b/StyleText/tools/synth_dataset.py
index 4a0e6d5e1..a75f7f393 100644
--- a/StyleText/tools/synth_dataset.py
+++ b/StyleText/tools/synth_dataset.py
@@ -11,6 +11,14 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
+
+import os
+import sys
+
+__dir__ = os.path.dirname(os.path.abspath(__file__))
+sys.path.append(__dir__)
+sys.path.append(os.path.abspath(os.path.join(__dir__, '..')))
+
from engine.synthesisers import DatasetSynthesiser
diff --git a/StyleText/tools/synth_image.py b/StyleText/tools/synth_image.py
index 7b4827b82..cbc311867 100644
--- a/StyleText/tools/synth_image.py
+++ b/StyleText/tools/synth_image.py
@@ -16,13 +16,13 @@ import cv2
import sys
import glob
-from utils.config import ArgsParser
-from engine.synthesisers import ImageSynthesiser
-
__dir__ = os.path.dirname(os.path.abspath(__file__))
sys.path.append(__dir__)
sys.path.append(os.path.abspath(os.path.join(__dir__, '..')))
+from utils.config import ArgsParser
+from engine.synthesisers import ImageSynthesiser
+
def synth_image():
args = ArgsParser().parse_args()