分割一切?手把手教你部署SAM+LabelStudio实现自动标注

一,前言

最近Open-mmlab开源了Playground项目,将最近引起CV界轰动的SAM(Segment Anything Model)模型和Open-mmlab多个视觉框架相结合,可实现多种视觉任务的自动标注,本文将采用Open-mmlab的Playground开源项目,使用SAM和LabelStudio,实现分割任务的半自动标注。
1,Playground官方GitHub地址:
https://github.com/open-mmlab/playground
2,SAM官方GitHub地址:https://github.com/facebookresearch/segment-anything

二,SAM+LabelStudio实现自动标注

经过实测,该项目在Windows10和Linux系统,使用CPU和GPU都可实现部署。

2.1,采用Anaconda创建虚拟环境(python3.9)

创建python3.9版本的基础虚拟环境,虚拟环境名称为rtmdet-sam

conda create -n rtmdet-sam python=3.9 -y

2.2,激活Anaconda虚拟环境

conda activate rtmdet-sam

2.3,下载playground的github库

git clone https://github.com/open-mmlab/playground

注:若因为网络问题git失败,可下载项目解压到本地

2.4,环境配置

2.4.1,安装Pytorch

1,Linux and Windows CUDA 11.3(GPU版本)

pip install torch==1.10.1+cu113 torchvision==0.11.2+cu113 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu113/torch_stable.html

2,Linux and Windows CPU only(CPU版本)

pip install torch==1.10.1+cpu torchvision==0.11.2+cpu torchaudio==0.10.1 -f https://download.pytorch.org/whl/cpu/torch_stable.html

3,OSX

pip install torch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1

2.4.2,安装工具包

安装opencv-python,pycocotools,matplotlib,onnxruntime,onnx,这里需要注意以下Windows系统安装pycocotools时记得先安装git和visual studio。

pip install opencv-python pycocotools matplotlib onnxruntime onnx

2.4.3,安装SAM

pip install git+https://github.com/facebookresearch/segment-anything.git

注:若因为网络问题git失败,可下载项目解压到本地

2.4.4,下载SAM预训练权重

可下载以下几个预训练权重文件,文件从小到大依次排列,越大的模型分割效果越好,但是分割时间也越长,建议先使用最小的模型试试效果,目前实测最小的模型分割效果也很不错。
1,sam_vit_b_01ec64.pth
2,sam_vit_l_0b3195.pth
3,sam_vit_h_4b8939.pth

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

2.4.5,安装label-studio

pip install label-studio

2.4.6,安装label-studio-ml-backend

pip install label-studio-ml

2.5,启动SAM后端并加载模型

1,cd到label_anything目录下

cd label_anything

2,启动SAM后端并加载模型

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

注:
1,sam_checkpoint_file=.\sam_vit_b_01ec64.pth,这里为SAM预训练模型路径,指定为你自定义的路径;
2,device=cpu使用CPU,device=cuda:0使用GPU;
3,out_poly=True 表示保存结果的时候会保存分割的polygon标注信息;
4,out_mask=True 表示保存结果的时候会保存分割的Mask信息;
5,out_bbox=True 表示保存结果的时候会保存分割的边界框标注信息;
6,sam_config=vit_b和使用的模型预训练权重相对应

在这里插入图片描述
此时,SAM后端推理服务已经启动。接下来,您可以在Label-Studio Web系统中配置http://localhost:8003后端推理服务。上述终端窗口需要保持打开状态。

2.6,启动Label-Studio的Web服务

1,若需要使用vit-h大模型,则需要设置以下环境变量,但是大模型加载时间很长,容易导致与后端连接超时。如果不使用则跳过该步骤,不然会导致与后端连接超时。

Linux requires the following commands
export ML_TIMEOUT_SETUP=40
Windows requires the following commands
set ML_TIMEOUT_SETUP=40

2,启动Web服务

label-studio start

在这里插入图片描述
打开浏览器并访问http://localhost:8080/以查看Label-Studio平台界面,一般会自动跳转。

2.7,注册或登录

启动Web服务到Label Studio平台后,如果之前没有注册,需要进行注册再登陆。
在这里插入图片描述

2.8,新建一个项目

在这里插入图片描述

2.9,导入本地数据

在这里插入图片描述

或者下载官方提供的数据:

wget https://download.openmmlab.com/mmyolo/data/cat_dataset.zip

在这里插入图片描述

2.10,设置标签

在Settings/Labeling界面中配置Label-Studio关键点、掩码和其他标注信息。在示例图中,KeyPointLabels用于关键点标注,BrushLabels用于掩码标注,PolygonLabels用于边界多边形标注,RectangleLabels用于矩形标注。这个例子使用了两个类别,cat和person,自定义数据集的话只需要将类别改为你自定义的类别即可。
在这里插入图片描述
将上面的XML复制并添加到Label-Studio,然后单击Save。

<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>

2.11,添加OpenMMLabPlayGround后端推理服务

设置并单击Add Model添加openmmlabgame后端推理服务。为SAM后端推断服务设置URL,启用Use for interactive preannotations,即自动标注开关,并单击Validate和Save。
在这里插入图片描述

