Amazon Nova Reelで動画生成を試してみる

# 本記事について
本記事は、mediba Adventカレンダーの21日目の記事です。テクノロジーセンターのずーんが担当します。

# AWS re:Invent 2024の感想
先日、AWS re:Invent 2024に参加してきました。私にとって初の海外渡航、かつ初めてのre:Invent参加で不安でしたが、中学生レベルの英会話でもなんとか無事に帰国できました。
私はキーノートとセキュリティ周りのセッションを中心に参加していました。今回は、その中のキーノートで発表された生成AI（英語ではGenAIと呼ばれているそうです）のFoundation Model(FM)である **「Amazon Nova」** について興味を持ったので、帰国後に遅ればせながら触ってみました。
ちなみに「Amazon Nova Reel」はある広告代理店グループにて、すでに試験利用されていて、広告制作などに活用されているとニュースでも報じられています。

他にも書きたい感想はありますが、Qiita向けの内容じゃないと思ったのでこことは別に書きます。

# Amazon Novaとは？
Amazon Bedrock上で利用ができるFMの一種です。Amazon Novaには複数のラインナップが存在し、それぞれに異なる特徴があります[^Nova]。

- Amazon Nova Micro
    - テキストのみ対応の低レイテンシーかつ低価格のモデル
- Amazon Nova Lite
    - 超低コストのマルチモーダル対応の高速処理ができるモデル
- Amazon Nova Pro
    - 精度・スピード・コストのベストな組み合わせを幅広いタスクで実現できる高機能なマルチモーダル対応モデル
- Amazon Nova Premier
    - 複雑な推論タスクに適した最も有能なAmazonのマルチモーダル対応モデル（2025年第1四半期中に利用が可能になるそうです。）
- Amazon Nova Canvas
    - 最先端の画像生成モデル
- Amazon Nova Reel
    - 最先端のビデオ生成モデル

まとめると、これらはコストと性能のバランスに優れるように設計された生成AIモデルであるといえます。私は詳しく比べてはいないです（すみません）。このうちCanvasとReelは広告向けクリエイティブ用に開発されたそうです。
まだ、東京リージョンではどれも提供されていないためバージニア北部やオレゴンリージョンで試す必要があります。

テキストのみで利用可能なMicroは、Amazon Connectと組み合わせることで、低コストな電話応答サービスへの応用が期待できそうです。

私自身、画像生成モデルはStable Diffusionを自宅のデスクトップPCで試したことがありますが、動画生成モデルは未経験だったため、非常に興味をそそられました。

# 実際の試し方
実際の操作方法については、他にも多くの解説記事があるため本記事では割愛します。
主な流れは下記のような感じです。

- AWSコンソールを開き、バージニア北部リージョンに切り替える
- Amazon BedrockのBedrock Configurationsからモデルアクセスを選択して、モデルへのアクセスリクエストを送信する
    - Claudeなどと違って利用方法などの記述は特段求められませんでした（私だけ？）
- プレイグラウンドのImage/Videoを開いて、Nova Reelのモデルに切り替えれば準備完了です


