labelme AI 模型运用

news2024/11/25 14:35:37

一、lebelme

1、界面介绍

在这里插入图片描述
点击上图位置,选择对应的模型。这里我每个模型都测试了一下,EfficientSam这个模型最好用,准确率和速度都ok。

2、使用方法

  • 目标框标注方法:点左上角【编辑】-> 【Create Ai-Mask】就可以标志了,这个是标注的mske区域和目标框。但是mask区域无法修改,等同于获取目标框。目标检测项目标注方法。

  • 目标mask注方法:点左上角【编辑】-> 【Create Ai-Polygon】标注的是mask区域,这个区域是可以修改的,一般是用作语义分割等任务。

单击左键选择目标,双击左键目标标注就完成了,此时会出现选择目标标签的选项了。

二、模型介绍

注意,有encoder和decoder 两个。建议直接用EfficientSam (accuracy)对应的模型。

1、模型下载地址

# 模型下载地址

# sam_vit_b  "SegmentAnything (speed)"
url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_b_01ec64.quantized.encoder.onnx",  
md5="80fd8d0ab6c6ae8cb7b3bd5f368a752c",
url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_b_01ec64.quantized.decoder.onnx",   
md5="4253558be238c15fc265a7a876aaec82",


# sam_vit_l   "SegmentAnything (balanced)"
url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_l_0b3195.quantized.encoder.onnx", 
md5="080004dc9992724d360a49399d1ee24b",
url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_l_0b3195.quantized.decoder.onnx",  
 md5="851b7faac91e8e23940ee1294231d5c7",


# sam_vit_h   "SegmentAnything (accuracy)"    这个模型效果可以,速度巨慢
url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_h_4b8939.quantized.encoder.onnx",    
md5="958b5710d25b198d765fb6b94798f49e",
url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_h_4b8939.quantized.decoder.onnx",   
md5="a997a408347aa081b17a3ffff9f42a80",


# efficient_sam_vitt  "EfficientSam (speed)"
url="https://github.com/labelmeai/efficient-sam/releases/download/onnx-models-20231225/efficient_sam_vitt_encoder.onnx",  
md5="2d4a1303ff0e19fe4a8b8ede69c2f5c7",
url="https://github.com/labelmeai/efficient-sam/releases/download/onnx-models-20231225/efficient_sam_vitt_decoder.onnx",  
md5="be3575ca4ed9b35821ac30991ab01843",


#  efficient_sam_vits  "EfficientSam (accuracy)"     这个模型速度和效果都非常不错,建议直接用这个
url="https://github.com/labelmeai/efficient-sam/releases/download/onnx-models-20231225/efficient_sam_vits_encoder.onnx",  
md5="7d97d23e8e0847d4475ca7c9f80da96d",
url="https://github.com/labelmeai/efficient-sam/releases/download/onnx-models-20231225/efficient_sam_vits_decoder.onnx",  
md5="d9372f4a7bbb1a01d236b0508300b994",


2、模型保存位置

下载模型后,放到 /home/wqg/.cache/gdown 下,需要注意一下,要把模型的名称修改一下。

SegmentAnything系列,模型名称加上这个:

https-COLON--SLASH--SLASH-github.com-SLASH-wkentaro-SLASH-labelme-SLASH-releases-SLASH-download-SLASH-sam-20230416-SLASH-

EfficientSam 系列,模型名称前加上这个:

https-COLON--SLASH--SLASH-github.com-SLASH-labelmeai-SLASH-efficient-sam-SLASH-releases-SLASH-download-SLASH-onnx-models-20231225-SLASH-

最后的模型如下:
在这里插入图片描述

这里已经可以使用了,不过推荐模型有一点点慢,后面使用GPU加速后推荐模型推理非常快。

三、使用onnxruntime-GPU 做模型推理

模型推理需要安装cuda和cudnn。安装问题可以自己百度一下。推荐模型推理,大概占用显存4G左右。

1、代码位置。

安装好labelme后,记住安装的位置,一般存在anaconda的环境下,在对应环境下找site-packages。由于我是装在.local下。所以我的是如下位置。
在这里插入图片描述
打开后会有一个ai的文件夹。
在这里插入图片描述

找到 efficient_sam.pysegment_anything_model.py 文件,修改对应的 init 方法即可

