Машинное обучение, тренировка изменения размера изображения - PullRequest
0 голосов
/ 10 октября 2018

Обычно модели CNN имеют входной размер, который является фиксированным размером.Скажем, 224x224.Таким образом, на этапе обучения, а также на этапе классификации нам необходимо изменить размеры изображений различных размеров, чтобы они соответствовали входному размеру.Мой вопрос состоит в том, чтобы быть более точной моделью, нужно ли нам сохранять пропорции изображений даже после изменения размера или нам не нужно беспокоиться о соотношении сторон на этапах обучения и классификации?

Этообразец изображения, которое я подготовил перед тем, как перейти на входной слой;enter image description here

Я не могу обрезать фигуру, например квадрат, так как этот квадрат может содержать и другие категории.Кто-нибудь может посоветовать мне лучший способ подготовить набор данных?

Мой механизм изменения размера следующий:

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
...