【问题标题】:What is the right way to preprocess images in Keras while fine-tuning pre-trained models在微调预训练模型的同时在 Keras 中预处理图像的正确方法是什么
【发布时间】:2018-07-18 12:42:41
【问题描述】:

在针对我们自己的数据微调 keras.applications 中的预训练模型的同时,在 Keras 中预处理数据的正确方法是什么?

Keras 提供以下preprocess_input 函数

keras.applications.imagenet_utils.preprocess_input

keras.applications.inception_v3.preprocess_input

keras.applications.xception.preprocess_input

keras.applications.inception_resnet_v2.preprocess_input

从内部看,对于 inception_v3、xception 和 inception_resnet_v2,它使用 mode='tf' 调用 keras.applications.imagenet_utils.preprocess_input。而对于其他模型,它设置mode='caffe',每个模型执行不同的转换。

在 Francois chollet 的关于迁移学习的博文中——https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html——通过除以 255 将其归一化为 [0, 1]。难道不应该使用 Keras 中的 preprocess_input 函数吗?

还不清楚输入图像应该是RGB还是BGR?这方面是否有任何一致性,还是特定于所使用的预训练模型?

【问题讨论】:

  • 你使用的是什么预训练模型?
  • 你好 Daneile,我并不专注于某个特定的预训练模型。我想根据我的数据对所有这些进行微调,并找出哪一个表现最好。

标签: python machine-learning deep-learning keras


【解决方案1】:

始终在相应的模型级模块中使用preprocess_input 函数。也就是说,将keras.applications.inception_v3.preprocess_input 用于InceptionV3,将keras.applications.resnet50.preprocess_input 用于ResNet50

mode 参数指定训练原始模型时使用的预处理方法。 mode='tf' 表示预训练的权重是从 TF 转换而来的,作者用[-1, 1] 输入范围训练模型。 mode='caffe'mode='torch' 也是如此。

applications.*.preprocess_input 的输入始终是 RGB。如果模型需要 BGR 输入,则通道将在 preprocess_input 内排列。

您提到的博文是在引入keras.applications 模块之前发布的。我不建议将其用作 keras.applications 进行迁移学习的参考。也许改用docs 中的示例会更好。

【讨论】:

  • 非常感谢您的回答!如果我们的数据的均值和标准差与 image-net 不同,那么解释它的最佳方法是什么?使用从图像网络数据(与我们的数据相反)得出的统计数据转换到目标范围会不会很糟糕?
  • 有可能。虽然根据我自己的经验,这并不重要,但我认为这取决于数据集。
  • @Yu-Yang Keras 是否提供了权重和模型从何处获得以及如何预处理输入的参考?如果用户能够验证输入是否以某种方式进行了预处理以用于模型的训练,那就太好了。目前,如果我使用 Keras 的 vgg19 模型,那么我只需要相信 Keras 预处理输入的方式是正确的。
  • @user3731622 我认为只有部分信息。您可以在doc 的“许可证”部分找到一些链接。您也可以在代码中找到它。以Inception-ResNet v2为例,由于权重是从TF-slim获取的,所以可以检查TF-slim中的预处理功能是否与Keras中的相匹配。
  • 您也可以尝试在 ImageNet 上验证模型性能(准确度等)。如果预训练模型的性能与作者声称的性能相匹配,那么预处理可能是正确的。
猜你喜欢
  • 2017-06-05
  • 2019-06-22
  • 1970-01-01
  • 2019-12-08
  • 2019-01-20
  • 2020-10-01
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
相关资源
最近更新 更多