187
117

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AIによる風景の†異世界変換†

Last updated at Posted at 2020-02-24

はじめに(†ホラー変換†)

変換前 変換後
tenmonkan_A.png tenmonkan_B.png

おわかり、いただけたでしょうか。

こちらはGAN(敵対的生成ネットワーク)を活用し、写真に**「ホラー」**の特徴を与え、変換しています。

原理についてはひとまず置いておいて、まずはGANの可能性をご覧ください!

##季節変換、オーロラ変換、花火変換

変換前 変換後
epoch100_real_A.png epoch100_fake_B.png
IMG_20161001_220428_real.png auroraB.png
epoch027_real_A.png epoch027_fake_B.png
IMG_20161001_220428_real.png IMG_20161001_220428_fake.png

これらはCycleGAN[1]を利用して「夏と春」「雲とオーロラ」「空と花火」などのペアで特徴の入れ替えを行っています。
ただ色彩を変えるわけでなく、言わば「画像の翻訳(変換)」のように原型を保ちながら変換が行われています。

CycleGANの原理について詳しく知りたい方は、こちらの記事を参考にしてください。私も大変お世話になりました。

風景の†異世界変換†

今回、私はこの技術を写真の**「風景変換」**に……否!!

**「†異世界変換†」**に活用しました!!

4ヶ月に渡る奮闘と、その成果をご覧ください。

##†ファンタジー変換†
まずは†ファンタジー変換†です。
「風景(鹿児島)」と「ファンタジー・幻想的」のペアでデータセットを作成し学習しました。
やはり抽象的な表現は難しく、画像の選別に大変苦労しましたね。

変換前 変換後
kagoshimaA.png kagoshimaB.png
epoch100_real_A_real.png epoch100_real_A_fake.png
BP19-113432D_real.png BP19-113432D_fake.png

出ました!
ただでさえ美しい鹿児島の風景が、更に幻想的で神秘的に!?
光の粒は「ただのノイズ」か……?
いやいやいや、私の目には**「妖精が飛んでいる」ように見えますね。
全体的に
青色がとっても綺麗**です。

##†ホラー変換†
続いては、冒頭でもご紹介した†ホラー変換†です。

**※※※閲覧注意※※※**ですよ。

変換前 変換後
tenmonkan_A.png tenmonkan_B.png
epoch111_real_a.png epoch111_fake_b.png
epoch171_real_a_360.png epoch171_real_a_360_fake (1).png

ご覧下さいこの街並みを……!!
貴方に足を踏み入れる勇気はありますか?
このままホラーゲームのテクスチャとして使いたいほどです。

こちらは「街並み」と「ホラー映像」のペアでデータセットを作成し学習しました。
もっと言うと「SIREN」「サイレントヒル」のプレイ画面を学習AIに見せ続けました。
全体的に街並みが赤黒い理由がこれです(何枚か試してみましたが川は赤くなりませんでした。残念)。

##†海底都市変換†
続いて、†海底都市-Atlantis-変換†です。
『「風景」に「水中」の特徴を混ぜたら「海底都市」になるのでは?』
という安直な発想からデータセットを作成し学習しました。

変換前 変換後
atlantisA.png atlantisB.png
epoch126_real_A.png epoch126_fake_B.png
kutsu_180523sogi02_real.png kutsu_180523sogi02_fake.png

見事ですね……!
竜宮城の入り口……とでも言えましょうか?
後ろの木もまるでサンゴ礁のようですね。
水の神よ……感謝。
†海底都市-Atlantis-変換†では「ただの海中」画像だけでなく「ダイビング」画像からも集めたことから、
優秀なデータセットを作ることができました。

##†氷山変換†
つい先日、アナ雪2のスペシャル企画で「富士山や桜島を氷漬けにする」キャンペーンがありました。
GANで同様のことを行うと、どうなるでしょうか?
「桜島」と「氷山」のペアでデータセットを作成し学習しました!

