Входные данные модели 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)}
Надеюсь, это поможет кому-то