当前位置:首页 » 《随便一记》 » 正文

labelme AI 模型运用

25 人参与  2024年05月06日 13:50  分类 : 《随便一记》  评论

点击全文阅读


一、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.pyclass 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.pyclass 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://zhangshiyu.com/post/104162.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1