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

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

前言

Segment Anything Model(以下简称SAM)是Meta研究团队提出的一个大模型,其实现了只需要一个key point或者bbox就可以完整分割实例的强大功能,并且这个模型不需要额外的训练以及微调,就可以在全新的数据集上使用。这种特性在标注全新的实例分割数据集时可以大大减少所需要的工作量。

同时Label Studio作为一个优秀的标注平台,其基于网页以及高度可定制化的特性被广泛的采用。其优秀的社区提供了名为label-studio-ml-backend的库来为标注提供后端机器学习模型的辅助功能,这为SAM和其结合提供了便利。并且官方以及提供了实用SAM来标注的例子方便我们学习使用。

因此本文的主要目的是尝试以Label Studio作为前端、SAM作为后端来搭建半自动实例分割标注平台,

注意:Label Studio官方建议使用Docker来进行部署,但由于许多GPU租借平台本身(如本文采用的AutoDL)就使用了虚拟化,不可在内部再进行虚拟化部署,因此本文使用非docker的方案部署。

对于Label studio以及label-studio-ml-backend的详细使用方法将在之后单独发文章进行介绍。

环境配置

安装Label Studio可以直接使用pip进行,在所使用的虚拟环境/conda环境下直接使用以下命令即可

pip install label-studio

安装label-studio-ml-backend从github直接进行,按照以下命令即可

git clone https://github.com/HumanSignal/label-studio-ml-backend.git
cd label-studio-ml-backend/
pip install -e .

对于SAM环境的按照我们暂且按照官方的example实现,后续如果需要其他库可以自行进行安装

对于SAM模型运行所需要的配置在仓库的label_studio_ml/examples/segment_anything_model路径下,此处直接使用pip进行安装

pip install -r label_studio_ml/examples/segment_anything_model

SAM下载与启动

官方例子分别提供了完整模型(sam_vit_h_4b8939.pth)与轻量级模型(mobile_sam.pt)我们可以使用链接进行下载,放置于当前工作目录下。使用以下指令启动模型后端

label-studio-ml start label_studio_ml/examples/segment_anything_model

image-20231016191930506

Label Studio配置

项目创建

使用以下命令启动Label Studio

label-studio

注意:在autodl上使用的时候需要标注端口6006

label-studio -p 6006

第一次进入label studio为如下界面,使用邮箱账号注册后进行登陆进入主界面

image-20231016191853298

image-20231016192027055

点击创建项目(create Project)后按照如下指示

image

使用如下代码创建项目模版(根据不同的任务项目进行修改)

<View>
  <Image name="image" value="$image" zoom="true"/>
  <Header value="Brush Labels"/>
  <BrushLabels name="tag" toName="image">
  	<Label value="Dog" background="#FF0000"/>
  	<Label value="Cat" background="#0d14d3"/>
  </BrushLabels>
  <Header value="Keypoint Labels"/>
  <KeyPointLabels name="tag2" toName="image" smart="true">
    <Label value="Dog" smart="true" background="#000000" showInline="true"/>
    <Label value="Cat" smart="true" background="#000000" showInline="true"/>
  </KeyPointLabels>
  <Header value="Rectangle Labels"/>
  <RectangleLabels name="tag3" toName="image" smart="true">
    <Label value="Dog" background="#000000" showInline="true"/>
    <Label value="Cat" background="#000000" showInline="true"/>
  </RectangleLabels>
</View>

image-20231016192257239

点击save后完成项目创建

连接ML后端

进入项目的设置界面,点击Machine Learning并添加模型

image-20231016192430174

添加后端模型,其中URL填写前面后端服务启动时候的地址

image-20231016192501436

根据情况进行辅助的选择,最后点击保存,完成后端连接

image-20231016193221701

标注指南

打开项目,点击import对于数据进行导入

image-20231016193341038

导入后进入界面开始标注

image-20231016193545983

标注界面如下,首先打开自动标注选项卡,唤起自动标注工具

image-20231016193508737

基于点进行标注:将自动标注工具切换为key-point形式(注:单击进行切换)

image-20231016193825617

在下方选择类别之后在目标上打上点,会自动生成mask内容,若满意则进行确认。对于部分只使用一个点并不能完美分割的实例(如下图),可以在确认之前再增加关键点数量来提供更多信息,实现准确的划分,同时按住option键也可以打负样本点。

image-20231016194528954

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后点击确定按钮来合成一个完整的mask

image-20231016195102980

对于自动标注无法完美实现的,也可以在生成后通过笔刷以及橡皮擦来进行再次的微调。

image-20231016195335429

基于框标注:除了基于关键点进行标注,也可以使用框来进行,使用智能标注工具中的框标注工具,可以绘制包括实例的矩形,再自动生成mask

image-20231016195657048

数据导出

前文中,Mask是按照Brush进行标注,因此在导出的时候有两个选项比较推荐

image-20231016200007806

两者都会将mask以图片相同的大小进行导出,每个实例一个单独的mask文件。之后可以将其转换为COCO等其他格式便于使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值