pytorch模型的Coreml模型浮点输入

时间:2018-09-04 17:13:57

标签: python ios pytorch coreml onnx-coreml

我有一个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之间的浮点值是0-255之间的整数

我试图像这样对模型中的值进行标准化,

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

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

导出不支持广播操作,例如x = x.float()

如何确定输入的形状正确以进行预测?本质上,我想采用pixel rgb and float divide 255.0并将其传递给模型进行推理吗?

1 个答案:

答案 0 :(得分:0)

我使用coreml onnx掩护程序的preprocessing_args来解决它,

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

希望这对某人有帮助