Deep-Live-Cam inswapper_128 模型加载失败:现象、定位与完整修复指南
【免费下载链接】Deep-Live-Camreal time face swap and one-click video deepfake with only a single image项目地址: https://gitcode.com/GitHub_Trending/de/Deep-Live-Cam
Deep-Live-Cam 是单图驱动的实时换脸工具,而 inswapper_128 这个 ONNX 模型是整条换脸管线的第一环,绝大多数"启动即失败"都卡在这一步。最常见的根因是 models 目录缺文件或 GPU 执行环境缺 cuDNN 组件。典型现象有三类:控制台报CUDAExecutionProvider not found;状态栏提示Model not found in .../models;显示 Loading face swapper model 后进程退出。本文只处理 inswapper_128 的加载失败,不涉及换脸质量与视频编码参数。
先确定你属于哪种
按报错关键词和界面表现对号入座,再跳到对应小节。
| 现象 | 可能根因 | 对应小节 |
|---|---|---|
控制台报CUDAExecutionProvider not found | onnxruntime-gpu 找不到 CUDA 运行库(cuDNN 缺失或版本不匹配) | 切换 CPU 提供器验证 |
状态栏Model not found in .../models | models/ 下两个 inswapper 文件都不存在 | 补全 inswapper_128 模型文件 |
报Failed to load library libcudnn.so | 没走run.py的预加载逻辑,cuDNN 没被 onnxruntime 感知 | 固定执行提供器链 |
Error loading face swapper model: ... | 模型文件损坏或下载截断 | 先跑小节 1 隔离,再重走小节 2 |
按步修复
1. 用 CPU 执行提供器先排除模型文件
原理:执行提供器(Execution Provider)是 ONNX Runtime 的算子后端。CPU 提供器不依赖任何 CUDA 组件,如果文件本身能加载,问题就锁定在 GPU 环境侧,与模型无关。
python run.py --execution-provider cpu预期效果:模型完整加载,状态栏出现Face swapper model loaded successfully。实时帧率会降,但管线跑通。
验证:状态栏提示加载成功、换脸出图。此时不必再怀疑模型文件,回到第 3 节修 CUDA 环境。
2. 补全 inswapper_128 模型文件
原理:启动时 modules/processors/frame/face_swapper.py 的 pre_check 会尝试联网自动下载,网络不通时静默失败,models/ 目录保持为空。
ls models/预期效果:确认目录为空或文件截断(正常大小见 环境核对表)。按 models/instructions.txt 给出的地址把inswapper_128_fp16.onnx(约 275MB)与inswapper_128.onnx(约 550MB)放入models/。
验证:两者存其一即可启动;两个都在时程序按 GPU 情况自动选 FP16 或回退 FP32。重新运行,状态栏不再出现Model not found。
3. CUDA 在前、CPU 兜底的执行提供器链
原理:ONNX Runtime 按modules/globals.py中execution_providers列表的顺序执行,第一个提供器跑不动的算子自动落到下一个,因此 GPU 链路失效时模型依然能加载。
前提是先确认你是用python run.py启动的——该文件内置了 cuDNN 的预加载逻辑(Windows 注册 DLL 目录、Linux 用ctypes预加载 venv 内 wheel 自带的库)。直接python -m modules.core启动会漏掉这一步。无界面场景可在modules/globals.py固定回退链:
execution_providers = ["CUDAExecutionProvider", "CPUExecutionProvider"]预期效果:加载不再失败。CUDA 确实可用时 GPU 推理;不可用时所有算子落到 CPU,加载成功但性能等同纯 CPU。
验证:状态栏显示加载成功;如果控制台出现CUDA graph init failed, using standard session,这不是加载失败,程序已自动回退标准会话,忽略即可。
环境核对表:inswapper 模型文件与环境核对清单
| 检查项 | 期望值 | 不满足时怎么办 |
|---|---|---|
| Python 版本 | 3.11–3.14(README 推荐 3.14) | 用匹配版本重建 venv |
| onnxruntime-gpu 版本 | 1.26.0(requirements.txt 锁定) | pip install -r requirements.txt |
| CUDA 环境 | CUDA 12.x,nvidia-smi可见显卡 | 修驱动,或改用 cpu 提供器 |
| models/ 目录 | 存在且可写(首次启动自动创建) | 换有权限的用户运行,报permission即为此因 |
| inswapper_128_fp16.onnx | 存在,约 275MB | 按 models/instructions.txt 下载 |
| inswapper_128.onnx | 存在,约 550MB(二者存其一即可) | 同上 |
| 磁盘剩余空间 | models/ 所在盘 ≥5GB | 清理磁盘或换盘 |
| onnxruntime 可用提供器 | 列表非空且含目标提供器 | 重装对应 onnxruntime 变体 |
| execution_providers 当前值 | 非空,且每项都在可用列表内 | 重新传--execution-provider参数 |
还是不通?
收集以下三项,再去项目官方 issues 页搜相同报错特征的先例:
- 完整控制台输出(从启动到报错,不要截断)
import onnxruntime; print(onnxruntime.__version__, onnxruntime.get_available_providers())的输出- 你传入的
--execution-provider值或modules/globals.py中execution_providers的当前值
高频报错速查:
| 报错关键词 | 一句话修复 |
|---|---|
CUDAExecutionProvider not found | 重装 onnxruntime-gpu==1.26.0,仍失败则传--execution-provider cpu |
Model not found in .../models | 下载 inswapper_128.onnx 放入 models/ |
Failed to load library libcudnn.so | 改用python run.py启动,不要绕过其预加载逻辑 |
Failed to create directory ... permission | 换有权限的用户运行或给 models/ 授权 |
Error loading face swapper model | 重新下载模型,截断文件需整包重下 |
稳定之后
- GTX 16xx 系显卡跑 FP16 会出 NaN,遇到黑脸或数值异常时删掉 fp16 文件强制走 FP32。
- 怀疑模型损坏时做完整性校验:
python -c "import onnx; onnx.checker.check_model('models/inswapper_128_fp16.onnx')"。 - 批处理大小由 modules/processors/frame/core.py 按帧数与线程数自动推导,没有手工参数;视频处理内存吃紧时调低
--execution-threads间接缩小批。
【免费下载链接】Deep-Live-Camreal time face swap and one-click video deepfake with only a single image项目地址: https://gitcode.com/GitHub_Trending/de/Deep-Live-Cam
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考