0


Labelme加载AI(Segment-Anything)模型进行图像标注

  labelme是使用python写的基于QT的跨平台图像标注工具,可用来标注分类、检测、分割、关键点等常见的视觉任务,支持VOC格式和COCO等的导出,代码简单易读,是非常利用上手的良心工具。
在这里插入图片描述
第一步:
  下载源码进行安装。

  1. git clone https://github.com/wkentaro/labelme.git
  2. cd labelme
  3. pip install-e.

第二步:
   找到源码所在路径进行修改。
  (1)打开labelme/labelme/ai/init.py,源码如下:

  1. MODELS =[
  2. Model(name="Segment-Anything (speed)",
  3. encoder_weight=Weight(url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_b_01ec64.quantized.encoder.onnx", # NOQAmd5="80fd8d0ab6c6ae8cb7b3bd5f368a752c",
  4. ),
  5. decoder_weight=Weight(url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_b_01ec64.quantized.decoder.onnx", # NOQAmd5="4253558be238c15fc265a7a876aaec82",
  6. ),
  7. ),
  8. Model(name="Segment-Anything (balanced)",
  9. encoder_weight=Weight(url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_l_0b3195.quantized.encoder.onnx", # NOQAmd5="080004dc9992724d360a49399d1ee24b",
  10. ),
  11. decoder_weight=Weight(url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_l_0b3195.quantized.decoder.onnx", # NOQAmd5="851b7faac91e8e23940ee1294231d5c7",
  12. ),
  13. ),
  14. Model(name="Segment-Anything (accuracy)",
  15. encoder_weight=Weight(url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_h_4b8939.quantized.encoder.onnx", # NOQAmd5="958b5710d25b198d765fb6b94798f49e",
  16. ),
  17. decoder_weight=Weight(url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_h_4b8939.quantized.decoder.onnx", # NOQAmd5="a997a408347aa081b17a3ffff9f42a80",
  18. ),
  19. ),
  20. ]

  (2)在labelme/labelme/文件夹下自建一个文件夹model_file。
  (3)依次输入以下几个网址下载onnx到model_file文件目录。

  1. https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_b_01ec64.quantized.encoder.onnx
  2. https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_b_01ec64.quantized.decoder.onnx
  3. https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_l_0b3195.quantized.encoder.onnx
  4. https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_l_0b3195.quantized.decoder.onnx
  5. https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_h_4b8939.quantized.encoder.onnx
  6. https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_h_4b8939.quantized.decoder.onnx

在这里插入图片描述
  (4)修改labelme/labelme/ai/init.py,代码如下:

  1. import collections
  2. from .models.segment_anything import SegmentAnythingModel # NOQA
  3. Model = collections.namedtuple("Model", ["name", "encoder_weight", "decoder_weight"])
  4. Weight = collections.namedtuple("Weight", ["url", "md5"])# MODELS = [# Model(# name="Segment-Anything (speed)",# encoder_weight=Weight(# url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_b_01ec64.quantized.encoder.onnx", # NOQA# md5="80fd8d0ab6c6ae8cb7b3bd5f368a752c",# ),# decoder_weight=Weight(# url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_b_01ec64.quantized.decoder.onnx", # NOQA# md5="4253558be238c15fc265a7a876aaec82",# ),# ),# Model(# name="Segment-Anything (balanced)",# encoder_weight=Weight(# url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_l_0b3195.quantized.encoder.onnx", # NOQA# md5="080004dc9992724d360a49399d1ee24b",# ),# decoder_weight=Weight(# url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_l_0b3195.quantized.decoder.onnx", # NOQA# md5="851b7faac91e8e23940ee1294231d5c7",# ),# ),# Model(# name="Segment-Anything (accuracy)",# encoder_weight=Weight(# url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_h_4b8939.quantized.encoder.onnx", # NOQA# md5="958b5710d25b198d765fb6b94798f49e",# ),# decoder_weight=Weight(# url="https://github.com/wkentaro/labelme/releases/download/sam-20230416/sam_vit_h_4b8939.quantized.decoder.onnx", # NOQA# md5="a997a408347aa081b17a3ffff9f42a80",# ),# ),# ]
  5. MODELS =[
  6. Model(name="Segment-Anything (speed)",
  7. encoder_weight=Weight(url="E:\labelme\labelme\model_file\sam_vit_b_01ec64.quantized.encoder.onnx", # NOQAmd5="80fd8d0ab6c6ae8cb7b3bd5f368a752c",
  8. ),
  9. decoder_weight=Weight(url="E:\labelme\labelme\model_file\sam_vit_b_01ec64.quantized.decoder.onnx", # NOQAmd5="4253558be238c15fc265a7a876aaec82",
  10. ),
  11. ),
  12. Model(name="Segment-Anything (balanced)",
  13. encoder_weight=Weight(url="E:\labelme\labelme\model_file\sam_vit_l_0b3195.quantized.encoder.onnx", # NOQAmd5="080004dc9992724d360a49399d1ee24b",
  14. ),
  15. decoder_weight=Weight(url="E:\labelme\labelme\model_file\sam_vit_l_0b3195.quantized.decoder.onnx", # NOQAmd5="851b7faac91e8e23940ee1294231d5c7",
  16. ),
  17. ),
  18. Model(name="Segment-Anything (accuracy)",
  19. encoder_weight=Weight(url="E:\labelme\labelme\model_file\sam_vit_h_4b8939.quantized.encoder.onnx", # NOQAmd5="958b5710d25b198d765fb6b94798f49e",
  20. ),
  21. decoder_weight=Weight(url="E:\labelme\labelme\model_file\sam_vit_h_4b8939.quantized.decoder.onnx", # NOQAmd5="a997a408347aa081b17a3ffff9f42a80",
  22. ),
  23. ),
  24. ]

  (5)修改labelme/labelme/widgets/canvas.py,代码如下:

  1. def initializeAiModel(self, name):
  2. if name not in[model.name formodelin labelme.ai.MODELS]:
  3. raise ValueError("Unsupported ai model: %s" % name)
  4. model =[model formodelin labelme.ai.MODELS if model.name == name][0]if self._ai_model is not None and self._ai_model.name == model.name:
  5. logger.debug("AI model is already initialized: %r" % model.name)
  6. else:
  7. logger.debug("Initializing AI model: %r" % model.name)
  8. self._ai_model = labelme.ai.SegmentAnythingModel(name=model.name,
  9. # encoder_path=gdown.cached_download(# url=model.encoder_weight.url,# md5=model.encoder_weight.md5,# ),# decoder_path=gdown.cached_download(# url=model.decoder_weight.url,# md5=model.decoder_weight.md5,# ),encoder_path=model.encoder_weight.url,
  10. decoder_path=model.decoder_weight.url,
  11. )
  12. self._ai_model.set_image(image=labelme.utils.img_qt_to_arr(self.pixmap.toImage()))

第三步:
  启动labelme

  1. cd labelme
  2. labelme

在这里插入图片描述


本文转载自: https://blog.csdn.net/qq_50993557/article/details/134616280
版权归原作者 Make_magic 所有, 如有侵权,请联系我们删除。

“Labelme加载AI(Segment-Anything)模型进行图像标注”的评论:

还没有评论