Входные данные модели Coreml для модели Pytorch

У меня есть модель 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 bwetween 0-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 и передать его модели для вывода?

1 ответ

Решение

Я решил это, используя preprocessing_args для coreml onnx:

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

Надеюсь, это поможет кому-то

Другие вопросы по тегам