SAM+使用SAM应用数据集完成分割

news2025/1/4 19:15:59

什么是SAM?

        SAM(Segment Anything Model)是由 Meta 的研究人员团队创建和训练的深度学习模型。在 Segment everything 研究论文中,SAM 被称为“基础模型”。

        基础模型是在大量数据上训练的机器学习模型(通常通过自监督或半监督学习),其目的是在更具体的任务上使用和重新训练。SAM 是一个预训练模型,旨在适应其他任务(特别是通过微调)。

sam安装

下载安装SAMhttps://github.com/facebookresearch/segment-anything

安装 Segment Anything:

pip install git+https://github.com/facebookresearch/segment-anything.git

或在本地克隆存储库并使用

git clone git@github.com:facebookresearch/segment-anything.git
cd segment-anything; pip install -e .

Github页面里点击下载一个或者多个模型:

模型文件放到项目的目录即可。

H,L,B分别表示huge,large,base,从大到小。根据硬件能力选择合适的模型。

下列依次ViT-H SAM模型(vit_h),ViT-L SAM 模型(vit_1), ViT-B SAM 模型(vit_b)

​​​​https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth

https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth 

https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth

 使用

 方法一:使用官方命令

建立input,output文件夹

在input中存放待分割的图片,output用作存放输出的mask。

在这我使用的是vit_h

python3 scripts/amg.py --checkpoint ./sam_vit_h_4b8939.pth --model-type default --input ./input.jpeg --output output

官方命令即执行amg.py文件,并传入了一些参数,当传入参数固定时可以直接写在amg.py文件中。

方法二:

# coding=gb2312
from segment_anything import SamPredictor, SamAutomaticMaskGenerator, sam_model_registry
import cv2
import numpy as np
import torch
import matplotlib.pyplot as plt
device = "cuda"
sam = sam_model_registry["default"](checkpoint="你下载的权重的位置")
#sam_vit_h_4b8939.pth 是预训练的默认权重,需要单独下载
sam.to(device=device)
mask_generator = SamAutomaticMaskGenerator(sam)

def show_anns(anns):
    if len(anns) == 0:
        return
    sorted_anns = sorted(anns, key=(lambda x: x['area']), reverse=True)
    ax = plt.gca()
    ax.set_autoscale_on(False)

    img = np.ones((sorted_anns[0]['segmentation'].shape[0], sorted_anns[0]['segmentation'].shape[1], 4))
    img[:,:,3] = 0
    for ann in sorted_anns:
        m = ann['segmentation']
        color_mask = np.concatenate([np.random.random(3), [0.35]])
        img[m] = color_mask
    ax.imshow(img)

image = cv2.imread('图片 位置.jpeg')
masks = mask_generator.generate(image)
plt.figure(figsize=(20,20))
plt.imshow(image)
show_anns(masks)
plt.axis('off')
plt.show() 

 

参考: 

https://zhuanlan.zhihu.com/p/627535252

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1288928.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

农业杀虫剂市场分析:我国实现销售收入319.3亿元

农业杀虫剂,指的是农业用的杀虫化学制剂。主要用于防治农业害虫和城市卫生害虫的药品,使用历史长远、用量大、品种多。 按毒理作用可分为:①神经毒剂。作用于害虫的神经系统,如滴滴涕、对硫磷、呋喃丹、除虫菊酯等。②呼吸毒剂。抑…

ssm党务政务服务热线平台源码和论文答辩PPT

摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计…

易点易动设备管理系统--提升设备能耗管理效率的工具

在当今的节能环保意识日益增强的社会背景下,设备能耗管理成为了市场推广人员关注的焦点之一。为了帮助市场推广人员提升设备能耗管理效率,易点易动设备管理系统应运而生。本文将详细介绍易点易动设备管理系统的功能和优势,以及如何借助该系统…

class050 双指针技巧与相关题目【算法】

class050 双指针技巧与相关题目【算法】 算法讲解050【必备】双指针技巧与相关题目 code1 922. 按奇偶排序数组 II // 按奇偶排序数组II // 给定一个非负整数数组 nums。nums 中一半整数是奇数 ,一半整数是偶数 // 对数组进行排序,以便当 nums[i] 为…

springboot项目中注入bean后,调用时报n

需求: 在socket接收到上报数据后,在handler中调用工具类中ProtocolAnalyse的conAnalyse(byte[] data, int dataLen)解析数据。解析数据后,将解析后的结果保存至数据库。注入了三个bean: Autowiredprivate PersonTeService person…

8个Python高效数据分析的技巧!

一行代码定义List 定义某种列表时,写For 循环过于麻烦,幸运的是,Python有一种内置的方法可以在一行代码中解决这个问题。下面是使用For循环创建列表和用一行代码创建列表的对比。 x [1,2,3,4] out [] for item in x:out.append(item**2) …

