mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-06 17:17:14 +08:00
[CVCUDA] Vision Processor Python API and Tutorial (#1394)
* bind success * bind success fix * FDMat pybind, ResizeByShort pybind * FDMat pybind, ResizeByShort pybind, remove initialized_ * override BindProcessorManager::Run in python is available * PyProcessorManager done * vision_pybind fix * manager.py fix * add tutorials * remove Apply() bind * remove Apply() bind and fix * fix reviewed problem * fix reviewed problem * fix reviewed problem readme * fix reviewed problem readme etc * apply return outputs * nits * update readme * fix FDMatbatch * add op pybind: CenterCrop, Pad * add op overload for pass FDMatBatch --------- Co-authored-by: Wang Xinyu <shaywxy@gmail.com>
This commit is contained in:
@@ -14,3 +14,4 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from .manager import ProcessorManager
|
||||
from .manager import PyProcessorManager
|
||||
|
@@ -13,6 +13,8 @@
|
||||
# limitations under the License.
|
||||
|
||||
from __future__ import absolute_import
|
||||
from abc import ABC, abstractmethod
|
||||
from ... import c_lib_wrap as C
|
||||
|
||||
|
||||
class ProcessorManager:
|
||||
@@ -34,3 +36,34 @@ class ProcessorManager:
|
||||
:param: gpu_id: GPU device id
|
||||
"""
|
||||
return self._manager.use_cuda(enable_cv_cuda, gpu_id)
|
||||
|
||||
|
||||
class PyProcessorManager(ABC):
|
||||
"""
|
||||
PyProcessorManager is used to define a customized processor in python
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self._manager = C.vision.processors.ProcessorManager()
|
||||
|
||||
def use_cuda(self, enable_cv_cuda=False, gpu_id=-1):
|
||||
"""Use CUDA processors
|
||||
|
||||
:param: enable_cv_cuda: Ture: use CV-CUDA, False: use CUDA only
|
||||
:param: gpu_id: GPU device id
|
||||
"""
|
||||
return self._manager.use_cuda(enable_cv_cuda, gpu_id)
|
||||
|
||||
def __call__(self, images):
|
||||
image_batch = C.vision.FDMatBatch()
|
||||
image_batch.from_mats(images)
|
||||
|
||||
self._manager.pre_apply(image_batch)
|
||||
outputs = self.apply(image_batch)
|
||||
self._manager.post_apply()
|
||||
return outputs
|
||||
|
||||
@abstractmethod
|
||||
def apply(self, image_batch):
|
||||
print("This function has to be implemented.")
|
||||
return []
|
||||
|
Reference in New Issue
Block a user