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