yatengLG / ISAT_with_segment_anything

Labeling tool with SAM(segment anything model),supports SAM, SAM2, sam-hq, MobileSAM EdgeSAM etc.交互式半自动图像标注工具
https://www.yatenglg.cn/isat/
Other
1.33k stars 139 forks source link

连续半自动标注多张图片时,每次都要手动启用sam #221

Closed Icecream-blue-sky closed 1 month ago

Icecream-blue-sky commented 1 month ago

每次用sam标完上张图片后,需要手动启用sam,非常影响效率 image

yatengLG commented 1 month ago

啥意思?

  1. 标注完上一张图片以后,这个按钮是灰色的?
  2. 还是每次标注目标,都需要点击这个按钮?
Icecream-blue-sky commented 1 month ago

啥意思?标注完上一张图片以后,这个按钮是灰色的?

灰色代表启用了。标注完上一张后,会卡一会,然后这个按钮由灰变亮;我必须再点一次,它才会变灰,启用半自动标注。。。

Icecream-blue-sky commented 1 month ago

而且很神奇,有的图片这个按钮马上就变亮了,我只要再点一下启用sam即可;有的就会灰色卡很久

yatengLG commented 1 month ago
  1. sam计算分为两部分,encode和decode。encode负责计算图像特征(计算量较大),decode负责结合提示生成mask(计算量较小)。decode计算需要先encode计算图像特征。
  2. 这个按钮,不是启动sam,只是进行decode计算。(该按钮灰色,是因为还没encode完,一般是由于使用cpu或者gpu性能较差)
  3. sam选择模型后就启动了,并且在后台会持续encode计算(是单独线程异步的)

你大概率是用cpu在跑,并且使用了大模型。


所说的神奇现象,大概率是当前图标注时间比较长,下一张图的特征在后台计算完成了。

图像特征的缓存状况可以见右下角 那个黄-绿条。 为减少gpu无用做功, 默认缓存当前图像、前一张、后一张共三张图像的特征。

Icecream-blue-sky commented 1 month ago
  1. sam计算分为两部分,encode和decode。encode负责计算图像特征(计算量较大),decode负责结合提示生成mask(计算量较小)。decode计算需要先encode计算图像特征。
  2. 这个按钮,不是启动sam,只是进行decode计算。(该按钮灰色,是因为还没encode完,一般是由于使用cpu或者gpu性能较差)
  3. sam选择模型后就启动了,并且在后台会持续encode计算(是单独线程异步的)

你大概率是用cpu在跑,并且使用了大模型。

所说的神奇现象,大概率是当前图标注时间比较长,下一张图的特征在后台计算完成了。

图像特征的缓存状况可以见右下角 那个黄-绿条。 为减少gpu无用做功, 默认缓存当前图像、前一张、后一张共三张图像的特征。

感谢回复,和我发现的现象一致,我的确是用cpu运行的,并且更换了更小的模型后,速度快了很多。但还想问下,为什么不自动decode下一张图片呢?也就是,我标完上张图片后,我想不用再点击那个按钮,而是直接在图片中一点就自动标注,这样我的标注节奏就不会被打乱。

yatengLG commented 1 month ago

截图 2024-10-22 11-22-37

状态栏左下角有各种按钮/组件的说明,中间部分是运行状态cpu/gpu设备/模型状态,再右侧是像素值,像素位置。

鼠标指示位置为图像特征缓存状态,灰/黄/绿 分别代表 无特征缓存/正在计算/计算完毕

yatengLG commented 1 month ago

感谢回复,和我发现的现象一致,我的确是用cpu运行的,并且更换了更小的模型后,速度快了很多。但还想问下,为什么不自动decode下一张图片呢?也就是,我标完上张图片后,我想不用再点击那个按钮,而是直接在图片中一点就自动标注,这样我的标注节奏就不会被打乱。

decode是结合【图像特征】与【点提示】进行mask预测。

【图像特征】是后台自动计算的,只与设备计算效率有关,用户无需关心。 【点提示】是ISAT用户的用于标注的手段。

单个目标的完整标注流程是:1选择类别 - 2点击按钮开始标注 - 3鼠标点提示(单次或多次) - 4点击标注完成按钮 - ~5mask生成~ - ~6转polygon~ - ~自动分配组id等信息~

标注流程中,~划掉的步骤~是软件自动完成的,用户需要的操作是加粗的。

你所说的就是,把2省略掉。可能你的标注需求比较简单,只需要 鼠标点击 - 然后点击完成按钮即可。


但是作为标注软件,所需要满足的功能就不只是 【点击生成mask】这一个功能了。

ISAT不止有sam的交互式标注,也支持手动标注。还包括了,多边形的二次编辑、查看、检查等功能。

编辑功能中包括了:多边形的整体移动、顶点移动、两个多边形的交并补差逻辑运算、部分点的重绘等功能 查看功能中包含了:标注结果预览(语义与实例)、检查模式(通过tab在多个目标直接快速跳转)等功能

