0

我有一个 pytorch 模型,它将3 x width x height图像作为输入,像素值在0-1

例如,在 pytorch 中输入

img = io.imread(img_path)
input_img =  torch.from_numpy( np.transpose(img, (2,0,1)) ).contiguous().float()/255.0

我将此模型转换为 coreml 并导出了一个 mlmodel,它采用正确尺寸的输入

Image (Color width x height)

但是,我的预测是不正确的,因为模型期望两者之间有一个浮点值,0-1而 cvpixelbuffer 是一个 int bwetween0-255

我试图像这样规范化模型内部的值,

z = x.mul(1.0/255.0) # div op is not supported for export yet

但是,当此操作在 coreml 级别的模型内部完成时, int * float被转换为int并且所有值本质上都是0

Cast op 不支持导出,例如,x = x.float()

我如何确保我的输入正确地进行预测?本质上,我想将其pixel rgb and float divide 255.0传递给模型进行推理?

4

1 回答 1

0

我使用 coreml onnx 转换器的 preprocessing_args 解决了它,就像这样,

preprocessing_args= {'image_scale' : (1.0/255.0)}

希望这可以帮助某人

于 2018-09-05T09:04:43.003 回答