🎬

神威 第三世代 動画生成(要件定義yaml版)

2025/01/03に公開

神威の簡易的なガイドページを作りました 第三世代版です
現在公式さんで簡単操作ガイドを作成されているとのことで繋ぎガイドです

今回はText to Image to Videoで動画生成を行います。
グリモワだと一気通貫にできるのですが、内部的には下記のような順序で進みます。

テキストで画像イメージを伝えて生成

その画像を参照して使って動画を生成

別途効果音など追加

画像を作るプロンプトを決めてから、実行するとスムーズです。

今回神威のText to Image to Videoで生成した動画
https://youtu.be/hgeOafl6a18

1. 第三世代にアクセスしてログイン

こちら↓
https://3rd.kamui.ai/ja

2. 一旦、トップページのテキスト欄にtestと入れてページ遷移

「test」と入力してテンプレートのyamlのみ生成
※aだけ入力でもok

現在初期設定されているAPIは(多分)日本語の言語理解力の良さとパフォーマンスのバランスからClaude HAIKUが設定されているのですが、生成するコンテンツやタイミングによってAPIレート制限で全出力がされないことがあります。Anthropicに制限解除の依頼中らしいので一旦はgeminiなどを選択しなおした方がスムーズに行きます

3. gemini or gpt4oを選択

好きなLLMを選択して要望入力後に送信ボタンをクリック
私はなんとなくgemini-2.0-flash-expを選択しています

4. 要件定義yamlのかたまりをチャット欄にそのまま投げる

グリモアと呼ばれる構造を持った要件定義yamlをそのままチャット欄に投げることで
複数の動画が一気に生成できてしまいます。

5. 要件定義yamlの構造と役割

要件定義yamlは柔軟性を持ったプログラムファイルと呼べるようなもので、あらかじめ必要な要素を階層構造でプライオリティをつけながら役割を明確に分けて定義することで、各種必要な要素がぬけ漏れなくきっちり入れることが可能なフォーマットになっています

要件定義yaml

structure.yaml
src:
  structure.yaml:
    content: |-
      画像生成・統合プロジェクト
      - 画像生成と動画生成
      - 画像処理と統合アルゴリズム
    dependency: []
    agent: "claude-3-5-sonnet-20241022"
    api: ["luma-ai-video-i2v","lumalabs-photon-1"]
  image-generation:
    '01_battle_scene.png':
      content: |-
        群衆、巨大な竜が戦うシーン
        - ダークでシネマティックな雰囲気
        - 竜は巨大、筋肉質、形状を絶対に維持、いかなる状況でも形状を維持
        - 群衆はアクロバティック、激しく戦闘
      dependency: []
      agent: "lumalabs-photon-1"
      api: []
  output:
    '01_battle_scene-1.mp4':
      content: |-
        群衆と竜の攻防、戦闘激化
        - : 炎を吐きながら高速回転、急上昇からの急降下、尻尾で薙ぎ払い、空中で静止からの爪攻撃、絶対に形状を維持、変形禁止、常に形状を意識、形状を最優先
        - カメラ: 竜の動きに合わせて激しく回転、ローアングルから急上昇、群衆の動きも捉える
        - 群衆: 竜に接近、攻撃、回避
      dependency:
        - src/image-generation/01_battle_scene.png
      dependency_wait: true
      agent: "luma-ai-video-i2v"
      api: []
    '01_battle_scene-2.mp4':
      content: |-
        群衆と竜の攻防、戦闘激化
        - : 爪を振り下ろしながら宙返り、噛みつき攻撃をフェイント、スローモーションからの高速尻尾攻撃、空中で静止からの急加速、絶対に形状を維持、変形禁止、常に形状を意識、形状を最優先
        - カメラ: 竜の動きに合わせて高速パン、チルト、スローモーションと高速アクションを切り替え、群衆の視点も入れる
        - 群衆: 盾で防御、回避、反撃
      dependency:
        - src/image-generation/01_battle_scene.png
      dependency_wait: true
      agent: "luma-ai-video-i2v"
      api: []
    '01_battle_scene-3.mp4':
      content: |-
        群衆と竜の攻防、戦闘激化
        - : 炎を広範囲に吐きながらバレルロール、高速旋回からの急上昇、追跡しながらの連続噛みつき、空中で静止からの急降下、絶対に形状を維持、変形禁止、常に形状を意識、形状を最優先
        - カメラ: 竜の動きを追従しながらドローンカメラのように自由に移動、高速ズーム、チルト、群衆の動きも捉える
        - 群衆: 空中移動、回避、遠距離攻撃
      dependency:
        - src/image-generation/01_battle_scene.png
      dependency_wait: true
      agent: "luma-ai-video-i2v"
      api: []
    '01_battle_scene-4.mp4':
      content: |-
        群衆と竜の攻防、戦闘激化
        - : 炎を連射しながらの高速横移動、威嚇しながらの急停止、範囲攻撃をフェイント、空中で静止からの急加速、絶対に形状を維持、変形禁止、常に形状を意識、形状を最優先
        - カメラ: 竜の動きに合わせて視点を切り替え、俯瞰視点からの高速パン、チルト、ズーム、群衆の動きも捉える
        - 群衆: 防御、上空から攻撃、連携攻撃
      dependency:
        - src/image-generation/01_battle_scene.png
      dependency_wait: true
      agent: "luma-ai-video-i2v"
      api: []
    '01_battle_scene-5.mp4':
      content: |-
        群衆と竜の攻防、戦闘激化
        - : 倒れる直前までアクロバティックな攻撃、空中で静止からの急降下、絶対に形状を維持、変形禁止、常に形状を意識、形状を最優先
        - カメラ: 竜の動きをクローズアップ、スローモーションと高速アクションを切り替え、ドラマチックな演出、群衆の動きも入れる
        - 群衆: 連続攻撃、勝利を確信する
      dependency:
        - src/image-generation/01_battle_scene.png
      dependency_wait: true
      agent: "luma-ai-video-i2v"
      api: []

