2017-10-07 9 views
0

私自身のグレースケール画像を使ってVGG16モデルを微調整したいと思います。私は/を微調整するような何かをすることによって自分自身の上位レイヤーを追加することができます知っている:KerasでVGG16ネットを微調整するチャンネル数を変更するには

base_model = keras.applications.vgg16.VGG16(include_top=False, weights='imagenet', input_tensor=None, input_shape=(im_height,im_width,channels)) 

だけチャンネル= 3 documentationによります。 イメージに2つの冗長チャンネルを追加することを考えましたが、これは計算の浪費のように思えます/分類を悪化させる可能性があります。 3つのチャンネルにまたがって同じ画像を複製することもできますが、どのようにプリフォームするかについても同様です。

答えて

1

ケラスの訓練されたモデルはカラー画像を訓練しており、フルパワーを使いたい場合は、微調整のためにカラー画像を使用する必要があります。ただし、グレースケールイメージを使用している場合でも、3つのチャネルでグレースケールイメージを繰り返すことで、これらの事前にトレーニングされたモデルを使用できます。しかし、明らかに、入力としてカラー画像を使用するだけではありません。

0

VGGケラスモデルは、関数:keras.applications.imagenet_utils._obtain_input_shapeを使用します。

input_shape = _obtain_input_shape(input_shape, default_size=224, min_size=48, data_format=K.image_data_format(), include_top=include_top)

と::

input_shape = (im_height, im_width, 1)

この関数はImageNetデータに合わせたので、それは、入力チャンネルが3つの可能な回避策はラインをVGG16モジュールをコピーして交換することになることを強制します

入力スペースが変更され、最初のレイヤの畳み込みが一致しないため、ImageNetウェイトを読み込むことができません。

関連する問題