这是一个基于SAM2 (Segment Anything Model 2) 的交互式图形化界面工具,支持通过点击和框选的方式进行图像分割。工具提供完整的批量处理工作流程,支持多图片标注、批量推理和智能保存功能。
- 多种加载方式:
- 添加单张图片:支持多次上传,累积到图片列表
- 批量加载文件夹:一次性导入整个文件夹的图片
- 智能重复检测:自动避免重复添加相同图片
- 图片导航:上一张/下一张浏览,支持大量图片管理
- 列表管理:清空图片列表功能,重新开始工作
- 正向点 (Positive Points): 绿色圆点,标记目标区域
- 负向点 (Negative Points): 红色圆点,标记背景区域
- 边界框 (BBox): 蓝色矩形,框选目标区域
- 独立状态保存:每张图片的标注独立保存,切换图片不丢失标注
- 实时状态显示:显示当前图片标注数量和整体进度
- 单张推理:对当前图片进行SAM2推理
- 批量推理:一键推理所有已标注图片,支持进度显示
- 结果持久化:推理结果自动保存,切换图片时可查看历史结果
- 高质量输出:基于SAM2.1模型生成精确分割掩码
- 自动命名:掩码文件自动命名为
原始图片名_mask.png - 单张保存:保存当前图片的掩码结果
- 批量保存:智能处理多图片保存
- 1张图片:直接保存单张掩码
- 多张图片:自动打包为ZIP压缩包
- 时间戳命名:批量保存的ZIP文件自动添加时间戳
- 撤销功能:支持逐步撤销标注操作
- 清除标注:清除当前图片的所有标注
- 状态保持:切换图片时自动保存和恢复标注状态
- 进度追踪:实时显示标注进度和推理状态
# 安装Python依赖包
pip install -r requirements.txt
# 确保有SAM2模型文件
# 模型文件 sam2.1_l.pt 应该放在当前目录下python run_gui.py
# 或者直接运行
python sam2_gui.py方式一:多次添加单张图片
├── 点击"添加单张图片"
├── 选择图片文件
├── 重复上述步骤添加更多图片
└── 自动跳转到新添加的图片
方式二:批量加载文件夹
├── 点击"上传图片文件夹"
├── 选择包含图片的文件夹
└── 自动加载所有支持格式的图片
对每张图片进行标注:
├── 选择标注模式(正向点/负向点/边界框)
├── 在图片上添加标注
├── 使用"上一张"/"下一张"切换图片
├── 每张图片的标注会自动保存
└── 可随时查看标注进度统计
单张推理:
├── 确保当前图片有标注
├── 点击"运行当前图片推理"
└── 查看分割结果(黄色掩码显示)
批量推理:
├── 确保有已标注的图片
├── 点击"批量推理所有图片"
├── 查看进度窗口显示处理状态
└── 完成后可切换图片查看所有结果
单张保存:
├── 点击"保存当前掩码"
├── 系统自动生成文件名:图片名_mask.png
└── 选择保存位置
批量保存:
├── 点击"批量保存所有掩码"
├── 1张图片 → 直接保存单张
├── 多张图片 → 自动打包为ZIP
└── ZIP文件命名:masks_时间戳.zip
| 操作 | 功能 | 说明 |
|---|---|---|
| 撤销 | 撤销最后一个标注操作 | 每张图片独立的操作历史 |
| 清除当前图片标注 | 清空当前图片所有标注 | 不影响其他图片的标注 |
| 上一张/下一张 | 图片导航 | 自动保存和恢复标注状态 |
| 清空图片列表 | 重置整个工作区 | 清除所有图片和标注数据 |
┌─────────────────────────────────────────────────────────────┐
│ SAM2 交互式图像分割工具 │
├─────────────┬───────────────────────────────────────────────┤
│ 控制面板 │ │
│ │ │
│ 📁图片加载 │ │
│ ├添加单张 │ │
│ ├上传文件夹 │ 🖼️图像显示区域 │
│ └清空列表 │ (支持缩放和滚动) │
│ │ │
│ 🧭图片导航 │ │
│ ├上一张/下一张│ │
│ └图片信息 │ │
│ │ │
│ 🎯交互模式 │ │
│ ├正向点 │ │
│ ├负向点 │ │
│ └边界框 │ │
│ │ │
│ 📊当前标注 │ │
│ ├标注统计 │ │
│ └进度显示 │ │
│ │ │
│ ⚡操作按钮 │ │
│ ├撤销 │ │
│ ├清除标注 │ │
│ ├当前推理 │ │
│ └批量推理 │ │
│ │ │
│ 💾保存结果 │ │
│ ├保存当前 │ │
│ └批量保存 │ │
├─────────────┴───────────────────────────────────────────────┤
│ 📊状态栏:显示当前操作状态 │
└─────────────────────────────────────────────────────────────┘
当前图片:
正向点: 3 ← 当前图片的正向点数量
负向点: 1 ← 当前图片的负向点数量
边界框: 1 ← 当前图片的边界框数量
已标注图片: 5/10 ← 已标注图片数 / 总图片数
2/10 ← 当前图片位置 / 总图片数
image_001.jpg (已推理) ← 图片名称 + 推理状态
- SAM2模型文件:
sam2.1_l.pt(默认)(约2.3GB) - 备选模型:
SAM模型都支持,自行下载即可
- JPG/JPEG: 最常用的图片格式
- PNG: 支持透明通道的图片格式
- BMP: Windows位图格式
- TIFF/TIF: 高质量图像格式
- 掩码图像: PNG格式二值图像(黑白掩码)
- 批量输出: ZIP压缩包(包含多个PNG掩码文件)
错误:"模型加载失败"
解决方案:
├── 检查 sam2.1_l.pt 文件是否存在
├── 确认文件大小约2.3GB(完整下载)
├── 检查网络连接(首次可能需要下载)
└── 尝试重新下载模型文件错误:推理过程中内存溢出
解决方案:
├── 使用更小尺寸的图片(建议<2048px)
├── 关闭其他占用内存的程序
├── 减少同时处理的图片数量
└── 考虑使用GPU加速错误:界面无法正常显示
解决方案:
├── Windows: 确认Python安装包含tkinter
├── Linux: sudo apt-get install python3-tk
├── macOS: 使用官方Python安装包
└── 检查显示器分辨率和缩放设置错误:批量推理部分图片失败
解决方案:
├── 检查失败图片是否损坏
├── 确认图片格式是否支持
├── 检查图片是否有标注
└── 查看控制台错误信息- 正向点:在目标对象的中心或特征明显的位置点击
- 负向点:在明确的背景区域点击,避免边界模糊区域
- 边界框:尽量贴近目标边界,但稍微留有余量
- 组合使用:可以同时使用点和框来提高精度
- 标注策略:先完成所有图片的标注,再进行批量推理
- 保存习惯:定期保存结果,避免意外丢失
- 文件管理:使用有意义的文件夹结构组织图片
- 性能优化:大批量处理时考虑分批进行
- 预检查:加载图片后先快速浏览,确认图片质量
- 标注顺序:按照图片复杂度从简单到复杂进行标注
- 质量控制:推理后检查结果,必要时调整标注重新推理
- 备份管理:重要工作及时备份标注数据和结果
- ✅ 新增多次上传单张图片功能
- ✅ 实现每张图片独立的交互状态保存
- ✅ 添加批量推理功能,支持进度显示
- ✅ 改进保存系统,支持自动命名和ZIP打包
- ✅ 优化用户界面,增加详细的状态显示
- ✅ 提升用户体验,支持完整的批量工作流程
- ✅ 基础SAM2交互式分割功能
- ✅ 单张图片处理流程
- ✅ 基本的标注和推理功能