# segment_anything_model.py
class SegmentAnythingModel:
    def __init__(self, encoder_path, decoder_path):
        self._image_size = 1024

		# 修改后
        providers = ['CUDAExecutionProvider','CPUExecutionProvider']   # if cuda else ['CPUExecutionProvider']
        self._encoder_session = onnxruntime.InferenceSession(encoder_path, providers=providers)
        self._decoder_session = onnxruntime.InferenceSession(decoder_path, providers=providers)

		#修改前
        # self._encoder_session = onnxruntime.InferenceSession(encoder_path)
        # self._decoder_session = onnxruntime.InferenceSession(decoder_path)

        self._lock = threading.Lock()
        self._image_embedding_cache = collections.OrderedDict()

        self._thread = None


# efficient_sam.py

class EfficientSam:
    def __init__(self, encoder_path, decoder_path):
		# 修改后
        providers = ['CUDAExecutionProvider','CPUExecutionProvider'] 
        self._encoder_session = onnxruntime.InferenceSession(encoder_path,providers=providers)
        self._decoder_session = onnxruntime.InferenceSession(decoder_path,providers=providers)
		#修改前
        # self._encoder_session = onnxruntime.InferenceSession(encoder_path)
        # self._decoder_session = onnxruntime.InferenceSession(decoder_path)
        
        self._lock = threading.Lock()
        self._image_embedding_cache = collections.OrderedDict()

        self._thread = None


这里给出 efficient_sam.py 文件的修改图。
在这里插入图片描述

四、百度云盘onnx下载链接

这里的模型是已经修改过名字的,不需要修改名称,直接放到对应位置就行。百度云链接

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

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

相关文章

在 Three.js 中,OBJExporter 是一个用于将 Three.js 中的场景导出为 OBJ 格式的类。

demo案例 在 Three.js 中,OBJExporter 是一个用于将 Three.js 中的场景导出为 OBJ 格式的类。下面是关于它的入参、出参、属性和方法的解释: 类名:OBJExporter 构造函数: THREE.OBJExporter()说明: 创建一个 OBJE…

2d导入人物素材进行分割后设置图层

1、设置分辨率大小 2、相机调整大小,要符合场景 3、选择2D sprite 编辑器 或者 点击这个也行 4、分割图像 5、设置过滤模式 6、图层设置

CQI-17:2021 V2 英文 、中文版。特殊过程:电子组装制造-锡焊系统评审标准

锡焊作为一个特殊的工艺过程,由于其材料特性的差异性、工艺参数的复杂性和过程控制的不确定性,长期以来一直视为汽车零部件制造业的薄弱环节,并将很大程度上直接导致整车产品质量的下降和召回风险的上升。 美国汽车工业行动集团AIAG的特别工…

MySQL 之 数据库操作 及 表操作

🎉欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨ 🎉感谢各位读者在百忙之中抽出时间来垂阅我的文章,我会尽我所能向的大家分享我的知识和经验📖 🎉希望我们在一篇篇的文章中能够共同进步!!&…

共享办公室行业面临的最大挑战是什么,未来有哪些可能的发展方向

共享办公室行业虽然发展迅速,但也面临着一些挑战和需要解决的问题。咱们来聊聊这行业的最大挑战和未来可能的发展方向。 面临的最大挑战: 市场竞争加剧:随着共享办公室的火热,越来越多的玩家进入市场,竞争变得异常激烈…

CatalyzeCDN-发现真实IP

简介 CatalyzeCDN用与调用Fofa接口,将查询结果进行整理发现其真实IP 使用说明 在同目录下的config.ini配置好Fofa key ./CatalyzeCDN -h # 查看帮助信息 从根域发现真实IP并列出相应资产 ./CatalyzeCDN -r baidu.com 从IP查询相应资产 ./CatalyzeCDN -i 项目…

VS Code常用前端开发插件和基础配置

