Home
Login

مشروع تعلم عميق لإنشاء صور رمزية واقعية للإنسان بناءً على الصوت، قادر على توليد إيماءات الجسم وتعبيرات الوجه من الكلام.

NOASSERTIONPython 2.8kfacebookresearchaudio2photoreal Last Updated: 2024-09-15

Audio2PhotoReal: شرح تفصيلي للمشروع

نظرة عامة على المشروع

Audio2PhotoReal هو مشروع مفتوح المصدر للتعلم العميق مبتكر من Facebook Research (Meta Research)، يحقق نظام تركيب شامل من الصوت إلى الصور الرمزية الواقعية للإنسان. القدرة الأساسية للمشروع هي توليد رسوم متحركة واقعية لكامل جسم الإنسان بناءً على مدخلات صوتية، بما في ذلك تعابير الوجه ووضعية الجسم.

الميزات التقنية

الوظائف الأساسية

  • تركيب جسم الإنسان المدفوع بالصوت: توليد رسوم متحركة كاملة لجسم الإنسان بناءً على مدخلات صوتية فقط.
  • تعابير وجه واقعية: توليد تعابير وجه طبيعية باستخدام ترميز وجهي ذي 256 بُعدًا.
  • توليد وضعية الجسم بالكامل: تحقيق حركات كاملة للجسم باستخدام زوايا مفصلية ذات 104 بُعدًا.
  • تحسين مشهد الحوار: نمذجة سلوك جسم الإنسان خصيصًا في مشاهد الحوار.

الهيكل التقني

يعتمد المشروع على تصميم هيكلي متعدد النماذج:

  1. نموذج الانتشار الوجهي: توليد ترميز وجهي ذي 256 بُعدًا بناءً على الصوت.
  2. نموذج الانتشار الجسدي: توليد دوران مفصلي ذي 104 بُعدًا يجمع بين الصوت والوضعية الموجهة.
  3. مولد الوضعية الموجهة: هيكل VQ-VAE، يولد وضعية موجهة بتردد 1 إطار في الثانية.
  4. مشفر-مفكك VQ: إجراء تكميم متجهي لمساحة الوضعية المستمرة ذات 104 بُعدًا.

مجموعة البيانات

هيكل البيانات

يوفر المشروع مجموعة بيانات كاملة لأربعة شخصيات:

  • PXB184, RLW104, TXB805, GQS883

تحتوي كل شخصية على حوالي 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

تدريب النموذج

1. تدريب نموذج الانتشار الوجهي

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

2. تدريب نموذج الانتشار الجسدي

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

3. تدريب مشفر VQ

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

4. تدريب محول الوضعية الموجهة

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

المتطلبات التقنية

  • CUDA: 11.7
  • Python: 3.9
  • GCC: 9.0
  • التبعيات الرئيسية: PyTorch, PyTorch3D, Gradio

سيناريوهات التطبيق

  • الاجتماعات الافتراضية والتعاون عن بعد
  • البث المباشر الرقمي وإنشاء المحتوى
  • تطبيقات الألعاب والترفيه
  • محاكاة التعليم والتدريب
  • واجهات التفاعل بين الإنسان والآلة

Star History Chart