基于 SAM 2.1 的图像分割全栈实践 V2:Docker 部署与导出功能落地
FastSAM-Demo 是一个基于 Meta SAM 2.1 的交互式图像分割 Web 应用,用户上传图片后点击目标区域,即可实时完成 AI 分割。本次更新带来 Docker 一键部署与三种导出模式。
适用场景:
- 内容创作 / 设计:快速抠图、替换背景、提取主体,无需 PS 专业技能
- 家具电商:上传家具产品图,一键抠出主体,去除杂乱背景,生成白底或场景合成素材,提升商品图质量
- 数据标注:为目标检测、实例分割等机器学习任务批量生成掩码标注
- 科研与教学:演示 SAM 2.1 能力,验证分割效果,快速出图用于论文插图
- 产品原型验证:在自研图像处理管线中嵌入分割能力,快速跑通概念验证
- 本地隐私处理:全离线运行,医疗影像、工业质检等对数据合规有要求的场景同样适用
🐳 新增:Docker 部署
现在支持一键 Docker 部署,无需手动配置 Python 环境、Node 版本或处理依赖冲突,开箱即用。
适用场景:
- 快速在新机器或服务器上搭建演示环境
- 团队统一开发 / 测试环境,避免「在我这里能跑」问题
- CI/CD 流水线集成,受限环境(无法直接配置 Python/Node)下开箱即用
新增文件
| 文件 | 说明 |
|---|---|
backend/Dockerfile | Python 3.11 + uv + FastAPI + SAM 2.1 |
frontend/Dockerfile | Node 20 + Next.js 15 standalone 模式 |
docker-compose.yml | 服务编排,端口 3001/8001 |
.dockerignore | 精简镜像体积,排除无关文件 |
启动命令
docker-compose up --build
- 前端:http://localhost:3001
- 后端:http://localhost:8001
后端使用 uv 管理依赖,安装速度显著快于 pip。前端采用 Next.js 15 standalone 模式构建,镜像体积更小,启动更快。
📥 新增:导出功能
分割完成后,现在可以将结果以三种模式直接导出为 PNG 图片,满足不同下游使用需求。
| 模式 | 说明 | 典型用途 |
|---|---|---|
| 原图 | 原始上传的图片 | 存档、对比 |
| 叠加效果 | 原图 + 彩色掩码(半透明 50%) | 演示、标注审核、论文插图 |
| 仅掩码 | 纯掩码,黑色背景 | 背景替换、目标检测、数据集制作 |
- 触发条件:有分割结果时显示「导出」按钮
- 掩码色:红、橙、黄、绿、青、蓝、紫、粉(8 色循环,多目标自动区分)
- 导出格式:PNG(无损)
✍️ 写在最后
两个更新都指向同一个目标:让 FastSAM-Demo 更容易用起来。Docker 解决的是「跑起来」的门槛,导出功能解决的是「用出去」的最后一步。
项目完全开源,欢迎 Star、Fork 或提 Issue。
项目地址:https://github.com/Eva-Dengyh/FastSAM-Demo