本記事は
生成AIウィーク
1日目の記事です。
👨💻
告知記事
▶▶ 本記事 ▶▶
2日目
👩💻
小西秀和です。
今回はブログイベント「生成AIウィーク」ということで、引き続き生成AIに関する記事を投稿します。
以前の記事では、Amazon Nova ProとAmazon Nova Canvas、Anthropic ClaudeとAmazon Titan Image Generator G1、Anthropic ClaudeとStable Diffusion XLなど、Amazon BedrockにおいてVision理解モデルと画像生成AIモデルの組み合わせを使用して画像を生成し、生成された画像を検証・再生成する自動化の方法を紹介してきました。
- 理解モデルAmazon Nova Proで画像生成を検証・再試行する(Amazon Nova Canvas編)
- Amazon BedrockでClaude 3.5 Sonnetの画像理解・分析機能を使用して画像生成を検証・再生成・自動化する(Amazon Titan Image Generator G1編)
- Claude 3.5 SonnetでStable Diffusion XLによる画像生成を要件が満たされるまで繰り返すAmazon Bedrockの使用例
本記事では、マルチモーダルの理解モデルであるAmazon Nova Proを活用して、Amazon Nova Reelで生成した動画を検証・再生成する自動化の方法を試してみます。
この試みは、前述の記事同様に生成動画の要件充足を自動的に判定することで、人間による目視確認の作業量削減も目指しています。
※本記事および当執筆者のその他の記事で掲載されているソースコードは自主研究活動の一貫として作成したものであり、動作を保証するものではありません。使用する場合は自己責任でお願い致します。また、予告なく修正することもありますのでご了承ください。
※本記事執筆にあたっては個人でユーザー登録したAWSアカウント上でAWSサービスを使用しています。
※本記事執筆にあたって使用したAmazon Bedrockの各Modelは2025-02-02(JST)に実行し、その時点における次のEnd user license agreement (EULA)に基づいています。
Amazon Nova Pro (amazon.nova-pro-v1:0): End user license agreement (EULA) (AWS Customer Agreement and Service Terms)
Amazon Nova Reel (amazon.nova-reel-v1:0): End user license agreement (EULA) (AWS Customer Agreement and Service Terms)
構成図と処理フロー
本記事のテーマを実現する構成図は次のようになります。
今回はAWS Step FunctionsとAWS Lambdaを使用して処理をするようにしています。

