news 2026/5/1 5:41:23

FaceFusion Windows 本地 .venv 部署实战教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FaceFusion Windows 本地 .venv 部署实战教程

FaceFusion Windows 本地.venv部署实战教程



目录

FaceFusion Windows 本地 .venv 部署实战教程

前言

一、准备条件

二、创建项目内 .venv

三、安装 PyTorch CUDA 版本

四、验证 PyTorch 是否成功启用 GPU

五、安装 FaceFusion 基础依赖

​编辑

六、强制安装 CUDA 13 线路的 ONNX Runtime

七、安装 TensorRT

八、模型共享,减少磁盘占用

九、配置默认输出目录

十、启动 FaceFusion

十一、命令行测试示例

十二、常见坑

1. 没有激活 .venv

2. install.py 可能覆盖你手动安装的 ONNX Runtime

3. FaceFusion 报 choose an image for the source!

4. 看到 CUDAExecutionProvider 不代表 TensorRT 一定已启用

十三、最终验证清单

结论

参考资料



前言

https://github.com/facefusion/facefusion

这篇文章记录一次可复现的 FaceFusion 本地部署过程,特点是:

  • 系统:Windows 11
  • Python 环境:项目内.venv
  • 不使用 Conda 环境管理
  • GPU 加速:CUDA + ONNX Runtime + TensorRT
  • 适合希望本地长期使用、并且不想依赖 Conda 的场景

本文基于一次实际跑通的环境整理,相关信息如下:

  • FaceFusion 版本:3.6.1
  • Python 版本:3.12.11
  • 显卡:NVIDIA GeForce RTX 3090
  • 显卡驱动:591.86
  • ONNX Runtime:1.25.1
  • PyTorch:2.10.0+cu130
  • 系统 CUDA:13.1
  • cuDNN:9.12.0




一、准备条件

部署前建议先确认以下条件:

  • Windows 机器上已经安装 NVIDIA 显卡驱动
  • nvidia-smi可以正常执行
  • 已安装 Python3.12 (推荐 EPGF 架构)
  • 已安装 Git

可先执行一次:

nvidia-smi

如果这里就报错,先解决显卡驱动问题,再继续后面的步骤。

EPGF 架构的使用提示:

EPGF 架构 环境配置规范(注释 + 代码格式)

# 确认当前 Python 版本 python -V # 切换到指定 Python 版本环境(conda) conda activate py312 # 创建项目本地虚拟环境(--copies 禁用符号链接,用于可能移动/拷贝的项目) python -m venv --copies .venv # 激活本地虚拟环境(Windows PowerShell) .\.venv\Scripts\Activate.ps1 # 退出父级 conda 环境,避免包冲突 conda deactivate # 升级 pip 到最新版,保证依赖安装稳定 python.exe -m pip install --upgrade pip

【EPGF 白皮书】路径治理驱动的多版本 Python 架构—— Windows 环境治理与 AI 教学开发体系




二、创建项目内.venv

# 克隆项目 git clone https://github.com/facefusion/facefusion.git

进入项目根目录后,创建虚拟环境:

python -m venv --copies .venv

这里使用--copies,目的是避免虚拟环境大量使用符号链接。对于可能被移动、拷贝或打包迁移的项目,这个参数更稳。

创建完成后激活环境:

.\.venv\Scripts\Activate.ps1

升级pip

python.exe -m pip install --upgrade pip

建议顺手确认当前解释器确实来自项目内.venv

python -c "import sys; print(sys.executable)"

输出路径应类似:

K:\PythonProjects5\facefusion\.venv\Scripts\python.exe




三、安装 PyTorch CUDA 版本

这一步建议优先单独安装 PyTorch GPU 版,用它来验证显卡、CUDA 和 cuDNN 是否正常。

安装命令:

pip install torch==2.10.0 torchvision==0.25.0 torchaudio==2.10.0 --index-url https://download.pytorch.org/whl/cu130

实际验证通过的版本如下:

  • torch 2.10.0+cu130
  • torchvision 0.25.0
  • torchaudio 2.10.0




四、验证 PyTorch 是否成功启用 GPU

进入 Python:

python

执行下面这段代码:

验证PyTorch深度学习环境Torch和CUDA还有cuDNN是否正确配置的命令