通付盾连续九年荣登《中国网络安全企业100强》榜单,再次彰显创新与实力!

2023年12月1日,由中国计算机学会抗恶劣环境计算机专业委员会、信息产业信息安全测评中心、安全牛联合发起的第十一版《中国网络安全企业100强》正式发布。通付盾凭借强大的创新技术和优质的服务能力,再度入选百强榜单。此为自2015年起,通付盾…

YOLOv5改进: RT-DETR引入YOLOv5,neck和检测头助力检测

💡💡💡本文独家改进: 1) RT-DETR neck代替YOLOv5 neck部分; 2)引入RTDETRDecoder 多个订阅者要求(多个订阅者有需求会在专栏里进行更新),想出一期RT-DETR的neck引入到YOLOv5,那就安排 💡💡💡Yolov5/Yolov7魔术师,独家首发创新(原创),适用于Yolov5、Yo…

C++ 操作MinIO做文件数据的上传和下载(踩坑与经验)包含编译包

前言 最近在做项目流程优化,准备将之前的java对文件的操作转换到c端,因此做了基于c的minio操作的测试demo。期间的各种踩坑与问题,花了一天时间总算是成功了,当然还有一些小问题,等待后续其他大拿解决。 项目环境 v…

【Android】Glide的简单使用(上)

文章目录 引入Glide的优点:缺点: 使用常用方法:从网络加载图片从文件加载图片加载resource资源加载URI地址设置占位图出错时的图片占位图图片过渡的Transitions自定义过渡动画图片大小调整缩放图片播放gifasGif()把Gif当作Bitmap播放显示本地视频缩略图 引入 Glide是Google员工…

ISNAS-DIP: Image-Specific Neural Architecture Search for Deep Image Prior

ISNAS-DIP:用于深度图像先验的图像特定神经架构搜索 论文链接:https://arxiv.org/abs/2111.15362v2 项目链接:https://github.com/ozgurkara99/ISNAS-DIP Abstract 最近的研究表明,卷积神经网络(CNN)架构在频谱上偏向较低频率&…

装修风格及要求

水电改造 报价? 电线 3C认证国标BV线(非BVR),电线上有厂名,买足百米的 厨卫空调4平方线普通插座2.5平方线冰箱2.5平方线照明2.5平方线入户主线6平方或10平方 地面电线点对点,线和线管连接处要有锁扣 品…

Pandas使用过程中的神器加持 你不用不要怪我

Pandas是我们日常处理表格数据最常用的包,但是对于数据分析来说,Pandas的DataFrame还不够直观,所以今天我们将介绍4个和Pandas相关的Python包,可以将Pandas的DataFrame转换交互式表格,让我们可以直接在上面进行数据分析…

将文件夹中所有文件名取出

dir C:\Users\是啊\Desktop\实验五/b>C:\Users\是啊\Desktop\1111.xls C:\Users\是啊\Desktop\实验五(这个是文件夹路径) /b (参数) C:\Users\是啊\Desktop\1111.xls(文件名输出的文件路径)

电路装修干货上篇|装修小白硬装必做功课。福州中宅装饰,福州装修

你是否曾经遇到过这样的情况:同时开启浴霸和电磁炉时,家里的电闸却跳了。这种情况往往会让人们对家居装修中的电线布置产生疑问。今天,以一位从业装修工作10年的工长的经验,为大家解答有关电线布置的常见问题。 1️⃣电线的平方数…

★581. 最短无序连续子数组

581. 最短无序连续子数组 方法一: class Solution {public int findUnsortedSubarray(int[] nums) {// 数组的复制int[] sortednums new int[nums.length];System.arraycopy(nums, 0, sortednums, 0, nums.length);Arrays.sort(sortednums);int l0,rnums.length-1;…

基于Java SSM框架实现汽车在线销售系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现汽车在线销售系统演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识&a…

Leetcode—383.赎金信【简单】

2023每日刷题(五十) Leetcode—383.赎金信 实现代码 class Solution { public:int arr[26] {0};int arr2[26] {0};bool canConstruct(string ransomNote, string magazine) {int len ransomNote.size();int len2 magazine.size();for(int i 0; i …

前置微小信号放大器在传感器测试中的应用

前置微小信号放大器在医疗领域中有广泛的应用。它们是一种专门设计用于放大微弱信号的放大器,可以提升信号的强度和质量,从而帮助医生进行准确的诊断和治疗。以下是前置微小信号放大器在医疗中的几个主要应用。 前置微小信号放大器常用于心电图设备中。E…

开始使用高性能、低延迟的对象存储服务 Amazon S3 Express One Zone

全新的对象存储服务 Amazon S3 Express One Zone 旨在提供比 Amazon S3 Standard 高出10倍的性能,同时每秒可处理数十万个请求,并且延迟始终保持在个位数毫秒级,因此非常适合存储最常访问的数据和要求最苛刻的应用程序。将对象存储和复制到单…