はじめに
こんにちは、ネクスティ エレクトロニクス開発部メンバーです。
筆者は、割安かつ期間占有で各種GPUサーバーの自由度の高いトライアルがができる、
GPU Advanced
Test Drive(GAT)の技術サポートを担当しております。
NVIDIAのCosmosの最新版であるCosmos3が、2026年6月1日にリリースされました。筆者の理解では、Cosmos2.5までで言うところの、以下3つが一体化したオムニモーダルモデルとしてリリースされたようです。
- Cosmos Reason(映像の理解)
- Cosmos Predict(未来予測・動画生成)
- Cosmos Transfer(動画変換) ※6月半ばに使用可能に
本記事では、そのうち動画生成側についての動かし方、以前のバージョンとの比較についてご紹介します。
検討環境
今回、以下環境のデスクトップPCにて検証を行いました。GATのDGX-H100/DGX-B200などでも実行頂けるかと思います。
| Category | Value |
|---|---|
| OS | Ubuntu22.04 |
| GPU | RTX-PRO6000 Blackwell Max-q(96G) |
| CPU | 13th Gen Intel(R) Core(TM) i5-13600K |
| Memory | 128G |
動画生成までの環境の構築
Cosmos3においては、動画生成側はGenerator、映像理解側はReasonerと呼ばれているようです。 ここでは動画生成のGeneratorについての、python環境の構築を実施します。最近主流となりつつあるuv(pip等より高速動作、Dockerほど容量要求しない)による構築になります。 基本的にこちらの手順通りに進めれば構築可能です。
uvは既にインストールしてあることが多いかもしれませんが、Ubuntuにて未インストール時は以下よりインストール可能です。
(その他のインストール等はUVの公式ページ)をご参照下さい。
curl -LsSf https://astral.sh/uv/install.sh | sh
途中でhuggingfaceからモデルをダウンロードするため、hfコマンドによるログイン、またはhuggingfaceへのアクセストークンを環境変数にセットしておく必要があります。
(またモデルダウンロード時にエラーが出た場合は、ブラウザでそのモデルページを開き、許可を得ておく必要があります)
uvx hf@latest auth login
# or:
export HF_TOKEN=your_token
上記の事前準備が完了しましたら、まずはcosmos3のgithubをクローンします。
筆者は他バージョンと混乱するため、cosmos3と名前を変更しています。
git clone https://github.com/nvidia/cosmos.git cosmos3
cd cosmos3
cosmosのpython実行環境構築用のリポジトリ(cosmos-framework)をクローンします。
mkdir -p packages
git clone https://github.com/NVIDIA/cosmos-framework.git packages/cosmos3
cd packages/cosmos3
あとは以下を実行すると、packages/cosmos3/.venv 以下に環境が生成されます。
export GIT_LFS_SKIP_SMUDGE=1
uv sync --all-extras --group=cu130-train
##cuda128以前のドライバの場合は、以下に変更してください
## uv sync --all-extras --group=cu128-train
生成された環境を以下で有効にします。
#packages/cosmos3/.venvに生成されている
source .venv/bin/activate
コマンドプロンプトの先頭が以下のように(cosmos-framework)となれば、成功です。
(cosmos-framework) user@host:/home/user/cosmos3/packages/cosmos3 $
NVIDIAサンプルの生成(text2video/image2video)
ここでは、旧バージョンでのPredictにあたる、 プロンプトのみから動画を生成する(text2video)、または最初のフレームの静止画を入力し、プロンプトの指示で続きの動画を生成する機能(image2video)を試していきます。
cosmos3のGeneratorモデルには主に16BのCosmos3-Nanoと、64BのCosmos3-Superがありますが、本記事では16BのCosmos3-Nanoを利用します。
cosmos3のgithubのcookbooks/cosmos3/generator/audiovisual/
に、サンプルがあるので、こちらを実行していきます。
以下ディレクトリに移動します。
cd cookbooks/cosmos3/generator/audiovisual/
以下のスクリプトを実行します。(以前は以下形式の様なpythonでjson作成→torchrunの実行サンプルでしたが、現在は変わっているようです)
python3 - <<'PY'
import json
from pathlib import Path
prompt = json.dumps(
json.load(open("assets/prompts/text2video/car_colliding.json")),
ensure_ascii=True,
separators=(",", ":"),
)
negative = json.dumps(
json.load(open("assets/negative_prompts/text2video/neg_prompt.json")),
ensure_ascii=True,
separators=(",", ":"),
)
payload = {
"model_mode": "text2video",
"name": "car_colliding",
"prompt": prompt,
"negative_prompt": negative,
"enable_sound": False,
"num_steps": 35,
"guidance": 6.0,
"shift": 10.0,
"fps": 24,
"num_frames": 189,
"resolution": "720",
"aspect_ratio": "16,9",
"seed": 0,
}
Path("nexty_car01/car_colliding.json").write_text(json.dumps(payload, indent=2) + "\n")
PY
torchrun --nproc-per-node=1 \
-m cosmos_framework.scripts.inference \
--parallelism-preset=throughput \
-i nexty_car01/car_colliding.json \
-o nexty_car01/out \
--checkpoint-path Cosmos3-Nano \
--seed=1
こちらを実行すると、初回のみCosmos3-Nanoのモデルダウンロードが走り、 しばらく待つと(RTX-PRO6000環境で9分程度)以下のような雪道での事故シーンが生成されるかと思います。
実行時はGPUのメモリを50G+α程度使用するようで、割と高スペックなGPUが必要な処理となっております。
また、同じディレクトリにあるimage2videoのサンプルを実行すると、以下のような動画が生成されました。
cosmos-predict2.5より、リアリティなどの精度が向上しているのが見られます。
プロンプト形式
NVIDIAサンプルのjsonを参考にしますと、プロンプトの形式がPredict2.5等の単純なテキスト文章1つのものから大きく変わっているようです。
「被写体とその説明」や「何秒に何が起きる」などが記載可能になっています。
1つ目のtext2videoでの動画生成に用いました、NVIDIAサンプルのプロンプトはこちらのcar_colliding.jsonです(リンク先を参照)。
理解のため、以下に内容部分を機械翻訳したものを記します(実際は英語で指定して下さい)。
{
"subjects": [
{
"description": "ダッシュカム車両の真正面にいる濃いグレーのセダン。ルーフとトランクに薄っすらと雪が積もっており、赤いテールランプが見えている",
"appearance_details": "標準的なミッドサイズセダン。路面のシャーベット状の雪で少し汚れており、ナンバープレートは雪しぶきで一部見えにくくなっている",
"relationship": "ダッシュカム車両の前を走る1台目の車で、衝突事故に巻き込まれる",
"location": "画面中央のミッドグラウンド",
"relative_size": "フレーム内では中サイズ",
"orientation": "カメラに対して背を向けており、前進してから左方向にスリップしていく",
"pose": "走行中の車両",
"action": "前進していたが、グリップを失い横滑りしながら交差点に進入する",
"state_changes": "安定した前進走行から制御不能な横滑りへ移行し、その後2台目の車と衝突する",
"clothing": "",
"expression": "",
"gender": "",
"age": "",
"skin_tone_and_texture": "",
"facial_features": "",
"number_of_subjects": 1,
"number_of_arms": 0,
"number_of_legs": 0
},
{
"description": "交差点の右側から接近してくる白いSUV。ヘッドライトが点灯しており、ボンネットとフロントガラスの縁に雪が積もっている",
"appearance_details": "ルーフレール付きのミッドサイズ白色SUV。フォグランプが点灯しており、後輪の後方にタイヤしぶきが見える",
"relationship": "衝突事故に巻き込まれる2台目の車両で、右側から交差点を横切る",
"location": "右側ミッドグラウンドから中央へ向かって移動",
"relative_size": "フレーム内では中サイズ",
"orientation": "左を向いている(ダッシュカムの進行方向に対して垂直に交差点を横切る)",
"pose": "走行中の車両",
"action": "交差点に進入し、横滑りしてきたグレーのセダンに衝突する",
"state_changes": "右側からフレーム中央へ移動し、急ブレーキをかけるが氷上で滑り、グレーのセダン側面に衝突。衝突地点から炎が噴き上がる",
"clothing": "",
"expression": "",
"gender": "",
"age": "",
"skin_tone_and_texture": "",
"facial_features": "",
"number_of_subjects": 1,
"number_of_arms": 0,
"number_of_legs": 0
},
{
"description": "フレーム下部にかろうじて見えるダッシュカム車両のボンネット先端。濃色の車体で、ボンネットには雪が薄く積もっている",
"appearance_details": "黒またはダークブルーのボンネットの一部が見えており、ワイパーは雪を払いながら作動中の中間位置にある",
"relationship": "映像を記録しているPOV車両で、グレーのセダンの後ろを走行している",
"location": "フレーム下端(一部のみ)",
"relative_size": "フレーム内では小サイズ",
"orientation": "前方向き(カメラ視点)",
"pose": "走行中の車両",
"action": "前進しつつ、前方で事故が起こると減速していく",
"state_changes": "前方で事故が発生するにつれ、徐々に減速する",
"clothing": "",
"expression": "",
"gender": "",
"age": "",
"skin_tone_and_texture": "",
"facial_features": "",
"number_of_subjects": 1,
"number_of_arms": 0,
"number_of_legs": 0
}
],
"background_setting": "冬の積雪に覆われた市街地の交差点。道路は2車線で、アスファルト上に雪とシャーベット状の雪が広がり、雪の上にはタイヤ痕が見える。交差点には信号機が頭上に吊り下げられ、降雪を通して赤と緑に光っている。道路の両側には葉を落とした木々、雪の積もった歩道、雪に覆われた屋根を持つ低層の商業ビルが並ぶ。激しい積雪のため、交差点には車線標示が見えない。縁石沿いには雪の山が積み上がり、降雪により視界はやや低下している。",
"lighting": {
"conditions": "曇天の冬の昼光で、灰色の空からの拡散光に、車両のヘッドライトとテールライトが加わっている",
"direction": "厚い雲のため強い指向性のない、上方からの拡散光",
"shadows": "曇天のため非常に柔らかく最小限。ヘッドライトが雪に反射することで車両下にわずかな影ができる程度",
"illumination_effect": "白い雪面の高い反射率と相まって、冷たく平板な光がコントラストの低い色あせたシーンを作り出し、炎が噴き上がる瞬間に突如として暖色系の光に変わる"
},
"aesthetics": {
"composition": "交差点を消失点とする道路中心の構図で、車両が道路の中心線に沿って配置され、視線を衝突地点へと導く",
"color_scheme": "雪と曇り空による白とグレーが基調。濃色の車体(グレー、白)、赤いテールランプが映え、最後に炎による鮮やかなオレンジと黄色が突如現れる",
"mood_atmosphere": "張り詰めて不吉、冷たく危険な雰囲気が、混沌として警戒すべき状況へとエスカレートする",
"patterns": "雪の上に繰り返されるタイヤ痕、フレーム全体に降る雪片が均一なパーティクル状のパターンを作り出す"
},
"cinematography": {
"camera_motion": "走行中の車両に取り付けられたダッシュカム特有の、わずかな前進運動と微振動。終盤には減速によるかすかな揺れ",
"framing": "低い位置に取り付けられたダッシュカム視点からの広角ショットで、前方の道路と交差点全体を捉える",
"camera_angle": "目線よりわずかに低い、フロントガラスへの一般的なダッシュカム取り付け位置",
"depth_of_field": "深い",
"focus": "前方の道路とミッドグラウンドの車両がシャープに合焦している",
"lens_focal_length": "約28mm相当の広角で、画面端にわずかな樽型歪みあり"
},
"style_medium": "実写映像",
"artistic_style": "リアルなダッシュカム映像、ドキュメンタリー調",
"context": "凍結した交差点で発生した冬の運転事故のダッシュカム録画。複数車両による衝突事故を捉えている",
"actions": [
{
"time": "0:00-0:03",
"description": "ダッシュカム車両は雪に覆われた道路を安定して前進し、前方にグレーのセダンが見える交差点に近づいていく。雪は降り続いており、路面は滑りやすい。"
},
{
"time": "0:03-0:05",
"description": "前方のグレーのセダンが交差点手前でブレーキをかけ始めるが、グリップを失い、後輪が左に流れて制御不能な横滑り状態で交差点に進入する。同時に、右側から白いSUVが進入してくる。"
},
{
"time": "0:05-0:07",
"description": "白いSUVとグレーのセダンが交差点中央で激しく衝突する。破片が雪上に飛び散り、衝突地点から炎が噴き上がり、両車両の前部が火に包まれる中、ダッシュカム車両は急ブレーキをかける。"
}
],
"text_and_signage_elements": [
{
"text": "2024/01/15 14:32:07",
"category": "ui_text",
"appearance": "わずかに透明な小さな白い等幅フォントで、右下隅に表示",
"spatial_temporal": "フレームの右下隅、映像全体を通して表示",
"context": "録画日時を示すダッシュカムのタイムスタンプ表示"
},
{
"text": "STOP",
"category": "scene_sign",
"appearance": "白い文字が入った赤い八角形の標識で、雪の付着により一部隠れている",
"spatial_temporal": "フレーム右側の交差点付近、0:02以降に視認可能",
"context": "交差点の一時停止標識"
}
],
"segments": [
{
"segment_index": 0,
"time_range": "0:00-0:03",
"description": "ダッシュカム車両が雪に覆われた道路で交差点に接近する。前方にはグレーのセダンが見え、中程度の速度で走行している。雪が降っており、路面状態が悪いことが見て取れる。",
"key_changes": "交差点までの距離が縮まり、交差点がはっきり見えるようになり、信号機が判別できるようになる",
"camera": "安定した前進運動とわずかな路面振動。滑りやすい路面に応じたわずかな横滑り感"
},
{
"segment_index": 1,
"time_range": "0:03-0:05",
"description": "グレーのセダンが制御を失い、交差点に進入しながら横滑りを始める。右側からは白いSUVが現れるが、こちらも凍結路面で停止できない。",
"key_changes": "グレーのセダンが正面向きから横向きへ回転し、白いSUVが右側からフレームに入り、両車両のブレーキランプが強く点灯する",
"camera": "ダッシュカム車両が反応して前進が緩み、ブレーキングによるわずかなピッチダウンが見られる"
},
{
"segment_index": 2,
"time_range": "0:05-0:07",
"description": "両車両が交差点中央で大きな衝撃と共に衝突する。金属がひしゃげ、破片が雪に覆われた道路上に飛び散り、衝突地点から炎が噴き上がり、急速に広がっていく。",
"key_changes": "衝突により車両が変形し、火災が発生して拡大、破片が雪上に散らばり、シーンは冷たいトーンから炎の暖かいオレンジ色へと変化する",
"camera": "ダッシュカム車両はほぼ停止し、急ブレーキでカメラがわずかに揺れ、炎上する残骸を静止した視点で映し出す"
}
],
"transitions": [],
"temporal_caption": "映像は、降雪の中、雪に覆われた道路を走行する車両のダッシュカム視点から始まる。前方にはグレーのセダンが見え、灰色の冬の光の中でテールランプが赤く光っている。路面は圧雪とシャーベット状の雪で滑りやすい。最初の3秒間で、車両は頭上に信号機がある交差点に近づいていく。3秒あたりで、前方のグレーのセダンがブレーキをかけようとするが、即座にグリップを失い、後輪が流れて横向きに交差点へ滑り込む。同じ瞬間、右側からも白いSUVが交差点に進入してきて、これも氷の上で滑っている。5秒の時点で、両車両は交差点中央で凄まじい衝撃と共に衝突する、金属がひしゃげて変形し、部品や破片が白い雪の上に飛び散る。ほぼ同時に、衝突地点から炎が噴き上がり、両車両の前部が鮮やかなオレンジの炎に包まれる。ダッシュカム車両は急ブレーキをかけ、ほぼ停止状態となり、残りの数秒間は燃え盛る残骸がフレーム中央を占める。",
"resolution": {
"W": 1280,
"H": 720
},
"aspect_ratio": "16,9",
"duration": "7s",
"fps": 24
}
指定方法は、以下のようなイメージであると思われます。参考になれば幸いです。
- 「subjects」にて被写体(車載の場合は車など)を記載
- 「background_settings」「lighting」などで背景や照明条件を記載
- 「segments」にて時刻と起こる出来事を記載
- 最後の方の「resolution」「fps」等で出力動画の形式を指定
NEXTYでの作例(車載動画)
いくつかNEXTYオリジナルのプロンプトで車載動画をいくつか生成を試してみました。その作例を以下に示します。
過去バージョンとの差異として、Predict2.5までではプロンプトで指定しても反映されなかった、日本の左側通行が生成に反映されるようになりました。 また自転車など以前のバージョンでは怪しい動きをする印象でしたが、その辺りのリアリティも向上していることが確認できております。
NEXTYでの作例(ロボット系動画)
ロボット系動画についても、NEXTYオリジナルのプロンプトで生成を試してみました。その作例を以下に示します。
NVIDIAサンプルの生成(transfer)
動画のエッジや深度などを保ちつつ別の動画を生成するtransferについては、2026年6月半ばに作成方法がリリースされました。 こちらのサンプルの実行までを以下に記します。 こちらのREADMEに従い実行します。 まずは以下ディレクトリに移動します。
cd cookbooks/cosmos3/generator/transfer
入力のサンプルとして、以下のような深度動画が添付されています。こちらの0frame目を以下に転載します。
こちらで、車載動画サンプルの深度→動画生成を以下で実行できます。
torchrun --nproc-per-node=1 \
-m cosmos_framework.scripts.inference \
--parallelism-preset=latency \
-i specs/depth.json \
-o ./output/ \
--checkpoint-path Cosmos3-Nano \
--seed 2026
こちらを実行し、しばらく待つ(RTX-PRO6000環境で45分程度、step数が50のため時間がかかるようです)とoutputに以下の動画が生成されます。
こちらで指定している specs/depth.jsonを以下に転載します。モード指定はvideo2videoとし、depthでcontrol_pathを指定すると以前のtransferのような動作となるようです。
{
"name": "transfer_depth",
"model_mode": "video2video",
"resolution": "720",
"aspect_ratio": "16,9",
"num_frames": 121,
"fps": 30,
"shift": 10.0,
"num_steps": 50,
"seed": 2026,
"num_video_frames_per_chunk": 121,
"num_conditional_frames": 1,
"num_first_chunk_conditional_frames": 0,
"share_vision_temporal_positions": true,
"negative_metadata_mode": "none",
"negative_prompt_keep_metadata": false,
"guidance": 3.0,
"control_guidance": 1.5,
"negative_prompt_file": "../assets/negative_prompt.json",
"prompt_path": "../assets/depth/prompt.json",
"depth": {
"control_path": "../assets/depth/control_depth.mp4"
}
}
transferについては、以前のバージョンから存在するedge/depth/seg/blur(旧vis)に加え、旧バージョンにもauto向けで存在しました、wsm(World scenario map形式:3次元アノテーション動画) から生成できるようです。
おわりに
本記事では、Cosmos3の動画生成機能についてご紹介しました。RTX-PRO6000環境での試行のため、モデルは16BのCosmos3-Nanoとなりますが、
以前のバージョン(2.5等)より高精度な動画生成が可能になっていることを確認できました。
また、今回のサンプルには含めておりませんが、オプションを追加することで動画に加えて音声も生成することが可能となっております。
当社ではCosmos3の生成を実際にお客様にお試し頂ける、サーバートライアル環境サービス(GPU Advanced Test Drive:GAT)も行っております。
例えば上位モデルに当たる「Cosmos3-Superを動かしてみるために、DGX-B200を短期でレンタルしたい」などございましたら、お気軽にお問い合わせ下さい。
またネクスティ エレクトロニクス開発部では、先端の技術動向を調査し、
PCやGPUサーバー・NVIDIA DRIVE Thor等のエッジで実際に試してみる事例を数多く行っております。
AIに関するお問い合わせ、技術サポートについても行っております。
これらにつきましてもお気軽にお問い合わせ下さい。
過去GAT関連の記事へのリンク
※NVIDIA CosmosはNVIDIA社の商標です







