Вопросы по обработке изображений для предварительно обученного классификатора изображений в PyTorch - PullRequest
2 голосов
/ 05 марта 2020

Я пытаюсь использовать популярную предварительно обученную модель VGG для классификации изображений в PyTorch, но заметил, что размер изображения изменен до 256 и обрезан до 224 для предварительной обработки изображений в большинстве программ. Мне любопытно, почему мы сначала изменяем размер до 256 и обрезаем его вместо непосредственного изменения до 224.

transforms = transforms.Compose([transforms.Resize(256), 
                                 transforms.CenterCrop(224),
                                 transforms.ToTensor(),
                                 transforms.Normalize([0.485, 0.456, 0.406], 
                                                     [0.229, 0.224, 0.225])])

1 Ответ

1 голос
/ 05 марта 2020

Для задач классификации изображений обычно представляющий интерес объект расположен в центре изображения. Таким образом, обычной практикой (для умозаключения) является центральная обрезка изображения, срезающая некоторую границу (однако в общем случае это не применимо, поскольку точная предварительная обработка сильно зависит от того, как обучена сеть).

Что касается «почему обрезка и не изменение размера напрямую», это побочный продукт увеличения данных во время обучения: случайное кадрирование изображения является очень распространенной техникой увеличения данных. Во время вывода изменение размера всего изображения до входного размера вместо применения обрезки влияет на масштаб объектов на изображении, что отрицательно влияет на производительность сети (поскольку вы оцениваете данные, которые имеют «формат», отличный от тот, на котором вы тренировались, и CNN не являются масштабно-инвариантными).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...