想在本地部署一个 AI 视频换脸系统,用一张照片就能替换视频主角?这篇文章手把手教你跑通 Roop 项目,含 GUI 与命令行双模式、环境配置避坑说明、常见报错修复与合规提议。
本项目仅供学习 AI 图像处理与本地部署流程,适用于创意视频、数字人展示、角色预演等合规场景。
禁止将系统用于任何侵犯他人肖像权、传播虚假内容等违法违规用途。请勿用于未授权的视频上传场景,合成内容需明确标注来源。
Roop 是一个基于 Python 的 AI 视频换脸工具,支持图形界面与命令行操作。你只需:
✅ 应用场景包括:
git clone git@github.com:s0md3v/roop.git
cd roop
conda create -n roop python=3.9 -y
conda activate roop
# 安装 PyTorch GPU 版本(根据你电脑的 CUDA 版本修改)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# 安装主要依赖
pip install numpy==1.24.3 opencv-python==4.8.0.74 onnx==1.14.0
pip install insightface==0.7.3 pillow tqdm psutil gfpgan
pip install customtkinter tkinterdnd2
# 合规检测模块(可选)
pip install tensorflow==2.10.1 opennsfw2 albumentations==1.3.1
pip install protobuf==3.20.3 --force-reinstall
Roop 使用 FFmpeg 提取视频帧和合成输出视频。
推荐安装方式(Windows):
winget install "FFmpeg (Essentials Build)"
验证是否成功:
ffmpeg -version
python run.py
使用流程:
python run.py -s face.jpg -t input.mp4 -o output/result.mp4 --keep-fps
常用参数说明:

部分正常素材会被 opennsfw2 误判为“不合规”,导致中止流程。你可以手动绕过:
def predict_video(target_path):
print("✅ 已跳过合规检测。")
return True
if not predict_video(roop.globals.target_path):
update_status('检测未通过,流程中止。')
destroy()
⚠️ 请确认你的视频素材真实合规后再执行跳过操作。
roop/
├── run.py # 主启动入口
├── roop/
│ ├── core.py # 流程控制逻辑
│ ├── predictor.py # 合规检测模块
│ ├── ui.py # 界面逻辑

你目前已经可以: