Skip to content

这是一个基于SAM2 (Segment Anything Model 2) 的交互式图形化界面工具,支持通过点击和框选的方式进行图像分割。工具提供完整的批量处理工作流程,支持多图片标注、批量推理和智能保存功能。

Notifications You must be signed in to change notification settings

tlqttllqq/SAM2-GUI-Studio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

SAM2 交互式图像分割工具

这是一个基于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

📋 完整工作流程

1. 图片加载

方式一:多次添加单张图片
├── 点击"添加单张图片"
├── 选择图片文件
├── 重复上述步骤添加更多图片
└── 自动跳转到新添加的图片

方式二:批量加载文件夹
├── 点击"上传图片文件夹"
├── 选择包含图片的文件夹
└── 自动加载所有支持格式的图片

2. 交互式标注

对每张图片进行标注:
├── 选择标注模式(正向点/负向点/边界框)
├── 在图片上添加标注
├── 使用"上一张"/"下一张"切换图片
├── 每张图片的标注会自动保存
└── 可随时查看标注进度统计

3. 推理处理

单张推理:
├── 确保当前图片有标注
├── 点击"运行当前图片推理"
└── 查看分割结果(黄色掩码显示)

批量推理:
├── 确保有已标注的图片
├── 点击"批量推理所有图片"
├── 查看进度窗口显示处理状态
└── 完成后可切换图片查看所有结果

4. 结果保存

单张保存:
├── 点击"保存当前掩码"
├── 系统自动生成文件名:图片名_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掩码文件)

🔧 故障排除

常见问题

1. 模型加载失败

错误:"模型加载失败"
解决方案:
├── 检查 sam2.1_l.pt 文件是否存在
├── 确认文件大小约2.3GB(完整下载)
├── 检查网络连接(首次可能需要下载)
└── 尝试重新下载模型文件

2. 内存不足

错误:推理过程中内存溢出
解决方案:
├── 使用更小尺寸的图片(建议<2048px)
├── 关闭其他占用内存的程序
├── 减少同时处理的图片数量
└── 考虑使用GPU加速

3. GUI显示问题

错误:界面无法正常显示
解决方案:
├── Windows: 确认Python安装包含tkinter
├── Linux: sudo apt-get install python3-tk
├── macOS: 使用官方Python安装包
└── 检查显示器分辨率和缩放设置

4. 批量处理失败

错误:批量推理部分图片失败
解决方案:
├── 检查失败图片是否损坏
├── 确认图片格式是否支持
├── 检查图片是否有标注
└── 查看控制台错误信息

💡 使用技巧

标注技巧

  1. 正向点:在目标对象的中心或特征明显的位置点击
  2. 负向点:在明确的背景区域点击,避免边界模糊区域
  3. 边界框:尽量贴近目标边界,但稍微留有余量
  4. 组合使用:可以同时使用点和框来提高精度

批量处理建议

  1. 标注策略:先完成所有图片的标注,再进行批量推理
  2. 保存习惯:定期保存结果,避免意外丢失
  3. 文件管理:使用有意义的文件夹结构组织图片
  4. 性能优化:大批量处理时考虑分批进行

工作流程优化

  1. 预检查:加载图片后先快速浏览,确认图片质量
  2. 标注顺序:按照图片复杂度从简单到复杂进行标注
  3. 质量控制:推理后检查结果,必要时调整标注重新推理
  4. 备份管理:重要工作及时备份标注数据和结果

📝 更新日志

v2.0 (当前版本)

  • ✅ 新增多次上传单张图片功能
  • ✅ 实现每张图片独立的交互状态保存
  • ✅ 添加批量推理功能,支持进度显示
  • ✅ 改进保存系统,支持自动命名和ZIP打包
  • ✅ 优化用户界面,增加详细的状态显示
  • ✅ 提升用户体验,支持完整的批量工作流程

v1.0 (初始版本)

  • ✅ 基础SAM2交互式分割功能
  • ✅ 单张图片处理流程
  • ✅ 基本的标注和推理功能

About

这是一个基于SAM2 (Segment Anything Model 2) 的交互式图形化界面工具,支持通过点击和框选的方式进行图像分割。工具提供完整的批量处理工作流程,支持多图片标注、批量推理和智能保存功能。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages