I have a pytorch model that takes 3 x width x height
image as input with the pixel values normalized between 0-1
E.g., input in pytorch
img = io.imread(img_path)
input_img = torch.from_numpy( np.transpose(img, (2,0,1)) ).contiguous().float()/255.0
I converted this model to coreml and exported an mlmodel which takes the input with correct dimensions
Image (Color width x height)
However, my predictions are incorrect as the model is expecting a float value between 0-1
and cvpixelbuffer is a int bwetween 0-255
I tried to normalize the values inside the model like so,
z = x.mul(1.0/255.0) # div op is not supported for export yet
However, when this op is done inside model at coreml level, int * float
is casted as int
and all values are essentially 0
Cast op is not supported for export e.g., x = x.float()
How can I make sure my input is properly shaped for prediction? Essentially, I want to take the pixel rgb and float divide 255.0
and pass it to the model for inference?
I solved it using the coreml onnx coverter's preprocessing_args like so,
preprocessing_args= {'image_scale' : (1.0/255.0)}
Hope this helps someone