首页 > 其他分享 >sam自动生成mask代码解析

sam自动生成mask代码解析

时间:2023-07-21 14:23:27浏览次数:26  
标签:... False sam mask masks 解析 True

要自动生成mask,请向“SamAutomaticMaskGenerator”类注入SAM模型(需要先初始化SAM模型)

import sys
sys.path.append("..")
from segment_anything import sam_model_registry, SamAutomaticMaskGenerator, SamPredictor

sam_checkpoint = "sam_vit_b_01ec64.pth"
model_type = "vit_b"

device = "cuda"

sam = sam_model_registry[model_type](checkpoint=sam_checkpoint)
sam.to(device=device)
#自动生成采样点对图像进行分割
mask_generator = SamAutomaticMaskGenerator(sam)

masks = mask_generator.generate(image)

print(len(masks))
print(masks[0].keys())
print(masks[0])

plt.figure(figsize=(16,16))
plt.imshow(image)
show_anns(masks)
plt.axis('off')
plt.show() 

其中print masks这块输出为

42
dict_keys(['segmentation', 'area', 'bbox', 'predicted_iou', 'point_coords', 'stability_score', 'crop_box'])
{'segmentation': array([[False, False, False, ..., False, False, False],
       [False, False, False, ..., False, False, False],
       [False, False, False, ..., False, False, False],
       ...,
       [ True,  True,  True, ..., False, False, False],
       [ True,  True,  True, ..., False, False, False],
       [False, False, False, ..., False, False, False]]), 'area': 18821, 'bbox': [0, 113, 207, 152], 'predicted_iou': 0.9937220215797424, 'point_coords': [[93.75, 146.015625]], 'stability_score': 0.9622295498847961, 'crop_box': [0, 0, 400, 267]}

例如生成的图片

masks = mask_generator.generate(image)

Mask generation返回该图像所有的masks信息,每一个mask都是一个字典对象,mask的keys如下:

  • segmentation : np的二维数组,为二值的mask图片
  • area : mask的像素面积
  • bbox : mask的外接矩形框,为XYWH格式
  • predicted_iou : 该mask的质量(模型预测出的与真实框的iou)
  • point_coords : 用于生成该mask的point输入
  • stability_score : mask质量的附加指标
  • crop_box : 用于以XYWH格式生成此遮罩的图像裁剪

 

标签:...,False,sam,mask,masks,解析,True
From: https://www.cnblogs.com/chentiao/p/17571225.html

相关文章

  • Newtonsoft.Json 解析时 导致 List 增加的bug
    测试用例publicclassChild{publicinta=1;}publicclassParent{privateList<Child>_Children=newList<Child>(){newChild()};publicList<Child>Children{get......
  • 计算凸多边形的重叠面积(原理解析)
    版权声明:遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。参考文章:https://blog.csdn.net/xuyin1204/article/details/107768030本文主要是参考了CSDN博主xuyin1204关于计算两个多边形的重叠面积的文章,并做了原理的相关分析。代码放在文末首先将两个多边形分解为......
  • sizeof解析式分析
    sizeof类型:sizeof()是表达式不是函数用处:可以用来求变量、数组、对象、结构体等所占空间的大小,其实只要将sizeof()操作的参数理解成类型混淆点:sizeof()和数组        只有两种情况下数组名可以表示整个数组:(1)sizeof(数组名):此处数组名不能修饰,否则表示数组首元......
  • C++ 模板编程技术解析
    一、函数模板函数模板实现通用函数,根据传递类型进行编译时实参推导:template<typenameT>Tadd(Ta,Tb){returna+b;}intmain(){intx=1,y=2;doublem=1.5,n=2.5;intz=add(x,y);doublep=add(m,n);return0;}这里te......
  • 由浅入深:Stable-Diffusion 原理解析01 —— 基本概念的介绍
    由浅入深:Stable-Diffusion原理解析01——基本概念的介绍由于实习工作需要,最近一段时间的学习,自己也对Stable-Diffusion有了一些基础的理解,在学习和阅读论文的过程中,发现信息比较碎片化,于是决定产出一个SD原理的系列解析。本系列相比于本人之前的代码阅读系列没那么“硬核......
  • C++/C的#pragma参数选项及其解析
    每种C和C++的实现支持对其宿主机或操作系统唯一的功能。例如,一些程序需要精确控制超出数据所在的储存空间,或着控制特定函数接受参数的方式。#pragma指示使每个编译程序在保留C和C++语言的整体兼容性时提供不同机器和操作系统特定的功能。编译指示被定义为机器或操作系统特定的,并且......
  • ASEMI快恢复二极管MURF20100CT特性及应用解析
    编辑-Z本文主要介绍MURF20100CT二极管的基本特性及其在电路设计中的应用。首先介绍该二极管的基本结构和特性参数,然后重点讲解其应用场景和具体的电路设计方法。最后总结MURF20100CT二极管的优势和使用注意事项。 一、MURF20100CT二极管的基本特性MURF20100CT二极管是一种具......
  • 【863】Calculate records based on the same value
    Supposewehaveadataframe,ithasacolumnof"country".Itlistsdifferentnamesofcountry'snames,andforonecountrymaybeithasmultiplerecords.Ourtaskistocreateanewdataframewhichincludethecountry'snamesandthei......
  • kernel: mysqld invoked oom-killer: gfp_mask
    LinuxOOM-Killer:解释与代码示例引言当在运行中的Linux系统中内存不足时,操作系统会调用OOM-Killer(OutofMemoryKiller)来终止某些进程以释放内存。这通常发生在操作系统无法为新的进程或正在运行的进程分配所需的内存时。本文将介绍OOM-Killer的工作原理并提供相应的代码......
  • Calcite解析Sql中的表名
    目的是为了解析视图中的表名,构建血缘关系,下面是入门的demoCalcite解析有不能解析出来的情况,需要进一步了解javacc,Jsqparser解析,都能正常解析,然而面对复杂子查询,效率很低使用Calcite解析packagesqlparser;importorg.apache.calcite.avatica.util.Casing;importorg.apac......