CAP4Dを使って数枚の写真からアニメーション可能な4Dアバターを作成する方法

1枚または複数枚の写真からコントロール可能な3Dヘッドを作成しようとすると、いつも同じ壁にぶつかりまります。背面や適切なジオメトリのないフラットなマスクしか得られないか、あるいはニューラルネットワークのトレーニングに20台もの同期カメラを備えたスタジオが必要かという二択になります。
数日前に、トロント大学とLG Electronicsの研究者たちが公開したCAP4Dリポジトリを見つけました。CVPR 2025に採用されたこのプロジェクトは、任意の枚数の写真またはモノ Појединаカメラの短い動画を入力として、3D Gaussian Splattingベースの完全にアニメーション可能な4Dアバターを構築するパイプラインを公開しています。
パイプラインの内部構造
アーキテクチャを分解すると、パイプラインは4つのステージで構成されています:
- FLAMEによる顔トラッキング。スクリプトはソースフレームを3Dトラッキングツール(Pixel3DMMまたは近日公開予定のFlowFace)で処理し、FLAMEパラメトリックモデルにヘッドパラメータをフィッティングします。
- マルチビュー拡散(MMDM)。ここではStable DiffusionとControlNetを採用し、異なる表情やポーズで一貫したヘッドビューを生成するようにファインチューニングしています。拡散ネットワークは元の写真にはなかった角度の顔を文字通り「補完」します。
- ガウシアントレーニング(Gaussian Splatting)。GaussianAvatarsベースの表現を、生成画像とソース画像でトレーニングします。ガウシアンはFLAMEポリゴンメッシュにバインドされ、変形中に安定したジオメトリを提供します。
- アニメーションとPLYエクスポート。完成したアバターは、既存ファイルのパラメータで駆動したり、他の動画の表情を転送したりできます。結果はブラウザで直接開けるPLYファイルとしてエクスポートされ、Brushエンジンでレンダリングされます。
インストールと最初の难关
READMEには標準的なConda環境のセットアップが記載されていますが、つまずきやすいポイントがいくつかあります:
git clone https://github.com/felixtaubner/cap4d/
cd cap4d
conda create --name cap4d_env python=3.10
conda activate cap4d_env
pip install -r requirements.txt
export PYTHONPATH=$(realpath "./"):$PYTHONPATH
次に、CUDAサポート付きでPyTorch3Dを手動でビルドする必要があります:
export FORCE_CUDA=1
pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable"
パラメトリックモデルを扱うには、FLAMEのウェブサイトで登録(無料、非商用利用可)し、環境変数を設定する必要があります:
export FLAME_USERNAME=your_flame_user_name
export FLAME_PWD=your_flame_password
bash scripts/download_flame.sh
bash scripts/download_mmdm_weights.sh
NumPyのバージョン問題でダウンロードスクリプトが失敗する場合は、リポジトリには親切にもユーティリティが提供されています:
готов персонажейでのクイックテスト
すべてのCUDAカーネルとライブラリが正しくインストールされていることを確認するため 作者们はテストランを追加しています:
bash scripts/test_pipeline.sh
Nikola Teslaの動画がビューワーでレンダリングされれば、環境は正しく設定されています。次に、 готов персонажей(Tesla、Lincoln、またはリポジトリ作成者のFelix)をビルドできます:
bash scripts/generate_tesla.sh
スクリプトはアニメーションファイルを出力します。GitHub Pages上のWebビューアにアップロードすると、マウスでカメラを回転させ、ブラウザウィンドウ内で60 FPSのレンダリングを確認できます。
自有データでの実行
自分の顔や動画からのキャラクターを生き生きとさせたい場合 工程はもう少し複雑になります。モノ Појединаトラッキング用にPixel3DMMリポジトリが必要です:
export PIXEL3DMM_PATH=$(realpath "../PATH/TO/pixel3dmm")
export CAP4D_PATH=$(realpath "./")
bash scripts/install_pixel3Dmm.sh
次に、写真フォルダと表情を抽出するターゲット動画でトラッキングを実行します:
# Трекинг исходных фотографий
bash scripts/track_video_pixel3dmm.sh examples/input/my_face/cam0/ examples/output/custom/reference_tracking/
# Трекинг видео-драйвера с движениями
bash scripts/track_video_pixel3dmm.sh examples/input/animation/driving.mp4 examples/output/custom/driving_video_tracking/
拡散モデルで合成ビューを生成します:
python cap4d/inference/generate_images.py \
--config_path configs/generation/default.yaml \
--reference_data_path examples/output/custom/reference_tracking/ \
--output_path examples/output/custom/mmdm/
ジオメトリにガウシアンをフィットさせます:
python gaussianavatars/train.py \
--config_path configs/avatar/default.yaml \
--source_paths examples/output/custom/mmdm/reference_images/ examples/output/custom/mmdm/generated_images/ \
--model_path examples/output/custom/avatar/ \
--interval 5000
個別のステップを呼び出したくない人のために 作者たちは Entireパイプラインを1つのbashスクリプトにパッケージ化了しています:
bash scripts/generate_avatar.sh examples/input/my_face/cam0/ examples/output/my_avatar/ default examples/input/animation/driving.mp4
ハードウェアと落とし穴
パイプラインはリソース集約的です。MMDMステージは利用可能なすべてのGPUを使用し、相当量のVRAMと64 GBのRAMが必要です。コンシューマーGPU1枚では、画像生成に数時間かかる場合があります。
2つ目のニュアンスはトラッキングに関連しています。現在、メインスクリプトはサードパーティのPixel3DMMに依存しており、複雑な角度で失敗することがあります。著者はFlowFaceからのアノテーションで拡散重みをトレーニングしましたが、FlowFaceモジュール自体は近日中にリポジトリで公開される予定です。そのため、カスタム生成は公式デモよりもややシャープさが劣る場合があります。
このプロジェクトの対象者
ニューラルレンダリング、ゲーム用のデジタルアバター、イン디епプロジェクトのアニメーション、または単に3D Gaussian Splattingを探索している場合、CAP4Dのコードは一見の価値があります。視点の不足という問題をFLAMEパラメトリックメッシュを通じて回避しながら、2D拡散と3D表現を組み合わせる方法をうまくデモしています。
クイックスタートとしては、まずLincolnやTeslaなどの готов персонажейでウェブレンダラの性能を評価し、その後自有データセットでカスタムパイプラインの構築に進むことをおすすめします。
関連プロジェクト