# 画像の事前準備
ただし、Nova Reelはこれだけではすぐに利用できません😭。というのも入力は動画の第一フレームとなる画像ファイル(JPGやPNG）になりますがこの画像ファイルは解像度 **1280px x 720px** ジャストかつデータサイズが、**10MB**以内でなければ読み込めないためです。
ちょうど良い解像度の画像は滅多にないため、大抵の場合は解像度の調整が必要になります。

解像度の調整にはWindowsやMacでもGIMP[^GIMP]が利用できます（Macのプレビューでもできることに後から気が付いた）。

## GIMPによる解像度調整の方法

- GIMPに画像を一旦読み込ませます
- メニューバーにある画像->画像の拡大・縮小を選択します（ショートカット: Alt or Option + I, S）
    - ![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181467/1c7f8c92-4e54-a95d-d96c-cd772a1a2f9b.jpeg)
- 拡大縮小のウィンドウが出てくるので解像度を調整する
    - アスペクト比を維持する設定が入っていると合わせられないことがあるため、入力ボックスのチェーンのボタンを押してチェーンが切れている状態にしてから設定すると合わせられます
    - ![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181467/fa4229ae-ab92-ec5b-036b-dff3972e9f8f.jpeg)
- 拡大・縮小のボタンをクリックしてサイズを変更する
- メニューバーのファイル -> 名前をつけてエクスポートを選択します（ショートカット Alt or Option + F, X）
- ファイル形式の選択メニューを展開し、JPEG画像を選択します。
    - **注意：JPEGを推奨する理由としては、PNGなどに含まれる透過レイヤー情報にNova Reelが対応していないためです。透過情報が含まれるとエラーが発生し、読み込めない場合があるため確実なJPEGを利用しています。**
    - ![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181467/e8a35680-bf73-71be-202d-901f66b361f3.jpeg)
- エクスポートボタンをクリックして完了です

# 試す際のプロンプトについて
元となる画像データはこれで準備完了ですが、プロンプトについても注意が必要です。

- プロンプトのベストプラクティス・要件[^PROMPT]
    - 日本語は非対応なので英語
    - 512文字以内
    - 動きを与える場合にはプロンプトの最初か最後にカメラの動きを記入する
    - 否定語は利用できない（理解しないため）
    - 命令形ではなく場面を要約した文章にする

# 試してみた例
自分で撮影してきたGoogle本社付近の画像（トランジットの合間に立ち寄りました）をネタに試してみました。動画が生成されるまでは5分程度掛かるため苦痛を感じるかもしれないです。私は待ち時間に猫と遊んで気を紛らわせました🐈
![名称未設定.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181467/4845a40e-7b15-b252-cf73-2fd8dcba0bbc.jpeg)

- その1
    - プロンプト
        - The sky is a twilight and cloud are moving.
        - 空は夕暮れで雲が動いている状態をイメージ
    - 動画
        - https://youtu.be/Hr9M6Z-9lDE
    - 結果的には、夕暮れになっておらず雲しか動いていない。しかし、周囲の植物などが風になびく様子も再現されているので結構自然な動画になってます。

- その2
    - プロンプト
        - People are walking street with a dog.
        - 犬を連れて歩いている人々をイメージ
    - 動画
        - https://youtu.be/aXpjQu67zNY
    - 先ほどよりもプロンプトは近いものになってますが人間が不自然に出現していたり、挙動が途中まで安定しない感じになってます。犬は割とリアルだと思います。

- その3
    - プロンプト
        - people, walk, dog, on street
        - 先ほどのプロンプトと同じ内容をイメージしました。しかし、ここでは画像生成AIで利用されるような連想される単語を羅列したプロンプトにしてみました
    - 動画
        - https://youtu.be/hkxmwDlipM0
    - 先ほどと比べるとより支離滅裂な内容になっています。犬が大量に出現して歩いたりしています。やはり、Nova Reelは文章で記述する必要がありそうです。

---
同じ画像だけだと飽きるのでストリップ通りから見た道路の画像でも試してみました。（AWS re:Inventが始まる前にF1がラスベガスの街中で行われていたそうです。まだコース資材が路上に残ったままでした。）
![lv.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181467/d2e1d18e-b89d-698b-b85f-3fae116ad805.jpeg)

- その4
    - プロンプト
        - Formula 1 cars are racing on the street.
        - ベタですがF1カーが路上でレースしているのをイメージしました。
    - 動画
        - https://youtu.be/_v7y99X5ta0
    - 不自然な登場ではありますがF1カーが登場しました。画面上の道はちょっと活用されましたが最終的にはなかった道路が出現してます。
- その5
    - プロンプト
        - Formula 1 cars are racing on the street.
        - 先ほどと同じです
    - シード
        - `412683690`
        - 同一プロンプトでシードを変更して変化を確認します
    - 動画
        - https://youtu.be/KVL_2yb7p3Q
    - 先ほどよりも元ある道路を生かした動画になった気がします。後ろで車が走ってますがF1カー?ではなくNASCARカーっぽいですね笑。観客も歩道に立っている形で生成されています。シードを変えるだけでガラッと変わりますね。

# 試してみた感想
Amazon Nova Reelは動画広告への応用事例があるものの、扱いはかなり難しく感じます。思い通りの動画を生成するためにはプロンプトの工夫が必要なうえ、シード変更によって動画の雰囲気がかなり変わります。そのため、バッチ的に複数パターンを生成し、その中からまともそうなものを選ぶといった反復的な検証が必要になりそうです。今後も社内での活用可能性を探るべく、引き続き検証していきたいと思います。

# 参考文献
[^Nova]: https://www.aboutamazon.com/news/aws/amazon-nova-artificial-intelligence-bedrock-aws
[^GIMP]: https://www.gimp.org
[^PROMPT]: https://docs.aws.amazon.com/nova/latest/userguide/prompting-video-generation.html