画像・動画生成

Oasis 500Mをローカル実行: 画像と行動ファイルからゲーム動画を生成

generate.pyに開始画像と行動記録を渡すと、続きのフレームを動画ファイルに保存します。

公開されているOasis 500M推論コードは、開始画像または動画とactionファイルを読み込み、その操作に応じた後続フレーム1を生成します。Linux NVIDIA CUDA2環境にopen-oasisをcloneし、Hugging Faceのアクセス条件を自分で確認・承諾してからDiT3とViT-VAEの重みを取得し、python generate.pyを実行すると作業フォルダにvideo.mp4が保存されます。

実行条件と要点
  • 初期設定ではサンプル開始画像とone-hot行動ファイルを使います。
  • スクリプトにはCUDAが必要で、リアルタイムのキーボード操作UIはありません。
  • 正常な結果は指定した出力先に保存されるvideo.mp4です。
  • 公開コードは最低VRAM要件を指定していません。

行動ファイルが次のフレームを条件付けます

Oasisは開始画面とユーザー行動から次のゲーム画面を生成するワールドモデルです。公開された500M推論コードは画像または動画から条件フレームを読み、別のactionファイルにある操作シーケンスを使って後続フレームを生成し、video.mp4に保存します。これはスクリプトによるオフライン推論であり、ブラウザゲームのようにキーを押して進めるUIはありません。公式open-oasisリポジトリ

モデルカードによると、ウェブサイトのライブデモはより大きなバージョンです。Oasis 500Mは別途公開されたチェックポイント4と推論コードなので、ライブデモと同じ遅延や操作性を期待せず、ファイル出力を目的にローカル経路を実行します。Oasis 500Mモデルカード

海岸道路の最初の場面と続く自転車走行フレームを収めた絵コンテ
開始フレームと行動記録をもとに、後続フレームを生成します。

NVIDIA GPUを認識するLinuxのPython環境を用意します

公開generate.pyは起動時にtorch.cuda.is_available()が真かを確認します。CPU5版PyTorch6やCUDAを利用できないデバイスでは実行できません。リポジトリREADMEの導入例ではCUDA 12.1用インデックスからPyTorchとtorchvisionを入れ、einops、diffusers、timm、avを追加します。使用するGPU7とドライバーが選んだPyTorch CUDAパッケージに対応するか、インストール前に確認してください。リポジトリは最低VRAM8値を公開していません。

仮想環境とCUDA依存関係を準備
git clone https://github.com/etched-ai/open-oasis.git
cd open-oasis
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
python -m pip install einops diffusers timm av

アクセス条件を確認して2つのチェックポイントを取得します

Hugging Face上のOasisファイルにはログインとアクセス条件への同意が必要です。モデルページで自分に適用される条件を読み、連絡先情報を共有する条件に同意する場合のみ、自分のアカウントで進めてください。この同意は利用者自身が決める必要があるため、ガイドが代わりに承諾することはありません。モデルカードでアクセス状態を確認できます。Etched/oasis-500m

取得するファイルはDiTチェックポイントoasis500m.safetensorsとViT-VAEチェックポイントvit-l-20.safetensorsの2つです。hf auth loginで自分のアカウントにログインし、--local-dir .で現在のopen-oasis/フォルダへ保存してください。トークン9を共有したり、原稿やコードに記載したりしないでください。モデルファイルの案内

自分のアカウントでログインして公開重みを取得
python -m pip install -U huggingface_hub
hf auth login
hf download Etched/oasis-500m oasis500m.safetensors --local-dir .
hf download Etched/oasis-500m vit-l-20.safetensors --local-dir .

サンプル画像と操作記録から最初の動画を生成します

2つの重みファイルをリポジトリのルートに置いたら、open-oasis/からpython generate.pyを実行します。初期設定ではsample_data/sample_image_0.pngとsample_data/sample_actions_0.one_hot_actions.ptを読み込み、video.mp4を書き出します。初回はモデルをGPUに読み込んでフレームを生成するため、ターミナルの推論引数と進行表示が完了するまで待ってください。generate.pyの初期パス

実行が終わったらopen-oasis/video.mp4を開き、開始場面に続くフレームが含まれているか確認します。スクリプトの--num-frames初期値は32、保存動画の--fps初期値は20です。この--fpsは動画ファイルの再生フレームレートを設定する値で、モデルの生成速度を測るものではありません。公式基本使用法

モニターに損傷した風景と修復後の風景が並んでいます
このモニターの場面は既存の動画ガイド用イラストで、Oasisの実行画面ではありません。

開始画像を変更し、サンプル行動ファイルをそのまま使えます

自分のPNG・JPG・JPEGを開始画面にするには、--prompt-pathに画像パスを指定します。初期設定のactionファイルをそのまま使うと、サンプルの操作シーケンスが適用されます。行動も変更する場合は.actions.ptまたは.one_hot_actions.ptファイルを用意し、--actions-pathでパスを指定します。generate.pyはこのファイルから行動配列を読み、フレーム生成モデルに渡します。

