Stability AIからリリースされているStable Video 3D(SV3D)は1枚の画像から3D画像を生成できる。昨年試行したPoint-Eは画像から3D点群データを生成していたが、今回は動画を生成する。とにかくこの生成AIの業界は進歩が速いので、キャッチアップするため実際に使用してみた。

SV3Dとは

Stability AIはStable diffusionで話題となったが、このSV3Dは1枚の画像から任意の角度から撮像した画像を生成して動画にすることができる。前回紹介したNERFをいろいろなアングルから見た画像を生成するのに使っている。7月にはSV4Dもリリースされて、静止画だけでなく、動画もいろいろなアングルから見た画像を生成することができる。

使用方法

今回もGoogle colabを使用する。モデルのサイズが大きく、T4などを使うとメモリ不足のエラーが出るので、A100を使用する。用意する画像は背景が白いものが望ましいとのこと。基本的にはこのnoteのページのやり方を参考にするが、一部変更している。

ライブラリのインストール。

!git clone https://github.com/Stability-AI/generative-models
%cd generative-models
!pip install -r requirements/pt2.txt
!pip install .

HuggingFaceからAPIキーを取得し、読み込む。

from huggingface_hub import login
login(token = "取得したコード")

モデルのダウンロードする。

hf_hub_download(repo_id="stabilityai/sv3d", filename="sv3d_u.safetensors", local_dir="checkpoints")
hf_hub_download(repo_id="stabilityai/sv3d", filename="sv3d_p.safetensors", local_dir="checkpoints")

推論を実行する。

!python ./scripts/sampling/simple_video_sample-new.py --input_path ../"読み込む画像.png" --version sv3d_u

推論のとき、入力する画像によっては以下のエラーが出るケースがある。Githubにコード改修が開示されているので、simple_video_sample.pyに修正を加えている。

ValueError: could not broadcast input array from shape (xxx,xxx,x) into shape (yyy,yyy,y)

結果

Point-Eで使用したマグカップのイラストを実行した結果である。表も裏も基本は同じで問題ないので、タスクとしては難しくないのかもしれない。

今度は岡山城。写真なので、難しいかもと思ったけど、意外と綺麗にできている。ただし、裏側や横側は1枚の画像だけだと予測しようがないので、裏側は表側と同じだし、側面は壁に模様がない形になっている。

この他にもSV4Dの動画も試してみた。実行すると色々なカメラアングルからの動画を出力してくれる。ただし、背景が白色のいい動画がなく、通常の動画にしたからか、他のカメラアングルの動画はほとんどわからない画像が出力された。こちらはまだ改善が必要そうである。