数字人开源代码-geneface++

代码地址:GeneFacePlusPlus/docs/prepare_env/install_guide-zh.md at main · yerfor/GeneFacePlusPlus · GitHub

论文地址:

arxiv.org/pdf/2305.00787

1、环境部署 

(1)、拉取代码

git clone https://github.com/yerfor/GeneFacePlusPlus.git

(2)、作者给了环境安装指南,在目录docs/prepare_env/install_guide-zh.md中

#创建环境
conda create -n geneface python=3.9
conda activate geneface
#安装ffmpeg
conda install conda-forge::ffmpeg
#安装torch
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia
#安装pytorch3d
pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable"
# MMCV安装
pip install cython
pip install openmim==0.3.9
mim install mmcv==2.1.0 # 使用mim来加速mmcv安装

# 其他依赖项
sudo apt-get install libasound2-dev portaudio19-dev
pip install -r docs/prepare_env/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 构建torch-ngp
bash docs/prepare_env/install_ext.sh 

安装requirements.txt如果出现以下问题:

1、

依赖版本冲突,都升级一下:

pip install --upgrade openxlab s3prl

2、

出现上面问题,先安装

apt-get install portaudio19-dev

(3)、准备3DMM模型(BFM2009) 以及其他数据

 你可以从这里下载 Google Drive 或 BaiduYun Disk (密码 r8ux)。 解压缩后, BFM 文件夹中将包含8个文件。 移动这些文件到 <GeneFaceRoot>/deep_3drecon/BFM/。该文件夹结构应该如下:

deep_3drecon/BFM/
├── 01_MorphableModel.mat
├── BFM_exp_idx.mat
├── BFM_front_idx.mat
├── BFM_model_front.mat
├── Exp_Pca.bin
├── facemodel_info.mat
├── index_mp468_from_mesh35709.npy
├── mediapipe_in_bfm53201.npy
└── std_exp.txt

2、数据预处理

(1)将视频Crop到512x512分辨率,25FPS,确保每一帧都有目标人脸,我这里用的obama说话五分钟视频

ffmpeg -i data/raw/videos/obama.mp4 -vf fps=25,scale=w=512:h=512 -qmin 1 -q:v 1 data/raw/videos/obama_512.mp4
#改名:
mv data/raw/videos/obama.mp4 data/raw/videos/obama_to_rm.mp4
mv data/raw/videos/obama_512.mp4 data/raw/videos/obama.mp4

(2)提取音频特征, 如mel, f0, hubert

export CUDA_VISIBLE_DEVICES=0
export PYTHONPATH=./
mkdir -p data/processed/videos/obama
ffmpeg -i data/raw/videos/obama.mp4 -f wav -ar 16000 data/processed/videos/obama/aud.wav 
python data_gen/utils/process_audio/extract_hubert.py --video_id=obama
python data_gen/utils/process_audio/extract_mel_f0.py --video_id=obama

在提取hubert时,如果huggingface连不上,需要手动下载,并把data_gen/utils/process_audio/extract_hubert.py中的local_path改成下载后文件的地址

(3)提取图片

mkdir -p data/processed/videos/obama/gt_imgs
ffmpeg -i data/raw/videos/obama.mp4 -vf fps=25,scale=w=512:h=512 -qmin 1 -q:v 1 -start_number 0 data/processed/videos/obama/gt_imgs/%08d.jpg
python data_gen/utils/process_video/extract_segment_imgs.py --ds_name=nerf --vid_dir=data/raw/videos/obama.mp4

(4)提取lm2d_mediapipe

python data_gen/utils/process_video/extract_lm2d.py --ds_name=nerf --vid_dir=data/raw/videos/obama.mp4

Fit 3DMM

python data_gen/utils/process_video/fit_3dmm_landmark.py --ds_name=nerf --vid_dir=data/raw/videos/obama.mp4 --reset  --debug --id_mode=global

(4)Binarize(将数据打包)

python data_gen/runs/binarizer_nerf.py --video_id=obama

3、训练和推理

(1)将预训练Audio2Motion模型放在目录 checkpoints/audio2motion_vae里,可以从Google Drive 或 BaiduYun Disk (密码 9cqp) 下载预训练的Audio2Motion模型

(2)训练

训练之前将egs/datasets/may目录下所有yaml文件中的may改成你的video_id,我这里是obama,是为了可以找见data/binary/videos/{Video_ID}/trainval_dataset.npy

# 训练 Head NeRF 模型
# 模型与tensorboard会被保存在 `checkpoints/<exp_name>`
CUDA_VISIBLE_DEVICES=0 python tasks/run.py --config=egs/datasets/May/lm3d_radnerf_sr.yaml --exp_name=motion2video_nerf/may_head --reset

# 训练 Torso NeRF 模型
CUDA_VISIBLE_DEVICES=0 python tasks/run.py --config=egs/datasets/May/lm3d_radnerf_torso_sr.yaml --exp_name=motion2video_nerf/may_torso --hparams=head_model_dir=checkpoints/motion2video_nerf/may_head --reset

(2)推理

# 使用我们提供的推理脚本.
CUDA_VISIBLE_DEVICES=0  python inference/genefacepp_infer.py --head_ckpt= --torso_ckpt=motion2video_nerf/may_torso --drv_aud=data/raw/val_wavs/MacronSpeech.wav

# --debug 选项可以可视化一些中间过程与特征
CUDA_VISIBLE_DEVICES=0  python inference/genefacepp_infer.py --head_ckpt= --torso_ckpt=motion2video_nerf/may_torso --drv_aud=data/raw/val_wavs/MacronSpeech.wav --debug

motion2video_nerf/may_torso是训练好的模型存放的位置。

亲测8g显存可运行,生成效果优于ER-NeRF和synctalk,运行过程中有什么问题可在评论区讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值