【问题标题】:Image centering in ResNet-50 in tensorflow-slimtensorflow-slim 中 ResNet-50 中的图像居中
【发布时间】:2018-02-02 15:19:27
【问题描述】:

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

【问题讨论】:

    标签: computer-vision deep-learning tensorflow-gpu tf-slim resnet


    【解决方案1】:

    我相信你也应该使用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)
    

    【讨论】:

    • 完美。这就是我一直在寻找的。虽然这很奇怪,他们也有用于 ResNets 的 vgg_preprocessing。他们应该为此设置一个通用名称。
    【解决方案2】:

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

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

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

    【讨论】:

    • 这正是我想知道的,如果需要减去手段。许多框架调整原始模型,以便可以从所有 ResNet 模型中减去相同的平均值。所以有必要知道它是否必须在 tf-slim 中完成,如果是,那么特定网络的平均值是多少。
    • 必须针对特定数据集而非特定网络计算平均值。您还可以查看here 以了解另一种进行标准化的方式
    • 网络均值是指最初训练网络的图像的均值。从原始数据集中减去均值是迁移学习中非常标准的做法。供您参考-github.com/vlfeat/matconvnet/issues/485
    猜你喜欢
    • 2018-01-22
    • 2018-11-08
    • 2018-10-04
    • 2022-01-10
    • 2020-06-09
    • 2018-07-25
    • 2020-04-24
    • 2018-09-30
    • 1970-01-01
    相关资源
    最近更新 更多