отобразить прогнозируемое изображение unet с помощью cv2 - PullRequest
1 голос
/ 01 октября 2019

Я обучил модель, используя изображения и маски, и предсказал одно изображение. Форма изображений, которые я предсказываю: (1024,1024,3)

Код.

nueva_imagen = cv2.imread("../input/dataset/Training_dataset/Images/all_imgs/zanzibar_4_35_04.jpg")
print(nueva_imagen.shape)
nueva_imagen = cv2.resize(nueva_imagen,(256,256))
nueva_imagen = np.expand_dims(nueva_imagen,axis=0)
print(nueva_imagen.shape)
pred_img = model.predict(nueva_imagen)
print(pred_img.shape)
#pred_img = np.squeeze(pred_img,axis=0)
#print(pred_img.shape)

Причина, по которой я добавляю другое измерение, потому что моя модель принимает изображения только с 3 измерениями. В конце моя прогнозируемая форма изображения (1,256,256,1). Теперь, читая cv2-документы, я не могу показать изображения с 4-мя измерениями, так что вот что я сделал.

image_to_predict = _images[789]
mask_of_image = masks_arr[789]



pred_img = np.squeeze(pred_img,axis=0)
pred_img = np.squeeze(pred_img,axis=2)



fig = plt.figure()
fig.subplots_adjust(hspace=0.4, wspace=0.4)
ax = fig.add_subplot(1, 2, 1);plt.title("original image")
ax.imshow(image_to_predict)

#ax = fig.add_subplot(1, 2, 2);plt.title("mask")
#ax.imshow(mask_of_image)

ax = fig.add_subplot(1,2,2);plt.title("Predicted image")
ax.imshow(pred_img)

Я удалил измерения на осях 0 и 3, чтобы показатьизображение, но то, что я получаю его фиолетовое изображение. Это предсказанное изображение, или я делаю что-то не так?

1 Ответ

0 голосов
/ 01 октября 2019

Некоторые проверки, которые вы, возможно, захотите выполнить (трудно сказать без доступа к модели и изображениям):

  • Когда вы загружаете изображение в OpenCV, изображения сохраняются как BGR, а не как RGB. Если вы тренировали свою модель на изображениях, загруженных с OpenCV, это не должно быть проблемой. Но если вы используете метод fit в каталоге, вы можете преобразовать BGR в RGB с помощью cv2.cvtColor(nueva_imagen, cv2.COLOR_BGR2RGB)
  • . Убедитесь, что предварительная обработка изображений одинакова между тренировкой и прогнозами. Как правило, убедитесь, что они оба имеют значения либо в [0, 1] (как число с плавающей запятой), либо [0, 255] (как значение типа int)
  • То же самое происходит при использовании Matplotlib относительно значений [0, 1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...