# 验证 import torch # 导入 PyTorch 库 print("PyTorch 版本:", torch.__version__) # 打印 PyTorch 的版本号 # 检查 CUDA 是否可用,并设置设备("cuda:0" 或 "cpu") device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") print("设备:", device) # 打印当前使用的设备 print("CUDA 可用:", torch.cuda.is_available()) # 打印 CUDA 是否可用 print("cuDNN 已启用:", torch.backends.cudnn.enabled) # 打印 cuDNN 是否已启用 # 打印 PyTorch 支持的 CUDA 和 cuDNN 版本 print("支持的 CUDA 版本:", torch.version.cuda) print("cuDNN 版本:", torch.backends.cudnn.version()) # 创建两个随机张量(默认在 CPU 上) x = torch.rand(5, 3) y = torch.rand(5, 3) # 将张量移动到指定设备(CPU 或 GPU) x = x.to(device) y = y.to(device) # 对张量进行逐元素相加 z = x + y # 打印结果 print("张量 z 的值:") print(z) # 输出张量 z 的内容

如果输出中满足这些条件,说明 PyTorch GPU 路线已经通了:

  • 设备: cuda:0
  • CUDA 可用: True
  • cuDNN 已启用: True




五、安装 FaceFusion 基础依赖

FaceFusion 自带了安装脚本。由于本文走的是本地.venv,不是 Conda,所以使用:

python install.py --onnxruntime cuda --skip-conda

这一步会安装项目的大部分 Python 依赖。

需要注意的是:项目默认安装的onnxruntime-gpu版本不一定是最适合当前 CUDA 路线的版本,所以后面还要手动覆盖一次。




六、强制安装 CUDA 13 线路的 ONNX Runtime

如果你的环境和本文一样,是实际跑通了PyTorch cu130,那么建议把onnxruntime-gpu强制切到 CUDA 13 对应源:

pip install --force-reinstall --no-cache-dir onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-13/pypi/simple/

安装完成后验证:

python -c "import onnxruntime as ort; print(ort.__version__); print(ort.get_available_providers())"

本次验证通过的输出是:

1.25.1 ['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider']

如果你至少看到了:

CUDAExecutionProvider

就说明 ONNX Runtime 已经可以使用 CUDA。




七、安装 TensorRT

为了让 FaceFusion 支持更高优先级的推理后端,可以继续安装 TensorRT:

pip install tensorrt --extra-index-url https://pypi.nvidia.com

安装完成后再验证一次:

python -c "from facefusion.execution import get_available_execution_providers; print(get_available_execution_providers())"

本次环境中的输出为:

['cuda', 'tensorrt', 'cpu']

这说明 FaceFusion 这一层已经能识别:

  • cuda
  • tensorrt
  • cpu

到这里,核心 GPU 加速链路就已经通了。




八、模型共享,减少磁盘占用

基于 EPGF 架构的环境迁移复现部署 及 基于符号链接的模型共享解决方案——FaceFusion 3.3.2与3.4.1 模型共享方案:100GB 空间节省实践

如果你在别的盘里已经有一份 FaceFusion 模型目录,可以通过目录符号链接复用,避免重复下载和占用空间。

例如,把:

F:\PythonProjects1\facefusion\.assets\models

共享给当前项目:

New-Item -ItemType SymbolicLink -Path ".assets\models" -Target "F:\PythonProjects1\facefusion\.assets\models"

如果.assets目录还不存在,可以先创建:

New-Item -ItemType Directory -Path ".assets"

验证方式:

Get-Item ".assets\models" | Format-List FullName,LinkType,Target

如果看到LinkType : SymbolicLink,说明链接创建成功。




九、配置默认输出目录

建议在项目根目录下创建一个outputs文件夹,用于统一保存导出结果。

先创建目录:

New-Item -ItemType Directory -Path "outputs"

然后编辑项目根目录下的facefusion.ini,把:

[paths] output_path =

改成:

[paths] output_path = outputs

这样后续默认输出会落到项目内的outputs目录,便于管理。




十、启动 FaceFusion

浏览器模式启动:

python facefusion.py run --open-browser

启动后,上传源图和目标图,执行一次实际处理,能得到正常结果就说明部署成功。




十一、命令行测试示例

如果你想先用命令行验证,而不是直接打开 UI,需要注意face_swapper默认必须同时提供源图目标图

示例:

python facefusion.py headless-run --execution-providers tensorrt cuda -s source.jpg -t target.jpg -o outputs\result.jpg

说明:

  • tensorrt放前面,表示优先尝试 TensorRT
  • cuda放后面,表示 TensorRT 不适用时回退到 CUDA




十二、常见坑

1. 没有激活.venv

如果你没有激活项目内.venv,可能会误用系统或其他环境里的 Python,导致:

  • numpy导入失败
  • onnxruntime版本不一致
  • torchonnxruntime不在同一个环境里

每次操作前建议先确认:

python -c "import sys; print(sys.executable)"



2.install.py可能覆盖你手动安装的 ONNX Runtime

本文为了适配 CUDA 13,执行过一次:

pip install --force-reinstall --no-cache-dir onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-13/pypi/simple/

