# SAM2 交互式图像标注工具

一个基于 Meta 的 Segment Anything Model 2 (SAM2) 和 Tkinter 构建的图形化、交互式图像分割与标注工具。它旨在提供一个简单易用、开箱即用的方式，利用强大的AI模型来辅助进行高精度的图像标注工作。



## 主要功能

✨ **智能分割**: 集成强大的 SAM2 模型，通过点击正/负点进行高质量的掩码预测，极大提升标注效率。

✏️ **手动微调**: 支持手动绘制多边形进行精确标注，或对AI生成的掩码进行补充和修正。

📝 **标签编辑**: 方便地对已完成的标注区域进行标签修改、删除和管理。

🖱️ **多模式操作**: 在 "SAM标注"、"多边形" 和 "编辑标签" 模式间自由切换，应对不同标注场景。

🖼️ **便捷的视图控制**: 支持图像的无级缩放与平移，轻松处理高分辨率大图。

💾 **会话管理**: 自动保存和加载上一次的标注会话，方便随时中断和继续工作。

📄 **格式兼容**: 以与 LabelMe 兼容的 JSON 格式保存标注结果，便于下游任务处理。

🚀 **自动下载**: 首次运行时自动从网络下载所需的模型权重，无需手动配置。

## 主要更新：解决了标注重叠问题！

此版本最重要的核心改进是 **彻底解决了标注区域之间互相重叠的问题**，确保了数据集的干净与高质量。

✔️ **智能防重叠**:

  * **SAM 预测**: 在进行新的 SAM 点选预测时，系统会自动“屏蔽”所有已确认的标注区域。这能确保 SAM 模型只在未被标注的空白区域上生成新的掩码。
  * **多边形绘制**: 当您手动绘制的多边形与已确认区域发生重叠时，重叠的部分会被自动裁切掉，只保留真正有效的标注范围。
  * **交互限制**: 现在无法在已标注的区域内添加新的提示点，从源头上避免了歧义操作。

✔️ **提升易用性**:

  * **模型自动下载**: 无需再手动下载和配置模型路径。首次运行工具时，程序会自动从官方源下载所需的模型文件（约2.5GB）并缓存到本地，未来启动即可直接使用。
  * **打包与分发**: 对项目结构进行了重构和优化，使其能够作为一个标准的 Python 包通过 `pip` 进行安装和分发，并提供了命令行启动方式。

✔️ **Solar panel**:

  * **模型类别添加**: 光伏电板标注类型添加。

✔️ **解决Windows/Mac跨平台交互功能**:

## 安装

安装过程分为两个必要步骤。请务必按顺序执行。

#### ⚠️ 步骤 1: 手动下载并安装前提依赖 `segment-anything-2`

本工具依赖于 Meta 官方的 `segment-anything-2` 库。由于网络原因，直接通过 pip 从 GitHub 安装可能会失败，我们推荐采用更稳定的手动下载安装方式。

1.  **访问官方仓库**：
    请前往 `segment-anything-2` 的官方 GitHub 仓库：
    [https://github.com/facebookresearch/segment-anything-2](https://github.com/facebookresearch/segment-anything-2)

2.  **下载代码 (推荐使用 `git clone`)**：
    打开您的终端，`cd` 到一个您方便存放代码的目录，然后运行以下命令来克隆完整的代码仓库。这是最可靠的方式。

    ```bash
    git clone https://github.com/facebookresearch/segment-anything-2.git
    ```

    > (备选方案：您也可以在 GitHub 页面上点击 `Code` -\> `Download ZIP` 来下载，但 `git clone` 是更专业的做法。)

3.  **从本地安装**：
    下载完成后，进入刚刚创建的文件夹，并使用 `pip` 进行本地安装。

    ```bash
    # 进入下载好的文件夹
    cd segment-anything-2

    # 从当前目录安装
    pip install .
    ```

#### 步骤 2: 安装本工具 `EEBD-GESAM2`

完成上一步后，你就可以通过 PyPI 直接安装本工具了：

```bash
pip install EEBD-GESAM2
```

> **注意**：在首次启动本工具时，程序会自动从网络下载所需的 SAM2 模型权重文件，此过程可能需要一些时间，具体取决于你的网络状况。下载完成后，模型将被缓存，未来启动时将不再需要下载。

## 快速开始

安装完成后，你的系统中就有了一个新的命令行指令。直接在终端中运行它即可启动程序：

```bash
eebd-gesam2
```

程序启动后，会显示图形界面。你可以通过点击 "加载图像" 按钮来选择一个包含多张图片的文件夹，然后开始你的标注工作。

## 许可证

本项目采用 MIT 许可证。详情请见 `LICENSE` 文件。

## 致谢

本项目的开发离不开以下这些优秀的项目和社区：

  * [Segment Anything 2 (SAM2)](https://github.com/facebookresearch/segment-anything-2) by Meta AI
  * [PyTorch](https://pytorch.org/)
  * [OpenCV](https://opencv.org/)
  * Tkinter