验证集扩充 PyTorch 示例

Validation set augmentations PyTorch example

this 用于迁移学习的 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])
    ]),
}

据我所知,仅在训练集上进行数据扩充(有时在测试集上进行,称为测试时间扩充)。

为什么也在这里做?
另外,为什么不直接调整到 224?

澄清一下,随机数据扩充只允许在训练集上进行。您可以将数据扩充应用于验证集和测试集,前提是 none 的扩充是随机的。您将在您提供的示例中清楚地看到这一点。

训练集使用了许多随机增强(使用随机性的增强通常在名称中带有 "random")。但是,验证集仅使用不会对数据引入任何随机性的扩充。

最后一个重要细节:当您对验证集和测试集使用归一化时,您必须使用与训练集完全相同的因子。你会看到上面的例子保持了相同的数字。

需要调整大小然后中心裁剪是因为验证集需要来自训练集的同一域,因此如果前者随机调整大小并裁剪为 224,则验证集需要确定性地调整大小和裁剪。