ResNet中fintune的图像预处理

时间:2017-07-07 04:11:29

标签: python deep-learning

我想微调ResNet50 ImageNet预训练模型,我有一些关于微调图像预处理的问题。

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

  2. 我确实看到很多人将数据重新调整为[0,1],但是预训练模型(ImageNet)在[0,255]中使用了图像比例。人们为什么这样做?这合理吗?

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

  1. 我会尝试两者。减去你的平均值是有道理的,因为通常一个人试图得到平均值0.减去图像净平均值是有意义的,因为你想要网络作为特征提取器。如果你在特征提取器的早期改变某些东西,它可能根本不起作用。
  2. 就像平均值0一样,它通常被视为具有固定范围内的特征或具有固定标准偏差的特征。再一次,我无法告诉你什么是更好的,但你可以轻松地尝试它。我的猜测是没有太大的差异。
  3. 最重要的是:确保对训练/测试/评估数据应用相同的预处理步骤。