From 4af10d7b758003d2694dc223b7331c4bcabda495 Mon Sep 17 00:00:00 2001 From: 1024daniel Date: Mon, 16 Mar 2026 10:42:00 +0800 Subject: [PATCH] adapt for Ascend dynamic OM backend --- .../inference/models/text_detection/predictor.py | 15 ++++++++++++--- .../models/text_recognition/predictor.py | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/paddlex/inference/models/text_detection/predictor.py b/paddlex/inference/models/text_detection/predictor.py index 9168353d5e..084f05d7b3 100644 --- a/paddlex/inference/models/text_detection/predictor.py +++ b/paddlex/inference/models/text_detection/predictor.py @@ -79,7 +79,14 @@ def _build(self): pre_tfs["ToBatch"] = ToBatch() if self._use_static_model: - infer = self.create_static_infer() + if self._use_hpip and self.hpi_config.device_type == "npu": + from ais_bench.infer.interface import InferSession + MODEL_PATH_DET = self.model_dir / \ + f"{self.MODEL_FILE_PREFIX}.{self.hpi_config.backend}" + infer = InferSession( + device_id=0, model_path=str(MODEL_PATH_DET)) + else: + infer = self.create_static_infer() else: if self.model_name == "PP-OCRv5_mobile_det": from .modeling import PPOCRV5MobileDet @@ -115,7 +122,6 @@ def process( unclip_ratio: Union[float, None] = None, max_side_limit: Union[int, None] = None, ): - batch_raw_imgs = self.pre_tfs["Read"](imgs=batch_data.instances) batch_imgs, batch_shapes = self.pre_tfs["Resize"]( imgs=batch_raw_imgs, @@ -130,7 +136,10 @@ def process( x = self.pre_tfs["ToBatch"](imgs=batch_imgs) if self._use_static_model: - batch_preds = self.infer(x=x) + if self._use_hpip and self.hpi_config.device_type == "npu": + batch_preds = self.infer.infer(x, mode='dymshape', custom_sizes=100000000) + else: + batch_preds = self.infer(x) else: with TemporaryDeviceChanger(self.device): batch_preds = self.infer(x=x) diff --git a/paddlex/inference/models/text_recognition/predictor.py b/paddlex/inference/models/text_recognition/predictor.py index 01141e86be..3190e040ec 100644 --- a/paddlex/inference/models/text_recognition/predictor.py +++ b/paddlex/inference/models/text_recognition/predictor.py @@ -76,7 +76,14 @@ def _build(self): pre_tfs["ToBatch"] = ToBatch() if self._use_static_model: - infer = self.create_static_infer() + if self._use_hpip and self.hpi_config.device_type == "npu": + from ais_bench.infer.interface import InferSession + MODEL_PATH_REC = self.model_dir / \ + f"{self.MODEL_FILE_PREFIX}.{self.hpi_config.backend}" + infer = InferSession( + device_id=0, model_path=str(MODEL_PATH_REC)) + else: + infer = self.create_static_infer() else: if self.model_name in ["PP-OCRv5_mobile_rec", "PP-OCRv5_server_rec"]: from .modeling import PPOCRV5Rec @@ -106,7 +113,10 @@ def process(self, batch_data, return_word_box=False): batch_imgs = self.pre_tfs["ReisizeNorm"](imgs=batch_raw_imgs) x = self.pre_tfs["ToBatch"](imgs=batch_imgs) if self._use_static_model: - batch_preds = self.infer(x=x) + if self._use_hpip and self.hpi_config.device_type == "npu": + batch_preds = self.infer.infer(x, mode='dymshape', custom_sizes=100000000) + else: + batch_preds = self.infer(x) else: with TemporaryDeviceChanger(self.device): batch_preds = self.infer(x=x)