Python ResNet中finetune的图像预处理

Python ResNet中finetune的图像预处理,python,deep-learning,Python,Deep Learning,我想对ResNet50 ImageNet预训练模型进行微调,我对finetune的图像预处理有一些疑问 在ImageNet预处理中,我们需要减去像素的平均值([103.939116.779123.68])。当我使用数据集进行微调时,我应该减去ImageNet的平均值还是减去数据的平均值 我确实看到许多人将数据重新缩放到[0,1],但预训练模型(ImageNet)在[0255]中使用图像比例。人们为什么这样做?这合理吗 在我看来,人们夸大了图像预处理的影响。唯一真正重要的是,测试数据在价值尺度上与

我想对ResNet50 ImageNet预训练模型进行微调,我对finetune的图像预处理有一些疑问

  • 在ImageNet预处理中,我们需要减去像素的平均值([103.939116.779123.68])。当我使用数据集进行微调时,我应该减去ImageNet的平均值还是减去数据的平均值

  • 我确实看到许多人将数据重新缩放到[0,1],但预训练模型(ImageNet)在[0255]中使用图像比例。人们为什么这样做?这合理吗


  • 在我看来,人们夸大了图像预处理的影响。唯一真正重要的是,测试数据在价值尺度上与训练数据相似。使用批量标准化的预标准化数据集在理论上有一些好处,但在实践中,它并没有带来太大的差异(2-4%的准确率)

    如果你有一个正在运行的模型,并且你正试图在不增加参数量的情况下获得比我建议的更高的最后几%的准确率,那么我建议将其调整到你的用例中

    在我看来,没有一种方法适用于每个用例,但一个好的起点是使用与ImageNet相同的预处理,因为特征将类似于为ImageNet分类生成的特征

  • 我两个都要试试。减去你的平均值是有意义的,因为一般情况下,你会试图得到平均值0。减去图像净均值是有意义的,因为您希望网络作为特征提取器。如果您在功能提取器的早期更改了某些内容,则可能根本不起作用
  • 就像平均值0一样,通常认为在固定范围内或具有固定标准偏差的特征是可取的属性。再说一次,我不能告诉你什么更好,但你可以很容易地尝试。我的猜测是没有太大的区别

  • 最重要的是:确保对培训/测试/评估数据应用相同的预处理步骤。

    我认为如果使用imagenet的平均值,您将获得最佳的准确性。然而,我不认为这会有很大的不同。如果你做一个实验并让我们知道,那将是非常酷的!当您有许多不同比例的不同功能时,通常使用0到1之间的缩放。对于图像分类,这是不必要的,只要确保所有图像具有相同的缩放比例,并且模型是在具有相同缩放比例的图像上训练的。2-4%是一件大事