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 아키텍처, 1fps 주파수로 가이드 자세 생성
  4. VQ 인코더-디코더: 연속적인 104차원 자세 공간에 대한 벡터 양자화

데이터 세트

데이터 구조

이 프로젝트는 네 명의 인물에 대한 완전한 데이터 세트를 제공합니다.

  • PXB184, RLW104, TXB805, GQS883

각 인물은 약 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

모델 훈련

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