From 981a110654f1eff94a159bf6e34698c77a377141 Mon Sep 17 00:00:00 2001 From: tianyuzhou668 <2431054748@qq.com> Date: Wed, 17 Sep 2025 17:03:58 +0800 Subject: [PATCH] [ILUVATAR_GPU] Support for iluvatar_gpu --- ppocr/data/imaug/operators.py | 3 +++ ppocr/data/imaug/random_crop_data.py | 3 +++ ppocr/data/imaug/rec_img_aug.py | 15 +++++++++++++++ ppocr/data/simple_dataset.py | 3 +++ tools/program.py | 7 +++++-- 5 files changed, 29 insertions(+), 2 deletions(-) diff --git a/ppocr/data/imaug/operators.py b/ppocr/data/imaug/operators.py index b5a72a436f2..35ff0fad20d 100644 --- a/ppocr/data/imaug/operators.py +++ b/ppocr/data/imaug/operators.py @@ -24,6 +24,7 @@ import numpy as np import math from PIL import Image +from paddle import get_device class DecodeImage(object): @@ -231,6 +232,8 @@ def __call__(self, data): img, [ratio_h, ratio_w] = self.resize_image_type1(img) data["image"] = img data["shape"] = np.array([src_h, src_w, ratio_h, ratio_w]) + if "iluvatar_gpu" in get_device(): + data["shape"] = np.array([src_h, src_w, ratio_h, ratio_w]).astype(np.float32) return data def image_padding(self, im, value=0): diff --git a/ppocr/data/imaug/random_crop_data.py b/ppocr/data/imaug/random_crop_data.py index 6625776fa1e..f3d77bc25ef 100644 --- a/ppocr/data/imaug/random_crop_data.py +++ b/ppocr/data/imaug/random_crop_data.py @@ -24,6 +24,7 @@ import numpy as np import cv2 import random +from paddle import get_device def is_poly_in_rect(poly, x, y, w, h): @@ -179,6 +180,8 @@ def __call__(self, data): texts_crop.append(text) data["image"] = img data["polys"] = np.array(text_polys_crop) + if "iluvatar_gpu" in get_device(): + data["polys"] = np.array(text_polys_crop).astype(np.float32) data["ignore_tags"] = ignore_tags_crop data["texts"] = texts_crop return data diff --git a/ppocr/data/imaug/rec_img_aug.py b/ppocr/data/imaug/rec_img_aug.py index 8735bb8dcf8..ad9b7d94cf0 100644 --- a/ppocr/data/imaug/rec_img_aug.py +++ b/ppocr/data/imaug/rec_img_aug.py @@ -28,6 +28,7 @@ SVTRDeterioration, ParseQDeterioration, ) +from paddle import get_device from paddle.vision.transforms import Compose @@ -305,6 +306,8 @@ def __call__(self, data): norm_img, valid_ratio = resize_norm_img(img, self.image_shape, self.padding) data["image"] = norm_img data["valid_ratio"] = valid_ratio + if "iluvatar_gpu" in get_device(): + data["valid_ratio"] = np.float32(valid_ratio) return data @@ -338,6 +341,8 @@ def __call__(self, data): data["image"] = norm_img data["valid_ratio"] = valid_ratio + if "iluvatar_gpu" in get_device(): + data["valid_ratio"] = np.float32(valid_ratio) return data @@ -366,6 +371,8 @@ def __call__(self, data): ) data["image"] = norm_img data["valid_ratio"] = valid_ratio + if "iluvatar_gpu" in get_device(): + data["valid_ratio"] = np.float32(valid_ratio) return data @@ -407,6 +414,8 @@ def __call__(self, data): data["resized_shape"] = resize_shape data["pad_shape"] = pad_shape data["valid_ratio"] = valid_ratio + if "iluvatar_gpu" in get_device(): + data["valid_ratio"] = np.float32(valid_ratio) return data @@ -539,6 +548,8 @@ def __call__(self, data): norm_img, valid_ratio = resize_norm_img_abinet(img, self.image_shape) data["image"] = norm_img data["valid_ratio"] = valid_ratio + if "iluvatar_gpu" in get_device(): + data["valid_ratio"] = np.float32(valid_ratio) return data @@ -553,6 +564,8 @@ def __call__(self, data): norm_img, valid_ratio = resize_norm_img(img, self.image_shape, self.padding) data["image"] = norm_img data["valid_ratio"] = valid_ratio + if "iluvatar_gpu" in get_device(): + data["valid_ratio"] = np.float32(valid_ratio) return data @@ -574,6 +587,8 @@ def __call__(self, data): data["resized_shape"] = resize_shape data["pad_shape"] = pad_shape data["valid_ratio"] = valid_ratio + if "iluvatar_gpu" in get_device(): + data["valid_ratio"] = np.float32(valid_ratio) data["word_positons"] = word_positons return data diff --git a/ppocr/data/simple_dataset.py b/ppocr/data/simple_dataset.py index a8e1c0309af..a9ecd652baf 100644 --- a/ppocr/data/simple_dataset.py +++ b/ppocr/data/simple_dataset.py @@ -20,6 +20,7 @@ import traceback from paddle.io import Dataset from .imaug import transform, create_operators +from paddle import get_device class SimpleDataSet(Dataset): @@ -203,6 +204,8 @@ def resize_norm_img(self, data, imgW, imgH, padding=True): valid_ratio = min(1.0, float(resized_w / imgW)) data["image"] = padding_im data["valid_ratio"] = valid_ratio + if "iluvatar_gpu" in get_device(): + data["valid_ratio"] = np.float32(valid_ratio) return data def __getitem__(self, properties): diff --git a/tools/program.py b/tools/program.py index 277eaa4cd4d..d619f533845 100755 --- a/tools/program.py +++ b/tools/program.py @@ -115,7 +115,7 @@ def merge_config(config, opts): return config -def check_device(use_gpu, use_xpu=False, use_npu=False, use_mlu=False, use_gcu=False): +def check_device(use_gpu, use_xpu=False, use_npu=False, use_mlu=False, use_gcu=False, use_iluvatar_gpu=False): """ Log error and exit when set use_gpu=true in paddlepaddle cpu version. @@ -833,6 +833,7 @@ def preprocess(is_train=False): use_npu = config["Global"].get("use_npu", False) use_mlu = config["Global"].get("use_mlu", False) use_gcu = config["Global"].get("use_gcu", False) + use_iluvatar_gpu = config["Global"].get("use_iluvatar_gpu", False) alg = config["Architecture"]["algorithm"] assert alg in [ @@ -896,9 +897,11 @@ def preprocess(is_train=False): device = "mlu:{0}".format(os.getenv("FLAGS_selected_mlus", 0)) elif use_gcu: # Use Enflame GCU(General Compute Unit) device = "gcu:{0}".format(os.getenv("FLAGS_selected_gcus", 0)) + elif use_iluvatar_gpu: + device = "iluvatar_gpu:{0}".format(dist.ParallelEnv().dev_id) else: device = "gpu:{}".format(dist.ParallelEnv().dev_id) if use_gpu else "cpu" - check_device(use_gpu, use_xpu, use_npu, use_mlu, use_gcu) + check_device(use_gpu, use_xpu, use_npu, use_mlu, use_gcu, use_iluvatar_gpu) device = paddle.set_device(device)