CentOS系统GeneFace++安装技巧

AI技术
小华
2025-12-26

CentOS系统下部署GeneFace++的实用技巧
一 基础环境准备

  • 驱动与CUDA:优先安装与项目匹配的 NVIDIA 驱动 ≥ 515CUDA 11.7 Toolkit(仅安装 Toolkit,不覆盖驱动),并将路径加入环境变量:/usr/local/cuda-11.7/bin 与 /usr/local/cuda-11.7/lib64;验证命令:nvidia-smi、nvcc --version。若系统自带驱动较新,可仅配置 CUDA 11.7 的 Toolkit 路径使用。
  • 编译与工具链:安装开发工具与构建链(git、cmake、gcc/g++ 9+ 等)。CentOS 7 建议启用 devtoolset-9/10 获取新版 GCC;示例:sudo yum install -y centos-release-scl-rh && sudo yum install -y devtoolset-9 && echo "source /opt/rh/devtoolset-9/enable" >> ~/.bashrc。
  • 多媒体与音频:安装带 libx264 的 FFmpeg(conda 安装更省心),以及音频依赖(portaudio、alsa)。
  • Python 环境:conda 创建 Python 3.9 环境,便于隔离依赖。

以上要点与版本建议均来自项目官方安装指引与多篇部署实践,强调使用 CUDA 11.7 + PyTorch 2.0.1 的组合以避免后续组件不兼容。
二 一键环境脚本与关键依赖

  • 建议按下列顺序执行(可直接做成 install_centos.sh 分段执行),每一步失败都先定位日志再继续:
# 0) 进入项目根目录
cd GeneFacePlusPlus
# 1) 创建环境
conda create -n geneface python=3.9 -y
conda activate geneface
# 2) 多媒体与基础
conda install -c conda-forge ffmpeg -y
# 3) 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
# 4) PyTorch3D(从源码构建,耗时较长)
pip install "git+https://github.com/facebookresearch/pytorch3d.git@stable"
# 5) MMCV(openmim)
pip install cython openmim==0.3.9
mim install mmcv==2.1.0
# 6) 系统音频依赖(CentOS 7/8 常见为 alsa-lib-devel、portaudio-devel)
sudo yum install -y alsa-lib-devel portaudio-devel
# 7) 项目其余依赖
pip install -r docs/prepare_env/requirements.txt -v
# 8) 可选:构建外部扩展(若脚本存在)
bash docs/prepare_env/install_ext.sh || echo "install_ext.sh not found, skip."
# 9) 验证关键组件
python -c "import torch;print('torch:',torch.__version__,torch.cuda.is_available())"
python -c "import pytorch3d;print('pytorch3d ok')"
ffmpeg -version | head -n1
  • 版本要点:保持 PyTorch 2.0.1 + cu117PyTorch3D 用源码安装更稳;MMCV 2.1.x 通过 openmim 安装;FFmpeg 建议用 conda-forge 版本以确保 libx264 可用。

三 数据准备与常见坑处理

  • 视频预处理:将原始视频统一到 512×512、25 FPS,并确保每帧都有清晰人脸;示例:
VIDEO_ID=s1
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
  • 音频与特征:提取 16 kHz WAV,再生成 Mel、F0、HuBERT 等特征;HuggingFace 模型下载慢可设置镜像:
ffmpeg -i data/raw/videos/${VIDEO_ID}.mp4 -f wav -ar 16000 data/processed/videos/${VIDEO_ID}/aud.wav
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}
  • 图像与标注:抽帧、分割、2D 关键点等;必要时安装 rsync(部分安装脚本会用到):
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
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}
  • 常见坑与修复:
  • 训练 torso 时报错(如 RADNeRFTorsowithSR 加载问题),可按项目 issue 的修改方案调整模型定义或权重映射。
  • 运行较长音频被系统 Kill,多为内存/显存不足,建议缩短音频或减小 batch,并确保 swap/显存充足。
  • 数据集准备阶段报 “bg.jpg not found”,检查分割与背景提取是否成功,路径是否与配置一致。
  • 若遇到构建外部扩展失败,确认 gcc 版本、CUDA 路径与第三方库(ffmpeg、portaudio)已就绪。

四 训练与推理的最小可用命令

  • 训练顺序建议先 headtorso,并使用已训练 head 的权重初始化 torso:
# 训练 HeadNeRF
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
# 训练 TorsoNeRF(依赖 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/demo.wav \
--out_name=${VIDEO_ID}_demo.mp4
  • 训练素材建议:使用 3–5 分钟512×512、人物正面、背景简洁的视频,能显著提升唇形对齐与整体真实度。
亿速云提供售前/售后服务

售前业务咨询

售后技术保障

400-100-2938

7*24小时售后电话

官方微信小程序