Skip to content

ricwyc-max/SVMlabel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SAMlabel

基于 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
滚轮缩放 鼠标滚轮(以光标为中心)
退出并全部落盘 QESC

输出格式:

  • 与图片同名的 YOLO 格式 .txt(归一化 cls x_c y_c w h
  • classes.txt(类别映射,自动更新)

快速开始

1. 安装依赖

pip install -r requirements.txt

# 安装 SAM 官方库
git clone https://github.com/facebookresearch/segment-anything.git
cd segment-anything
pip install -e .

2. 下载权重

SAM 官方仓库 下载权重文件(如 sam_vit_h_4b8939.pth),修改脚本顶部配置路径。

3. 配置路径

编辑 utils/test.py 顶部的 Config 类:

@dataclass
class Config:
    img_dir: str = r'你的图片文件夹路径'
    sam_ckpt: str = r'你的权重文件路径'

4. 运行

# 命令行版本
python utils/test.py

# GUI 版本
python UImain.py

项目结构

SVMlabel/
├── 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 许可证开源。

About

基于分割一切大模型(SVM)的数据集标注软件

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors