labelme AI 模型运用

慈云数据 2024-04-23 技术支持 54 0

一、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.py 和 segment_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下载链接

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

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon