Audio2PhotoRealは、Facebook Research(Meta Research)がオープンソースで公開している革新的な深層学習プロジェクトで、音声からリアルな人体バーチャルアバターをエンドツーエンドで合成するシステムを実現します。このプロジェクトの中核となる能力は、音声入力に基づいて、表情や身体の姿勢を含むリアルな全身人体アニメーションを生成することです。
このプロジェクトは、複数のモデルが連携するアーキテクチャ設計を採用しています。
このプロジェクトは、4人の人物の完全なデータセットを提供します。
各人物には約26〜30の対話シーンが含まれており、各シーンには以下が含まれます。
*audio.wav: ステレオ音声ファイル(48kHz)
- チャンネル0: 現在の人物の音声
- チャンネル1: 対話相手の音声
*body_pose.npy: (T × 104) 関節角度配列
*face_expression.npy: (T × 256) 顔面エンコーディング配列
*missing_face_frames.npy: 欠落/破損した顔面フレームのインデックス
data_stats.pth: 各モダリティの平均と標準偏差の統計
train_idx = list(range(0, len(data_dict["data"]) - 6))
val_idx = list(range(len(data_dict["data"]) - 6, len(data_dict["data"]) - 4))
test_idx = list(range(len(data_dict["data"]) - 4, len(data_dict["data"])))
# 環境の作成
conda create --name a2p_env python=3.9
conda activate a2p_env
# 依存関係のインストール
sh demo/install.sh
# デモの実行
python -m demo.demo
# 環境設定
conda create --name a2p_env python=3.9
conda activate a2p_env
pip install -r scripts/requirements.txt
# 必要なモデルのダウンロード
sh scripts/download_prereq.sh
# PyTorch3Dのインストール
pip install "git+https://github.com/facebookresearch/pytorch3d.git"
# 単一のデータセットのダウンロード
curl -L https://github.com/facebookresearch/audio2photoreal/releases/download/v1.0/<person_id>.zip -o <person_id>.zip
unzip <person_id>.zip -d dataset/
# すべてのデータセットのダウンロード
sh scripts/download_alldatasets.sh
# プリトレーニング済みモデルのダウンロード
sh scripts/download_allmodels.sh
python -m train.train_diffusion \
--save_dir checkpoints/diffusion/c1_face_test \
--data_root ./dataset/PXB184/ \
--batch_size 4 \
--dataset social \
--data_format face \
--layers 8 \
--heads 8 \
--timestep_respacing '' \
--max_seq_length 600
python -m train.train_diffusion \
--save_dir checkpoints/diffusion/c1_pose_test \
--data_root ./dataset/PXB184/ \
--lambda_vel 2.0 \
--batch_size 4 \
--dataset social \
--add_frame_cond 1 \
--data_format pose \
--layers 6 \
--heads 8 \
--timestep_respacing '' \
--max_seq_length 600
python -m train.train_vq \
--out_dir checkpoints/vq/c1_vq_test \
--data_root ./dataset/PXB184/ \
--lr 1e-3 \
--code_dim 1024 \
--output_emb_width 64 \
--depth 4 \
--dataname social \
--loss_vel 0.0 \
--data_format pose \
--batch_size 4 \
--add_frame_cond 1 \
--max_seq_length 600
python -m train.train_guide \
--out_dir checkpoints/guide/c1_trans_test \
--data_root ./dataset/PXB184/ \
--batch_size 4 \
--resume_pth checkpoints/vq/c1_vq_test/net_iter300000.pth \
--add_frame_cond 1 \
--layers 6 \
--lr 2e-4 \
--gn \
--dim 64
python -m sample.generate \
--model_path checkpoints/diffusion/c1_face/model000155000.pt \
--num_samples 10 \
--num_repetitions 5 \
--timestep_respacing ddim500 \
--guidance_param 10.0
python -m sample.generate \
--model_path checkpoints/diffusion/c1_pose/model000340000.pt \
--resume_trans checkpoints/guide/c1_pose/checkpoints/iter-0100000.pt \
--num_samples 10 \
--num_repetitions 5 \
--timestep_respacing ddim500 \
--guidance_param 2.0
python -m sample.generate \
--model_path checkpoints/diffusion/c1_pose/model000340000.pt \
--resume_trans checkpoints/guide/c1_pose/checkpoints/iter-0100000.pt \
--num_samples 10 \
--num_repetitions 5 \
--timestep_respacing ddim500 \
--guidance_param 2.0 \
--face_codes ./checkpoints/diffusion/c1_face/samples_c1_face_000155000_seed10_/results.npy \
--pose_codes ./checkpoints/diffusion/c1_pose/samples_c1_pose_000340000_seed10_guide_iter-0100000.pt/results.npy \
--plot
python -m visualize.render_anno \
--save_dir vis_anno_test \
--data_root dataset/PXB184 \
--max_seq_length 600