非常实用的利用SAM分割一切大模型,进行抠图。

本文介绍了MetaAI的SAM模型,一个在图像分割领域具有突破性的基础模型,通过零样本泛化在多样化场景中展现强大性能。文章详细讲解了SAM的工作原理、训练过程、应用实例以及未来挑战。实现方法部分展示了如何使用Ultralytics框架快速部署和应用SAM模型。
摘要由CSDN通过智能技术生成

目录

SAM简介

实现方法


SAM简介

引言: 介绍人工智能(AI)的发展趋势,特别是在图像分割领域。强调基础模型在AI发展中的作用,以及Meta AI开发的SAM模型如何定义这个新的里程碑。

SAM的介绍:

  • 背景: 描述SAM的历史和它是如何成为首个广泛适用的图像分割基础模型的。
  • 原理: 解释SAM的工作原理,包括它如何接收提示(如点击、边界框、文本等)并生成精确的对象掩码。
  • 数据集: 阐述SAM是如何在包含超过11亿掩码的11百万张图像上训练,以实现零样本泛化的​​​​​​。

技术进展:

  • 零样本泛化: 讨论SAM在未见过的对象和场景上的性能,强调其在多样化图像领域中的应用潜力。
  • 提示式设计: 介绍SAM如何通过不同的提示接口进行交互,为多样化的分割任务提供支持。
  • 性能优势: 分析SAM在各种场景下的性能,包括自然图像、农业、制造业等。

应用实例:

  • 真实世界挑战: 描述SAM在真实世界条件下的应用,如民用基础设施的缺陷评估和自然环境中的物体跟踪。
  • 特殊用例: 探讨SAM在医疗成像、视频目标跟踪和其他领域的潜在用途​​。

SAM的未来与挑战:

  • 跨领域的潜力: 展望SAM在增强现实、虚拟现实、内容创作等领域的应用前景。
  • 研究方向: 提出目前SAM面临的挑战和研究社区如何通过改进模型架构和训练方法来克服这些挑战。
  • 扩展性: 讨论如何通过组合不同基础模型来构建更加强大和通用的AI系统。

实现方法

        本文直接使用的ultralytics框架,直接进行模型下载实现的,这是我个人认为sam实现最简答的一种方法,基本有一定python基础的人直接都可以去实现它。在这里我进做演示和一些思路的说明,仅供参考。如果喜欢希望大家多多支持点赞收藏。

1. 搭建一个python环境:略。

2. 安装ultralytics:安装ultralytics说明,点击跳转。

3. 复制下面这段代码:

from ultralytics import SAM
from matplotlib import pyplot as plt
import numpy as np
import cv2

# 加载sam模型,如果没有这个框架也会自动的为你下载
model = SAM('sam_b.pt')

# 读取一张图片,
orig_img = cv2.imread('test.jpg')

# 使用模型进行推理, 后面save=True的参数可以输出测试分割的图片
results = model(orig_img,save=True)

# 这里是我获取mask编码部分的。 [22] 是你想切取对应mask部分的标签值,想切哪个填哪个
mask = results[0].masks.data[22].cpu().numpy()

# 应用掩码到原始图像
# 如果你想要背景是黑色的
masked_image = np.zeros_like(orig_img)
masked_image[mask] = orig_img[mask]

# 如果你想要背景透明(假设原始图像是RGB格式)
# 创建一个RGBA图像,其中背景是透明的
alpha_channel = np.ones(mask.shape, dtype=orig_img.dtype) * 255  # 创建alpha通道
masked_image_rgba = np.dstack((masked_image, alpha_channel))  # 将alpha通道添加到RGB通道
masked_image_rgba[~mask] = (0, 0, 0, 0)  # 将非掩码区域设置为透明

# 保存图片,黑色背景
cv2.imwrite('masked_image_test.jpg', masked_image)

# 如果背景是透明的
cv2.imwrite('masked_image_test.png', masked_image_rgba)

效果如下:

1. 在代码中,保存runs的结果是这样的:

 

在这里我们可以看到哪个类别是哪个标签,我们记住标签后,在后续的代码中, 填入你想切取的编码。比如我切的是这个女子的脸:

        有了这个之后,抠图就变得简简单单,同时如果是想做ui的小伙伴,还可以通过点击(获取鼠标以及mask所在区域,通过坐标包含的方式对图片进行选择或者多选。然后实现自定义抠图),这样抠图就变得简简单单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

E寻数据

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值