Text to Image to Video

今回はテキストの要望から画像を生成し、その画像を元に動画を生成します
大枠で3つのブロックに分かれています。

1. 全体の定義ブロック(優先度低)
2. 画像の定義ブロック(優先度中)
3. 動画の定義ブロック(優先度高)

現行のImage to VideoのLumaAIに限ってはプロンプトがなかなかいうこと聞かないので、現時点では静止画はyaml制御でしっかり生成して、その画像を元にした動画はガチャの気分でやると健康的です。

※公式サイトで英語でやっても細かな制御はうーんという感じでした

全体の定義ブロック

プロジェクト全体の指定部、contentの中、1行目にメインプロンプトを、2行目からはリスト形式で指示します

prompt
structure.yaml:
  content: |-
    画像生成・統合プロジェクト
    - 画像生成と動画生成
    - 画像処理と統合アルゴリズム
  dependency: []  //空
  agent: "claude-3-5-sonnet-20241022"  //メインのマネージャーAI
  api: ["luma-ai-video-i2v","lumalabs-photon-1"] //今回使うツールとしての画像と動画のAPI

参照画像の定義ブロック

参照する画像単体の指定部、image-generation配下のcontentの中、1行目に画像のメインプロンプトを、2行目からはリスト形式で指示します。

複数の画像をここで指定してもいいのですが、動画がガチャ要素強いので、画像は1枚決め打ちにして、
それを元に複数の動画で良いものを探っていく感じが良さそうです

prompt
image-generation:
  '01_battle_scene.png':
    content: |-
      群衆、巨大な竜が戦うシーン
      - ダークでシネマティックな雰囲気
      - 竜は巨大、筋肉質、形状を絶対に維持、いかなる状況でも形状を維持
      - 群衆はアクロバティック、激しく戦闘
    dependency: [] //空欄
    agent: "lumalabs-photon-1" //画像生成用のlumalabs-photon-1かimagen3
    api: [] //空欄

動画の定義ブロック 優先度高

ここの指定はしっかりします(ただしcontentの中はしっかり)
output:必須
content: 言うことあんま聞いてくれないからガチャ
dependency:必ず参照の画像をパス付きで
dependency_wait: true (必ずtrueに)
agent: "luma-ai-video-i2v"(現行ではこのモデルで決め打ち)

prompt
output:
  '01_battle_scene-1.mp4':
    content: |-
      群衆と竜の攻防、戦闘激化
      -: 炎を吐きながら高速回転、急上昇からの急降下、尻尾で薙ぎ払い、空中で静止からの爪攻撃、絶対に形状を維持、変形禁止、常に形状を意識、形状を最優先
      - カメラ: 竜の動きに合わせて激しく回転、ローアングルから急上昇、群衆の動きも捉える
      - 群衆: 竜に接近、攻撃、回避
    dependency:
      - src/image-generation/01_battle_scene.png
    dependency_wait: true
    agent: "luma-ai-video-i2v"
    api: []

小さくて見づらいのですが、それぞれの役割を記載しました

6. 実装を押して生成する

依存関係が可視化されています

7. 生成された動画

神威で生成した動画を繋いだものです。音源だけ素材を利用しています。
https://youtu.be/hgeOafl6a18

8. 保存してダウンロード

ページ上部の保存ボタンをクリックすることで一括ダウンロードできます(少し待つかも)
3点リーダーをクリックしてダウンロードを選択すると個別の動画ダウンロードが可能です

Discussion