fft npainting lama在线演示站点搭建:公网访问全流程
1. 引言
1.1 项目背景与应用场景
在图像处理领域,图像修复技术被广泛应用于去除水印、移除不需要的物体、修复老照片瑕疵等场景。近年来,基于深度学习的图像修复模型如LaMa(Large Mask Inpainting)凭借其对大范围缺失区域的优秀重建能力,成为主流解决方案之一。
本文介绍如何基于fft_npainting_lama项目构建一个可公网访问的图像修复 WebUI 系统,并实现完整的二次开发部署流程。该系统由开发者“科哥”进行本地化优化和界面增强,支持画笔标注、实时预览、自动保存等功能,适用于个人使用或轻量级服务部署。
1.2 核心功能概述
本系统主要特性包括:
- 基于 LaMa 模型的高质量图像修复
- 可视化 WebUI 界面,支持拖拽上传与画笔标注
- 支持 PNG/JPG/WEBP 等常见格式
- 自动边缘羽化与颜色保真优化
- 输出路径管理与时间戳命名机制
- 易于扩展的模块化结构,便于二次开发
通过本文,你将掌握从环境配置到公网暴露的完整部署流程,最终实现一个可通过外网访问的图像修复服务。
2. 环境准备与本地部署
2.1 系统要求
建议运行环境如下:
| 组件 | 推荐配置 |
|---|---|
| 操作系统 | Ubuntu 20.04 / 22.04 LTS |
| CPU | Intel i5 或以上(推荐) |
| GPU | NVIDIA GPU(CUDA 支持),显存 ≥ 6GB(非必须但大幅提升性能) |
| 内存 | ≥ 8GB |
| 存储空间 | ≥ 20GB(含模型缓存) |
注意:若无 GPU,也可使用 CPU 推理,但处理速度较慢(尤其大图)。
2.2 依赖安装
首先确保已安装以下基础工具:
sudo apt update sudo apt install -y git python3 python3-pip python3-venv nginx安装 CUDA 和 PyTorch(如有 GPU):
# 安装 PyTorch with CUDA support (example for 11.8) pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu1182.3 克隆项目并初始化
cd /root git clone https://github.com/kege/cv_fft_inpainting_lama.git cd cv_fft_inpainting_lama创建虚拟环境并安装 Python 依赖:
python3 -m venv venv source venv/bin/activate pip install -r requirements.txt2.4 启动本地 WebUI 服务
执行启动脚本:
bash start_app.sh成功后输出如下提示:
===================================== ✓ WebUI已启动 访问地址: http://0.0.0.0:7860 本地访问: http://127.0.0.1:7860 按 Ctrl+C 停止服务 =====================================此时可在本地浏览器访问http://127.0.0.1:7860查看界面是否正常加载。
3. WebUI 使用详解
3.1 主界面布局说明
系统采用双栏设计,左侧为编辑区,右侧为结果展示区:
┌─────────────────────────────────────────────────────┐ │ 🎨 图像修复系统 │ │ webUI二次开发 by 科哥 | 微信:312088415 │ ├──────────────────────┬──────────────────────────────┤ │ │ │ │ 🎨 图像编辑区 │ 📷 修复结果 │ │ │ │ │ [图像上传/编辑] │ [修复后图像显示] │ │ │ │ │ [🚀 开始修复] │ 📊 处理状态 │ │ [🔄 清除] │ [状态信息显示] │ └──────────────────────┴──────────────────────────────┘功能分区:
- 图像上传区:支持点击上传、拖拽上传、剪贴板粘贴(Ctrl+V)
- 画笔工具栏:用于绘制需要修复的 mask 区域
- 操作按钮:开始修复、清除画布
- 状态显示区:实时反馈处理进度与输出路径
3.2 图像修复操作流程
步骤一:上传原始图像
支持方式: - 点击上传按钮选择文件 - 将图片直接拖入上传区域 - 复制图像后在页面中按下Ctrl+V粘贴
支持格式:PNG,JPG,JPEG,WEBP
推荐使用 PNG 格式以避免压缩损失影响修复质量。
步骤二:标注待修复区域
使用画笔工具在图像上涂抹白色区域,表示希望被修复的部分。
关键参数: -画笔大小滑块:调节笔触直径(建议小区域用小笔,大面积用大笔) -橡皮擦工具:修正误标区域 -撤销功能:部分浏览器支持Ctrl+Z
提示:标注应完全覆盖目标物体或水印,略超出边界有助于边缘融合。
步骤三:执行图像修复
点击"🚀 开始修复"按钮,系统将执行以下流程:
- 验证输入图像与 mask 是否有效
- 加载 LaMa 模型(首次运行会自动下载)
- 执行推理生成修复图像
- 显示结果并保存至本地
处理时间参考: - 小图(<500px):约 5 秒 - 中图(500–1500px):10–20 秒 - 大图(>1500px):20–60 秒(CPU 更久)
步骤四:查看与下载结果
修复完成后,右侧将显示修复后的图像。系统自动保存文件至:
/root/cv_fft_inpainting_lama/outputs/outputs_YYYYMMDDHHMMSS.png可通过 FTP/SFTP 工具下载,或配置 Nginx 进行静态资源代理。
4. 公网访问配置
4.1 端口开放与防火墙设置
默认服务监听0.0.0.0:7860,需确保服务器防火墙允许外部访问此端口。
开放 7860 端口(以 ufw 为例):
sudo ufw allow 7860/tcp sudo ufw reload云服务商安全组配置
登录云平台控制台(如阿里云、腾讯云、AWS),在实例安全组中添加入站规则:
- 协议类型:TCP
- 端口范围:7860
- 源 IP:0.0.0.0/0(或限制特定 IP)
4.2 使用 Nginx 反向代理(推荐)
为提升安全性与稳定性,建议使用 Nginx 做反向代理,并启用 HTTPS。
安装 Nginx 并配置站点
sudo nano /etc/nginx/sites-available/inpainting写入以下配置:
server { listen 80; server_name your-domain.com; # 替换为你的域名或公网IP location / { proxy_pass http://127.0.0.1:7860; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_buffering off; proxy_request_buffering off; } }启用站点:
sudo ln -s /etc/nginx/sites-available/inpainting /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx(可选)配置 SSL 证书
使用 Let's Encrypt 获取免费 HTTPS 证书:
sudo certbot --nginx -d your-domain.com此后可通过https://your-domain.com安全访问服务。
4.3 访问公网地址
完成上述步骤后,在任意设备浏览器中输入:
http://<服务器公网IP>:7860或(若配置了域名):
https://your-domain.com即可访问图像修复系统。
示例:
http://123.45.67.89:7860
5. 常见问题与优化建议
5.1 常见问题排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 无法访问 WebUI | 服务未启动 | 检查ps aux \| grep app.py |
| 页面空白 | 浏览器 CORS 或 JS 错误 | 清除缓存或更换浏览器 |
| 修复失败 | 缺少依赖或模型未下载 | 查看日志确认错误信息 |
| 标注无效 | 未正确绘制 mask | 确保用白色完全覆盖目标区域 |
| 输出文件找不到 | 路径权限不足 | 检查/outputs/目录读写权限 |
5.2 性能优化建议
- 启用 GPU 加速
- 确保 CUDA 和 cuDNN 正确安装
修改
config.yaml设置device: cuda降低图像分辨率
对超大图像先缩放至 2000px 以内再处理
使用 SSD 存储
提高模型加载与 I/O 速度
并发控制
- 当前版本不支持高并发,建议单用户使用或加限流中间件
5.3 安全性注意事项
- 禁止暴露敏感端口:仅开放必要端口(如 80/443)
- 限制访问来源:可通过 Nginx 配置 IP 白名单
- 定期更新依赖:防止第三方库漏洞
- 避免暴露管理员接口:如 Gradio 的调试面板
6. 二次开发与扩展建议
6.1 项目结构解析
cv_fft_inpainting_lama/ ├── app.py # 主应用入口 ├── core/ # 核心推理逻辑 │ ├── model_loader.py │ └── inference.py ├── webui/ # 前端界面组件 ├── outputs/ # 修复结果存储目录 ├── models/ # 模型缓存目录(自动生成) ├── requirements.txt # 依赖列表 └── start_app.sh # 启动脚本6.2 功能扩展方向
- 多语言支持
修改前端文本标签,增加国际化切换
用户认证系统
在 Nginx 层增加 Basic Auth 或接入 OAuth2
API 接口封装
- 添加 RESTful API 接口供程序调用
python @app.route('/api/inpaint', methods=['POST']) def api_inpaint(): # 接收 base64 图像与 mask,返回修复结果 pass
- 批量处理功能
支持上传多张图像并队列处理
结果分享链接
- 自动生成临时下载链接,便于协作
7. 总结
7.1 技术价值总结
本文详细介绍了基于fft_npainting_lama构建图像修复系统的全流程,涵盖:
- 本地环境部署与依赖安装
- WebUI 使用方法与操作技巧
- 公网访问配置(端口开放 + Nginx 反向代理)
- 安全性与性能优化建议
- 二次开发扩展思路
该项目结合了先进的 LaMa 图像修复算法与友好的可视化交互设计,具备良好的实用性和可定制性。
7.2 实践建议
- 生产环境慎用公网暴露:建议内网使用或配合身份验证
- 定期备份输出数据:防止磁盘满导致服务异常
- 监控资源占用:特别是 GPU 显存与内存使用情况
- 保留原作者版权信息:尊重开源协议与开发者劳动成果
通过合理配置,该系统可作为个人图像处理助手,也可集成进内容管理系统用于自动化去水印等任务。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。