基于 Segment Anything Model (SAM) 的半自动数据集标注工具,支持 YOLO 格式输出。
SAMlabel 利用 Meta 的 SAM 分割大模型实现半自动标注:用户手动画框作为 prompt,SAM 自动优化生成精确分割框,确认后输出 YOLO 格式标签文件。提供两种使用方式:
- 命令行脚本 (
test.py):轻量 OpenCV 窗口,支持缩放,单文件即用 - GUI 界面 (
UImain.py):PySide2 图形界面,支持多视图同步浏览
| 功能 | 快捷键 / 操作 |
|---|---|
| 手画矩形 prompt | 鼠标左键拖拽(绿框) |
| SAM 自动优化框 | 松手即生成(蓝框) |
| 确认并输入类别 | Y → 弹出英文类别名 |
| 撤销当前图最后一条 | N(实时保存) |
| 上一张 / 下一张 | A / D(实时保存) |
| 重置视图缩放 | R |
| 滚轮缩放 | 鼠标滚轮(以光标为中心) |
| 退出并全部落盘 | Q 或 ESC |
输出格式:
- 与图片同名的 YOLO 格式
.txt(归一化cls x_c y_c w h) classes.txt(类别映射,自动更新)
pip install -r requirements.txt
# 安装 SAM 官方库
git clone https://github.com/facebookresearch/segment-anything.git
cd segment-anything
pip install -e .从 SAM 官方仓库 下载权重文件(如 sam_vit_h_4b8939.pth),修改脚本顶部配置路径。
编辑 utils/test.py 顶部的 Config 类:
@dataclass
class Config:
img_dir: str = r'你的图片文件夹路径'
sam_ckpt: str = r'你的权重文件路径'# 命令行版本
python utils/test.py
# GUI 版本
python UImain.pySVMlabel/
├── README.md
├── OPTIMIZATION_LOG.md # 优化日志
├── requirements.txt # 依赖清单
├── pic/ # 演示图片
├── video/ # 演示视频
└── SVMlabel/
├── UImain.py # GUI 标注器(支持模式切换)
├── sam_vit_h_4b8939.pth # SAM 权重文件
├── utils/
│ ├── test.py # 命令行标注器(主力工具)
│ └── SAM.py # SAM 模型封装(模型只加载一次)
├── segment_anything/ # SAM 官方库
├── UI/
│ ├── UI.ui # Qt 界面文件
│ └── ico/ # GUI 图标资源
└── ico/ # 工具栏图标(label.png, seg.png 等)
- 仅支持矩形框标注(SAM 外接矩形)
- 类别名仅限英文(无空格)
- 无批量删除/合并等高级功能
- 支持多边形标注 / 旋转框
- 集成 SAM-HQ / EfficientSAM 提升速度
- 支持中文类别名
- 批量标注模式
本项目基于 Apache 2.0 许可证开源。