如果后面再次运行项目原始安装脚本,有可能把它换回默认版本。遇到这种情况,重新执行上面的强制安装命令即可。



3. FaceFusion 报choose an image for the source!

这通常不是 CUDA 问题,而是你运行headless-run时只传了目标图,没有传源图。

正确示例:

python facefusion.py headless-run --execution-providers cuda -s source.jpg -t target.jpg -o outputs\result.jpg



4. 看到CUDAExecutionProvider不代表 TensorRT 一定已启用

要确认 FaceFusion 是否识别到 TensorRT,请执行:

python -c "from facefusion.execution import get_available_execution_providers; print(get_available_execution_providers())"

如果输出中有tensorrt,才表示 FaceFusion 这一层也看到了 TensorRT。




十三、最终验证清单

部署完成后,至少确认以下几点:

  • .venv已激活
  • python -c "import torch; print(torch.cuda.is_available())"输出True
  • python -c "import onnxruntime as ort; print(ort.get_available_providers())"中有CUDAExecutionProvider
  • python -c "from facefusion.execution import get_available_execution_providers; print(get_available_execution_providers())"中有cuda
  • 如需 TensorRT,加上确认输出里有tensorrt
  • python facefusion.py run --open-browser可以正常打开页面并完成一次处理




结论

如果你的目标是在 Windows 上,以本地.venv的方式部署 FaceFusion,而不是依赖 Conda,那么这套流程是可以跑通的:

  • python -m venv --copies .venv创建独立环境
  • 先验证PyTorch + CUDA
  • 再安装 FaceFusion
  • 手动切换到可用的onnxruntime-gpu CUDA 13
  • 补装 TensorRT
  • 最后通过 UI 或命令行做一次实测

部署成功后,这套环境已经具备:

  • PyTorch GPU 加速
  • ONNX Runtime CUDA 加速
  • TensorRT 可选加速
  • 模型目录跨项目共享
  • 项目内统一输出目录

对于需要长期维护、希望项目目录结构清晰、并且不想引入 Conda 的用户,这是一条比较稳的 Windows 本地部署路线。




参考资料

https://docs.facefusion.io/

基于 EPGF 架构的环境迁移复现部署 及 基于符号链接的模型共享解决方案——FaceFusion 3.3.2与3.4.1 模型共享方案:100GB 空间节省实践

FaceFusion 3.4.1 版本:[FACEFUSION.CORE] Copying image failed 大分辨率图像处理失败的解决方案与 Bug 探究

基于 EPGF 架构理念的 FaceFusion 3.4.1 本地 .venv 部署教程(非 Conda 环境部署优化版)

【笔记】Facefusion3.3.2 之 NSFW 检测屏蔽测试

【笔记】FaceFusion 3.3.0 CUDA GPU 环境 Docker 构建与运行全流程记录

怎么使用嵌套虚拟环境实现项目部署之virtualenv嵌套conda绕开安装环境检测实现.venv部署facefusion

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 5:39:33

量子计算在动态平均场理论中的应用与挑战

1. 量子计算与动态平均场理论的交叉融合在强关联电子系统的研究中,动态平均场理论(Dynamical Mean-Field Theory, DMFT)长期扮演着核心角色。这个理论框架的精妙之处在于,它将复杂的多体问题简化为一个量子杂质模型与自洽环境的相…

作者头像 李华
网站建设 2026/5/1 5:39:27

OpenCV图像处理基础:读写与色彩空间转换实战

1. 图像处理基础与OpenCV环境准备OpenCV作为计算机视觉领域的瑞士军刀,其图像读写与色彩空间转换功能是每位开发者必须掌握的核心技能。我在工业质检和医疗影像项目中多次验证过,正确的图像加载和色彩处理能直接影响后续算法的准确率。让我们从环境搭建开…

作者头像 李华
网站建设 2026/5/1 5:38:24

AWS、GCP、Azure带宽费太贵?手把手教你用DigitalOcean搭建高性价比海外应用

AWS、GCP、Azure带宽费太贵?手把手教你用DigitalOcean搭建高性价比海外应用 当你的应用需要面向全球用户提供服务时,云服务带宽成本往往会成为账单上最令人头疼的项目。三大云厂商AWS、GCP和Azure虽然功能全面,但出站流量费用常常让初创团队和中小企业望而却步。以美国东部…

作者头像 李华
网站建设 2026/5/1 5:35:54

GAR框架:定理证明的高效结构化方法与实践

1. GAR框架概述:定理证明的新范式GAR(Goal-Action-Result)框架是近年来自动推理领域出现的一种结构化证明方法,其核心思想是将传统证明过程分解为三个明确阶段。我在形式化验证项目中首次接触这个框架时,发现它能够将C…

作者头像 李华