生成AIを使って絵本動画ジェネレータ作ったぜ!というセッションに参加してみた #AWSreInvent

生成AIを使ってイラスト動画自動生成システムを作ったぜ!というセッションに参加してきました。生成AIの活用を中心にセッションを受けてきたのですが、今回のセッションはなかなかハイセンスだったので、今回はこちらの内容を紹介します。
2023.12.01

はじめに

おのやんです。

re:Invent 2023にて開催された、イラスト動画自動生成システムを作ったぜ!というセッションに参加してきました。生成AIの活用を中心にセッションを受けてきたのですが、今回のセッションはなかなかハイセンスなものになっていました。

ということで、今回はこちらのセッションの内容を紹介していきたいと思います。

セッション概要

COM202-R1 | Building an AI comic video generator with Amazon Bedrock [REPEAT]

Nov. 30 | 2:00 PM - 3:00 PM (PST)

Caesars Forum | Level 1 | Summit 214

Learn how AWS Machine Learning Hero Agustinus Nalwan built Owly, an AI-powered bedtime storyteller that crafts personalized comic videos with music. In this session, discover how to use the Amazon Bedrock large language model to generate comic scripts. Learn how to fine-tune the Stable Diffusion model with the help of Amazon SageMaker JumpStart to eliminate character inconsistencies and personalize the comic video with your kids’ beloved toys as the main characters. Dive deep into the prompt engineering technique and learn to blend two images together with the Stable Diffusion model.

Amazon Bedrockで絵本動画ジェネレータを作る【リピート】

AWS Machine Learning Hero Agustinus Nalwanが、パーソナライズされた音楽付き絵本動画を作成するAI搭載のベッドタイムストーリーテラー、Owlyをどのように構築したかを学びます。このセッションでは、コミックスクリプトを生成するためにAmazon Bedrock(以下、Bedrock)の大規模言語モデルを使用する方法を発見してください。Amazon SageMaker JumpStartの助けを借りてStable Diffusionモデルを微調整し、キャラクターの不一致をなくし、子供の大好きなおもちゃをメインキャラクターとして絵本動画をパーソナライズする方法を学びます。プロンプトエンジニアリングのテクニックを深く掘り下げ、安定拡散モデルを使って 2 つの画像をブレンドする方法を学びます。

セッション内容

本セッションは、他のセッションにあるような技術的なテーマと合わせて、少しジョークも含めたものになっていました。

もともと、登壇者には息子が生まれる予定で、さまざまな技術的なアプローチで息子とやりとりをしたかったようです。冒頭の導入で、彼は息子の名前をつける際に日本人の名前とロシア人の名前をミックスする名前ジェネレータを作ったそうです。もちろん、妻には怒られたそうですが。

この部分で、冒頭から会場を沸かせていました。観客の大部分が彼のトークに惹きつけられていて、個人的にも登壇などで話す時の参考にしたいと思いました。

彼は、息子が小さい段階から技術に触れさせたかったようです。そこで、モーションキャプチャーで画面上の鳥を操作するシステムを作ったり、テディベアの中にロボットを仕込んだりしたとのことです。

本セッションのテーマである絵本動画ジェネレータは、こういったプロジェクトの中では最新のものらしいです。彼は、息子には教訓を学んでほしいと思っており、そのために絵本の読み聞かせがやりたいと思っていました。しかし、自分の伝えたい教訓が書かれている絵本は少なかったそうです。そのため、「だったら自分で作るか!なんなら、動画形式にして音声も追加しよう!」と思ったそうです。

これらのように、本セッションでは一貫して登壇者の個人的な欲求・衝動から技術的な挑戦・技術検証が生まれていました。業務で多く技術を扱っていると忘れがちですが、こういったマインドも忘れないようにしたいですね(自戒

こちらが、絵本動画ジェネレータの初期段階の構成です。ここからは、より技術的なテーマに移っていきます。

物語のスクリプトを絵本動画ジェネレータに渡すと、まるまるストーリーを作成してくれます。このストーリーは段落ごとに分割されて、絵本動画ジェネレータやテキスト読み上げのシステムに渡されます。生成された画像はそのまま動画に使用され、生成された音声は動画のナレーションに使用されます。それに加えて、ストーリーの最初の段階で、BGMにする曲をリストから選ばせ、三角括弧の中に入れて記述できる機能も導入したそうです。これにより、動画にBGMも付与することができたと述べていました。

ストーリーを作成する部分はBedrockを使用したそうです。モデルはClaude v1.3のようですね。

段落ごとに動画用の画像を作成するには、Amazon SageMaker Jumpstart上で、StableDeffusion 2.1の学習済みモデルを使用していました。

しかし、これらを組み合わせて動画に変換使用とした時に、各段落の画像の内容が全然繋がっていないことに気づいたそうです。もともと1つのストーリーだった文章を段落ごとに分けた結果、それぞれの段落の文章から独立した画像が生成されたということです。ここは、「やってみた」の結果わかったことというか、実際にやってみてわかる壁だったりもします。

解決策は意外とシンプルでした。彼は、全ての段落に同じような説明を追加していました。そのシーンの詳細を短い文章で端的に説明すれば、動画の大枠に沿った均質な画像を生成できたとのことです。

入力したテキストと全然違う画像が生成されるときには、「百聞は一見に如かず」という言葉を元に、既存の画像でファインチューニングを行って解決できたそうです。

こちらが全体のシステム構成図です。BedrockのClaudeやStableDiffusionの他に、MoviePyというライブラリを持ちて自動で動画を生成しているようですね。

完成した動画は、こちらのQRコードから閲覧できます。動画としても違和感なく、自然な絵本風ストーリーに仕上がってますね。

気づき・学び

今回のセッションで感じたことといえば、技術ドリブンというより課題ドリブンだったというところです。息子に教訓を教えたい父親が、自身で考えたストーリーを技術の力で動画にするという内容でした。

技術的な観点で見ると、なかなか難しいことをやっているふうに思えましたが、登壇者の話し方や説明を聞くに、誰でも頑張れば技術で課題を解決できるよ!みたいなメッセージを感じました。

さいごに

re:Invent期間中最後に聴講したセッションになりましたが、ユーモアをガンガン混ぜた非常に面白いセッションとなっていました。ファインチューニングの魔力のスライドでは会場が一番沸いていました。

それでいて、しっかりAIの技術に沿った内容となっていたので、機械学習は問題漢である私にとっても、非常にためになるセッションでした。スライド構成・技術面の両方の観点で参考にしたいと思います。では!