はじめに
物工/計数 Advent Calendar 2019の空き枠にお邪魔させていただきました.
最近, 「SinGAN」でいろいろと遊んでいたので, その結果を雑にまとめてみようと思います.
SinGANは, ICCV 2019でベストペーパーに選ばれたことで話題になった論文です.
たった1枚の画像で学習して, 同じ特徴を持った任意のサイズの画像を生成するほか, こんなこともできる優れものです.
論文: https://arxiv.org/abs/1905.01164
コード: https://github.com/tamarott/SinGAN
動画: https://youtu.be/xk8bWLZk4DU
しかも, 画像1枚・GPU1台で手軽に試せるところも嬉しいポイントです. GPU1台だと, 私の環境では毎回の学習に数時間かかりました.
論文の内容については, 早く修論を書かなければならないので既に他に解説してくださっている方がいるので, ここでは割愛します.
Qiitaだけでも数件見つかりました.
- 【SinGAN】たった1枚の画像から多様な画像生成タスクが可能に
- 【論文解説】SinGAN: Learning a Generative Model from a Single Natural Image
- ICCV2019 Best Paper "SinGAN"さらっと読んで簡単にまとめてみた
さて, 本記事では, SinGANのREADMEにしたがっていろいろな機能(主にAnimation)を試してみます. 再現したい方はレポジトリをクローンしておいてください.
なお, SinGANで遊んでみた結果は適宜#SinGANで細々とツイートしています. みなさんもぜひ.
Animation
静止画から動画を作るのは, こちらのコマンドで一発です.
$ python animation.py --input_name <input_file_name>
ラーメン
まずは定番のラーメンから.
こちらの美味しそうなラーメンが…
この通り. 活きが良くて美味しそうですね!
二郎系のラーメンはどうなるでしょうか?
こちらの冷やし中華が…
この通り. 活きが良くて美味しそうですね!
ピザ
海鮮丼
ラテアート
こちらのカフェラテが…
この通り. 活きが良くて美味しそうですね!
『叫び』
Munchの『叫び』が…
この通り. 自我が崩壊していますね!
青の洞窟(渋谷の方)
渋谷のイルミネーションが…
この通り. これが最も正しい使い方だった気がします.
Harmonization
コラージュを自然にするには, まずモデルの学習が必要です. 背景となる画像を指定してください.
$ python main_train.py --input_name <input_file_name>
2つめのコマンドで, 切り貼りした画像とマスク画像を指定してharmonizeします. こちらはすぐに完了します.
$ python harmonization.py --input_name <training_image_file_name> --ref_name <naively_pasted_reference_image_file_name> --harmonization_start_scale <scale to inject>
マスク画像の作成にはこちらを参考にしました.
Gimpで特定領域の白黒マスク画像を作成する – Urusu Lambda Web
さて, 今回はMonetの『睡蓮』にサンタクロースを合成したいと思います. こちらの切り貼りした画像が…
このようになりました. 小さくて見えづらいですね.
Super Resolution
SinGANは超解像もできるので, 先ほどの画像を大きくしてみましょう.
こちらのコマンドで一発です. 何も指定しないと縦横が4倍になります.
$ python SR.py --input_name <LR_image_file_name>
メリークリスマス!よいお年を!
おまけ
HarmonizationとSRで有名絵画とポケモンをコラボレーションさせてみました.
どちらもイマイチな出来ですね. まだHarmonizationのコツがよくわかっていません.