Набор дополнений для валидации Пример PyTorch

В этом примере видения PyTorch для трансферного обучения они выполняют дополнения набора проверки, и я не могу понять почему.

# Just normalization for validation
data_transforms = {
    'train': transforms.Compose([
        transforms.RandomResizedCrop(224),
        transforms.RandomHorizontalFlip(),
        transforms.ToTensor(),
        transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    ]),
    'val': transforms.Compose([
        transforms.Resize(256),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    ]),
}

Насколько мне известно, увеличение данных должно производиться исключительно на обучающем наборе (а иногда и на тестовом наборе в так называемых «Test Time Augmentations»).

Почему это тоже сделано здесь?
Кроме того, почему бы просто не изменить размер прямо до 224?


person Jjang    schedule 06.05.2020    source источник


Ответы (1)


Чтобы уточнить, случайное увеличение данных разрешено только в обучающем наборе. Вы можете применить увеличение данных к наборам проверки и тестирования при условии, что ни одно из дополнений не является случайным. Вы ясно увидите это в приведенном вами примере.

В обучающем наборе используется множество случайных дополнений (дополнения, использующие случайность, обычно имеют в названии слово «случайное»). Однако набор проверки использует только дополнения, которые не вносят случайности в данные.

И последняя важная деталь: при использовании нормализации для набора проверки и тестирования вы ДОЛЖНЫ использовать те же самые факторы, которые вы использовали для набора для обучения. Вы увидите, что в приведенном выше примере числа остались прежними.

Необходимость изменения размера и затем центрирования кадрирования возникает из-за того, что набор val должен происходить из того же домена набора поездов, поэтому, если первый был изменен случайным образом и обрезан до 224, набор val необходимо детерминированно изменить размер и кадрировать.

person jdw136    schedule 06.05.2020
comment
Спасибо. И не могли бы вы добавить, почему бы просто не изменить размер до 224? Кроме того, необходимо ли примерно такие же аугментации? - person Jjang; 06.05.2020
comment
Если вы используете случайные дополнения в своей обучающей выборке, то воспроизвести это в тестовых наборах будет невозможно. Однако вы должны стараться, чтобы ваши тестовые данные были как можно более похожими на данные обучения. - person jdw136; 06.05.2020
comment
Не понял, почему так важно, чтобы центр изображения оставался в центре дополненного изображения? Если просто изменить размер до 224, то почему больно? Изменение размера до 256, а затем обрезка до 224 означает потерю пикселей в размерах, в то время как простое изменение размера до 224 не является - person Jjang; 06.05.2020
comment
Это могло быть важно по разным причинам. Одна из частых причин заключается в том, что объект на изображении находится в центре изображения. Но это невозможно сказать, не видя изображений. - person jdw136; 06.05.2020
comment
@Jjang Если ваша модель была обучена с изображениями, обрезанными до 224x224 из изображения 256x256, то причина, по которой вы также обрезаете тестовые изображения, заключается в том, что это соответствует домену данных, с которым была обучена ваша модель. В противном случае между доменами будет разница в масштабировании. Причина, по которой вы центрируете урожай (в отличие от случайного урожая), заключается в том, чтобы получить детерминированный результат теста (тот, который не меняется каждый раз, когда вы запускаете тест). Другие распространенные методы оценки включают оценку 5, 9, 10 или 18 культур на каждом тестовом изображении и агрегирование (в случаях 10/18 вы также выполняете горизонтальный поворот на половине культур). - person jodag; 06.05.2020