Обычно модели CNN имеют входной размер, который является фиксированным размером.Скажем, 224x224.Таким образом, на этапе обучения, а также на этапе классификации нам необходимо изменить размеры изображений различных размеров, чтобы они соответствовали входному размеру.Мой вопрос состоит в том, чтобы быть более точной моделью, нужно ли нам сохранять пропорции изображений даже после изменения размера или нам не нужно беспокоиться о соотношении сторон на этапах обучения и классификации?
Этообразец изображения, которое я подготовил перед тем, как перейти на входной слой;
Я не могу обрезать фигуру, например квадрат, так как этот квадрат может содержать и другие категории.Кто-нибудь может посоветовать мне лучший способ подготовить набор данных?
Мой механизм изменения размера следующий:
import cv2
import numpy as np
def resize(image, width, height):
dim = None
(h, w) = image.shape[:2]
if width is None and height is None:
return image
x_off = 0
y_off = 0
if h > w:
r = height / float(h)
dim = (int(w * r), height)
else:
r = width / float(w)
dim = (width, int(h * r))
resized = cv2.resize(image, dim, interpolation = cv2.INTER_AREA)
(h_0, w_0) = resized.shape[:2]
if h_0 > w_0:
x_off = (224 - w_0)/2
else:
y_off = (224 - h_0)/2
blank_image = np.zeros((height,width,3), np.uint8)
blank_image[y_off:y_off+h_0,x_off:x_off+w_0] = resized
return blank_image