你可以在迁移学习期间使用不同的图像尺寸吗?

Can you use a different image size during transfer learning?

我最近从 TensorFlow 切换到了 PyTorch。我使用著名的 Github repoEfficientNets 上进行训练。我写的模型初始化class如下:

    class CustomEfficientNet(nn.Module):
        def __init__(self, config: type, pretrained: bool=True):
            super().__init__()
            self.config = config
            self.model = geffnet.create_model(
                model_name='EfficientNetB5',
                pretrained=pretrained)
            n_features = self.model.classifier.in_features
            self.model.classifier = nn.Linear(n_features, num_classes=5)
            
    
        def forward(self, input_neurons):
            output_predictions = self.model(input_neurons)
            return output_predictions

此外,在我的 transforms 中,我倾向于使用 Resize(img_size = 512, img_size=512) 来训练某些图像 class 化任务(主要是 Kaggle 竞赛)。所以这里的问题是,EfficientNetB5 的官方输入大小是 456x456,但我使用了 512x512 甚至 256x256 并获得了非常不错的结果。这是正常的吗?还是我错过了作者会为您调整为原始分辨率的源代码?

PS:这似乎是我在 Kaggle 上看到的所有 PyTorch 教程中的常态。我的完整代码可以在 notebook 这里看到;我喜欢不留逻辑空白,因此弹出了这个问题。

是的,在迁移学习方面,您可以使用不同的输入大小,毕竟您加载的模型只是固定层序列和固定卷积核大小的一组权重。但我相信模型需要某种最小尺寸才能有效工作。您仍然需要重新训练模型,但它仍然会很快收敛。

您必须检查关于模型最小尺寸的官方实现,例如 VGG16 中的那个,他们指定宽度和高度至少需要 32