refacer
一键换脸 Deepfake 工具:上传任意视频+一张人脸照片,即可生成换脸视频,无需训练、无需配置
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
一键换脸 Deepfake 工具:上传任意视频+一张人脸照片,即可生成换脸视频,无需训练、无需配置
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1: Refacer 项目 Logo

想象这样一个场景:你找到了一段十几年前的家庭聚会视频,画面里爷爷奶奶正抱着年幼的你,笑得合不拢嘴。只是岁月流转,视频里的人已经不再身边——你多想让他们"穿越"到今天的照片里,和现在的你一起拍张合影。
或者,作为一个独立创作者,你想给一段解说视频配上生动的画面素材,却发现合适的素材总是缺那么一张"脸"。
在 Refacer 出现之前,普通人想完成这样的任务,需要掌握复杂的 AI 模型训练流程、准备大量目标人物的高清照片、花费数小时甚至数天的 GPU 算力。技术门槛和版权风险让这个领域几乎是专业工作室的专属领地。
Refacer 打破了这个壁垒——只需一张目标人脸照片,一段任意视频,点击一次"Reface",一切就完成了。
Refacer 由独立开发者 Xavier Vinaixa(xaviviro) 创建,项目托管于 GitHub,托管于 GitHub,采用 MIT 开源许可证。截至分析时已获得 581 颗星和 141 个 Fork,被标记为 AI、deepfake、face-swap、onnx、onnxruntime 等技术标签。
项目灵感来源于另一个知名开源换脸工具 Roop,核心技术则基于 InsightFace 框架——由 deepinsight 团队维护的人脸分析算法库,提供了业界领先的人脸检测(SCRFD)和人脸识别(ArcFace)能力。
Refacer 的设计哲学是零训练、零配置:用户不需要收集数据集,不需要微调模型权重,只需要准备好一张"替换源"照片和一段视频,即可获得换脸结果。
Refacer 的换脸流程分为三个阶段,涉及三个不同的 ONNX 模型协同工作:
第一阶段:人脸检测(SCRFD)
SCRFD 是 InsightFace 团队提出的超轻量人脸检测器(det_10g.onnx),在 CPU 上也能实现实时检测。模型以 640×640 的输入分辨率扫描视频的每一帧,输出人脸边界框(Bounding Box)和关键点(Landmarks,包含双眼、鼻尖、嘴角五个点)。Refacer 在 refacer.py 的 __get_faces() 方法中调用 SCRFD,对每一帧最多检测 0(即全部)或 1 个人脸。
第二阶段:人脸识别(ArcFace R50)
w600k_r50.onnx 是基于 ResNet50 主干的 ArcFace 模型,将每张检测到的人脸编码为一个 512 维的特征向量(embedding)。这个向量具有身份不变性——同一个人在不同角度、光照、表情下的照片会映射到特征空间中相近的位置,而不同人的向量则相距甚远。Refacer 通过 ArcFaceONNX 类封装这一能力,用于后续的"人脸匹配"步骤。
第三阶段:人脸替换(INSwapper)
inswapper_128.onnx 是整个流程的核心——由 InsightFace 官方提供的预训练换脸模型。INSwapper 接受三个输入:原视频帧、检测到的人脸、目标替换人脸,输出融合后的图像。模型基于 128×128 的面部 UV 映射实现,换脸时不仅替换五官,还会根据目标人脸的肤色、光照条件进行自适应调整,使结果更加自然。INSwapper 类直接复用自 InsightFace 的 model zoo,Refacer 在 recognition/ 目录下保留了原始识别模块的代码以确保兼容性。
当视频中有多个人脸时,Refacer 通过余弦相似度(Cosine Similarity)判断当前帧中的人脸是否与预设的"替换源"属于同一人。用户可以设置 0~1 之间的阈值(Threshold):阈值越低,匹配越宽松(可能误替换);阈值越高,匹配越严格(可能漏替换)。这一机制使得 Refacer 可以同时处理"我要把 A 的脸换成张三,把 B 的脸换成李四"这种多目标场景。
Refacer 通过 RefacerMode 枚举支持四种推理后端:
| 模式 | 执行Provider | 适用硬件 | 性能 |
|---|---|---|---|
| CPU | CPUExecutionProvider | 所有平台 | 慢(~1-2帧/秒) |
| CUDA | CUDAExecutionProvider | NVIDIA GPU | 快 |
| CoreML | CoreMLExecutionProvider | Apple Silicon Mac | 中等 |
| TensorRT | TensorrtExecutionProvider | NVIDIA GPU (Colab优化) | 最快 |
推理模式通过 onnxruntime 的 Provider 机制自动选择:代码首先调用 rt.get_available_providers() 探测可用硬件,然后根据检测结果和命令行参数(--force_cpu、--colab_performance)决定最终使用的 Provider。
视频帧通过 OpenCV (cv2.VideoCapture) 逐帧读取,以 1000 帧为单位批量处理(reface_group 方法),每批使用 ThreadPoolExecutor 并行执行推理,充分利用多核 CPU 或 CUDA 流并行能力。处理完成后,通过 ffmpeg-python 重新封装为 MP4,并使用原始视频的音轨(通过 ffmpeg.probe 探测)合并到输出文件中,确保最终视频有声音。
Refacer 提供了一个基于 Gradio 3.33.1 的 Web 界面(app.py),默认在 http://127.0.0.1:7860 启动。
界面的核心组件包括:一个视频上传/预览区域、一组最多 5 个"Face #" 标签页(每个标签包含两张图片上传控件——"Face to replace"和"Destination face"),以及一个全局阈值滑块。点击"Reface"按钮后,Gradio 调用 run() 函数解析所有输入,构建 faces 列表,触发 Refacer.reface() 主流程,最终将结果视频回填到右侧预览区域。
此外,app.py 还集成了 ngrok 隧道服务,用户只需传入 ngrok authtoken(通过 --ngrok 参数),即可将本地 7860 端口暴露到公网,实现远程访问——这对没有公网 IP 的个人用户非常实用。
项目提供三套依赖文件:requirements.txt(CPU版)、requirements-GPU.txt(NVIDIA GPU版)、requirements-COREML.txt(Apple Silicon版)。核心依赖包括 insightface==0.7.3、onnxruntime 系列、opencv-python、gradio==3.33.1。安装后需手动下载 inswapper_128.onnx 模型(来自 HuggingFace 或 Google Drive),并确保系统中已安装 ffmpeg。
项目在 docker/Dockerfile.nvidia 中提供了 NVIDIA GPU 容器化方案,基于 nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04 镜像。Dockerfile 中预装了 CUDA Toolkit、TensorRT,并自动从 GitHub 克隆 Refacer 仓库和安装 GPU 版依赖。不过,inswapper_128.onnx 模型需要用户通过 Google Drive / Mega / OneDrive / CivitAI 等外部渠道手动下载后挂载到容器中(docker/run.sh 中的 -v $(pwd)/..:/refacer 挂载点)。模型文件较大(通常约 170MB),这些外部网盘链接在国内访问可能受限,是部署过程中的主要障碍。
项目还提供了官方 Colab notebook,用户可直接在浏览器中运行,跳过本地环境配置的麻烦。Colab 模式使用 --colab_performance 启用 TensorRT 加速,是性价比最高的体验方式。
| 层级 | 技术选型 |
|---|---|
| 前端界面 | Gradio 3.33.1(Web UI)+ ngrok(内网穿透) |
| 核心推理 | ONNX Runtime(跨平台推理引擎)+ InsightFace 0.7.3 |
| AI 模型 | SCRFD(人脸检测)、ArcFace R50(人脸识别)、INSwapper 128(换脸) |
| 视频处理 | OpenCV(帧提取/写入)+ ffmpeg-python(音频合并)+ ffmpeg(编码) |
| 并发 | ThreadPoolExecutor(多线程)+ multiprocessing(CPU 线程控制) |
| 部署 | Docker + NVIDIA CUDA 11.8 + TensorRT |
| 语言 | Python 3.10 + TypeScript(项目元数据) |
README 中用了大量篇幅强调免责条款,明确指出软件仅供教育和研究目的,严禁用于身份盗窃、侵犯隐私、诽谤等恶意行为。这是所有 deepfake 工具的共同困境——技术本身是中性的,但应用场景决定了其社会影响。
作者在代码层面埋入了防护机制(README 提到"integrated protective mechanism that prevents it from working with illegal or similar types of media"),但具体实现未公开。这提示我们,开源换脸工具普遍存在被滥用的风险,尽管作者有所防范,但技术层面无法完全阻止恶意使用。
最大的部署痛点是 ONNX 模型需要手动下载。HuggingFace 的 direct link 在部分网络环境下不可达,而 Google Drive / Mega / OneDrive 等替代方案在国内均有不同程度的访问限制。这使得"一键部署"的承诺打了折扣。
换脸质量高度依赖输入图片的质量(分辨率、光照、角度),低质量输入容易产生明显的伪影或不自然的融合边界。此外,由于依赖 InsightFace 的预训练模型,针对亚洲面孔的换脸效果通常优于欧美面孔(因为训练数据分布的偏差)。
Refacer 的出现代表了 deepfake 工具民主化的一个重要节点。在它之前,主流换脸工具(如 DeepFaceLab、Roop)虽然也已开源,但配置复杂度较高。Refacer 通过 Gradio 界面和"一键换脸"的设计,将门槛降到了最低——一个不懂 Python 的人也可以在 10 分钟内完成一次换脸。
从技术演进趋势看,ONNX 作为跨平台推理中间格式正在成为 AI 应用的事实标准。Refacer 同时支持 CPU / CUDA / CoreML / TensorRT 四种后端,这种架构设计使得同一套模型权重可以在不同硬件上获得最优性能,体现了 AI 部署的"一次训练,多处运行"理念。
然而,deepfake 技术的普及也带来了前所未有的信息可信度危机。随着工具越来越傻瓜化,如何建立有效的技术溯源和内容鉴别机制,将成为整个行业必须面对的严肃课题。
报告生成时间:2026-06-21 | 数据来源:GitHub API + 源码分析 | 报告字数:约 3800 字