出现以下界面说明添加后端推理服务成功
在这里插入图片描述

注:如果您在此步骤中无法成功执行,可能是因为你使用的模型和你使用的sam_config不匹配造成的,详情可以看一下2.5和2.6中,同时请检查在步骤2.6中有没有配置环境变量,使用vit_b模型,是不需要配置的,如果配置了,请重新启动SAM后端服务,然后跳过配置环境变量,直接启动服务。

2.12,开始半自动标注

回到项目界面,单击Label开始标注
在这里插入图片描述
要使用自动标注功能,需要打开Auto- annotation开关,并建议勾选Auto accept annotation建议选项。然后单击右侧工具栏最下面的按钮,可以切换点、框、矩形框等模式,默认为点模式,并从下面的标签选项中选择你想要标注的类别,在本例中选择“猫”。

1,点模式(在目标中画个点即可自动标注)
在这里插入图片描述
2,矩形框模式(在目标中画个框即可自动标注)
在这里插入图片描述
注:在切换点模式或者框模式的时候,左下角那个选择类别的地方,有两行选择类别的小按钮,是按照点,框模式的顺序排列的,你选择什么模式,你选择下面的类别的时候也要按顺序来,比如选择的点模式,就选择第一行按钮的类别,选择框模式,就选择第二行按钮的类别

2.13,保存标注结果

标注完所有图片后,点击export,以COCO格式(可选)导出带标注的数据集,生成带标注的压缩文件。
在这里插入图片描述
你可以使用VS Code打开解压后的文件夹,看到带标注的数据集,其中包括图像和带标注的JSON文件。
在这里插入图片描述
最后,若文章有任何问题,欢迎大家批评指正,可在评论区留言一起讨论!

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

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

相关文章

老婆饼真有老婆,驴肉火烧有头驴--文言一心

困扰大家很久的问题&#xff1a;老婆饼里为啥没老婆&#xff0c;鱼香肉丝里为啥没有鱼。 最近&#xff0c;百度推出自己的AI大模型“文心一言”&#xff0c;李彦宏在发布会上表示&#xff0c;目前百度是全球大厂中第一个做出对标ChatGPT产品的企业。 有网友让文心一言作画&…

【2023,学点儿新Java-15】案例分享:基于Java实现餐厅点餐系统(附完整源代码)

前情回顾&#xff1a; 【2023&#xff0c;学点儿新Java-14】携程面试题&#xff1a;如何看待Java是一门半编译半解释型的语言&#xff1f;| 咨询互联网行业 资深前辈的一些问题 | 附&#xff1a;为什么说ChatGPT的核心算法是…&#xff1f;| GPT-3.5【2023&#xff0c;学点儿新…

文心一言作画:有点东西但不多...

随着ChatGPT的持续火热 与AI领域有关的话题 是越来越热闹了 前几天百度发布 “文心一言” 自然也成了网友们 重点关注的对象 不过大家的目光主要还是集中在 文心一言的绘画功能上 在人工智能加成下出来的画面 一个比一个绝 成功颠覆 大家对绘画的认知 生意火爆的商铺…

网传文心一言的魔性作图,有点被吓到...

来源&#xff1a;菜鸟教程 近日看到网友们用百度文心一言来作图&#xff0c;看了后我都愣住了。。。 1、AI 作画 -- 车水马龙 2、AI 作画 -- 驴肉火烧 3、AI 作画 -- 唐伯虎点秋香 4、AI 作画 -- 鱼香肉丝 5、AI 作画 -- 胸有成竹 6、AI 作画 -- 夫妻肺片 7、AI 作画 -- 红烧狮…

文心一言的魔性作图,我愣住了。。。

点关注公众号&#xff0c;回复“1024”获取2TB学习资源&#xff01; 最近&#xff0c;百度推出自己的AI大模型“文心一言”&#xff0c;李彦宏在发布会上表示&#xff0c;目前百度是全球大厂中第一个做出对标 ChatGPT 产品的企业。 但是&#xff0c;今天看到网友们用它来作图&a…

那些在学习GPT的过程中学到的

1、大模型是什么 GPT横空出世之后&#xff0c;大模型火了&#xff0c;什么是大模型呐&#xff1f; 大模型通常指的是具有大规模参数和复杂结构的深度学习模型。它们的设计和结构可以因任务而异&#xff0c;但以下是一些常见的大模型结构&#xff1a; Transformer&#xff1a…

LangChain 介绍及相关组件使用总结

一、langChain LangChain 是一个由语言模型LLMs驱动的应用程序框架&#xff0c;它允许用户围绕大型语言模型快速构建应用程序和管道。 可以直接与 OpenAI 的 ChatGPT 模型以及 Hugging Face 集成。通过 langChain 可快速构建聊天机器人、生成式问答(GQA)、本文摘要等应用场景。…

第一代AIGC硬件悄然爆发

文 | 智能相对论 作者 | 叶远风 看起来&#xff0c;这可能是一副正常的黑框眼镜&#xff0c;你戴上去彬彬有礼、斯斯文文&#xff1b; 实际上&#xff0c;它里边还装了一个“小伙伴”&#xff0c;你随时可以与它交流&#xff0c;谈天说地或者提出各种问题接受它的帮助&#x…

