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

news2025/1/8 4:25:29

文章目录

  • 一、半自动标注
  • 二、缺点
  • 三、安装方法
    • 1、 python版本要求
    • 2、下载playground
    • 3、SAM安装
    • 4、SAM权重下载
    • 5、安装label-studio-ml
    • 6、启动SAM接口
    • 7、SAM启动日志
    • 8、安装并启动label-studio
    • 9、label-studio启动日志
  • 四、半自动标注使用方法
    • 1、创建project并导入数据
    • 2、标签设置
    • 3、大模型设置
    • 4、标注
    • 5、标注物导出
  • 五、总结

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

一、半自动标注

  我们知道,分割任务标注的数据,需要沿着物体边界框选物体,这时候需要用鼠标点击多个点,形成一个多边形框住目标。相对于目标检测拉取一个目标框,分割的标注是更为耗时的。
  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即可选择所需格式进行保存
在这里插入图片描述

五、总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1258545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多元系的复相平衡

多元系的复相平衡 多元系的吉布斯函数 G-{T,p,n}系统 吉布斯关系 多元系的热力学基本方程

使用Three.js创建导航立方体

什么是导航立方体? 导航立方体是一个交互式的3D控件,它允许用户通过点击和拖动立方体的各个面来改变3D视图的方向。这是一种非常直观的方式,让用户能够轻松地在3D空间中导航。 创建导航立方体 下面是一个基本的步骤,说明如何使用Three.js创建一个导航立方体: // 创建场景…

ICCV 2023 | 动态蛇形卷积(内含即插即用的代码及测试用例)

论文链接&#xff1a; https://arxiv.org/abs/2307.08388 代码链接&#xff1a; https://github.com/YaoleiQi/DSCNet 下面直接上代码&#xff0c;并且源码中也给了测试用例&#xff0c;是一个即插即用的模块 import os import torch import numpy as np from torch impor…

怎么做excel表格的二维码?文件快速做二维码的教程

Excel表格怎么做成二维码来扫码插看呢&#xff1f;Excel是工作中常用的一种文件格式&#xff0c;想要将表格内容分享给其他人查看&#xff0c;那么将表格生成二维码的方法会更加的方便快捷&#xff0c;其他人只需要扫描二维码就可以查看或者下载文件。表格excel二维码可以通过文…

Rust语言入门教程(六) - 字符串类型

在Rust中&#xff0c; 字符串类型其实是一个比较复杂的话题。在Rust的标准库中&#xff0c;至少都提供了6种字符串类型&#xff0c;我们平常使用的最多的是其中的两种。这两种类型互相之间也有所关联&#xff1a; str&#xff1a; 字符串切片String 字符串 其中&#xff0c; 字…

细说数据仓库上篇

在谈数仓之前&#xff0c;先来看下面几个问题&#xff1a; 数仓为什么要分层&#xff1f; 用空间换时间&#xff0c;通过大量的预处理来提升应用系统的用户体验&#xff08;效率&#xff09;&#xff0c;因此数据仓库会存在大量冗余的数据&#xff1b;不分层的话&#xff0c;…

高效运维管理的7个要点

T管理和运维工作涵盖了各行业的各岗位中&#xff0c;如何提高工作效率&#xff0c;规避风险&#xff0c;更好的做好IT管理和运维工作&#xff0c;已经成为一个不断探索和研究的新兴课题。因此&#xff0c;应从两个层面加强和完善IT管理和运维工作&#xff0c;可以改善IT运维工作…

为什么要编写测试用例,自己知道不就行了吗

“为什么要编写测试用例&#xff0c;测试用例写给谁看”&#xff0c;这个问题看似简单&#xff0c;但却涵盖了一系列复杂的考虑因素&#xff0c;并不太好回答。 为了向各位学测试的同学们解释清楚“为什么编写测试用例是至关重要的”&#xff0c;我将通过以下5个方面进行展开&…

MySQL-05-MySQL的日志系统

1-redo log(重做日志) 在MySQL里也有这个问题&#xff0c;如果每一次的更新操作都需要写进磁盘&#xff0c;然后磁盘也要找到对应的那条记录&#xff0c;然后再更新&#xff0c;整个过程IO成本、查找成本都很高。MySQL里经常说到的WAL技术&#xff0c;WAL的全称是Write-Ahead L…