VS Code插件安装 VS Code提供了非常丰富的插件功能,根据你的需要,安装对应的插件可以大大提高开发效率。 完成前端开发,常见插件介绍: 1、Chinese (Simplified) Language Pack 适用于 VS Code 的中文(简体&#xff…

Kubernetes(K8S)学习(二):K8S常用组件

K8S常用组件 一、 Controllers1、ReplicationController(RC)2、ReplicaSet(RS)3、Deployment 二、Labels and Selectors三、Namespace(命名空间)1、简介2、测试2.1、创建namespace2.2、创建pod 四、Network1、集群内:同一个Pod中的容器通信2、…

【C++入门】输入输出、命名空间、缺省参数、函数重载、引用、内联函数、auto、基于范围的for循环

目录 命名空间 命名空间的定义 命名空间的使用 输入输出 缺省参数 函数重载 引用 常引用 引用的使用场景 内联函数 auto 基于范围的for循环 命名空间 请看一段C语言的代码&#xff1a; #include <stdio.h> #include <stdlib.h>int rand 10;int main…

StringBuffer与StringBuilder

1.区别 (1). String : 不可变字符序列. (2). StringBuffer : 可变字符序列.线程安全&#xff0c;但效率低. (3). StringBuilder : 可变字符序列.线程不安全&#xff0c;但效率高. 既然StringBuffer与StringBuilder都是可变字符序列&#xff0c;但二者咋区分开呢&#xff1f…

【git】git使用手册

目录 一 初始化 1.1 账号配置 1.2 ssh生成 1.2.1 配置ssh 1.2.2 测试SSH 1.3 初始化本地仓库并关联远程仓库 二 使用 2.1 上传 2.2 拉取 三 问题 3.1 关联失败 一 初始化 git的安装很简单,下载后大部分进行下一步完成即可----->地址: git工具下载 1.1 账号配置…

(1)半导体设备之sorter机(上)

01、什么是sorter 其实sorter 就是分选机&#xff0c;大家日常生活买的土豆&#xff0c;苹果&#xff0c;会用到这个&#xff0c; 大家日常用的硬币&#xff0c;游戏币&#xff0c;都是用sorter来进行挑选的&#xff0c;否则人工数硬币又累又苦逼&#xff0c;钱再对不上号&…

【Entity Framework】创建并配置模型

【Entity Framework】创建并配置模型 文章目录 【Entity Framework】创建并配置模型一、概述二、使用fluent API配置模型三、分组配置四、对实体类型使用EntityTypeConfigurationAttribute四、使用数据注释来配置模型五、实体类型5.1 在模型中包含类型5.2 从模型中排除类型5.3 …

手写简易操作系统(十七)--编写键盘驱动

前情提要 上一节我们实现了锁与信号量&#xff0c;这一节我们就可以实现键盘驱动了&#xff0c;访问键盘输入的数据也属于临界区资源&#xff0c;所以需要锁的存在。 一、键盘简介 之前的 ps/2 键盘使用的是中断驱动的&#xff0c;在当时&#xff0c;按下键盘就会触发中断&a…

【STM32嵌入式系统设计与开发】——12IWDG(独立看门狗应用)

这里写目录标题 一、任务描述二、任务实施1、ActiveBeep工程文件夹创建2、函数编辑&#xff08;1&#xff09;主函数编辑&#xff08;2&#xff09;USART1初始化函数(usart1_init())&#xff08;3&#xff09;USART数据发送函数&#xff08; USART1_Send_Data&#xff08;&…

【C++】递归快速幂

class Solution { public:double myPow(double x, int n) {if(n<0){long long a -(long long)n;double temp dfs(x,a);return 1.0/temp;}else{double temp dfs(x,n);return temp;}}double dfs(double x,int n)//给一个数&#xff0c;给一个n&#xff0c;求出x的n次幂{//递…

npm软件包管理器

npm软件包管理器 一.npm 使用步骤二.npm安装所有依赖三.npm全局软件包-nodemon pm 简介链接&#xff1a; 软件包管理器&#xff0c;用于下载和管理 Node.js 环境中的软件包 一.npm 使用步骤 1.初始化清单文件&#xff1a; npm init -y &#xff08;得到 package.json 文件&am…

【C++庖丁解牛】自平衡二叉搜索树--AVL树

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 前言1 AVL树的概念2. AVL…

2024最新版Android studio安装入门教程(非常详细)

目录 JDK安装与配置 一、下载JDK 二、JDK安装 三、JDK的环境配置 四、JDK的配置验证 Android studio安装 Android studio连接手机真机调试&#xff08;以华为鸿蒙为例&#xff09; 一、新建一个android项目 二、进入项目面板 三、配置Android Studio 四、安装手机驱…

最大限度地提高生产力:ChatGPT 如何改变您的日常生活

智能生活新潮流&#xff1a;如何用ChatGPT提升你的工作效率 拥抱人工智能革命 在当今快节奏的世界中&#xff0c;寻找提高生产力的方法就像找到一张成功的金票。 但不要害怕&#xff0c;因为我有一些令人兴奋的消息要告诉你&#xff01; 进入 GPT 工具的世界&#xff0c;这是一…