模型重量从caffe移植,所以它在BGR format。
Caffe使用BGR颜色通道方案来读取图像文件。由于imread的基础OpenCV实现,这是 。 RGB的假设 是一个常见的错误。
您可以找到原始caffe模型重量文件on VGG website。这个链接也可以在Keras文档中找到。
我认为第二个范围是最接近的范围。训练期间没有缩放,但作者已经减去了ILSVRC2014训练集的平均值。正如the original VGG paper指出,第2.1节:
我们做的唯一预处理扣除平均RGB值, 计算训练集,从每个像素。
这句话实际上是imagenet_utils.preprocess_input(mode='caffe')
所做的。
- 转换从RGB到BGR:因为在RGB格式
keras.preprocessing.image.load_img()
加载图像,需要这种转换的VGG16(和朱古力移植所有型号)。
- 减去平均BGR值:从图像阵列中减去
(103.939, 116.779, 123.68)
。
预处理器未在vgg16.py
中使用。它被导入到文件中,以便用户可以通过调用keras.applications.vgg16.preprocess_input(rgb_img_array)
来使用预处理功能,而不必关心模型权重的来源。 preprocess_input()
的参数始终是RGB格式的图像数组。如果模型是用caffe训练的,preprocess_input()
将把数组转换成BGR格式。
请注意,功能preprocess_input()
不打算从imagenet_utils
模块调用。如果您使用的是VGG16,请致电keras.applications.vgg16.preprocess_input()
,图像将被转换为VGG16训练的合适格式和范围。同样,如果您使用的是Inception V3,请致电keras.applications.inception_v3.preprocess_input()
,图像将被转换为Inception V3的训练范围。