CentOS 7/8 部署 GeneFace++ 教程
一 环境准备与驱动
- 安装基础编译工具与依赖
- CentOS 7:sudo yum groupinstall -y "Development Tools"
- CentOS 8:sudo dnf groupinstall -y "Development Tools"
- 通用:sudo yum install -y epel-release cmake3 git wget pciutils
- 升级 GCC(推荐 GCC 9+ 以兼容部分依赖)
- 启用 SCL:sudo yum install -y centos-release-scl
- 安装 devtoolset-9:sudo yum install -y devtoolset-9
- 启用:echo "source /opt/rh/devtoolset-9/enable" >> ~/.bashrc && source ~/.bashrc
- 安装 NVIDIA 驱动与 CUDA 11.7
- 查看推荐驱动:nvidia-smi(如已装驱动可跳过安装)
- 驱动安装(示例):sudo yum install -y nvidia-driver-latest-dkms
- 安装 CUDA 11.7 Toolkit(runfile 或网络仓均可,示例 runfile)
- wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
- sudo sh cuda_11.7.0_515.43.04_linux.run
- 安装时仅勾选 CUDA Toolkit(驱动已单独安装)
- 配置环境变量(写入 ~/.bashrc)
- export PATH="/usr/local/cuda-11.7/bin:$PATH"
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.7/lib64
- export CUDA_HOME=/usr/local/cuda-11.7
- 验证:nvcc --version 应显示 11.7;nvidia-smi 可见驱动与 CUDA 11.7
- 安装 Anaconda(Python 3.9 环境)
- wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh
- bash Anaconda3-2024.02-1-Linux-x86_64.sh(按提示完成)
- 建议重启 shell 或 source ~/.bashrc 后使用 conda
二 创建 Conda 环境并安装依赖
- 创建环境
- conda create -n geneface python=3.9
- conda activate geneface
- 安装 PyTorch 2.0.1 + cu117(官方推荐组合)
- conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia
- 安装 ffmpeg(含 libx264,便于 mp4 编解码)
- conda install -c conda-forge ffmpeg
- 安装 PyTorch3D(源码)
- pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable"
- 安装 MMCV(openmim)
- pip install cython openmim==0.3.9
- mim install mmcv==2.1.0
- 安装系统音频依赖(用于音频处理/可视化等)
- sudo yum install -y alsa-lib-devel portaudio-devel
- 安装项目其余依赖
- 进入项目根目录(GeneFacePlusPlus):pip install -r docs/prepare_env/requirements.txt -v
- 构建扩展(若项目提供)
- bash docs/prepare_env/install_ext.sh
- 说明
- 本教程采用 CUDA 11.7 + PyTorch 2.0.1 的组合;社区经验表明 PyTorch 2.1 + CUDA 12.x 可能导致部分子模块(如 torch-ngp)报错,建议保持一致
三 数据准备与预处理
- 准备视频
- 建议时长 3–5 分钟、画面清晰、尽量为 512×512、人物正面、背景简洁
- 导出音频为 16 kHz WAV:ffmpeg -i data/raw/videos/${VIDEO_ID}.mp4 -f wav -ar 16000 data/processed/videos/${VIDEO_ID}/aud.wav
- 提取音频特征(HuBERT、Mel、F0 等)
- 设置镜像加速(可选):export HF_ENDPOINT=https://hf-mirror.com
- python data_gen/utils/process_audio/extract_hubert.py --video_id=${VIDEO_ID}
- python data_gen/utils/process_audio/extract_mel_f0.py --video_id=${VIDEO_ID}
- 提取视频帧与分割
- ffmpeg -i data/raw/videos/${VIDEO_ID}.mp4 -vf fps=25,scale=w=512:h=512 -qmin 1 -q:v 1 -start_number 0 data/processed/videos/${VIDEO_ID}/gt_imgs/%08d.jpg
- python data_gen/utils/process_video/extract_segment_imgs.py --ds_name=nerf --vid_dir=data/raw/videos/${VIDEO_ID}.mp4 --force_single_process
- 提取 2D 关键点
- python data_gen/utils/process_video/extract_lm2d.py --ds_name=nerf --vid_dir=data/raw/videos/${VIDEO_ID}.mp4
- 拟合 3DMM
- python data_gen/utils/process_video/fit_3dmm_landmark.py --ds_name=nerf --vid_dir=data/raw/videos/${VIDEO_ID}.mp4 --reset --debug --id_mode=global
- 数据二值化(Binarize)
- python data_gen/runs/binarizer_nerf.py --video_id=${VIDEO_ID}
四 训练与推理
- 训练 Head NeRF
- CUDA_VISIBLE_DEVICES=0 python tasks/run.py --config=egs/datasets/${VIDEO_ID}/lm3d_radnerf_sr.yaml --exp_name=motion2video_nerf/${VIDEO_ID}_head --reset
- 训练 Torso NeRF(需先得到 head 权重)
- CUDA_VISIBLE_DEVICES=0 python tasks/run.py --config=egs/datasets/${VIDEO_ID}/lm3d_radnerf_torso_sr.yaml --exp_name=motion2video_nerf/${VIDEO_ID}_torso --hparams=head_model_dir=checkpoints/motion2video_nerf/${VIDEO_ID}_head --reset
- 推理生成视频
- python inference/genefacepp_infer.py \
--a2m_ckpt=checkpoints/audio2motion_vae \
--head_ckpt=checkpoints/motion2video_nerf/${VIDEO_ID}_head \
--torso_ckpt=checkpoints/motion2video_nerf/${VIDEO_ID}_torso \
--drv_aud=data/raw/val_wavs/your.wav \
--out_name=geneface_demo.mp4
- 训练时长与步数
- 官方/社区教程常见示例为 5 万步 起步;若效果欠佳,可继续训练至 15 万步 再生成对比效果
五 常见问题与排错
- 版本不兼容
- 优先使用 PyTorch 2.0.1 + CUDA 11.7;PyTorch 2.1 + CUDA 12.x 在社区中曾引发 torch-ngp 相关错误
- 构建/编译失败
- 确认已启用 devtoolset-9(gcc/g++ 版本足够新)
- 确认 CUDA_HOME、PATH、LD_LIBRARY_PATH 指向 cuda-11.7
- 音频/视频工具缺失
- 确保已安装 ffmpeg(含 libx264)、alsa-lib-devel、portaudio-devel
- 数据预处理报错
- 常见如背景图缺失(bg.jpg not found):检查 extract_segment_imgs.py 是否成功生成背景;必要时清理并重跑该步骤
- 训练中断或 OOM
- 降低 batch size/分辨率、减少并发进程;长音频推理可分片生成后拼接
- 预训练权重路径
- 推理前确认 audio2motion_vae 与 motion2video_nerf 的权重路径与文件名正确