在CIFAR10调整大小后应用ResNet (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上获得出色的结果(例如在测试集上达到96%)。

我猜主要问题是你使用的网络是在更高分辨率的图像上进行预训练的(resnet152是在imageNet上进行预训练的),没有任何其他训练,你不能期望大幅度改变数据集的好结果。

对于图像分类基准,我建议您使用分辨率更高的常用数据集(也在torch vision内部预定义):LSUN或Places365。

最新更新