※こちらは創作+機械学習 Advent Calendar 2021 10日目の記事です。
まずは以下の画像をご覧ください。
こちらの方が誰かご存知でしょうか?
なんとこの人は現実には存在しないAIが生成した画像なんです(というGANでよく聞く謳い文句)。機械学習、特に中でもDeep Learningの技術が発展しAIによって実在の人物と見分けがつかないレベルの高品質な画像もここ数年で生成できるようになりました。
※ちなみに上の画像はこちらのWeb上で動かせるデモで生成しました。
せっかくなので以下の動画もご覧ください。
これは先ほど載せた顔画像を生成したAIモデルと同じものを使って作られた映像です。モデルへの入力となる変数を少しずつ変えることで生成される画像も少しずつ変わるという特徴を活かし、それらの画像をつなげることでこのようなモーフィング映像ができあがります(超ざっくりな説明です)。
気持ち悪いと思われるかもしれませんがAIはそんなこと思っていないかも?しれません(私が意図的に変な出力にしました)。
AIというと実用的な面ばかりが注目されがちですが、同じAIの技術を使ってアートな作品を制作している人たちもいます。本記事では数多くあるAI技術の中から冒頭でも載せたGANの解説と作品制作に役立ちそうな情報をざっくりご紹介しようと思います。
GANとはなんぞや
まずGANとはGenerative Adversarial Network(敵対的生成ネットワーク)の略であり、機械学習の技術の中でも生成モデルといわれる中の1つです。大量のデータを学習させることでどこかしら似てはいるけど実在しない画像を生成したりできます(画像のイメージが強いですが音楽など違うものを生成する事例もあります)。
「敵対的生成ネットワーク - Wikipedia」の説明も一部引用します。
GANsは生成ネットワーク(generator)と識別ネットワーク(discriminator)の2つのネットワークから構成される。例として画像生成を目的とするなら生成側がイメージを出力し、識別側がその正否を判定する。生成側は識別側を欺こうと学習し、識別側はより正確に識別しようと学習する。このように2つのネットワークが相反した目的のもとに学習する様が敵対的と呼称される所以である。
馴染みのない方にとっては意味不明な文章かもしれません。正直なところ、すでにある学習済みのAIモデルを使う分には中身の構造はそんなに理解していなくても使えちゃいます。
ただ自分で用意したデータセットを学習させたい、モデルのアーキテクチャを自分で設計したいなど、より発展的な内容に取り組みたい方はもう少し機械学習のベースとなる話やGANの成り立ちなどを勉強する必要があるかと思います(そうすることで自分の作品により深みやオリジナリティを持たせることにも繋がります)。
とはいえ、いきなり意味不明なソースコードを読んだり自分で行列演算したりというのは厳しいものがあると思われるので、本記事ではできるだけお手軽に使えるツールや既存のコードをちょっと改造します的な内容をメインにしていきます。
※補足としてGANの概要を理解するのに良さげな記事もご紹介させていただきます。
GANを用いた作品紹介
ここではGANを使用している(と思われる)作品をいくつかご紹介します。とりあえずカッコいい作品を見てテンション上げてから制作に取り掛かりたいですよね。
全部解説するのは難しいので(私の憶測になってしまうので)タイトル&URLを羅列します。とりあえずイケてる作品を見て、クリエイターの皆さんにリスペクトを送りつつ制作のモチベーションを上げていただければ幸いです。
「Memories of Passersby I」by Mario Klingemann
「Studies of Collage of Paintings for Humanity」by yuma kishi
「Little Snake - 'Fallen Angels (feat. Flying Lotus)'」by Strangeloop
また、@_baku89さん主催「LookDev 自動勉強会」のGANのページに他の皆さんが挙げてくださった作品も載っているので参照してみてください。他にもメディアアート系のコンペなど見ているとしばしばGANを使用した作品が賞を取ったりしています(例「Convergence」)。
あと個人的にもGANを用いた作品をいくつか制作しています。特に株式会社デザイニウム在籍時に制作した「BreakGAN feat. BBOY STEEZ」は頑張りましたので良ければ見ていただけると嬉しいです。人間とAIのダンサーが向き合った時に何が生まれるのかイメージしつつBreaking(ブレイクダンス)のカッコよさを最大限に活かした作品です。※ダンサーさんも世界的にご活躍されているBBOY STEEZさんにご協力いただいてます!
他にも会社noteでGAN関連の記事をたくさん書いています。制作におけるTIPS的な内容もありますのでよければご参照ください。
GANを使ってみよう(Hugging Face編)
では実際にGANを使ってみましょう。
ここではHugging Face SpacesというMLアプリをデプロイできるサービスを使います。コミュニティの方々や中の人が色々なモデルをWeb上でお手軽に試せるようにしてくれているので、本記事ではGAN関連のモデルを一部抜粋してご紹介します(記事冒頭のデモもSpacesにあるやつです)。
AnimeGanv2 Face Portrait
1つ目は「AnimeGanv2 Face Portrait」というモデルで入力した画像をアニメ風?に変換して出力してくれるモデルです。いわゆるスタイル変換というやつでSNS上にこのモデルを使った画像や動画がたくさんバズっていました(モデルに罪はないが正直見飽きた)。実写映像をあえてアニメっぽくしたり、自作のイラストの雰囲気を変えてみたり的な使い方ができます。
私は想定されていないであろう変な使い方をするのが好きなので、目ん玉を貼り付けまくった雑コラみたいな入力画像を作成→変換したりしていました(途中で飽きました)。
Exploring interesting ways to use #AnimeGANv2 pic.twitter.com/AiA5xAdAQG
— __hahTD (@eatora22) 2021年11月7日
StyleProNet
2つ目は「Parameter-Free Style Projection for Arbitrary Style Transfer(StyleProNet)」です。1つ目と同じくスタイル変換のモデルですが、こちらのデモではどういうスタイルにするかも入力画像によって指定できます。油絵っぽくしたり浮世絵風にしたりと夢が広がります。
私はアイドルマスターシャイニーカラーズのスクショと聖蹟桜ヶ丘で撮影した画像を用意してシャニマスの世界を再現して遊んでいました。無駄に記事にもしたのでよければご覧ください。
CLIP Guided Diffusion
3つ目は「CLIP Guided Diffusion」です(ここで使われているのは"Diffusion Model"というものでGANではないのですが、紹介予定だったVQGAN+CLIPのデモが動かなくなったのでその代わり)。こちらはテキストを入力するとそれを元にした画像を生成してくれます。
テキストと画像を結びつける役割をしているのがCLIPで、こちらと生成モデルを組み合わせて色々な画像を生成しまくっている人たちを一定数ネット上では観測しています(by私)。出力を良い感じにするテクニックとして聞くのが、"unreal engine"や"trending on artstation"等をキーワードとして含めるやり方です(ただ絶対それで良い感じになるとは限らない)。
"Generative Dog And Cat In Heaven" by CLIP-Guided-Diffusion & Real-ESRGAN pic.twitter.com/zaXFLeXlEb
— __hahTD (@eatora22) 2021年10月18日
※最後に注意事項として、Spacesのデモは元となるソースコードのライセンスに依存しています(多分)。例えば元のライセンスが商用利用禁止のものであった場合は特に注意が必要です(Nvidia社のStyleGAN等々)。だいたいSpacesのページ下辺りに実装元やクレジット情報が載っていたりするのでよく調べてみましょう。
GANを使ってみよう(Colaboratory編)
続いてGoogle Colaboratory(略してColab)を使用したデモをいくつかご紹介します。
こちらはオンライン上でのPython実行環境で数万円はするGPUの使用が無料だったり、有料版だと多分100万円ぐらいするGPUが月1000円ちょっとで使えたりするスゴいサービスです(ただ使用時間が限られていたりいくつかの制限があります)(実はPython以外のプログラミング言語も扱えたりします)。
ソースコードがずらっと並んでおり非エンジニアの方はとっつきにくいかもしれませんが、基本的には画面上部のメニューより「ランタイム」→「すべてのセルを実行」を押せばだいたい勝手に動いてくれます(Googleアカウントの認証が必要な場合もあり)。
Colabの概要は@tomo_makesさんの詳しい記事が参考になります。ただ更新日がけっこう昔なので別途ググった方が良いかも(たくさん解説記事がヒットします)。
StyleGAN3
1つ目は「StyleGAN3」です。本記事冒頭のSpacesで生成した画像もこちらのモデルを使用しています。名前の通り1→2(+ADA)→3と進化してきたNvidia社による生成モデルで論文が発表されるたびに話題になっています。高解像度かつ高品質な画像を生成できることで有名です。
そんなStyleGAN3をColab上で使用できるように整備してくれた優しい人たち(Colab内のクレジット参照)がいるのです、感謝。しかも簡易GUIも備わっているのでだいぶ触りやすくなっていると思います。とりあえず何も考えずにセルをすべて実行してみて、その後は"seed"文字列が付いているバーを動かしたり"model"で違うモデルを選択したりして再度セル実行すれば色々なパターンの画像や動画が出力されていると思います。
上記デモを動かすだけでも面白いとおもうのですが、オリジナルのソースコードに改変を加えて結果を変えてみたり、出力された画像や動画を素材としてさらに皆さんが使われている制作ツールでアレンジしてみるのもより面白いと思います。以下の記事でそういった試行錯誤の例もご紹介していますのでよければ覗いてみてください。
VQGAN+CLIP
続いて、先ほどさらっと触れた「VQGAN+CLIP」のColab用デモです。こちらも簡易GUIが付いているので触りやすい方かなと思います。そしてスゴいのがめちゃくちゃ詳しい解説ページも用意されている点です(ただしスペイン語)。キーワード入力のテクニックなんかも載っています。
こちらもデモを動かすだけでなかなか面白いですが、さらに出力された動画を素材として加工したりした例も以下の記事で紹介していますのでよければご覧ください。
ちなみに「CLIP-Guided-Diffusion」のColab版もあります。面白い画像を生成しまくっている@RiversHaveWingsさんが用意してくれたデモです(ただし無料アカウントだとまあまあ実行に時間かかります)。私が試した時は草薙素子のような何者かが生成されました。
'GHOST IN THE SHELL' by CLIP-Guided-Diffusion#草薙素子なのか pic.twitter.com/ZV8iyZrB0y
— __hahTD (@eatora22) 2021年11月30日
その他
ちょうどこの記事公開の前後にTDSWさんにて@Scott_Allen__さんのColabとTouchDesignerを使用したワークショップが開催されています。AIでカッコ良い作品を作りたい人は参考にするといいかも。
We will welcome @Scott_Allen__ , a visual artist based in Tokyo!
— TDSW | Tokyo Developers Study Weekend (@tdsw_info) 2021年11月28日
TouchDesigner Vol.050&051 Intro to Deep Learning for Graphics Programmers - From Training to Inference
Youtube Live
12/05: https://t.co/0Rn8gU7nVn
12/12: https://t.co/3dhbfZg5y7
Details: https://t.co/NJCWBZycuo
さいごに
以上、GANを中心とした作品制作に役立ちそうな?情報をお届けしました。可能な限りクレジット情報も載せさせていただきました(クリエイターのみなさんの功績があってこその恩恵)。GAN以外にも機械学習界隈には面白い技術がたくさんあるので、ぜひ創作に関わる人たちはチャレンジしてみてください。私もGAN以外にDanceAIのようなプロジェクトに関わっているのでぜひそちらもチェックいただけると嬉しいです。
※もし本記事の内容に関して間違いや補足情報などありましたらぜひコメントにてご指摘ください。