以上这些提到的功能,都需要在图像上进行点击,如果没有开始点击按钮,这个逻辑就全乱了。

yatengLG commented 1 month ago

你之所以觉得每次点击,会打断你的标注节奏。

盲猜你是鼠标操作的...


ISAT支持快捷键:

  1. 类别选择: 1 - 0 分别代表类别列表中的 第一到十对应的类别。可以快速选择
  2. 开始sam标注快捷键为Q;手动矩形框绘制快捷键为C
  3. 完成标注快捷键为E

一个简单的标注 第三类的流程是: 3、Q、鼠标点点点、E

这样你应该就不会觉得难用了 O(∩_∩)O哈哈~

另外,A、D用于切换上一张、下一张图片

Icecream-blue-sky commented 1 month ago

感谢回复,和我发现的现象一致,我的确是用cpu运行的,并且更换了更小的模型后,速度快了很多。但还想问下,为什么不自动decode下一张图片呢?也就是,我标完上张图片后,我想不用再点击那个按钮,而是直接在图片中一点就自动标注,这样我的标注节奏就不会被打乱。

decode是结合【图像特征】与【点提示】进行mask预测。

【图像特征】是后台自动计算的,只与设备计算效率有关,用户无需关心。 【点提示】是ISAT用户的用于标注的手段。

单个目标的完整标注流程是:1选择类别 - 2点击按钮开始标注 - 3鼠标点提示(单次或多次) - 4点击标注完成按钮 - ~5mask生成~ - ~6转polygon~ - ~自动分配组id等信息~

标注流程中,~划掉的步骤~是软件自动完成的,用户需要的操作是加粗的。

你所说的就是,把2省略掉。可能你的标注需求比较简单,只需要 鼠标点击 - 然后点击完成按钮即可。

但是作为标注软件,所需要满足的功能就不只是 【点击生成mask】这一个功能了。

ISAT不止有sam的交互式标注,也支持手动标注。还包括了,多边形的二次编辑、查看、检查等功能。

编辑功能中包括了:多边形的整体移动、顶点移动、两个多边形的交并补差逻辑运算、部分点的重绘等功能 查看功能中包含了:标注结果预览(语义与实例)、检查模式(通过tab在多个目标直接快速跳转)等功能

以上这些提到的功能,都需要在图像上进行点击,如果没有开始点击按钮,这个逻辑就全乱了。

你讲的很有道理,但从用户的角度看,当我想连续标注多张图片时,我的标注选择一般都是连续的,即上张是用sam,启动自动标注,下张我大概率也是选择用sam。而目前的逻辑其实相当于每次重置了选择,必须从零开始,而如果每次默认延续上次的状态,当用户想要更改时,再更改,或许效率更高些?当然只是个人观点

Icecream-blue-sky commented 1 month ago

你之所以觉得每次点击,会打断你的标注节奏。

盲猜你是鼠标操作的...

ISAT支持快捷键:

  1. 类别选择: 1 - 0 分别代表类别列表中的 第一到十对应的类别。可以快速选择
  2. 开始sam标注快捷键为Q;手动矩形框绘制快捷键为C
  3. 完成标注快捷键为E

一个简单的标注 第三类的流程是: 3、Q、鼠标点点点、E

这样你应该就不会觉得难用了 O(∩_∩)O哈哈~

另外,A、D用于切换上一张、下一张图片

我是用Q的...

Icecream-blue-sky commented 1 month ago

还有就是我想删除点的时候,当点很密集,用ctrl连点+delete很麻烦,能不能加个框选的方式,框中的点都被删除

yatengLG commented 1 month ago

我是用Q的...

你讲的很有道理,但从用户的角度看,当我想连续标注多张图片时,我的标注选择一般都是连续的,即上张是用sam,启动自动标注,下张我大概率也是选择用sam。而目前的逻辑其实相当于每次重置了选择,必须从零开始,而如果每次默认延续上次的状态,当用户想要更改时,再更改,或许效率更高些?当然只是个人观点

你应该也用过其他标注工具,除了labelme以及魔改labelme的工具,其他都会有开始标注这个按钮的。

实际上,主要问题是,你一直觉得那是在启动sam。 比如,你用labelimg标矩形,每次不都得按w啊。

另外,这个也不是多张图片的问题,是多个目标标注,每个都需要按一次。


做一个软件,考虑的必然是整体用户。 每个用户的需求都是不一样的,可能你习惯了labelme的标注流程。但labelme的流程设计,在扩展性上的确比较差,不然我也不会从头码这十来万行了 o(╥﹏╥)o

yatengLG commented 1 month ago

还有就是我想删除点的时候,当点很密集,用ctrl连点+delete很麻烦,能不能加个框选的方式,框中的点都被删除

可以试着用下重绘模式

Icecream-blue-sky commented 1 month ago

还有就是我想删除点的时候,当点很密集,用ctrl连点+delete很麻烦,能不能加个框选的方式,框中的点都被删除

可以试着用下重绘模式

感谢,挺好用的