提示:文章写完后,目录可以自成,如何生成可参考右边的帮助文档


前言

面对海量的图像分割标注任务,你是否渴望能找到一种方法,将标注效率提升数倍?Meta的Segment Anything Model (SAM) 正是这样一个答案,但其庞大的模型体积有时会带来部署上的挑战。本文将提供一个实用的解决方案:我们将一步步引导您,如何在功能丰富的LabelStudio平台上,集成高效的轻量级模型MobileSAM,搭建一套“指哪打哪”的交互式智能标注流程。通过本实践,您将能快速为自己的标注项目注入AI动力,实现点击即可生成高质量掩码的流畅体验。


一、安装LabelStudio

为了避免与之前的环境冲突先创建虚拟环境,创建好之后进行激活

conda create -n labelstudio python=3.10
conda activate labelstudio

在激活的环境pip下载labelStudio

pip install label-studio

等得下载完成即可进行使用

label-studio start

如果因为宿主机上的端口存在冲突可以以特定端口启动

label-studio start --port 8089

之后便可以通过ip地址进行访问,如均在内网,如部署的服务器ip地址是10.134.2.29,如果是本机部署本机访问通过localhost访问即可

http://10.134.2.29:8089

在这里插入图片描述
访问进去先进行注册,注册成功的第一位用户自动成为管理员,可以进行分配账号,管理项目,监控任务等操作。
在这里插入图片描述

二、配置Sam/MobileSam辅助标注工具

1.clone相关代码及配置

git clone https://github.com/HumanSignal/label-studio-ml-backend.git
cd label-studio-ml-backend/label_studio_ml/examples/segment_anything_model

克隆完成之后进入相关目录

2.LabelStudio页面查看Token

打开Home主页,点击右上角的“API Tokens Settings”
在这里插入图片描述
开启Legacy Tokens
在这里插入图片描述
查看API Token ,点击右上角头像,进入个人主页
在这里插入图片描述
复制该处的Token,之后配置文件修改需要使用

修改docker-compose.yml

进入第一步克隆的配置资源所在路径下,点击docker-compose.yml文件
在这里插入图片描述
在这里插入图片描述
将文件修改之后保存
在该路径之下,拉取镜像
在这里插入图片描述

docker compose pull

拉取成功之后,运行开启服务

docker compose up -d

在这里插入图片描述
成功拉起服务

创建分割项目以及配置SAM模型

正常按照LabelStudio操作进行项目的创建,数据的上传,选择标注类型的时候分割任务可以按照需求选择第一个或者第二个,此时选择第二个
在这里插入图片描述
注意,进来之后请参照该模板按需修改,才能开启对应的智能辅助标注
在这里插入图片描述
修改成类似如下的格式,可以根据自己需要的类别进行扩充,此处开启了点,框选,等四种只能辅助分割标注工具,最重要的是保持smart=true,注意此处标注的标签生成是mask,逐像素给确定的类别,如果需要修改成多边形可以进行一定的调整

<View>
  <Image name="image" value="$image" zoom="true"/>

  <!-- KeyPointLabels:开启智能交互 -->
  <KeyPointLabels name="KeyPointLabels" toName="image">
    <Label value="paking lot" smart="true" background="#FFA39E" showInline="true"/>
    <Label value="river" smart="true" background="#D4380D" showInline="true"/>
    <Label value="road" smart="true" background="#FAAD14" showInline="true"/>
  </KeyPointLabels>

  <!-- RectangleLabels:开启智能交互 -->
  <RectangleLabels name="RectangleLabels" toName="image">
    <Label value="paking lot" background="#FFA39E"/>
    <Label value="river" background="#D4380D"/>
    <Label value="road" background="#FAAD14"/>
  </RectangleLabels>

  <!-- PolygonLabels:开启智能交互 -->
  <PolygonLabels name="PolygonLabels" toName="image" smart="true" strokeWidth="3" pointSize="small" opacity="0.9">
    <Label value="paking lot" background="#FFA39E"/>
    <Label value="river" background="#D4380D"/>
    <Label value="road" background="#FAAD14"/>
  </PolygonLabels>

  <!-- BrushLabels:开启智能交互 -->
  <BrushLabels name="BrushLabels" toName="image" smart="true" showInline="true">
    <Label value="paking lot" background="#FFA39E"/>
    <Label value="river" background="#D4380D"/>
    <Label value="road" background="#FAAD14"/>
  </BrushLabels>
</View>

接入模型,点击刚创建好的项目右上角的三个点,进入设置settings,选择model,输入之前docker启动的端口号的url即可成功连接
在这里插入图片描述

这里的模型名字对应docker-compose.yml开启的模型名字即可

使用AI辅助标注工具进行标注

在这里插入图片描述
按照图示操作即可得到掩膜,具体操作和效果还有待进一步分析,目前体验感来说不如CVAT


总结

LabelStudio与SAM的结合,为图像分割标注带来了范式上的转变。它通过“指哪打哪”的智能交互,将标注者从繁重的手工勾勒中解放出来,实现了标注效率的数量级提升。这一组合极大地降低了操作门槛,并能凭借SAM强大的零样本能力,快速处理各种未知类别与复杂形状,展现出卓越的通用性。

然而,这套方案并非全能。其优势主要体现在处理“常规案例”上,当面对边缘模糊、透明物体或需要亚像素级精度的专业场景时,SAM的预测可能不尽如人意,有时修正其错误甚至比手动标注更耗时。因此,它更像是一个强大的“力量倍增器”,虽能大幅加速主体流程,但在关键细节上仍离不开标注专家的判断与微调,是效率与精准度之间一次成功的权衡。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