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

文章目录

  • 一、半自动标注
  • 二、缺点
  • 三、安装方法
    • 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.mzph.cn/news/174031.shtml

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

相关文章

P8A002-CIA安全模型-配置Linux描述网络安全CIA模型之可用性案例

【预备知识】 可用性(Availability) 数据可用性是一种以使用者为中心的设计概念,易用性设计的重点在于让产品的设计能够符合使用者的习惯与需求。以互联网网站的设计为例,希望让使用者在浏览的过程中不会产生压力或感到挫折,并能让使用者在使用网站功能时,能用最少的努力…

请问大家在都在什么场景用到嵌入式数据库?

请问大家在都在什么场景用到嵌入式数据库&#xff1f; 嵌入式数据库在许多场景中都有广泛的应用。这些数据库通常被设计成轻量级、占用资源少且易于集成到其他应用程序中。以下是一些常见的场景和领域&#xff0c;在这些场景中嵌入式数据库被广泛使用&#xff1a;最近很多小伙伴…

记录一个mqtt错误

在vue-admin-template 中引入mqtt 安装不报错&#xff0c;引入试过 import mqtt from mqtt import * as mqtt from mqtt/dist/mqtt.min; import {connect} from mqtt 一直报错&#xff1a; 就表示不理解&#xff0c;网上也没查到相应的资料&#xff0c;请告诉我我不是第一个遇…

FTP服务器搭建

1.FTP服务器概述 FTP服务器&#xff08;File Transfer Protocol Server&#xff09;是一种提供文件传输服务的服务器。FTP是一种标准的网络协议&#xff0c;用于在计算机之间进行文件传输。FTP服务器允许用户通过FTP协议上传、下载、删除和管理文件&#xff0c;从而使文件在不同…

【面经八股】搜广推方向:面试记录(三)

【面经&八股】搜广推方向:面试记录(三) 文章目录 【面经&八股】搜广推方向:面试记录(三)1. 编程题1.1 大数乘法1.2 大数加法2. 项目介绍3. 有了解过的广告推荐模型吗4. 广告模型回归问题1. 编程题 上来直接写编程题,有点儿懵逼。 1.1 大数乘法 可以参考 该博…

如何在Node.js和Express中设置TypeScript(2023年)

如何在Node.js和Express中设置TypeScript&#xff08;2023年&#xff09; 在这篇文章中&#xff0c;我们将介绍在Express应用程序中设置TypeScript的最佳方法&#xff0c;了解与之相关的基本限制。 文章目录 如何在Node.js和Express中设置TypeScript&#xff08;2023年&#x…

中国城市数字经济发展对环境污染的影响及机理研究(2011-2021年)

参照张翱祥&#xff08;2022&#xff09;的做法&#xff0c;本团队对来自南方经济《中国城市数字经济发展对环境污染的影响及机理研究》一文中的基准回归部分进行复刻 参考赵涛&#xff08;2020&#xff09;计算&#xff0c;PM2.5根据Atmospheric Composition Analysis Group计…

案例033:基于微信小程序的商品展示系统设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

巴菲特清仓Paytm,亏损62亿卢比

KlipC报道&#xff1a;伯克希尔哈萨韦清仓其在印度“支付宝”Paytm的股份。 KlipC的合伙人Andi D表示&#xff1a;“据公开资料显示&#xff0c;伯克希尔.哈萨韦于2018年斥3亿美元巨资收购Paytm2.6%的股份&#xff0c;沃伦巴菲特公司于2021年出售Paytm 价值3600万美元的股份&am…

卡码网语言基础课 | 14. 链表的基础操作Ⅱ

题目&#xff1a; 构建一个单向链表&#xff0c;链表中包含一组整数数据&#xff0c;输出链表中的第 m 个元素&#xff08;m 从 1 开始计数&#xff09;。 要求&#xff1a; 1. 使用自定义的链表数据结构 2. 提供一个 linkedList 类来管理链表&#xff0c;包含构建链表、输出…

【多属性对象“{a:1,b:2}”】与【单属性对象的数组“[{a:1},{b:2}]”】的相互转换

前端开发的某些场景&#xff08;比如用echarts开发某些可视化图表&#xff09;经常需要将【多属性对象&#xff0c;如“{a:1,b:2}”】与【单属性对象的数组&#xff0c;如“[{a:1},{b:2}]”】做相互转换&#xff0c;以下是不通过循环&#xff0c;简洁实现这种转换的方法&#x…

支持向量机的算法原理

支持向量机&#xff08;Support Vector Machine&#xff0c;简称SVM&#xff09;是机器学习领域中一种常用的分类算法&#xff0c;它基于统计学习理论和结构风险最小化原则&#xff0c;具有很强的理论基础和良好的分类性能。本文将详细介绍支持向量机的算法原理&#xff0c;并解…

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

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

好用到难以置信的全域BI:揭秘店铺服务从优秀到卓越的3个办法

双11刚结束&#xff0c;一些平时易忽略的问题被放大出来&#xff0c;发现问题不可怕&#xff0c;可怕的是无视。如果您还没想好接下来怎么调整&#xff0c;本篇介绍的「全域BI-服务」定会给您一些思路。 过往&#xff0c;传统客服服务的管理仍停留于人工操作阶段&#xff0c;企…

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

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

sqli-labs(5)

23. 判断是注释符被过滤了我们用‘1’‘1来闭合后面的’ 这里不能使用order by来判断列数直接通过union select来判断 -1 union select 1,2,3 and 11 -1 union select 1,(select group_concat(table_name) from information_schema.tables where table_schemasecurity) ,3 an…

如何使用cpolar+Jellyfin自建私人影音平台【内网穿透】

&#x1f3a5; 个人主页&#xff1a;深鱼~ &#x1f525;收录专栏&#xff1a;cpolar &#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpo…

SpringBoot参数校验@Validated和@Valid的使用

1、Validated和Valid区别 Validated&#xff1a;可以用在类、方法和方法参数上。但是不能用在成员属性&#xff08;字段&#xff09;上Valid&#xff1a;可以用在方法、构造函数、方法参数和成员属性&#xff08;字段&#xff09;上 2、引入依赖 Spring Boot 2.3 1 之前&…

Linux多线程基本概念

目录 ​编辑 1.什么是进程&#xff0c;线程&#xff0c;并发&#xff0c;并行 优点 缺点 什么资源是线程应该私有的呢 为什么线程切换成本更低呢 3.线程控制 pthread_create lpthread选项 makefile 代码实现 ps -aL 什么是LWP 轻量级进程ID与进程ID之间的区别 LWP与pthr…

软件测试行情堪忧,测试行业将迎来低谷?

前两天跟一个HR朋友聊天&#xff0c;她表示刚在boss上发布了一个普通测试岗位&#xff0c;不到一小时竟然收到了几百份简历。而且简历质量极高&#xff0c;这是往年不敢想象的。岗位少&#xff0c;竞争激烈&#xff0c;这是今年软件测试就业的真实写照&#xff0c;也是所有岗位…