mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-06 00:57:33 +08:00
[CVCUDA] PP-OCR detector preprocessor integrate CV-CUDA (#1382)
* move manager initialized_ flag to ppcls * update dbdetector preprocess api * declare processor op * ppocr detector preprocessor support cvcuda * move cvcuda op to class member * ppcls use manager register api * refactor det preprocessor init api * add set preprocessor api * add create processor macro * new processor call api * ppcls preprocessor init resize on cpu * ppocr detector preprocessor set normalize api * revert ppcls pybind * remove dbdetector set preprocessor * refine dbdetector preprocessor includes * remove mean std in py constructor * add comments * update comment * Update __init__.py
This commit is contained in:
@@ -46,7 +46,6 @@ class PaddleClasPreprocessor(ProcessorManager):
|
||||
When the initial operator is Resize, and input image size is large,
|
||||
maybe it's better to run resize on CPU, because the HostToDevice memcpy
|
||||
is time consuming. Set this True to run the initial resize on CPU.
|
||||
|
||||
:param: v: True or False
|
||||
"""
|
||||
self._manager.initial_resize_on_cpu(v)
|
||||
|
@@ -37,43 +37,31 @@ class DBDetectorPreprocessor:
|
||||
|
||||
@property
|
||||
def max_side_len(self):
|
||||
"""Get max_side_len value.
|
||||
"""
|
||||
return self._preprocessor.max_side_len
|
||||
|
||||
@max_side_len.setter
|
||||
def max_side_len(self, value):
|
||||
"""Set max_side_len value.
|
||||
:param: value: (int) max_side_len value
|
||||
"""
|
||||
assert isinstance(
|
||||
value, int), "The value to set `max_side_len` must be type of int."
|
||||
self._preprocessor.max_side_len = value
|
||||
|
||||
@property
|
||||
def is_scale(self):
|
||||
return self._preprocessor.is_scale
|
||||
|
||||
@is_scale.setter
|
||||
def is_scale(self, value):
|
||||
assert isinstance(
|
||||
value, bool), "The value to set `is_scale` must be type of bool."
|
||||
self._preprocessor.is_scale = value
|
||||
|
||||
@property
|
||||
def scale(self):
|
||||
return self._preprocessor.scale
|
||||
|
||||
@scale.setter
|
||||
def scale(self, value):
|
||||
assert isinstance(
|
||||
value, list), "The value to set `scale` must be type of list."
|
||||
self._preprocessor.scale = value
|
||||
|
||||
@property
|
||||
def mean(self):
|
||||
return self._preprocessor.mean
|
||||
|
||||
@mean.setter
|
||||
def mean(self, value):
|
||||
assert isinstance(
|
||||
value, list), "The value to set `mean` must be type of list."
|
||||
self._preprocessor.mean = value
|
||||
def set_normalize(self,
|
||||
mean=[0.485, 0.456, 0.406],
|
||||
std=[0.229, 0.224, 0.225],
|
||||
is_scale=True):
|
||||
"""Set preprocess normalize parameters, please call this API to
|
||||
customize the normalize parameters, otherwise it will use the default
|
||||
normalize parameters.
|
||||
:param: mean: (list of float) mean values
|
||||
:param: std: (list of float) std values
|
||||
:param: is_scale: (boolean) whether to scale
|
||||
"""
|
||||
self._preprocessor.set_normalize(mean, std, is_scale)
|
||||
|
||||
|
||||
class DBDetectorPostprocessor:
|
||||
@@ -174,6 +162,7 @@ class DBDetector(FastDeployModel):
|
||||
"""Clone OCR detection model object
|
||||
:return: a new OCR detection model object
|
||||
"""
|
||||
|
||||
class DBDetectorClone(DBDetector):
|
||||
def __init__(self, model):
|
||||
self._model = model
|
||||
@@ -203,18 +192,10 @@ class DBDetector(FastDeployModel):
|
||||
def preprocessor(self):
|
||||
return self._model.preprocessor
|
||||
|
||||
@preprocessor.setter
|
||||
def preprocessor(self, value):
|
||||
self._model.preprocessor = value
|
||||
|
||||
@property
|
||||
def postprocessor(self):
|
||||
return self._model.postprocessor
|
||||
|
||||
@postprocessor.setter
|
||||
def postprocessor(self, value):
|
||||
self._model.postprocessor = value
|
||||
|
||||
# Det Preprocessor Property
|
||||
@property
|
||||
def max_side_len(self):
|
||||
@@ -226,36 +207,6 @@ class DBDetector(FastDeployModel):
|
||||
value, int), "The value to set `max_side_len` must be type of int."
|
||||
self._model.preprocessor.max_side_len = value
|
||||
|
||||
@property
|
||||
def is_scale(self):
|
||||
return self._model.preprocessor.is_scale
|
||||
|
||||
@is_scale.setter
|
||||
def is_scale(self, value):
|
||||
assert isinstance(
|
||||
value, bool), "The value to set `is_scale` must be type of bool."
|
||||
self._model.preprocessor.is_scale = value
|
||||
|
||||
@property
|
||||
def scale(self):
|
||||
return self._model.preprocessor.scale
|
||||
|
||||
@scale.setter
|
||||
def scale(self, value):
|
||||
assert isinstance(
|
||||
value, list), "The value to set `scale` must be type of list."
|
||||
self._model.preprocessor.scale = value
|
||||
|
||||
@property
|
||||
def mean(self):
|
||||
return self._model.preprocessor.mean
|
||||
|
||||
@mean.setter
|
||||
def mean(self, value):
|
||||
assert isinstance(
|
||||
value, list), "The value to set `mean` must be type of list."
|
||||
self._model.preprocessor.mean = value
|
||||
|
||||
# Det Ppstprocessor Property
|
||||
@property
|
||||
def det_db_thresh(self):
|
||||
@@ -421,6 +372,7 @@ class Classifier(FastDeployModel):
|
||||
"""Clone OCR classification model object
|
||||
:return: a new OCR classification model object
|
||||
"""
|
||||
|
||||
class ClassifierClone(Classifier):
|
||||
def __init__(self, model):
|
||||
self._model = model
|
||||
@@ -629,6 +581,7 @@ class Recognizer(FastDeployModel):
|
||||
"""Clone OCR recognition model object
|
||||
:return: a new OCR recognition model object
|
||||
"""
|
||||
|
||||
class RecognizerClone(Recognizer):
|
||||
def __init__(self, model):
|
||||
self._model = model
|
||||
@@ -734,7 +687,7 @@ class PPOCRv3(FastDeployModel):
|
||||
assert det_model is not None and rec_model is not None, "The det_model and rec_model cannot be None."
|
||||
if cls_model is None:
|
||||
self.system_ = C.vision.ocr.PPOCRv3(det_model._model,
|
||||
rec_model._model)
|
||||
rec_model._model)
|
||||
else:
|
||||
self.system_ = C.vision.ocr.PPOCRv3(
|
||||
det_model._model, cls_model._model, rec_model._model)
|
||||
@@ -743,6 +696,7 @@ class PPOCRv3(FastDeployModel):
|
||||
"""Clone PPOCRv3 pipeline object
|
||||
:return: a new PPOCRv3 pipeline object
|
||||
"""
|
||||
|
||||
class PPOCRv3Clone(PPOCRv3):
|
||||
def __init__(self, system):
|
||||
self.system_ = system
|
||||
@@ -809,7 +763,7 @@ class PPOCRv2(FastDeployModel):
|
||||
assert det_model is not None and rec_model is not None, "The det_model and rec_model cannot be None."
|
||||
if cls_model is None:
|
||||
self.system_ = C.vision.ocr.PPOCRv2(det_model._model,
|
||||
rec_model._model)
|
||||
rec_model._model)
|
||||
else:
|
||||
self.system_ = C.vision.ocr.PPOCRv2(
|
||||
det_model._model, cls_model._model, rec_model._model)
|
||||
@@ -818,6 +772,7 @@ class PPOCRv2(FastDeployModel):
|
||||
"""Clone PPOCRv3 pipeline object
|
||||
:return: a new PPOCRv3 pipeline object
|
||||
"""
|
||||
|
||||
class PPOCRv2Clone(PPOCRv2):
|
||||
def __init__(self, system):
|
||||
self.system_ = system
|
||||
|
Reference in New Issue
Block a user