この処理フローについて詳細を説明します。
1. プロンプトやパラメータを含むイベントを入力します。 2-1. 入力した動画作成を指示するプロンプトでAmazon BedrockでNova Reelモデルを実行します。 2-2. 生成された動画をAmazon S3に保存します。 2-3. Amazon S3に保存された動画に対してAmazon BedrockでNova Proモデルを実行し、動画作成を指示したプロンプトの要件に適合するかを検証します。 * 動画作成を指示したプロンプトの要件に適合しないと判断されれば、`2-1.`から`2-3.`の処理を指定した同一プロンプト実行回数だけ繰り返します。 * 動画作成を指示したプロンプトの要件に適合すると判断されれば、その動画を出力結果とします。 3. 修正プロンプト実行回数を超えておらず、動画作成を指示したプロンプトの要件に適合しないと判断された回数が同一プロンプト実行回数を超えた場合、Amazon BedrockでNova Proモデルを実行し、動画作成を指示するプロンプトを要件が満たされる可能性が高いものに修正します。この新しい動画作成を指示するプロンプトで`2-1.`から処理をやり直します。 * 修正プロンプト実行回数を超えた場合、エラーとして処理を終了します。
この処理フローでポイントとなるのはNova Proモデルによる動画作成を指示するプロンプトの修正です。
動画作成を指示するプロンプトがAIにとって理解しやすいものであれば、要件を満たす動画は何回か実行すれば出力される可能性が高いでしょう。
ただ、動画作成を指示するプロンプトがAIにとって理解しにくいものであれば、要件を満たす動画の出力がされない事も考えられます。
そのため、指定した同一プロンプト実行回数を超えた場合には、Amazon BedrockでNova Proモデルを実行し、動画作成を指示するプロンプトを最適化したものに修正する処理を入れました。
実装例
AWS CloudFormationテンプレート
AWS CloudFormationテンプレートの実装例は以下を参照してください。
Implementation Example: Validating and Regenerating Videos Using Amazon Nova Pro Vision Model on Amazon Bedrock (Amazon Nova Reel Edition)
AWS CloudFormationテンプレートの説明
このCloudFormationテンプレートでは、以下のAWSリソースがデプロイされます。
Lambda Functions
InitializeProcessFunction
- Step Functions実行開始時のパラメータの初期化
- タイムスタンプ生成とプロンプトの初期設定
- Nova Reel、Nova Proのパラメータ設定
- リトライ回数、プロンプト修正回数の制限設定
- S3バケット情報の設定と検証
GenerateVideoFunction
- Nova Reelを使用して動画を生成
- プロンプトを512文字以内に最適化
- 動画生成パラメータ(FPS、解像度、長さ)の設定
- Amazon S3への保存先設定
python s3Uri = f"s3://{bucket_name}/{key_prefix}/{timestamp}/" - 非同期実行のための
invocation_arnの取得と返却
CheckVideoStatusFunction
- Amazon Bedrock非同期実行の状態確認
- 生成された動画をS3 URIに保存
python video_s3_uri = f"s3://{bucket_name}/{prefix}/{timestamp}/{s3_prefix}/output.mp4" - 処理状態(Completed/InProgress/Failed)の確認と返却
- エラー発生時のハンドリング
ValidateVideoFunction
- Nova Proを使用して生成された動画を検証
- S3から動画を取得し、Nova Proに入力
- 検証プロンプトの生成と実行
- JSON形式での検証結果(成功/失敗)と理由の返却
- エラー発生時の適切なエラーハンドリング
RevisePromptFunction
- Nova Proを使用してプロンプトを修正
- プロンプト最適化ガイドラインの適用
- 主要な被写体の明確な記述
- 環境/設定の詳細
- 動きや行動の描写
- 照明条件
- カメラの動き
- ビジュアルスタイル
- 修正されたプロンプトのJSON形式での返却
- 512文字制限内での最適化
IAM Roles
LambdaExecutionRole
- Bedrockサービスへのアクセス権限
- S3バケットの読み書き権限
- CloudWatch Logsへのログ書き込み権限
StepFunctionsExecutionRole
- 全Lambda関数の実行権限
- ステートマシンの実行管理権限
Step Functions State Machine
- 初期化から成功/失敗までの一連のワークフロー制御
- 動画生成状態の定期的なチェック(10秒間隔)
- 検証失敗時のプロンプト修正フローへの遷移
- 最大リトライ回数とプロンプト修正回数の管理
- エラーハンドリングと適切な終了状態への遷移
実行内容と結果
ここからは実際にこの仕組みを使用して実行した一例を題材に考察をしていきたいと思います。
まず、入力パラメータについて見ていきましょう。
入力パラメータとその設定
{ "prompt": "自然の中から見た富士山がある無人の夜景で、空には月があってオーロラが動いて流星群が流れており、地上には海が広がって流氷が流れており、水平線からは太陽が登る日の出の映像", # 動画生成の初期プロンプト "output_s3_bucket_name": "ho2k.com", # 生成された動画を保存するS3バケット名 "output_s3_key_prefix": "generated-videos", # S3のキープレフィックス "max_retry_attempts": 1, # プロンプトごとの最大動画生成試行回数 "max_prompt_revisions": 5, # プロンプト修正の最大回数 "nova_pro_validate_temperature": 0.3, # 動画検証用のNova Proモデルの温度パラメータ "nova_pro_validate_top_p": 0.9, # 動画検証用のtop-pパラメータ "nova_pro_validate_top_k": 40, # 動画検証用のtop-kパラメータ "nova_pro_validate_max_tokens": 5120, # 動画検証用の最大トークン数 "nova_pro_revise_temperature": 0.7, # プロンプト修正用の温度パラメータ "nova_pro_revise_top_p": 0.9, # プロンプト修正用のtop-pパラメータ "nova_pro_revise_top_k": 50, # プロンプト修正用のtop-kパラメータ "nova_pro_revise_max_tokens": 5120, # プロンプト修正用の最大トークン数 "nova_reel_duration_seconds": 6, # 生成する動画の長さ(秒) "nova_reel_fps": 24, # 動画のフレームレート "nova_reel_dimension": "1280x720", # 動画の解像度 "nova_reel_seed": 0 # 動画生成の再現性のためのシード値(0=ランダム) }
これらのパラメータを設定する際、以下の点を考慮しました。
max_retry_attemptsを1に設定して、1回目のリトライ(2回目の実行)という早い段階でプロンプト改善するようにしました。max_prompt_revisionsを5に設定して、プロンプトを改善する機会を増やしました。- 動画検証と修正のためのNova Proモデルのパラメータ(temperature, top_p, top_k, max_tokens)を細かく設定しました。
- 特に動画検証に使用するNova Proモデルのパラメータのうちnova_pro_validate_temperature, nova_pro_validate_top_kは低く設定することでより精密な検証をするようにしました。
nova_reel_duration_secondsを6秒に設定し、適度な長さの動画を生成するようにしました。nova_reel_fpsを24に設定し、滑らかな動きの動画を生成するようにしました。- 動画生成に使用する
seedがランダムに設定されるようにし、毎回異なる動画が生成されるようにしました。
実行の一例:結果
次に、このパラメータを使用して実行した結果の一例を見ていきましょう。
動画検証をパスした動画
今回の試行において最終的にプロンプトの要件を満たして検証をパスした動画は以下です。
この動画は実際に「自然の中から見た富士山がある無人の夜景で、空には月があってオーロラが動いて流星群が流れており、地上には海が広がって流氷が流れており、水平線からは太陽が登る日の出の映像」という文章に登場するものは大方表現できています。
適切に表現ができているものには以下が挙げられます。
- 自然の中から見た富士山がある無人の夜景
- 空には月があってオーロラが動いている
- 流星が2つ流れているシーンがある
- 地上には海が広がって流氷が流れている
- 水平線に太陽が存在するシーンがある
一方で、適切に表現ができていなかったものには以下が挙げられます。
- 流星群というほど流星の数が多くない
- 太陽が登る日の出ではなく、日の入りの映像になっている
このように、表現できていたもの、表現できていなかったものがありますが、Amazon Nova Pro Visionの動画検証では、初期プロンプトの内容を満たしていると判断しました。
実際にこの最終的な動画は、これより前に生成された動画よりも多くの初期プロンプトの内容を満たしていることが確認できました。
次に、この途中のプロンプトの修正、動画の生成、動画検証結果と理由の変化を見ていきましょう。
処理過程の変化(プロンプトの修正、動画の生成、動画検証結果と理由)
プロンプトの修正回数ごとに、動画生成プロンプトの修正、動画の生成、動画検証結果と理由、といった処理過程の変化を見てみましょう。
修正0回目
[実行したプロンプト]
自然の中から見た富士山がある無人の夜景で、空には月があってオーロラが動いて流星群が流れており、地上には海が広がって流氷が流れており、水平線からは太陽が登る日の出の映像
[生成された動画]
[動画検証結果と理由]
結果:不合格
理由:The video does not depict an aurora, nor does it show a sunrise with the sun rising from the horizon. It primarily shows a night view of Mount Fuji with a full moon, stars, and the reflection of city lights on the sea.
修正1回目
[実行したプロンプト]
A breathtaking sunrise video featuring Mount Fuji as the main subject, set against a serene, uninhabited nightscape. The environment includes a tranquil sea with drifting ice floes, a majestic aurora dancing in the sky, and a spectacular meteor shower. The lighting transitions from moonlight to the warm hues of dawn as the sun rises on the horizon. The camera captures the scene with a slow, panoramic movement, emphasizing the grandeur and tranquility of the natural setting.
[生成された動画]
[動画検証結果と理由]
結果:不合格
理由:The video does not depict a sunrise but rather a night scene with aurora and meteor shower, and there is no transition to dawn or sunrise as described in the prompt.
修正2回目
[実行したプロンプト]
A breathtaking video showcasing Mount Fuji at dawn, set against a serene, uninhabited nightscape. The sky is adorned with a radiant moon, shimmering auroras, and shooting stars. Below, the vast ocean stretches out, with drifting icebergs and the horizon glowing as the sun rises, casting a warm, golden light across the scene. The camera captures the majestic view with a smooth, panning motion, highlighting the tranquil beauty and natural splendor of the moment.
[生成された動画]
[動画検証結果と理由]
結果:合格
理由:The video depicts Mount Fuji at dawn with a serene nightscape, featuring a radiant moon, shimmering auroras, and shooting stars. The ocean below has drifting icebergs, and the horizon glows as the sun rises, casting a warm, golden light. The camera's smooth, panning motion effectively captures the tranquil beauty and natural splendor of the scene.
処理過程の変化(プロンプトの修正、動画の生成、動画検証結果と理由)からわかること
これらの過程からAmazon Nova ProとAmazon Nova Reelについて、特に注目すべき点として以下のことが挙げられます。
[Amazon Nova Proについて]
- Nova Proによるプロンプト改善において、初回の日本語プロンプトから、より詳細で構造化された英語プロンプトへの修正により、動画の品質向上が見受けられた
- Nova Proによるプロンプト改善において、修正したプロンプトはカメラワークや光の表現など、技術的な詳細を含むプロンプトに改善できた
- Nova Proによる動画検証において、動画内の複数の要素(富士山、オーロラ、流星、海、氷)を同時に認識・評価できた
- Nova Proによる動画検証において、動きの要素(オーロラの動き、流氷の流れ)も理解して検証できた
- Nova Proによる動画検証において、検証結果に具体的な理由を付与できた
- Nova Proによる動画検証において、「日の出」「日の入」のようにその後の時間経過の中で太陽や背景の色から判断する内容の検証は難しい
[Amazon Nova Reelについて]
- Nova Reelによる動画生成において、日本語プロンプトでも基本的な要件を理解して動画生成ができた
- Nova Reelによる動画生成において、複数の自然現象を組み合わせた複雑なシーンの生成ができた
- Nova Reelによる動画生成において、ある程度の時間的な変化を含む動的なシーンの表現ができた
- Nova Proによる動画検証において、「日の出」「日の入」のようにその後の時間経過の中で太陽や背景の色から判断する内容を複数事象と同時に描写することは難しい
<参考資料>
AWS Documentation(Amazon Bedrock)
AWS Documentation(Amazon Nova)
Validating and Regenerating Videos Using Amazon Nova Pro Vision Model on Amazon Bedrock (Amazon Nova Reel Edition)
Amazon Bedrock AgentCore Beginner's Guide - AI Agent Development from Basics with Detailed Term Explanations
Tech Blog with related articles referenced
まとめ
今回は、Amazon BedrockのNova Proの動画理解・分析機能を活用して、Nova Reelで生成した動画を検証・再生成するAmazon Bedrockの使用例を紹介しました。
この試みを通して、Nova Proに関しては以下の点が確認できました。
- Nova Proの動画認識機能は、単なる動画内の物体認識だけでなく、動きや時間的な変化も含めた動画の内容や表現を認識し、要件充足の検証に活用できること。
- Nova Proを他の画像・動画生成モデルのプロンプト最適化や翻訳にも利用できること。
- Nova Proを動画が要件を満たしているかを確認する検証に使用することができること。
- 動画生成、動画検証、プロンプト最適化、動画再生性といったサイクルを自動化することで、人間による目視確認の作業量を削減できる可能性を示すこと。
ただし、以前の画像生成AIを使用した例と同様に、プロンプト修正の指示を各動画生成AIのベストプラクティスに合わせて工夫することが重要です。これによって、効果的なプロンプト最適化と動画生成の自動化が他の様々な動画生成AIにも応用できると考えられます。
また、Amazon Nova Proの動画検証能力も完璧ではないため、過剰な期待や委任を避けて、人間が最終確認をしっかりと実施することも重要です。
一方、Nova Reelに関しては以下の点が確認できました。
- 日本語のプロンプトでも説明内容を理解して要件に近い動画が生成できること。つまり、今回の試みで実装していた日本語プロンプトを動画生成に最適化した英語プロンプトに最適化する処理がなくても、日本語でベストプラクティスを実践し、何回か試行すれば要件を満たす動画を生成できる可能性が高いこと。
このように、文章生成および理解モデル(Nova Proなど)、画像生成モデル(Nova Canvasなど)、動画生成モデル(Nova Reelなど)などを組み合わせることで、マルチモーダルデータを使用した様々な処理の制御や自動化の可能性が広がります。
特にNova Proの上位モデルや新しいバージョンがリリースされれば、より高度なマルチモーダルデータを使用した処理の制御や自動化が可能になると考えられます。
今後もAmazon Bedrockが提供するAIモデルの進化と、それらを活用した新しい実装方法に注目し、さらなる応用範囲の拡大を探っていきたいと思います。
- [English Edition] Validating and Regenerating Videos Using Amazon Nova Pro Vision Model on Amazon Bedrock (Amazon Nova Reel Edition)