chatgpt赋能python:小黑框:Python程序员必备利器

小黑框&#xff1a;Python程序员必备利器 如果您是一名Python程序员&#xff0c;小黑框&#xff08;Terminal&#xff09;一定不陌生。小黑框是一种基于文本的用户界面&#xff0c;通常用于执行命令行任务&#xff0c;编写或调试代码等。Python程序员可以通过小黑框完成许多任…

游戏开发中防外挂的那些事儿

对于一个要上线的游戏&#xff0c;防外挂是必须的&#xff0c;历史上因为外挂而造成大量玩家流失的游戏数不胜数。随着游戏研发技术的发展&#xff0c;对外挂的预防业内其实做的已经越来越好了。下面总结一下防外挂的基础知识&#xff0c;以及我们的移动模块为防外挂做了哪些工…

游戏反外挂技术原理讲解

永远在路上 没有破解不了的反外挂系统&#xff0c;反外挂是一个对抗过程&#xff0c;需要不断升级。我们反外挂小组会采取对抗方式提升防御&#xff0c;也会研究竞品来获取灵感。反外挂也是非常有意思的&#xff0c;可以学到很多很多底层知识。 善战者无赫赫之功 反外挂&#x…

各网游的外挂是如何做出来的?

每一个致力于学习黑客技术的人&#xff0c;最后都分为三种人。 第一种&#xff1a;入侵&#xff0c;各种入侵&#xff0c;玩的就是入侵的快感&#xff0c;或者恶作剧的喜感&#xff0c;或者那种有特殊“窥视”癖好的人……别误会&#xff0c;小编我是喜欢“恶作剧&#xff0c;…

干货!什么是游戏外挂,外挂的种类及实现原理

外挂&#xff0c;原指一切用来破坏游戏程序正常游戏数据和逻辑的工具或破解版。比如可以修改游戏内存数据的修改器&#xff0c;又比如可以修改网络数据包的抓包工具。这类外挂或多或少会影响游戏的内存数据、文件数据、网络数据&#xff0c;甚至代码逻辑。 但随着外挂市场的发…

游戏外挂怎么做?

文章目录 1.什么是游戏外挂2.外挂的分类及实现原理2.1 辅助类外挂2.2 专用插件类外挂2.3 通用工具2.4 内存修改器2.5 变速器2.6 按键精灵2.7 模拟器2.8 破解版 转载自&#xff1a;Anti-Cheat Expert 游戏安全专家 干货&#xff01;什么是游戏外挂&#xff0c;外挂的种类及实现原…

哈夫曼树 例题

假设某棵二叉树有N个叶结点。给定这些叶结点的权值&#xff0c;求所有可能的二叉树中带权路径长度&#xff08;WPL&#xff09;的最小值。 注&#xff1a; 结点的带权路径长度&#xff08;WPL&#xff09;&#xff1a;结点的权值乘以该结点的深度&#xff08;假设根节点的深度…

svn更新/提交代码提示错误 , 进行清理下“破除写锁操作“

1.如果svn提交或者更新代码有--进行清理下"破除写锁操作"--此提示,一般情况下右键,然后选择进行确定就可以 2.如果还不行的话,在项目下的 .svn 文件夹里面新建文件夹,命名为tmp,然后重新更新,提交,就会发现问题解决了

2022年深圳杯数学建模A题代码思路-- 破除“尖叫效应”与“回声室效应”,走出“信息茧房”

问题重述&#xff1a; 在全新的信息传播格局下&#xff0c;如何破除“尖叫效应”与“回声室效应”&#xff0c;走出“信息茧房”&#xff0c;是当前迫切需要解决的现实问题&#xff0c;即如何从信息传输的顶层设计、推荐算法的公平性和广大网络用户的责任担当等方面&#xff0…

钉钉最新点赞破除限制方法(

我不是标题党&#xff01; 首先&#xff0c;放图片&#xff08;&#xff08;&#xff08; 时间这里是录视频的时间&#xff0c;2021-8-27&#xff0c;不是标题党&#xff01; 上方法&#xff01; 主要原理&#xff1a;利用抓包抓到的点赞api端口&#xff0c;实现持续点击或…

亚马逊云科技 Build On -Serverless低代码平台初体验-快速完成vue前端订单小程序

文章目录 一、我所认识的低代码平台二、Serverless的使用场景三、拖拉跩实现build on 的Serverless1. 使用图像界面创作方法2. 拖拉跩模块实现搭建3. 实时测试流程是否正确4. 最终的设计和流程图 四、创建端到端的基于vue的前端图形化界面六、总结与活动链接 一、我所认识的低代…

一小段Python代码,破解加密zip文件的密码

Python 有一个内置模块 zipfile 可以解压 zip 压缩包。先来测试一波&#xff1a;创建一个测试文件&#xff0c;压缩&#xff0c;设置解压密码为123。 import zipfile# 创建文件句柄 file zipfile.ZipFile("测试.zip", r) # 提取压缩文件中的内容&#xff0c;注意密码…