/path/to/opening-frame.pngを実際の画像パスに置き換えます。動画を入力する場合、--video-offsetで読み始める位置を、--n-prompt-framesで条件に使うフレーム数を指定します。使用可能なオプションはpython generate.py --helpで確認でき、--num-framesで出力フレーム数を変更します。

自分の画像から開始
python generate.py \
  --prompt-path /path/to/opening-frame.png \
  --actions-path sample_data/sample_actions_0.one_hot_actions.pt \
  --output-path video.mp4

CUDAやファイルのエラーはデバイスとパスから確認します

起動直後にAssertionErrorが出たら、CUDA利用可能性の検査で止まったか確認します。仮想環境10を有効にしたターミナルでpython -c 'import torch; print(torch.cuda.is_available(), torch.version.cuda)'を実行してください。最初の値がFalseならPyTorchからCUDAデバイスが見えていません。GPUとドライバーに合うCUDAビルドを導入し、同じコマンドで再確認します。Oasisの公開セットアップコマンドはCUDA 12.1用wheelインデックスを使います。

チェックポイントが見つからない場合は、pwdで現在のフォルダがopen-oasis/か確認し、同じフォルダに2つの.safetensorsファイルがあるかを見ます。別の場所に保存した場合は--oasis-ckptと--vae-ckptで実際のパスを渡せます。推論コードのチェックポイントオプション

まず初期設定の.one_hot_actions.ptを使い、生成後に開始フレームとvideo.mp4を比べます。次の実行では画像かactionファイルの一方だけを変えると、その影響を切り分けられます。リポジトリは最低GPUメモリを公開していません。CUDAエラーやメモリ不足が出た場合は、対応する--num-framesオプションで出力フレーム数を減らして再実行してください。

木の机に大きさの異なるフィルムリール3個と風景のコンタクトプリントが置かれています。
`video.mp4`は生成された複数フレームを含む出力ファイルです。

用語の注釈

  1. フレーム — 動画を構成する1枚の画像です。

    本文に戻る
  2. CUDA — NVIDIA GPUで汎用計算を行うソフトウェア基盤です。

    本文に戻る
  3. DiT — Diffusion Transformerの略です。Transformer構造を使い、拡散過程でノイズを含む表現を段階的に整えるモデル構造です。

    本文に戻る
  4. チェックポイント — 学習済みモデルの重みなどを保存したファイルです。同じモデル系列でも、版や用途によって異なるチェックポイントを使うことがあります。

    本文に戻る
  5. CPU — OSや一般的なプログラム命令を実行する中央処理装置です。AIでは前処理やデータ転送などの汎用処理も担います。

    本文に戻る
  6. PyTorch — AIモデルを作成・実行するソフトウェアフレームワークです。モデルと合わせて、対応するPyTorchの版やハードウェアも確認します。

    本文に戻る
  7. GPU — 多くの計算を並列に処理するプロセッサーです。AIモデルの実行ではモデル計算を担います。

    本文に戻る
  8. VRAM — グラフィックカードのGPUが使うメモリです。モデルの重みや計算途中の値を保存します。

    本文に戻る
  9. トークン — モデルが入力や出力を分けて処理する単位です。

    本文に戻る
  10. Python仮想環境 — プロジェクトごとにPythonパッケージを分けて導入する環境です。パッケージのバージョンの衝突を減らせます。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
公開されているOasis 500M推論コードは、開始画像または動画とactionファイルを読み込み、その操作に応じた後続フレームを生成します。Linux NVIDIA CUDA環境に`open-oasis`をcloneし、Hugging Faceのアクセス条件を自分で確認・承諾してからDiTとViT-VAEの重みを取得し、`python generate.py`を実行すると作業フォルダに`video.mp4`が保存されます。
必要なメモリはどのくらいですか?
公開`generate.py`は起動時に`torch.cuda.is_available()`が真かを確認します。CPU版PyTorchやCUDAを利用できないデバイスでは実行できません。リポジトリREADMEの導入例ではCUDA 12.1用インデックスからPyTorchとtorchvisionを入れ、`einops`、`diffusers`、`timm`、`av`を追加します。使用するGPUとドライバーが選んだPyTorch CUDAパッケージに対応するか、インストール前に確認してください。リポジトリは最低VRAM値を公開していません。
条件と出典はどこで確認できますか?
モデルカードによると、ウェブサイトのライブデモはより大きなバージョンです。Oasis 500Mは別途公開されたチェックポイントと推論コードなので、ライブデモと同じ遅延や操作性を期待せず、ファイル出力を目的にローカル経路を実行します。[Oasis 500Mモデルカード](https://huggingface.co/Etched/oasis-500m)