CentOS 7/8 部署 GeneFace++ 安装攻略
一 环境准备与驱动
- 建议使用 NVIDIA 驱动 ≥ 515、CUDA 11.7、Python 3.9、PyTorch 2.0.1+cu117。驱动与 CUDA 安装完成后,执行
nvidia-smi 与 nvcc --version 验证版本与可用性。 - 升级基础编译链与多媒体依赖(CentOS 7 强烈建议启用 SCL 获取较新 GCC):
- 安装工具链与依赖
- sudo yum groupinstall -y "Development Tools"
- sudo yum install -y epel-release
- sudo yum install -y cmake3 git wget pciutils htop
- 可选:启用较新 GCC(示例为 devtoolset-9)
- sudo yum install -y centos-release-scl
- sudo yum install -y devtoolset-9
- echo "source /opt/rh/devtoolset-9/enable" >> ~/.bashrc && source ~/.bashrc
- 安装 FFmpeg(含 x264,用于音视频处理)
- 推荐 conda 安装以避免系统库冲突:
conda install -c conda-forge ffmpeg - 说明:GeneFace++ 官方流程在 Ubuntu 上常见搭配为 CUDA 11.7 + PyTorch 2.0.1;在 CentOS 上保持相同版本组合可获得最高兼容性。
二 创建 Conda 环境并安装 Python 依赖
- 创建隔离环境
- conda create -n geneface python=3.9 -y
- conda activate geneface
- 安装 PyTorch 与多媒体基础
- conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.7 -c pytorch -c nvidia
- conda install -c conda-forge ffmpeg
- 安装 PyTorch3D(源码方式,适配 CUDA 11.7)
- 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
- 安装项目其余依赖
- pip install -r docs/prepare_env/requirements.txt -v
- 验证关键点
- python -c "import torch; print(torch.__version__, torch.cuda.is_available())"
- python -c "import pytorch3d; print(pytorch3d.__version__)"
- ffmpeg -version(应能看到 h264 支持)
三 构建扩展与常见报错处理
- 构建项目扩展
- bash docs/prepare_env/install_ext.sh
- 常见报错与修复
- ModuleNotFoundError: No module named 'torch_ngp' / 构建 torch-ngp 失败:确保已安装匹配版本的 CUDA 11.7 与 PyTorch 2.0.1,并使用支持 CUDA 的 PyTorch 构建;必要时清理缓存后重试:
pip cache purge && pip install -r docs/prepare_env/requirements.txt -v。 - 报错含 “rsync”:安装 rsync(CentOS 常见缺失)
- sudo yum install -y rsync
- 训练 torso 时报错(社区已知问题):按项目 issue 说明修改相应文件(如 egs_bases/radn 相关配置或脚本),参考:https://github.com/yerfor/GeneFacePlusPlus/issues/122
- 音频/视频处理报错(缺少系统库):安装 portaudio 与 alsa 开发库
- sudo yum install -y portaudio-devel alsa-lib-devel
- 构建扩展时提示缺少 gcc/编译工具:确认已安装 Development Tools 与(如用 SCL)已
source /opt/rh/devtoolset-9/enable。
四 快速验证与最小数据集流程
- 准备数据与目录
- 设定视频 ID:export VIDEO_ID=s1
- 将原始视频放入:data/raw/videos/${VIDEO_ID}.mp4
- 视频预处理(25 FPS、512×512)
- ffmpeg -i data/raw/videos/${VIDEO_ID}.mp4 -vf fps=25,scale=512:512 -qmin 1 -q:v 1 data/raw/videos/${VIDEO_ID}_512.mp4
- mv data/raw/videos/${VIDEO_ID}.mp4 data/raw/videos/${VIDEO_ID}_to_rm.mp4
- mv data/raw/videos/${VIDEO_ID}_512.mp4 data/raw/videos/${VIDEO_ID}.mp4
- 音频特征与图像帧
- ffmpeg -i data/raw/videos/${VIDEO_ID}.mp4 -f wav -ar 16000 data/processed/videos/${VIDEO_ID}/aud.wav
- 可选加速 HF 下载: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}
- mkdir -p data/processed/videos/${VIDEO_ID}/gt_imgs
- ffmpeg -i data/raw/videos/${VIDEO_ID}.mp4 -vf fps=25,scale=512: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
- 关键点与 3DMM
- python data_gen/utils/process_video/extract_lm2d.py --ds_name=nerf --vid_dir=data/raw/videos/${VIDEO_ID}.mp4
- 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
- python data_gen/runs/binarizer_nerf.py --video_id=${VIDEO_ID}
- 训练(示例)
- 训练 Head: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(如报错按第四节修复):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/MacronSpeech.wav \
--out_name=${VIDEO_ID}_demo.mp4
- 常见问题速查
- 依赖冲突/安装缓慢:优先使用 conda 管理 PyTorch 与 ffmpeg,pip 安装其余依赖;必要时指定镜像源或升级 pip。
- 数据集/权重路径错误:核对 --a2m_ckpt、--head_ckpt、--torso_ckpt 与 --drv_aud 路径是否存在且可读。
- 训练中断或显存不足:降低 batch 相关参数、减少并发进程,或仅训练 head 后再训练 torso。
- 构建扩展失败:确认 CUDA、驱动、PyTorch 版本一致,清理缓存后重试;如仍失败,查看报错末尾的编译命令并补齐缺失的系统库。