Package: isat-sam
ISAT with segment anything交互式半自动图像分割标注工具如果这个项目给您的工作生活带来了便捷，请给一个Star；如果想对该项目贡献代码，请发Pull requests[中文]         [English]集成segment anything，实现图片分割快速标注。演示视频：bilibiliDemo Video：youtube特点支持基于SAM的交互式半自动标注。支持手动标注多边形。支持连点绘制，连点模式下每隔0.15s添加一个点，便于绘制曲线。支持标注二次修改。支持重叠目标调整遮挡关系。支持标注结果预览。单独线程进行sam encoder计算，降低切换图片的卡顿感。支持导出COCO，YOLO，LABELME，VOC等图像分割数据格式；也支持导出VOC目标检测格式数据(xml)。更多功能详见功能说明。安装1. 源码运行(1) 创建虚拟环境condacreate-nisat_envpython=3.8
condaactivateisat_env(2) 获取ISAT_with_segment_anything源码并安装依赖gitclonehttps://github.com/yatengLG/ISAT_with_segment_anything.gitcdISAT_with_segment_anything
pipinstall-rrequirements.txtwindows系统下，通过pip安装的pytorch默认是cpu版本，gpu版本的pytorch需去pytorch官网手段安装。(3) 下载Segment anything预训练模型软件提供了模型管理界面。通过[菜单栏]-[SAM]-[模型管理]打开界面（现已添加模型国内下载链接，点击下载按钮可直接进行下载）。当前支持的模型有SAM系列，sam-hq系列，MobileSAM系列，EdgeSAM系列等。系列预训练模型显存占用文件大小SAMsam_vit_h_4b8939.pth7305M2.6Gsam_vit_l_0b3195.pth5855M2.6Gsam_vit_b_01ec64.pth4149M375Msam-hqsam_hq_vit_h.pth7393M2.6Gsam_hq_vit_l.pth5939M1.3Gsam_hq_vit_b.pth4207M379Msam_hq_vit_tiny.pth1463M43Mmobile-sammobile_sam.pt1375M40Medge-samedge_sam.pth960M39Medge_sam_3x.pth960M39Msam-medsam-med2d_b.pth1500M2.4G(4) 运行软件pythonmain.py2. pip安装版本略低于源码(1) 创建虚拟环境condacreate-nisat_envpython=3.8
condaactivateisat_env(2) pip安装ISAT_with_segment_anythingwindows系统下，通过pip安装的pytorch默认是cpu版本，gpu版本的pytorch需去pytorch官网手段安装。pipinstallisat-sam(3) 运行软件isat-sam3. windows下exe运行(1) 下载打包好的exe文件打包的exe版本严重落后于git源码，建议运行源码或pip安装需下载三个.zip文件，总体大小2.7G，解压缩后4.9G。打开ISAT_with_segment_anything文件夹，双击main.exe运行。下载链接百度网盘链接：https://pan.baidu.com/s/1vD19PzvIT1QAJrAkSVFfhg提取码：ISAT(2) 下载Segment anything预训练模型打包后的软件，附带了sam_hq_vit_tiny.pth模型，便于直接使用。 (近期有朋友反馈，sam_hq_vit_tiny.pth无法在CPU环境下运行，这是由于sam-hq模型权重保存的问题。请下载mobile-sam.pt权重后选择mobile-sam模型)如需使用精度更高的模型，请自行下载，并放置于ISAT/segment_any下(打包的exe为旧版本，还未更新)。下载地址同上下载预训练模型使用软件具体功能可查看：功能说明1.标注1. 软件左侧选择类别（工具栏-文件-设置中，进行类别添加或修改）
2. 开始标注
    2.1 半自动标注
        点击工具栏[Segment anything]开始半自动标注（快捷键Q）
        通过鼠标左键（或右键）提示感兴趣区域（或不感兴趣区域），调整目标分割掩码。
    2.2 手动标注
        点击工具栏[绘制多边形]开始手动标注（快捷键C）
        通过鼠标左键添加多边形顶点。
        鼠标左键按下并拖动，持续添加顶点，时间间隔0.15s。
    2.3 退上一个状态
        工具栏点击工具栏[回退]按钮（快捷键Z），回退到标注的上一个状态。
        半自动标注时，删除上一个添加的点提示；手动标注时，删除上一个添加的顶点。
3. 点击工具栏[标注完成]按钮，完成标注（快捷键E）。
4. 点击工具栏[保存]按钮（快捷键S），写入json文件。2.修改1. 多边形修改
    拖拽多边形顶点，修改多边形形状。
    拖拽多边形，调整多边形位置。
2. 类别修改
    选定目标，点击工具栏[编辑]按钮（快捷键E），在跳出的编辑框中修改类别或添加信息。
3. 遮挡修改
    对于存在重叠部分的目标，选定目标多边形后，点击工具栏[置顶]（快捷键T）或[置底]（快捷键B）按钮，调整目标遮挡关系。
4. 删除目标
    选定目标，点击工具栏[删除]按钮（快捷键DEL），删除选定目标。3.查看1. 结果预览
    点击工具栏[位图]按钮（快捷键SPACE），预览标注结果。
    点击时，以 ‘标注-语义-实例’ 的顺序进行切换。
