2017-09-04 17 views
1

超解像度を行うCNNで作業しています。トレーニングがうまくいく、何のオーバーフィッティングはありませんが、私は低解像度の画像に訓練されたネットワークをしようとすると、出力画像は、その色変更されました:超解像度時の色の変化


入力画像

The original image

出力画像

The output image


長いトレーニングでも、結果は同じままです。誰かが似たような問題に直面したことはありますか?

私の最初のアイデアは、出力活性化機能をReLuの代わりに0から1(シグモイド)に変更することでしたが、改善はありません。人々は最初のYCrCb形式に画像を変換する論文のほとんどで

input_img = Input(shape=(None,None,3)) 

c1 = Convolution2D(64, (3, 3))(input_img) 
a1 = Activation('relu')(c1) 

c2 = Convolution2D(64, (3, 3))(a1) 
a2 = Activation('relu')(c2) 
b2 = BatchNormalization()(a2) 

c3 = Convolution2D(64, (3, 3))(b2) 
a3 = Activation('relu')(c3) 
b3 = BatchNormalization()(a3) 

c4 = Convolution2D(64, (3, 3), strides=(2,2), padding='same')(b3) 
a4 = Activation('relu')(c4) 
b4 = BatchNormalization()(a4) 

c5 = Convolution2D(64, (3, 3))(b4) 
a5 = Activation('relu')(c5) 
b5 = BatchNormalization()(a5) 

d1 = Conv2DTranspose(64, (3, 3))(b5) 
a6 = Activation('relu')(d1) 
b6 = BatchNormalization()(a6) 

m1 = add([a4, b6]) 
a7 = Activation('relu')(m1) 

d2 = Conv2DTranspose(64, (3, 3), strides=(2,2), padding='same')(a7) 
a8 = Activation('relu')(d2) 
b8 = BatchNormalization()(a8) 

d3 = Conv2DTranspose(64, (3, 3))(b8) 
a9 = Activation('relu')(d3) 
b9 = BatchNormalization()(a9) 

m2 = add([a2, b9]) 
a10 = Activation('relu')(m2) 

d4 = Conv2DTranspose(64, (3, 3))(a10) 
a11 = Activation('relu')(d4) 
b10 = BatchNormalization()(a11) 

d5 = Conv2DTranspose(3, (3, 3))(b10) 
a12 = Activation('relu')(d5) 
b11 = BatchNormalization()(a12) 

m3 = add([input_img, b11]) 
a13 = Activation('relu')(m3) 

out = Convolution2D(3, (5, 5), activation='sigmoid', padding='same') (a13) 

model = Model(input_img, out) 
model.compile(optimizer='adam', loss='mae') 
+0

目的は何ですか?あなたは正確に何のために最適化していますか? –

+0

このネットワークは、アップサンプリングされた低解像度画像を入力として取り込み、高解像度を得ます。低解像度/高解像度画像のペアで訓練されていますが、私がテストセットでそれをやろうとすると、結果は色の変化に直面します –

+0

サンプル画像を見ると、RGBレンジが歪んでいるようです緑色は黄色になります(緑色の次元は予想よりも高い値を示します)。これはこの特定の画像の人工物であるかもしれません - 異なる色を含む画像に同様のスキューがありますか?別の損失(https://keras.io/losses/)を使ってみましたか? –

答えて

0

、及び(関連するすべての画像の詳細が含まれている)プロセスが唯一のY-チャンネルで:ここで

は私のKerasに実装されたネットワークでありますCNN。再構成されたYチャンネルは、従来の双三次補間(または選択した補間)を使用してアップサンプリングされたCrチャンネルおよびCbチャンネルと結合され、画像はRGBに変換されます。これを試してみてください。うまくいくかもしれません。

関連する問題