tensorflow-slim 中 ResNet-50 中的图像居中

Image centering in ResNet-50 in tensorflow-slim

我在 tensorflow-slim 中使用 ResNet-50 模型来提取特征。我的问题是在输入图像之前是否需要根据一些标准的 ResNets-50 平均值将图像居中?我知道对于 vgg-19,tf-slim 提供了使用 vgg_preprocessing.py 中定义的 _mean_image_subtraction(image, means) 居中的选项。但是我找不到 ResNets 的任何此类文件或函数。

是的,您应该将图像居中(标准化)。为了更好的模型收敛应该这样做。

如果 ResNet 的图像处理操作没有默认 tf-slim 方法,您可以根据 this 变体

自行实现

此外,为整个训练批次计算 means(来自 _mean_image_subtraction(image, means))更有用,而不是为单个图像或整个数据集计算。

我相信您也应该使用 vgg_preprocessing。在 get_preprocessing() 来自 preprocessing_factory.py:

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,
  '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,
}

您还可以从 train_image_classifier.py:

验证 preprocessing_factory.get_preprocessing() 的使用
preprocessing_name = FLAGS.preprocessing_name or FLAGS.model_name
image_preprocessing_fn = preprocessing_factory.get_preprocessing(
    preprocessing_name,
    is_training=True)

...

image = image_preprocessing_fn(image, train_image_size, train_image_size)