変換前 変換後
epoch055_real_A.png epoch055_fake_B.png
epoch085_real_A.png epoch085_fake_B.png
epoch086_real_A.png epoch086_fake_B.png

いや、やりすぎでしょ。
ウキウキで変換結果見に行った時、一面氷河期になってて怖すぎて泣いちゃいました。

これがAIの反逆か……?
もっと丁寧にデータセットを作成し山の形を学習すれば、ここまで恐ろしい結果にはならなかったかもしれません。
**†氷河期変換†**と開き直れば見事この上ない完成度です。

学習方法について

学習データセット用の画像収集

CycleGANは教師なし学習です。ラベル付け等は必要ありません。
背景や構図がバラバラでも、数さえ揃えば上手く学習できるのがCycleGANのすごいところです。
今回の変換ではそれぞれ1000枚を目処に画像を収集し、データセットを作成しています。
普段の街並み1000枚を「trainA」、異世界の街並み1000枚を「trainB」といった形です。

そうは言っても異世界の住民ではないので、カメラの中に異世界の写真は1000枚もありません……。

そこで、私は主に下記2つの手法で学習用データセットを作成しました。

①グーグル画像検索で画像を集める

pythonのライブラリ「icrawler」が便利です。
詳しくはこちらの記事をご覧ください。大変お世話になりました。

「オーロラ」等のキーワードで画像を検索し、データセットを作成しました。


②動画を撮ってフレーム単位で画像を切り出す

①の手法では検索ワードによってはノイズデータが混ざりすぎて、学習用画像の選別が大変困難になってしまいます。
こんな時はOpenCV等でスタイル変換のイメージとなる動画をフレーム単位で画像化してあげると楽です。
詳しくはこちらの記事をご覧ください。大変お世話になりました。

例えば「ホラー変換」では、私がホラーゲームで一番怖かったシーンを合計30分ほど録画して、1000枚を目処に画像を切り出しました。

CycleGANで学習

いよいよCycleGANで学習です。
自身のPCでぶん回すのも良いのですが、Google Colabratoryがすごいです。
Jupyter Notebookをクラウドで使えるようなサービスです。
詳しくはこちらの記事をご覧ください。大変お世話になりました。

ざっくり説明すると無料でGPUを貸してくれるクラウドIDEです。すごい。
運が良ければTesla P100(約90万円のGPU)も無料でお借りできちゃいます。すごい。
クラウドIDEなので場所や自身のマシンスペックに左右されません。バックグラウンドで学習し放題です。すごい。
快適すぎてGoogleドライブに課金しちゃいました。アイラブグーグル。

ソースコード

https://colab.research.google.com/drive/1KmwC-eOU3Z02ZiCmgFv-rDG4HxzK-8zG
↑こちらが私が実際に**†異世界変換†**の学習に使っていたノートです。
Pytorch版のCycleGAN[2]をGoogle Colabratory上に実装しています。
まだまだ知識があやふやですが、自分へのメモがてら解説を挟んでいるので参考になれば幸いです!
まずはサンプルの定番の「ウマ→シマウマ」のスタイル変換から是非。

Webアプリ公開

近いうちゴリゴリ書きます
ngrokってすごいのよ!

参考文献

[1]Jun-Yan Zhu, Taesung Park, Phillip Isola, Alexei A. Efros, Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks, arXiv preprint arxiv:1703.10593, 2017.

[2]@inproceedings{CycleGAN2017,
title={Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networkss},
author={Zhu, Jun-Yan and Park, Taesung and Isola, Phillip and Efros, Alexei A},
booktitle={Computer Vision (ICCV), 2017 IEEE International Conference on},
year={2017}
}
@inproceedings{isola2017image,
title={Image-to-Image Translation with Conditional Adversarial Networks},
author={Isola, Phillip and Zhu, Jun-Yan and Zhou, Tinghui and Efros, Alexei A},
booktitle={Computer Vision and Pattern Recognition (CVPR), 2017 IEEE Conference on},
year={2017}
}

187
117
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
187
117

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?