こしあん
2018-09-20

Channelwise Variational AutoEncoder(失敗)

Pocket
LINEで送る
Delicious にシェア

727{icon} {views}

新刊情報

技術書典8の新刊『モザイク除去から学ぶ 最先端のディープラーニング』(A4・195ページ)好評通販中です! 機械学習の入門からGANの最先端までを書いたおすすめの本となっています! Boothで試し読みできます。情報まとめ・質問用GitHub



Variational Auto Encoder(VAE)を試していて、カラー画像は上手く行かなくてもグレースケール画像ならそこそこうまく行ったので、「じゃあチャンネル単位にVAEかけて後で結合すればカラーでもきれいにいくんじゃね?」と安直な発想で試してみたら失敗しました。それの記録を書きました。

発想

入力画像をRGBチャンネル単位に分割して(channel-wise)、チャンネル単位のVAEをかける。各チャンネル間の出力画像を合成する。サンプリングもRGB単位で独立にサンプリングする(なぜならVAEのサンプリングも、標準正規乱数であって潜在変数どうしの相関はサンプリング時に考えないから)。

結論からいうとこれは失敗でした。結果を見ます。STL-10のテストデータを学習させました。

Channel-wiseを使った例

Reconstruction


ちょっとカラーノイズが目立つ?

Sampling


全然ダメ

Channel-wiseを使わない例

Reconstruction


きれいというわけではないけどカラーノイズはない

Sampling


こちらもきれいというわけではないけどChannel-wiseを使った例よりはマジ

結論

channel-wise VAEはダメだった!

理由としてはいくつかあると思いますが、潜在空間の意味を考えるのがわかりやすいと思います。潜在空間では画像の意味、例えば「猫」「犬」といった変数にマッピングしているのであって、それはRGBチャンネルを分割することとは異なるからだと思います。

コード

コードは以下の通りです。なお、Channel-wiseを使った例・使わない例はtrain.pyで次のように設定しました。

# Channel-wiseを使った例
net = MultipleVAE(True, 1, device)
# Channel-wiseを使わない例
net = MultipleVAE(False, 2, device)

もう少しうまく行ったらパラメーターを変えて試してみたかったのですが、あまりに失敗だったのでやめました。



新刊情報

技術書典8の新刊『モザイク除去から学ぶ 最先端のディープラーニング』好評通販中(A4・195ページ)です! Boothで試し読みもできるのでよろしくね!


Pocket
LINEで送る
Delicious にシェア

Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です