1

テンソルフロースリムのResNet-50モデルを使用してフィーチャを抽出しています。私の質問は、画像を入力する前にいくつかの標準的なResNets-50の平均値に従って画像を中央に配置する必要がありますか?私はvgg-19のために、で定義された _mean_image_subtraction(image, means)を使用してセンタリングのオプションを提供することを知っています。しかし、私はResNetsのためのそのようなファイルや機能を見つけることができませんでした。テンソルフロースリムのResNet-50のイメージセンタリング

答えて

1

私はvgg_preprocessingも使うべきだと思います。 preprocessing_factory.pyからget_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, 
} 

また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) 
+0

パーフェクト。これは私が探していたものです。それはResNetsのためにもvgg_preprocessingを持っているのでとても奇妙です。彼らはこれの総称を置くべきだった。 –

0

はい、画像をセンターする(正規化する)必要があります。モデルコンバージェンスを向上させるために行う必要があります。

ResNetため、この画像処理動作のためにはデフォルトtf-slim方法がない場合、あなたはthisバリアント

に基づいて独自の実装を行うことができる。また、(_mean_image_subtraction(image, means)から)meansをカウントするより有用である全体の訓練のためにバッチではなく、単一の画像またはデータセット全体に対して使用します。

+0

、手段を減算する必要がある場合。多くのフレームワークが元のモデルを調整し、すべてのResNetモデルから同じ平均値を差し引くことができます。したがって、それがtf-slimで行われなければならないかどうかを知ることは理にかなっています。そうであれば、特定のネットワークの平均値は何ですか? –

+0

特定のネットワークではなく、特定のデータセットの数をカウントする必要があります。正規化を行うもう1つの方法については[こちら](http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#cv2.normalize)をご覧ください。 – Dmitry

+0

ネットワークでは、ネットワークが最初に訓練された画像。転送学習では、元のデータセットから手段を差し引くことが非常に標準的な方法です。参考までに - https://github.com/vlfeat/matconvnet/issues/485 –

関連する問題