调整大小后在 CIFAR10 上应用 ResNet (pyTorch)

apply ResNet on CIFAR10 after resizing (pyTorch)

给定预训练的 ResNet152,在尝试使用一些常见数据集(使用 PyTorch)计算预测基准时,我想到的第一个 RGB 数据集是 CIFAR10。问题是 CIFAR10 数据是 3x32x32 而 ResNet 期望 3x224x224。我已经使用 transforms:

的已知方法调整了数据大小
preprocess = transforms.Compose([
            transforms.Resize(256),
            transforms.CenterCrop(224),
            transforms.ToTensor(),
            transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
train = datasets.CIFAR10(root='./data', train=True, download=True, transform=preprocess)
test = datasets.CIFAR10(root='./data', train=False, download=True, transform=preprocess)
train_loader = torch.utils.data.DataLoader(train, batch_size=batch_size)
test_loader = torch.utils.data.DataLoader(test, batch_size=batch_size)

但这会导致样本模糊和预测错误。我想知道在这些情况下最好的方法是什么,因为我看到许多论文使用这些数据集给出了 ResNes 和 VGG 等高级模型,我不确定如何解决这个技术问题。

感谢您的回复!

是的,您需要将输入图像调整为 3x224x224 大小。通过这样做,经过正常的训练程序后,您应该在 CIFAR-10 上取得出色的成绩(比如 test-set 上的 96%)。

我想主要问题是您使用的网络是 pre-trained 更高分辨率的图像(resnet152 在 imageNet 上 pre-trained),没有任何其他您不能期望的训练良好的结果彻底改变了数据集。

对于图像分类基准,我建议您使用分辨率更高的常用数据集(也 pre-defined inside torch vision):LSUN or Places365.