Deep-Live-Cam inswapper_128 ONNX 模型加载失败:3 种报错的排查,一次搞定
【免费下载链接】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 模型,加载环节卡住时,问题九成集中在三处。你大概率也卡在这三处,咱们一个个过。本文只解决 ONNX 模型加载失败,不谈换脸效果和编码参数。
🔍 症状分诊
先对号入座,三种形态:CUDAExecutionProvider not found、Model not found in .../models、Loading face swapper model之后进程直接退出。
逐层排障
切到 CPU 执行提供器,先验证模型文件
现象:控制台抛CUDAExecutionProvider not found,会话建不起来,模型加载直接失败。
根因:几乎都是 onnxruntime-gpu 缺 CUDA 运行库组件(cuDNN 没装、版本对不上),modules/processors/frame/face_swapper.py 创建会话时拿到的提供器根本跑不动;模型文件本身通常是无辜的。
操作:不动任何文件,换一个确定可用的提供器绕开会话创建:
python run.py --execution-provider cpu验证:状态栏出现Face swapper model loaded successfully.,实时帧率会降但管线跑通。CPU 能加载而 CUDA 不能,问题就锁定到环境侧,之后单独补 cuDNN,不必怀疑模型文件。
补齐 models 目录下的 inswapper 文件
现象:状态栏提示Model not found in .../models。
根因:pre_start检查要求inswapper_128_fp16.onnx(约 275MB)与inswapper_128.onnx(约 550MB)至少存在其一;pre_check虽然会经 modules/model_downloader.py 尝试自动下载,但网络不通时下载失败,目录保持为空。
操作:先看目录现状:
ls models/确认为空或文件截断后,按 models/instructions.txt 给出的地址下载对应文件放入models/。
验证:重启后检查通过;两个文件都在时,get_face_swapper会在 torch 能感知 CUDA 且 fp16 文件存在时自动选 FP16,否则回退 FP32。
锁定执行提供器回退链顺序
现象:状态栏停在Loading face swapper model ...后进程退出,或者报Failed to load library libcudnn.so、Error loading face swapper model。
根因:Linux 下 cuDNN 的预加载逻辑内置在run.py里(用 ctypes 预载 venv 内的 nvidia 运行库),绕过它直接python -m modules.core启动,onnxruntime 就感知不到 cuDNN。
操作:坚持用python run.py启动,别绕过其预加载逻辑;无界面场景还可以直接固定回退链:
execution_providers = ["CUDAExecutionProvider", "CPUExecutionProvider"]验证:ONNX Runtime 按列表顺序执行,第一个提供器跑不动的算子自动落到下一个;CUDA 确实不可用时所有子图在 CPU 执行,加载不再失败,性能等同纯 CPU。
🧰 跑之前花两分钟确认的环境基线
Python 版本:最低 3.11(onnxruntime 已放弃 3.10),README 推荐 3.14。多版本共存时确认python指向正确解释器,不匹配就重建 venv。
onnxruntime 版本:requirements.txt 在非 macOS 平台锁定onnxruntime-gpu==1.26.0,直接pip install -r requirements.txt对齐,别手动装别的版本。
CUDA 环境:nvidia-smi能看到显卡、CUDA 12.x;没有就先走 cpu 提供器,别急着修驱动。
models 目录权限:首次启动会自动创建,但运行用户对所在分区必须可写,否则pre_check直接报Failed to create directory ... permission错误。
inswapper 文件:两个文件至少存其一,完整大小分别约 275MB 与 550MB;差几个字节基本就是下载截断。
磁盘剩余空间:模型加处理时的临时帧,给models/所在分区留 5GB 以上。
可用提供器列表:onnxruntime.get_available_providers()返回值非空,且你想用的提供器在列表里;execution_providers里每一项都得是列表内成员,对不上就重传--execution-provider参数。
⚙️ 加载稳定之后的调优旋钮
- FP16/FP32 自动选择:
get_face_swapper在 torch 能感知 CUDA 且 fp16 文件存在时选 FP16,否则回退 FP32;16xx 系显卡 FP16 会出 NaN,老卡留意型号。 - 批处理大小:
modules/processors/frame/core.py按帧数与线程数自动推导 batch_size,没有手工参数;内存吃紧时调低--execution-threads与--max-memory,间接缩小批次。 - 日志级别:
modules.globals.log_level透传给 ffmpeg,默认 error;切 debug 后处理帧时输出变啰嗦,排查完记得改回去。 - 模型完整性校验:怀疑文件损坏时,直接跑
onnx.checker.check_model(onnx.load("models/inswapper_128_fp16.onnx")),无异常输出即通过,onnx 1.22.0 已随 requirements 装好。
仍然卡住?
把完整控制台输出和onnxruntime.get_available_providers()的返回值一起收集,去项目官方 issues 页找相同报错特征的先例。顺带说明:CUDA graph init failed, using standard session不是加载失败,它只表示 CUDA 图不可用、已自动回退标准会话,忽略即可。
【免费下载链接】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),仅供参考