pmos防反保护电路的设计,pmos烧毁原因分析

概述 汽车电源系统常在极为恶劣的环境下运行&#xff0c;数以百计的负载挂在汽车电池上&#xff0c;需要同时确定负载状态的汽车电池可能面临极大的挑战。当负载处于不同工作条件和潜在故障状态时&#xff0c;设计人员需要考虑电源线产生的各种脉冲可能带来的影响。 本系列的上…

VSD Viewer for Mac(Visio绘图文件阅读器)

VSD Viewer for Mac版是mac上一款非常强大的Visio绘图文件阅读器&#xff0c;它为打开和打印Visio文件提供了简单的解决方案。可以显示隐藏的图层&#xff0c;查看对象的形状数据&#xff0c;预览超链接。还可以将Visio转换为包含图层&#xff0c;形状数据和超链接的PDF文档。 …

RHEL开发者授权注册

$ sudo subscription-manager register --usernameusername --passwordpassword$ sudo subscription-manager attach --auto查看是否注册 Red Hat 订阅管理&#xff0c;请运行以下命令&#xff1a; $ sudo subscription-manager list --installed

mysql账户密码获取

数据库安装目录 MySQL\data\mysql 里面的user.MYD文件&#xff0c;需要编译查看 数据库里的user表 库下面的user表拿到后&#xff0c;直接解密密码即可 网站配置文件 conn、config、data、sql、common 、inc这些文件 比如pikachu\inc目录下的config.inc.php文件的内容会显示…

详解如何使用VSCode搭建TypeScript环境(适合小白)

搭建Javascript环境 因为TypeScript不能直接在浏览器上运行。它需要编译器来编译并生成JavaScript文件。所以需要首先安装好javascript环境&#xff0c;可以参考文章&#xff1a; 详解如何使用VS code搭建JavaScript环境&#xff08;适合小白&#xff09;_vscode配置javascri…

从 15000 家参赛企业脱颖而出,涛思数据荣获中国创新创业大赛“优秀企业”

近年来&#xff0c;以大数据、人工智能、物联网、新型显示、高性能集成电路、5G通信、云计算等为代表的创新技术加速突破应用&#xff0c;在传统行业的数字化转型进程中发挥着重要作用&#xff0c;催生出一系列新产品、新技术、新业态&#xff0c;形成了强劲的数字经济发展新动…

单细胞featureplot美化修改-自定义修改图片样式-umap密度图画等高线

大家好&#xff0c;欢迎来的单细胞图片美化专辑 1.如何修改seruat对象的行名 2.FeaturePlot如何把所有阳性表达的spot放到图的前面 在单细胞实践中&#xff0c;我发现不同的客户对画图需求并不一致&#xff0c;这可能和个人审美有关吧。本专辑着重于各种各样的单细胞个性化绘…

冯·诺依曼体系结构和操作系统

目录 一、冯诺依曼体系结构 1、初见结构 2、对体系结构的理解 3、总结 二、操作系统 1、概念 2、作用 一、冯诺依曼体系结构 1、初见结构 数学家冯诺依曼提出了计算机制造的三个基本原则&#xff0c;即采用二进制逻辑、程序存储执行以及计算机由五个部分组成&#xff08…

【C语言】优化通讯录管理系统2

本篇博客是基于上一篇博客写出来的&#xff0c;了解上一篇博客 大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家再次优化上一篇的通讯录&#xff0c;实现将录入的数据在程序退出后存储到文件中&#xff0c;在下一次程序开始时打开文件获取数据&#xff0c;如果你觉得我写…

耶鲁博弈论笔记

编辑记录&#xff1a; 1126&#xff1a;开个新坑&#xff0c;耶鲁大学的博弈论课程&#xff0c; 和专业相关不大&#xff0c;纯兴趣&#xff0c;尽量写好一点吧 1. 首先指出博弈论是一种研究策略形式的方法&#xff0c;对于经济学中&#xff0c;完全竞争市场只能被动接受均衡…

浏览器中实现可视化的方式有哪几种?带你盘点一下

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热衷分享有趣实用的文章&#xff0c;希望大家多多支持&#xff0c;一起进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 可视化的含义 浏览器中实现可视化的4种方式 1. HTMLCSS 2. SVG …