【问题标题】:Validation set augmentations PyTorch example验证集扩充 PyTorch 示例
【发布时间】:2020-08-21 13:09:48
【问题描述】:

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?

【问题讨论】:

    标签: image deep-learning computer-vision pytorch data-augmentation


    【解决方案1】:

    为了澄清,随机数据增强只允许在训练集上。您可以将数据扩充应用于验证集和测试集,前提是所有扩充都不是随机的。您将在您提供的示例中清楚地看到这一点。

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

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

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

    【讨论】:

    • 谢谢。您能否补充一下为什么不将大小调整为 224?另外,是否有必要进行大致相同的增强?
    • 如果您在训练集中使用随机增强,那么将无法在测试集中复制它。但是,您应该尽量使测试数据与训练数据保持相似。
    • 不明白,为什么图像的中心保持在增强图像的中心很重要?如果您只是将大小调整为 224,为什么会受伤?调整到 256 然后裁剪到 224 意味着丢失大小的像素,而只是调整到 224 不是
    • 由于许多不同的原因,它可能很重要。一个常见的原因是图像中的对象位于图像的中心。但不看图片就无法判断。
    • @Jjang 如果您的模型是使用从 256x256 图像裁剪为 224x224 的图像进行训练的,那么您裁剪测试图像的原因也是因为这与您的模型训练时使用的数据域相匹配。否则域之间将存在缩放差异。将裁剪居中(与随机裁剪相反)的原因是获得确定性的测试结果(每次运行测试时都不会改变)。其他常见的评估技术包括在每个测试图像上评估 5、9、10 或 18 个裁剪和聚合(在 10/18 的情况下,您还可以对一半裁剪执行水平翻转)。
    猜你喜欢
    • 2020-02-29
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 2021-02-06
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多