我正在使用Keras VGG16 模型。
我已经看到有一个preprocess_input 方法可以与 VGG16 模型结合使用。此方法似乎调用 imagenet_utils.py 中的preprocess_input 方法(视情况而定)调用imagenet_utils.py 中的 _preprocess_numpy_input 方法。
有preprocess_input
一个mode
参数需要“caffe”、“tf”或“torch”。如果我在 Keras 中使用带有 TensorFlow 后端的模型,我绝对应该使用mode="tf"
吗?
如果是,这是因为 Keras 加载的 VGG16 模型是用经过相同预处理的图像训练的(即将输入图像的范围从 [0,255] 更改为输入范围 [-1,1])?
另外,测试模式的输入图像是否也应该进行这种预处理?我相信最后一个问题的答案是肯定的,但我想要一些保证。
我希望 Francois Chollet 能正确地做到这一点,但是看看https://github.com/fchollet/deep-learning-models/blob/master/vgg16.py是他还是我在使用mode="tf"
.
更新信息
@FalconUA 将我带到牛津的 VGG,它有一个模型部分,其中包含 16 层模型的链接。有关preprocessing_input
mode
参数tf
缩放到 -1 到 1 并caffe
减去一些平均值的信息,请访问Models 16 层模型中的链接:信息页面。在描述部分它说:
“在论文中,模型表示为使用尺度抖动训练的配置 D。输入图像应通过平均像素(而不是平均图像)减法以零为中心。即,应减去以下 BGR 值:[103.939, 116.779、123.68]。”