![見出し画像](https://assets.st-note.com/production/uploads/images/24333977/rectangle_large_type_2_2228fd0ebad560d17ac47504d3da8d26.png?width=1200)
【映像制作】BigGANを使って生物の進化を表現してみる
こんにちは!デザイニウムのBBOY/エンジニアの平澤(@eatora22)です。今回はAIを使って映像を生成する制作プロセスをご紹介をしようと思います。
はじめに
まずは以下の動画をご覧ください。
こちらはGAN(Generative Adversarial Network)と呼ばれる機械学習の手法を用いて制作した映像です。テーマは「生物の進化」や「生物地球化学的循環」にしてみました。画像はすべてGANが自動で生成したものとなっており、さらにTouchDesignerを使い映像の再生速度を音楽に合わせてコントロールしています。
またすでにお気付きの方もいるかもしれませんが、こちらの動画はかの有名なミュージックビデオ「Fatboy Slim - Right Here, Right Now」をオマージュしております(監督はGarth Jenningsさんです)。ぜひ本家のMVと見比べてみてください。
技術紹介
今回はたくさん種類のあるGANの中でもBigGANというモデルを採用しました。AI系企業では非常に有名なGoogleのDeepMind社によるもので、オンラインのPython実行環境であるGoogle Colaboratory上ですぐに試せるサンプルも無償で公開されています。
BigGANの特徴として、最大512×512サイズという高解像度での画像生成が可能です。GANは一般的に学習が不安定なことで知られており高品質な画像出力は難しかったのですが、そのような中でBigGANが発表されたこともあり話題となった手法です(最近はStyleGANの方が有名かと思いますが……)。さらにBigGANでは出力画像のカテゴリーもコントロールすることができます。DeepMind社が提供しているモデルはImageNetという非常に大規模な画像データセットで学習が行われており、1000個ものカテゴリーで画像を生成することができます。動物や乗り物、服や自然などいろいろなものが含まれます。
また、この事前学習済みモデルはTensorFlow Hubにてダウンロードすることもできます。下記URLで「BigGAN」と検索してみてください。
さらにGANの基本的な構造にもここで触れておきます。GANにはGeneratorとDiscriminatorという二つのネットワークが含まれています。Generatorにはノイズzを入力として本物の画像により近いものが生成できるように学習していきます。一方でDiscriminatorではGeneratorが生成した画像の真偽を判定するように学習していきます。これらの学習を交互に行うことで最終的に本物と見分けがつかないような画像をGeneratorが生成できるようになることがゴールです。つまり、上に記したGoogleColabサンプルも学習済みのGeneratorを使って画像を生成しているのです。
また、カテゴリーAとカテゴリーBの遷移を補完するようにGeneratorへの入力であるノイズzを設定することでその中間画像も生成することができます。下の画像はフラミンゴとウォンバットの中間の何かです。
something between flamingo and wombat.#biggan #generative #justtesting pic.twitter.com/2SAyxMRtqn
— hahTD (@eatora22) April 17, 2020
こうして生成した複数のカテゴリー間の遷移画像をつなげることで以下のような不思議なモーフィング動画を作ることもできます。
また、通常モデルとは別により層の深いDeepな学習済みモデルも使えたので試してみた結果が以下の動画です。生成画像の品質は上がっているのですが、モーフィング中に別のカテゴリーに寄ってしまうことがあるようです。通常モデルとは異なり遷移中にカメっぽい画像が混ざっていたりするのが見えますか?(こちら詳しい方いましたらコメント等で原因教えていただけると幸いです!)
さらに同一カテゴリーであってもサンプルコード内で提供されているnoise_seed値を変更することで色々なパターンの画像を生成することができます。以下の動画はjellyfishカテゴリーでnoise_seed値のみランダムに生成しながら作成した動画です。
その他にもBigGANならではのパラメーターとしてtruncation(閾値)という値も設定することができます。これは値を大きくするほど画像の多様性は向上しますが画質は下がってしまうというものです。
これらのパラメーターを操作しつつ色々な画像を生成できるのがBigGANの楽しいポイントです。また、モーフィング動画の作成処理は以下の記事も参考にさせていただきました。
制作過程
まず今回の映像を制作したきっかけなのですが、始めはランダムに繋いだモーフィング動画をオーディオリアクティブにした技術デモぐらいにするかという気持ちでした。ただ、BigGANの学習済みモデルを触っている間にこのカテゴリーの多さを活かして生物の進化の様子を表現できないかなと思いつきます(それと同時に「Right Here, Right Now」のMV映像が頭を駆け巡るわけです)。またカテゴリーの中には自然の風景のようなものも含まれていたので、さらに話を広げて命が芽生えてやがて死んで土にかえり海に流れ出した栄養素が空に蒸発していく……みたいなストーリーもできあがりました。本作のテーマでもある「生物の進化」や「生物地球化学的循環」というキーワードはここから生まれたのです。※ただし今回の動画は進化の過程や元素の循環経路を正しく表したものではないことにご注意ください!
ストーリーはだいたい決まりました。またリスペクトの気持ちを込めて「Right Here, Right Now」のMVをオマージュした映像にしてみることにします(個人的にはHIPHOPカルチャーでいうサンプリング的な感覚です)。これらを踏まえるとBigGANが生成する画像をこちらである程度コントロールする必要があります。そこでカテゴリーの遷移シークエンスを事前に組むことにしました。
こちらは実際にGoogleColab上で組んだシークエンスの一部です。「魚とかげ」などめちゃくちゃなキーワードが並んでいますが本家MVを見ると何を指しているのか察しが付くと思います笑。1000個もカテゴリーがあるので今回の映像に使えそうなものを探すだけでも非常に大変でした(映像の絵コンテやDJがプレイリストを組む感覚に近かったです)。必ず欲しいカテゴリーがあるわけではないのでその場合は似た感じの画像を生成してくれるカテゴリーで代替します。
また同一カテゴリーであっても全然違うイメージで生成されてしまう場合があります。こちらはsunglassカテゴリーの画像を複数枚生成してみたものです。サングラス単体の画像とサングラスを掛けた状態の画像が混ざってしまっています。これは学習データであるImageNetのSunglassカテゴリーに両方のタイプの画像が含まれているためと思われます。今回は本家MVに倣いサングラスを掛けたおじさんの画像を生成してほしかったので、noise_seed値を変更しながら良さげな画像をひたすら探しました。一部のカテゴリーではランダムにnoise_seed値を設定したものの、大半のカテゴリーでは良さげなパラメーターを調べたうえでシークエンスを組んでいます(これまた非常に面倒くさかったです笑)。
以上が今回制作した映像の裏側です。エンジニア目線だとあまり好ましくないような作業に思えますが、今回は映像作品の形でアウトプットすることを決めていたのでこのような泥臭い作業をひたすらやりました。作品制作プロセスの例としてはある意味面白いものになったのではないかと思います笑。
またGoogleColab上で作業するときの注意点として、たまに意図せずランタイムが落ちてしまう場合があります。今回は長めのシークエンスを組み、カテゴリー遷移間の画像補完枚数も多く設定したので動画書き出しにとても時間がかかりました(ちなみに今回の映像は約15000枚の生成画像をOpenCVの処理で繋げています)。メモリを食いつぶしている様子はなかったのですが、一度動画書き出し中にランタイムが落ちてショックを受けました笑。画像生成時に指定するbatch_sizeを増やしてみたときも一度落ちた気がします(BigGANは膨大な計算資源が必要です)。対策としては、GoogleColab上で動画を書き出すのではなくGoogle Driveに生成画像を随時保存するようにして、後からFFmpegなどを使って動画に変換するのが安全かもしれません。参考までに昔書いた記事を載せておきます。
BigGANで作成した動画をオーディオリアクティブにするのにはTouchDesignerを利用しました。以下のチュートリアルを参考にさせていただき、音源のキック音に合わせて動画の再生速度が速くなるようにパラメーターを調整しています。
Controlling Video With Audio – TouchDesigner Tutorial 14
最後にAdobe Premiere Proで色調を微調整して映像の完成です!今回は初めてGANを作品制作に取り入れるということで取っ付きやすい学習済みモデルを利用しましたが、次回は独自のデータセットを用意して学習させるところから取り組めればと考えています。ただし、BigGANはびっくりするぐらい学習コストが高いらしいので他のモデルを使います笑(以下のスライドを参考にさせていただきました)。
さいごに
以上、BigGANを用いた映像制作の例をご紹介しました。本記事の執筆時点で世界中がとても大変な状態となってしまっています。それと同時に人々の暮らしが非常に速い速度でアップデートしていくのも感じています。今回「生物の進化」を作品テーマとしたことで私自身も色々と考え直す機会をもらえたような気がしました。また、外出しにくいこの世の中でクリエイターの仲間が増えたら良いなとも思います(この赤裸々な記事が少しでも興味を持っていただくきっかけになれば幸いです笑)。
他にもデザイニウムでは様々な開発を行っていますので、気になる方は是非SNSのアカウントもチェックしてみてください!
The Designium.inc
・オフィシャルサイト
・Interactive website
・Twitter
・Instagram
・Facebook
編集後記
広報のマリコです!今回の記事では”生物の進化”をテーマに平澤がカッコいい動画を制作していました。しかもFatboy Slimのオマージュ作品!ということでエンジニアではない私もとても面白く読むことができました❗(めちゃめちゃ聞いてた世代です)いまや「Because We Can」は”M-1の曲”と思ってるだけの人もいるのではないでしょうか。🎼
それにしてもモーフィングの中間画像は「な、なんか気持ち悪い!」と思ってしまった部分も正直ありますが、面白くて見入ってしまいました。みなさんはどうでしたか?ちなみに平澤はプライベートブログも面白いので、興味のある方はぜひこちらもチェックしてみてくださいね😊
この記事が気に入ったらサポートをしてみませんか?