FFT NPainting LAMA启动失败怎么办?常见问题解决
1. 为什么WebUI启动失败?从根源说起
当你执行bash start_app.sh后,终端没有出现熟悉的“✓ WebUI已启动”提示,或者浏览器打不开http://服务器IP:7860,这说明服务根本没有跑起来。别急着重装镜像——90%的启动失败问题都出在几个固定环节,而不是模型本身。
FFT NPainting LAMA 是基于 PyTorch + Gradio 构建的轻量级图像修复 WebUI,它不像 Stable Diffusion 那样依赖大量扩展,但对基础环境非常敏感。它的启动流程其实很清晰:加载 Python 环境 → 导入核心库(torch、numpy、opencv-python、lama)→ 初始化模型权重 → 启动 Gradio 服务。任何一个环节卡住,都会导致黑屏、报错或静默退出。
最常被忽略的一点是:它不是“开箱即用”,而是“开箱即验”。科哥的二次开发版本做了精简优化,但也移除了部分容错逻辑。这意味着——你得亲手确认每一步是否真正就绪,而不是只看最后一行输出。
下面我们就按真实排障顺序,带你一层层拨开迷雾。
2. 第一步:确认服务进程是否真的在运行
很多人看到终端没报错,就以为服务起来了。但实际可能只是脚本执行完毕、进程已退出。请先做这个最基础却最关键的检查:
2.1 查看进程是否存在
在服务器终端中执行:
ps aux | grep app.py如果返回结果中没有包含/root/cv_fft_inpainting_lama/app.py的行,说明服务根本没启动成功,或者启动后立即崩溃退出了。
正常情况示例:
root 12345 0.1 12.3 2145678 123456 ? Sl 10:23 0:08 python3 /root/cv_fft_inpainting_lama/app.py
异常情况示例:
root 12345 0.0 0.1 12345 678 ? S 10:23 0:00 grep --color=auto app.py
(这行只是 grep 自己,说明目标进程不存在)
2.2 检查端口是否被占用
即使进程没起来,7860 端口也可能被其他程序占着,导致后续启动失败:
lsof -ti:7860 # 或者(如 lsof 不可用) netstat -tuln | grep :7860如果返回 PID(比如12345),说明端口正被占用。你可以选择:
- 停掉占用进程:
kill -9 12345 - 或修改启动端口(需编辑
app.py中的launch(..., server_port=7860))
2.3 查看完整启动日志
start_app.sh脚本通常会把输出重定向到日志文件,或直接打印在终端。如果你只是快速扫了一眼就关了终端,请重新执行并不要关闭窗口:
cd /root/cv_fft_inpainting_lama bash start_app.sh关键动作:等满30秒,再看最后一屏内容。很多错误发生在模型加载阶段,报错信息会出现在“Starting Gradio”之前。
常见早期报错类型:
ModuleNotFoundError: No module named 'torch'→ PyTorch 未安装或版本不匹配ImportError: libGL.so.1: cannot open shared object file→ 缺少图形库(Linux headless 环境常见)OSError: [Errno 2] No such file or directory: 'models/...→ 模型权重文件缺失或路径错误
这些错误不会显示“启动失败”,而是让脚本直接退出,留下一片寂静。
3. 第二步:验证核心依赖是否完整可用
FFT NPainting LAMA 的依赖看似简单,但几个关键包的版本和编译方式极易出问题。我们逐个验证:
3.1 Python 环境与 PyTorch 兼容性
该镜像默认使用 Python 3.9 或 3.10。先确认版本:
python3 --version再验证 PyTorch 是否能正常导入并识别 GPU(如有):
python3 -c "import torch; print(f'PyTorch {torch.__version__}'); print(f'CUDA available: {torch.cuda.is_available()}'); print(f'Device count: {torch.cuda.device_count()}')"正常输出应类似:
PyTorch 2.1.0+cu118 CUDA available: True Device count: 1常见异常及修复:
ImportError: libcudnn.so.8: cannot open shared object file→ CUDA 版本与 PyTorch 不匹配。请根据镜像文档指定的 PyTorch 版本,安装对应 CUDA Toolkit。CUDA available: False→ 却有 GPU?检查nvidia-smi是否可见,驱动是否 ≥525;若无 GPU,可强制使用 CPU 模式(见 4.2 节)。
3.2 OpenCV 与 PIL 的图像解码能力
很多“上传图片失败”、“预览空白”问题,根源其实是 OpenCV 无法读取 JPG/PNG。验证方式:
python3 -c "import cv2, numpy as np; img = cv2.imread('/root/cv_fft_inpainting_lama/test.jpg'); print('OpenCV read OK:', img is not None)" python3 -c "from PIL import Image; img = Image.open('/root/cv_fft_inpainting_lama/test.jpg'); print('PIL open OK:', img is not None)"注意:镜像中自带的test.jpg可能不存在。如无,可临时创建一个测试图:
convert -size 100x100 canvas:white /root/cv_fft_inpainting_lama/test.jpg若任一命令报错,说明图像库损坏。修复命令(推荐重装):
pip uninstall -y opencv-python pillow pip install opencv-python-headless==4.8.1.78 pillow==9.5.0为什么用
headless?因为 WebUI 不需要 GUI 渲染,headless版本更小、更稳定,且避免libGL报错。
3.3 Lama 模型文件完整性
LAMA 的核心是big-lama模型权重。检查路径是否存在且可读:
ls -lh /root/cv_fft_inpainting_lama/models/你应该看到类似:
-rw-r--r-- 1 root root 1.2G Jan 5 10:23 big-lama.pt drwxr-xr-x 2 root root 4.0K Jan 5 10:23 checkpoints/如果big-lama.pt文件大小远小于 1.1G(如只有几 KB),说明下载中断或校验失败。手动重新下载:
cd /root/cv_fft_inpainting_lama/models rm -f big-lama.pt wget https://huggingface.co/advimman/lama/resolve/main/big-lama.pt注意:Hugging Face 直链可能因网络波动失败。如遇超时,可尝试用
curl -L -o big-lama.pt <URL>或更换国内镜像源(需提前配置)。
4. 第三步:绕过障碍的实用启动方案
当标准流程走不通,别硬扛。以下三个方法,覆盖 95% 的残存场景:
4.1 方案一:跳过 GPU,强制 CPU 模式启动(最稳)
如果你没有 GPU,或 GPU 驱动/版本不兼容,这是最快见效的方案。编辑启动脚本:
nano /root/cv_fft_inpainting_lama/start_app.sh找到类似这一行(通常在python3 app.py前后):
python3 app.py改为:
CUDA_VISIBLE_DEVICES=-1 python3 app.py保存退出,再运行:
bash start_app.sh效果:完全规避 CUDA 相关所有报错,启动速度略慢(首次推理约 20 秒),但 100% 可用。适合调试、测试、无 GPU 服务器。
4.2 方案二:启用详细日志,定位静默崩溃
有时程序崩溃得太快,连错误都没来得及打印。给启动命令加-v参数(verbose):
cd /root/cv_fft_inpainting_lama python3 -v app.py 2>&1 | tee debug.log等待 30 秒,然后查看日志末尾:
tail -n 50 debug.log重点关注ImportError、FileNotFoundError、RuntimeError开头的行。这些就是真正的“凶手”。
4.3 方案三:重置 Gradio 缓存,解决 UI 加载白屏
Gradio 会缓存前端资源。如果镜像更新过或网络异常,缓存可能损坏,导致页面空白(Network 标签页显示 404)。清除它:
rm -rf ~/.cache/gradio然后重启服务。Gradio 会在下次启动时自动重建缓存。
5. 第四步:高频具体报错与一键修复命令
我们整理了用户反馈最多的 5 类报错,附带精准修复命令。复制粘贴即可:
| 报错关键词 | 根本原因 | 一键修复命令 |
|---|---|---|
libGL.so.1: cannot open shared object file | 缺少 OpenGL 库(Linux headless 环境) | apt-get update && apt-get install -y libglib2.0-0 libsm6 libxext6 libxrender-dev libglib2.0-dev |
OSError: [Errno 12] Cannot allocate memory | 内存不足(尤其大图修复时) | swapoff -a && fallocate -l 4G /swapfile && mkswap /swapfile && swapon /swapfile |
AttributeError: module 'cv2' has no attribute 'dnn' | OpenCV 安装不完整 | pip uninstall -y opencv-python && pip install opencv-python-headless==4.8.1.78 |
ValueError: too many values to unpack (expected 2) | Lama 模型版本与代码不匹配 | cd /root/cv_fft_inpainting_lama && git pull && pip install -e . |
ConnectionRefusedError: [Errno 111] Connection refused | 服务未启动或端口错 | lsof -ti:7860 | xargs kill -9 2>/dev/null; bash start_app.sh |
提示:执行修复命令后,务必重新运行
bash start_app.sh并观察完整输出,不要只看第一行。
6. 启动成功后的必做验证
服务显示“✓ WebUI已启动”不等于万事大吉。请完成这三步验证,确保功能完整:
6.1 浏览器访问验证
打开http://你的服务器IP:7860,观察:
- 页面是否完整加载(有“ 图像修复系统”标题、左右分栏)
- 左侧上传区是否可拖拽/点击
- 右上角是否显示“webUI二次开发 by 科哥”
如果页面空白或报 500 错误,回到第 4 步启用详细日志。
6.2 本地测试图上传验证
镜像中自带一张测试图(如存在):
ls /root/cv_fft_inpainting_lama/test.jpg若存在,在 WebUI 中上传它,用画笔涂一小块,点“ 开始修复”。首次推理会稍慢(10-30秒),耐心等待右侧出现新图。
6.3 输出目录写入权限验证
检查/root/cv_fft_inpainting_lama/outputs/是否可写:
touch /root/cv_fft_inpainting_lama/outputs/test.txt 2>/dev/null && echo " 写入正常" || echo " 权限不足"若失败,修复权限:
chmod -R 755 /root/cv_fft_inpainting_lama/outputs/7. 总结:建立你的排障 checklist
启动失败不是玄学,而是一套可复现、可验证的工程问题。建议你把下面这个 checklist 打印出来,每次遇到问题,按序号逐项打钩:
- □ 进程是否存在?
ps aux \| grep app.py - □ 端口是否空闲?
lsof -ti:7860 - □ PyTorch 是否可用?
python3 -c "import torch; print(torch.cuda.is_available())" - □ 模型文件是否完整?
ls -lh models/big-lama.pt - □ 图像库是否正常?
python3 -c "import cv2; print(cv2.__version__)" - □ 尝试 CPU 模式?
CUDA_VISIBLE_DEVICES=-1 python3 app.py - □ 清除 Gradio 缓存?
rm -rf ~/.cache/gradio - □ 查看完整日志?
python3 app.py 2>&1 \| tail -n 100
只要坚持按这个流程走,99% 的启动问题都能在 10 分钟内定位并解决。记住:技术问题的本质,是排除法的艺术。每一次“排除”,都是向成功靠近一步。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。