2. 窗口调整
    点击工具栏[放大]，[缩小]，[适应窗口]（快捷键F）调整图片大小。
3. 显示/隐藏目标
    点击工具栏[显示/隐藏]按钮（快捷键V），显示或隐藏当前已标注目标。
    也可以在右侧标注栏中，通过勾选框显示/隐藏单个目标。
4. 背景清晰度调整（仅半自动标注时）
    半自动标注时，会调暗背景，凸显mask。
    通过工具栏[mask alpha]数值条，调整背景与mask混合比例。4.数据转换本软件用json文件保存标注结果。
使用时，可以手动解析json文件，或转换为其他数据格式。软件内置了转换工具
1. ISAT转VOC
    转换ISAT格式json为png单通道图片。语义分割中，像素值为类别index；实例分割中，像素值为实例id（软件中的group id）。
2. ISAT转COCO
    转换ISAT格式json为COCO格式json。（转换后，会丢失图层信息，如最终使用coco格式，标注时尽可能避免目标重叠）
3. ISAT转LABELME
    转换ISAT格式json为labelme格式json。（转换后，会丢失图层信息）
4. COCO转ISAT
    转换COCO格式json为ISAT格式json。Star History请给该项目一个star，您的点赞就是对我最大的支持与鼓励核心贡献者...yatengLGAlias-z...引用@misc{ISAT with segment anything,
  title={{ISAT with segment anything}: Image segmentation annotation tool with segment anything},
  url={https://github.com/yatengLG/ISAT_with_segment_anything},
  note={Open source software available from https://github.com/yatengLG/ISAT_with_segment_anything},
  author={yatengLG, Alias-z and horffmanwang},
  year={2023},
}更新日志[0.0.1]发布测试版，版本号0.0.1更新下载功能（后续需优化下载链接）支持多选多边形，现在可以批量删除了按下Ctrl点击多边形；按下Ctrl点击右侧标注栏；按下Shift点击右侧标注栏；点击右侧标注栏，Ctrl+A全选。添加转换脚本 - utils目录下现支持 ISAT <-> COCO, ISAT <-> YOLO, ISAT -> XML(目标检测)添加了对segment-anything-fast的支持现支持SAM系列模型，sam-hq以及mobile-sam等后续更新sam-fast要求torch版本不低于2.1.1;低于版本要求时，默认导入samsam_vit_h_4b8939.pth encode计算时间缩短大概4倍，显存占用缩小到5.6Gsamsam-fast00.6983079910278320.1933639049530029310.70489192008972170.2117574214935302720.7666368484497070.257326126098632830.81983661651611330.22284531593322754添加了饱和度调整通过拖动工具栏中的饱和度调整条，对图片进行饱和度调整。（只与显示有关，不影响sam）添加track模式在"自动auto"和"手动manual"模式外，为组模式中添加了"跟踪track"模式。该模式下，使用[TAB]或者[`]切换目标时，组id会显示为设置为当前多边形的组id。[0.0.2]添加了模型管理界面现在可以方便的管理与使用模型了。由于sam-hq以及mobile-sam的权重链接，需要科学上网才可以访问。这两类模型下载时会经常失败有推荐的比较好用的大文件托管服务，可以联系我整合了数据转换界面并提供了新功能COCO <-> ISATYOLO <-> ISATLABELME <-> ISATISAT -> VOC(png单通道图)ISAT -> VOC for object detection(xml目标检测)添加了linux系统对segment-anything-fast的支持该功能可以保持sam分割效果的情况下，减少显存占用并提升分割速度。（目前只对sam系列模型有效）由于windows下需需torch版本为2.2.0+dev且需要安装较多其他依赖，因而暂时关闭了windows系统下对该功能的支持。修复了遗留bug修复了转VOC后第一行一直为0的问题轮廓保存模式中-只保存最大轮廓现在严格保存面积最大的轮廓(之前使用顶点数量进行粗估计)添加了对EdgeSAM的支持。修复转coco后，类别ID从0开始的问题。（现在第一类的类别id为1）修复sam标注过程中，切换图片文件夹后，闪退的问题添加了模型国内下载链接减少模型显存占用使用bfloat16模型后，显存需求降低，特征计算时间略微增加，最终分割效果无显著变化。checkpointmem(float)mem(bfloat16)cost(float)cost(bfloat16)edge_sam.pth360M304M0.02120.0239edge_sam_3x.pth360M304M0.02120.0239mobile_sam.pt534M390M0.02000.0206sam_hq_vit_tiny.pth598M392M0.01960.0210sam_hq_vit_b.pth3304M1762M0.14960.1676sam_hq_vit_l.pth5016M2634M0.37660.4854sam_hq_vit_h.pth6464M3378M0.67640.9282sam_vit_b_01ec64.pth3302M1760M0.15390.1696sam_vit_l_0b3195.pth5016M2634M0.37760.4833sam_vit_h_4b8939.pth6462M3378M0.68630.92880.0.3更新了项目结构填加了sam_med2d模型，实现对医疗数据更好的分割效果