labelme AI 模型运用

一、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下载链接

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

相关推荐

  1. 组合模式实战运用

    2024-04-01 01:16:03       22 阅读
  2. 外观模式实战运用

    2024-04-01 01:16:03       20 阅读
  3. 算法——运动模型

    2024-04-01 01:16:03       21 阅读
  4. C++Linux网络编程:简单的select模型运用

    2024-04-01 01:16:03       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-01 01:16:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-01 01:16:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-01 01:16:03       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-01 01:16:03       20 阅读

热门阅读

  1. KaTex 常用公式编辑

    2024-04-01 01:16:03       16 阅读
  2. synchronized的使用方式

    2024-04-01 01:16:03       15 阅读
  3. 单台服务器(非集群节点)向Hadoop集群传输数据

    2024-04-01 01:16:03       16 阅读
  4. C++计算资本市场收益及成本分配数学方程

    2024-04-01 01:16:03       15 阅读
  5. nginx配置

    2024-04-01 01:16:03       15 阅读
  6. nginx如何清理页面缓存

    2024-04-01 01:16:03       14 阅读
  7. Linux进程的基本概念

    2024-04-01 01:16:03       15 阅读
  8. VPP添加接口IP地址

    2024-04-01 01:16:03       14 阅读
  9. Activity入门1

    2024-04-01 01:16:03       11 阅读
  10. 【c++20】CPP-20-STL-Cookbook 学习笔记

    2024-04-01 01:16:03       20 阅读
  11. Leetcode 3100. Water Bottles II

    2024-04-01 01:16:03       16 阅读