1

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

4

2 回答 2

1

我相信你也应该使用vgg_preprocessing。在preprocessing_factory.pyget_preprocessing()中:

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

您还可以验证使用preprocessing_factory.get_preprocessing()from train_image_classifier.py

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)
于 2017-08-25T16:27:07.930 回答
0

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

如果 ResNet 的此图像处理操作没有默认tf-slim方法,您可以基于变体进行自己的实现

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

于 2017-08-25T11:39:00.437 回答