ResNet RGB 表示在 tensorflow-slim
Posted
技术标签:
【中文标题】ResNet RGB 表示在 tensorflow-slim【英文标题】:ResNet RGB means in tensorflow-slim 【发布时间】:2018-01-22 12:37:51 【问题描述】:我正在使用 tensorflow slim 加载预训练模型,例如 vgg 和 resnet-50。因此对于 vgg , tf-slim 提供了一种加载 RGB 平均值的方法,例如:
from preprocessing.vgg_preprocessing import (_mean_image_subtraction,
_R_MEAN, _G_MEAN, _B_MEAN)
我找不到与 resnets 类似的东西。还没有实施吗?我也知道一些像 py-torch 这样的库为每个模型提供了全局平均值。 tf-slim 也是这样吗?
【问题讨论】:
【参考方案1】:我在 ImageNet 验证数据集上测试了 Resnet_v1_50 和 Resnet_v2_50 的 Slim 检查点,结果是 Resnet_v1_50 使用 VGG 预处理,而 Resnet_v2_50 使用 Inception 预处理。
Github issue 还在source code 中指出了误导性信息。
【讨论】:
【参考方案2】:实际上,尽管preprocessing_factory
说restnetv2 使用vgg_preprocessing,但事实并非如此。
resnetv2 的正确预处理是 inception_preprocessing,如此 github 问题 https://github.com/tensorflow/models/issues/2217
【讨论】:
【参考方案3】:前面的答案其实并不完全正确。 看一下 https://github.com/tensorflow/models/blob/master/research/slim/preprocessing/preprocessing_factory.py
可以看到Resnet-V1和ResNet-V2都使用了VGG预处理
preprocessing_fn_map =
'cifarnet': cifarnet_preprocessing,
'inception': inception_preprocessing,
'inception_v1': inception_preprocessing,
'inception_v2': inception_preprocessing,
'inception_v3': inception_preprocessing,
'inception_v4': inception_preprocessing,
'inception_resnet_v2': inception_preprocessing,
'lenet': lenet_preprocessing,
'mobilenet_v1': inception_preprocessing,
'mobilenet_v2': inception_preprocessing,
'mobilenet_v2_035': inception_preprocessing,
'mobilenet_v2_140': inception_preprocessing,
'nasnet_mobile': inception_preprocessing,
'nasnet_large': inception_preprocessing,
'pnasnet_mobile': inception_preprocessing,
'pnasnet_large': inception_preprocessing,
'resnet_v1_50': vgg_preprocessing,
'resnet_v1_101': vgg_preprocessing,
'resnet_v1_152': vgg_preprocessing,
'resnet_v1_200': vgg_preprocessing,
'resnet_v2_50': vgg_preprocessing,
'resnet_v2_101': vgg_preprocessing,
'resnet_v2_152': vgg_preprocessing,
'resnet_v2_200': vgg_preprocessing,
'vgg': vgg_preprocessing,
'vgg_a': vgg_preprocessing,
'vgg_16': vgg_preprocessing,
'vgg_19': vgg_preprocessing,
【讨论】:
【参考方案4】:在 TensorFlow Slim resnet-v1 中使用 vgg_preprocessing。 Resnet-v2 默认使用 inception 预处理,它使用了大量的颜色、色调和饱和度增强。这降低了均值减法的相关性。
【讨论】:
以上是关于ResNet RGB 表示在 tensorflow-slim的主要内容,如果未能解决你的问题,请参考以下文章
将预训练的 inception_resnet_v2 与 Tensorflow 结合使用
图像分类手撕ResNet——复现ResNet(Keras,Tensorflow 2.x)
ResNet实战:tensorflow2.X版本,ResNet50图像分类任务(大数据集)