Audio2PhotoReal هو مشروع مفتوح المصدر للتعلم العميق مبتكر من Facebook Research (Meta Research)، يحقق نظام تركيب شامل من الصوت إلى الصور الرمزية الواقعية للإنسان. القدرة الأساسية للمشروع هي توليد رسوم متحركة واقعية لكامل جسم الإنسان بناءً على مدخلات صوتية، بما في ذلك تعابير الوجه ووضعية الجسم.
يعتمد المشروع على تصميم هيكلي متعدد النماذج:
يوفر المشروع مجموعة بيانات كاملة لأربعة شخصيات:
تحتوي كل شخصية على حوالي 26-30 مشهد حوار، يحتوي كل مشهد على:
*audio.wav: ملف صوتي ثنائي القناة (48 كيلو هرتز)
- القناة 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