mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-05 16:48:03 +08:00

* add Cast, HWC2CHW, Normalize, PadToSize, StridePad * add comments * fix comments * fix manager.cc
103 lines
2.8 KiB
Python
103 lines
2.8 KiB
Python
import fastdeploy as fd
|
|
import cv2
|
|
|
|
from fastdeploy.vision.common.manager import PyProcessorManager
|
|
from fastdeploy.vision.common.processors import *
|
|
|
|
|
|
def parse_arguments():
|
|
import argparse
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
"--use_cvcuda",
|
|
required=False,
|
|
type=bool,
|
|
help="Use CV-CUDA in preprocess")
|
|
return parser.parse_args()
|
|
|
|
|
|
# define CustomProcessor
|
|
class CustomProcessor(PyProcessorManager):
|
|
def __init__(self) -> None:
|
|
super().__init__()
|
|
# create op
|
|
self.resize_short_op = ResizeByShort(
|
|
target_size=100, interp=1, use_scale=True, max_hw=[500, 500])
|
|
self.normalize_permute_op = NormalizeAndPermute(
|
|
mean=[0.485, 0.456, 0.406],
|
|
std=[0.229, 0.224, 0.225],
|
|
is_scale=True,
|
|
min=[],
|
|
max=[],
|
|
swap_rb=False)
|
|
self.centercrop_op = CenterCrop(width=50, height=50)
|
|
self.pad_op = Pad(top=5,
|
|
bottom=5,
|
|
left=5,
|
|
right=5,
|
|
value=[225, 225, 225])
|
|
self.cast_op = Cast(dtype="float")
|
|
self.hwc2chw_op = HWC2CHW()
|
|
self.normalize_op = Normalize(
|
|
mean=[0.485, 0.456, 0.406],
|
|
std=[0.229, 0.224, 0.225],
|
|
is_scale=True,
|
|
min=[],
|
|
max=[],
|
|
swap_rb=False)
|
|
self.pad_to_size_op = PadToSize(
|
|
height=160, width=160, value=[225, 225, 225])
|
|
self.resize_op = Resize(
|
|
width=50,
|
|
height=50,
|
|
scale_w=-1.0,
|
|
scale_h=-1.0,
|
|
interp=1,
|
|
use_scale=False)
|
|
self.stride_pad_op = StridePad(stride=3, value=[225, 225, 225])
|
|
|
|
def apply(self, image_batch):
|
|
outputs = []
|
|
self.resize_short_op(image_batch)
|
|
self.centercrop_op(image_batch)
|
|
self.pad_op(image_batch)
|
|
self.pad_to_size_op(image_batch)
|
|
self.normalize_permute_op(image_batch)
|
|
|
|
for i in range(len(image_batch.mats)):
|
|
outputs.append(image_batch.mats[i])
|
|
|
|
return outputs
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
# read jpg
|
|
im1 = cv2.imread('ILSVRC2012_val_00000010.jpeg')
|
|
im2 = cv2.imread('ILSVRC2012_val_00000010.jpeg')
|
|
|
|
mat1 = fd.C.vision.FDMat()
|
|
mat1.from_numpy(im1)
|
|
mat2 = fd.C.vision.FDMat()
|
|
mat2.from_numpy(im2)
|
|
images = [mat1, mat2]
|
|
|
|
args = parse_arguments()
|
|
# creae processor
|
|
preprocessor = CustomProcessor()
|
|
|
|
# use CV-CUDA
|
|
if args.use_cvcuda:
|
|
preprocessor.use_cuda(True, -1)
|
|
|
|
# show input
|
|
for i in range(len(images)):
|
|
images[i].print_info('images' + str(i) + ': ')
|
|
|
|
# run the Processer with CVCUDA
|
|
outputs = preprocessor(images)
|
|
|
|
# show output
|
|
for i in range(len(outputs)):
|
|
outputs[i].print_info('outputs' + str(i) + ': ')
|