前提・実現したいこと
現在Autoencoderを学習させ顔画像からメガネを消去するといったものを作成しています。顔画像のメガネなどをかけていない画像を6300枚、訓練データで学習させているのですが、1epoch目からloss値がマイナスになってしまいます、学習を安定化させ学習後にはメガネをつけた顔画像を入力し、出力にはメガネを除去した顔を出力したいと考えています。
発生している問題・エラーメッセージ
Autoenoderを学習させているのですが、1epoch目からloss値がマイナスになってしまいます、本来ならばloss値は0.5~0位の値をいくと思うのですが,,,
Autoenoderを学習させているのですが、1epoch目からloss値がマイナスになってしまいます、本来ならばloss値は0.5~0位の値をいくと思うのですが,,, テストの際にも顔画像からメガネが削除されず、そのまま再現した画像を出力してしまいます。 以下の方にモデルをkerasで書いているので添付させていただきます。
該当のソースコード
python
1nput_img = Input(shape=(256, 256, 3)) 2 x = Conv2D(128, 3, 3, activation='relu', border_mode='same')(input_img) 3 x = BatchNormalization()(x) 4 x = MaxPooling2D((2, 2), border_mode='same')(x) 5 x = Conv2D(64, 3, 3, activation='relu', border_mode='same')(x) 6 x = BatchNormalization()(x) 7 x = MaxPooling2D((2, 2), border_mode='same')(x) 8 x = Conv2D(64, 3, 3, activation='relu', border_mode='same')(x) 9 x = BatchNormalization()(x) 10 encoded = MaxPooling2D((2, 2), border_mode='same')(x) 11 12 x = Conv2D(64, 3, 3, activation='relu', border_mode='same')(encoded) 13 x = BatchNormalization()(x) 14 x = UpSampling2D((2, 2))(x) 15 x = Conv2D(64, 3, 3, activation='relu', border_mode='same')(x) 16 x = BatchNormalization()(x) 17 x = UpSampling2D((2, 2))(x) 18 x = Conv2D(128, 3, 3, activation='relu', border_mode='same')(x) 19 x = BatchNormalization()(x) 20 x = UpSampling2D((2, 2))(x) 21 decoded = Conv2D(3, 3, 3, activation='sigmoid', border_mode='same')(x) 22 23 autoencoder = Model(input_img, decoded) 24 print(autoencoder.summary()) 25 26 autoencoder.compile(optimizer='adam', loss='binary_crossentropy',metrics=['accuracy']) 27 28 autoencoder.fit(images, images, batch_size=9,epochs=50,verbose=1,validation_data=(images2,images2),shuffle=True) 29
試したこと
モデルを他のモデルに変えたり、BatchNormalizationを追加してみたりしたのですが、ほぼ何も変わらずといった具合になっています、他にもバッチサイズを変えたりなどです。
もしかしたら、訓練データの方にも、問題があるかもしれないので訓練データも現在改良を加えている最中です
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー