自动标注好用吗?基于SAM和Label Studio搭建半自动实例分割标注平台


  最近在做一个分割任务,需要手动标注,标注了几张,感觉实在是麻烦,枯燥、费时间,所以想试下半自动标注。花了老奴一天的时间安装环境、配置等,发现…其实,也不太好用,能理解为什么自动标注无法推广使用了。你如果对半自动标注感兴趣的话,可以往下看看。

一、半自动标注

  我们知道,分割任务标注的数据,需要沿着物体边界框选物体,这时候需要用鼠标点击多个点,形成一个多边形框住目标。相对于目标检测拉取一个目标框,分割的标注是更为耗时的。
  SAM 源自于 2023 年 Meta 的 Segment Anything (SA) 项目。该项目发现在 NLP 和 CV 领域中出现的基础模型表现出较强的性能,它是一种最先进的图像分割模型。
  使用Label Studio结合SAM大模型,实现半自动标注,通过手动点击(keypoint)或者画框,模型自动分割选中区域,与手动标注对比,不用点多个点、不用对准目标边界。经过测试,该半自动标注工具适用目标与背景差别较大的物体,目标和边界较难区分的,自动分割效果不佳。
  标注效果如图二,螺丝钉含有位移线,我的标注任务是将位移线分割出来。

图一 标注原图
图二 半自动标注效果图

二、缺点

  试用该工具后,感觉不太好用。主要是因为:
(1) 安装麻烦:该工具涉及到Label Studio和SAM模型的安装、配置、启动
(2) 速度慢:需要用模型边标注边推理,SAM模型使用显卡推理,速度仍然比较慢、容易卡,给我的感觉是不灵敏、容易卡顿
(3) 硬件要求高:我使用自己的笔记本电脑安装,内存报错,且用cpu推理,速度很慢

三、安装方法

  如果你的设备硬件better than me,也想试用下这个标注工具。以下是安装步骤。

1、 python版本要求

  3.8及以上

2、下载playground

  Github页面直接Download zip,解压,有一个label_anything目录(图三),用于后面启动SAM模型。playground链接

图三 label_anything

3、SAM安装

  这里我使用离线安装的方法,同样Github直接页面Download zip,解压,进入解压的文件夹,运行pip install -e . 即可安装SAM。SAM链接

4、SAM权重下载

  SAM有三个权重,代表不同大小参数的SAM,我使用的是sam_vit_b_01ec64.pth,下载放入label_anything目录

https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth
https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth
https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth

5、安装label-studio-ml

pip install label-studio-ml

6、启动SAM接口

  进入playground的label_anything目录,在启动命令指定启动设备,可以设置为cpu启动或者gpu启动。
cpu启动:

label-studio-ml start sam --port 8003 --with sam_config=vit_b sam_checkpoint_file=./sam_vit_b_01ec64.pth out_poly=True out_mask=True out_bbox=True device=cpu

gpu启动:

label-studio-ml start sam --port 8003 --with sam_config=vit_b sam_checkpoint_file=.\sam_vit_b_01ec64.pth out_poly=True out_mask=True out_bbox=True device=cuda:0

启动命令参数说明:

  • port 8003:设置端口,随便设,不冲突就行了
  • sam_config=vit_b,模型权重相对应
  • sam_checkpoint_file=./sam_vit_b_01ec64.pth,权重路径
  • out_mask=True,表示输出的是掩码

7、SAM启动日志

  终端启动日志如图,可以看到启动的url

图四 SAM启动日志

8、安装并启动label-studio

pip install label-studio-ml
label-studio start

9、label-studio启动日志

  label-studio启动日志也有一个url,自动打开label studio的界面,需要注册账号再登录

四、半自动标注使用方法

1、创建project并导入数据

  点击create创建项目并导入数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

新建好的project

2、标签设置

  点击setting,点击Labeling Interface,设置标签,将下面的一段代码复制进去,修改成自己的类别
在这里插入图片描述
在这里插入图片描述

<View>
  <Image name="image" value="$image" zoom="true"/>
  <KeyPointLabels name="KeyPointLabels" toName="image">
    <Label value="cat" smart="true" background="#e51515" showInline="true"/>
    <Label value="person" smart="true" background="#412cdd" showInline="true"/>
  </KeyPointLabels>
  <RectangleLabels name="RectangleLabels" toName="image">
  	<Label value="cat" background="#FF0000"/>
  	<Label value="person" background="#0d14d3"/>
  </RectangleLabels>
  <PolygonLabels name="PolygonLabels" toName="image">
  	<Label value="cat" background="#FF0000"/>
  	<Label value="person" background="#0d14d3"/>
  </PolygonLabels>
  <BrushLabels name="BrushLabels" toName="image">
  	<Label value="cat" background="#FF0000"/>
  	<Label value="person" background="#0d14d3"/>
  </BrushLabels>
</View>

注:这里的"KeyPointLabels"、“RectangleLabels”、“PolygonLabels”、"BrushLabels"分别表示点、框、多边形、刷子的标注方法,但实际上,只有点、框的方式才有大模型推理

3、大模型设置

  设置label studio使用SAM。同样也是在settings里面,点击Machine Learning,Add Model,填入模型名称,以及SAM 启动的URL,记得要将Use for interactive preannotations打开,最后点击右下角按钮Validate and Save
  点击后可能成功,也可能失败,失败的时候返回SAM启动终端,会显示报错,大部分都是缺少某些依赖包,装上即可。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

表示配置成功

4、标注

  回到页面点击项目,点击Label All Tasks开始标注。需要把Auto-Annotation打开,并将建议打勾。
  此时注意,右边栏有个smart区域,当选择什么类型的标注方法,该区域也会变成相应类型,才有模型推理,否则就是手动标注。当上方的Auto accept annotation suggestions转圈的时候,说明大模型在推理
  下面的标签区域,当要进行某种标注的时候,先选中标签,再进行标注,标注好后,点击submit提交
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

转圈代表正在推理

5、标注物导出

  回到项目界面,点击export即可选择所需格式进行保存
在这里插入图片描述

五、总结

  如果文章对您有所帮助,记得点赞、收藏、评论探讨✌️

  • 19
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值