Входные данные модели Coreml для модели Pytorch - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть модель 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 между двумя 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 Ответ

0 голосов
/ 05 сентября 2018

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

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

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

...