hi i have a working inference pipeline that uses a tensorrt model that looks as follows:
while(camera)
img = camera.getimg()
img_input = preprocess_img(img)
result = model(img_input)
this gives about 10fps, but if i change the preprocess function to a simple resize i get 20 fps.
this is the preprocess function
def preprocessimage(image_raw, size=None):
"""
input:
original image in bgr format using cv2.imwrite
output:
image numpy: resized image numpy format
misc:
output numpy array in row major order
"""
image_resized = (
cv2.resize(cv2.cvtColor(image_raw, cv2.COLOR_BGR2RGB), (512, 512)).astype(np.float32)
/ 255.0
)
mean = np.array([0.485, 0.456, 0.406])
std = np.array([0.229, 0.224, 0.225])
image = (image_resized - mean) / std # imagenet normalization
image = np.transpose(image, [2, 0, 1]) # HWC to CHW format:
image = np.expand_dims(image, axis=0) # CHW to NCHW format
# Convert the image to row-major order, also known as "C order":
image = np.array(image, dtype=np.float32, order="C")
return image
the tensorrt samples only normalize using numpy, I would prefer normalization using pycuda so i can get a nice speedup.
is there any sample code that has efficient normalization code which is able to run inside python?
ps: i am unable to use deepstream since my camera does not only output color images.