SAM:图像分割的里程碑

news2024/11/20 1:53:41

Facebook的新模型称为SAM或Segment Anything Model,具有在计算机视觉行业中引起积极变革的潜力。这个突破性模型不同于以前使用的任何其他图像分割模型。

传统上,会为不同类型的图像,如人或汽车,分别训练不同的模型,但SAM通过提供通用分割解决方案,消除了需要单独模型的需求。SAM类似于自然语言处理行业中的GPT时代,具有用于各种图像分割任务的潜力,如情感分析或卫星图像分割。

Facebook慷慨地发布了SAM和用于训练它的数据集,其中包含超过1100万张图像和11亿个掩码,遵循宽松的Apache 2.0许可证。这个开源计划对计算机视觉行业做出了重大贡献。SAM对计算机视觉行业的潜在影响以及它在图像分割中的重要性是不言而喻的。

如果您有兴趣在本地环境中使用SAM,GitHub存储库文档提供了详细的入门信息。

    • 代码库:https://github.com/facebookresearch/segment-anything

    • 博客:https://ai.facebook.com/blog/segment-anything-foundation-model-image-segmentation/

    • 论文:https://arxiv.org/abs/2304.02643

KadirNar创建了一个存储库,提供了SAM的简化(打包)版本,使我们更容易使用它:https://github.com/kadirnar/segment-anything-video

稍后,我们将使用KadirNar存储库在本地环境中使用SAM。

然而,在深入技术细节之前,让我们先看看Facebook提供的在线演示:https://segment-anything.com/demo。在这里,您将看到一个页面,您可以上传您喜欢的任何图像或从他们的数据集中选择。我们将选择一个随机的图像来展示演示。

一旦选择或上传了图像,SAM就会开始工作。处理图像需要几秒钟的时间,但是当它完成时,您将看到您选择的对象已经完美地分割。

下面是我们使用的图像:

b17722f0043afe7272f82a8c534119b0.gif

让我们看看图像分割的结果:

f35d330750a712ac8999abdee082f373.png

它完美地对我们的图像进行了分割。SAM的准确性确实令人印象深刻,很容易看出为什么这个模型如此革命性。

一旦你准备好自己尝试它,GitHub仓库文档提供了如何在本地环境中使用SAM的清晰步骤。

我建议使用KadirNar仓库来尝试SAM。此外,利用Google Colab可能会更有益,因为它可以消除不同库版本可能带来的问题。

让我们看看它是如何工作的!首先,我们需要使用pip安装metaseg。 

!pip install metaseg -q

让我们看一下我们要处理的图像:

ff356437adf72b74216ab1dbcbb38dd4.gif

from IPython.display import Image
Image(“image.jpg”)

输出: 

804abd3aa25be4806012d6432c0f05fd.png

接下来,我们需要导入SegAutoMaskGenerator,它使用model_type从图像中检测分段形状。

autoseg_image = SegAutoMaskGenerator().save_image(
source="image.jpg",
model_type="vit_l", # vit_l, vit_h, vit_b
points_per_side=16,
points_per_batch=64,
min_area=0,
)

参数“model_type”确定我们将使用的模型类型。

Facebook提供了三种不同的模型:

    • default或vit_h:ViT-H SAM模型

    • vit_l:ViT-L SAM模型

    • vit_b:ViT-B SAM模型

每种模型都有其优点。他们的官方博客提供了对每个模型的详细描述。

一旦运行上述代码,分割图像将保存在您的当前目录中,让我们看看结果。

from IPython.display import Image
Image(“output.jpg”)

输出:

4a8e09b5d459dfd72bc00c1ee4ce5277.png

例如,在输出图像中选择任何蔬菜就是形状SAM给出的。

dd23674cc2f2bacb7f9b541b6639b39d.png

声明:部分内容来源于网络,仅供读者学术交流之目的。文章版权归原作者所有。如有不妥,请联系删除。

·  END  ·

HAPPY LIFE

b68447ee1741ea2cfe7fedff3c5ed31b.png

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

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

相关文章

成功上岸国防科大!

Datawhale干货 作者:王洲烽,太原理工大学,Datawhale成员 写在前面 相比较于一般的经验贴,我更想在这里讲述一下自己的故事。我一开始报考的是北理工,但很遗憾9月份北理改考408了,无缘京爷,所以…

路径规划 | 图解概率路图PRM原理及其参数分析

目录 0 专栏介绍1 基于采样的规划算法2 概率路图基本原理3 PRM算法流程4 PRM参数分析4.1 采样点数4.2 阈值 d max ⁡ \mathrm{d}_{\max} dmax​ 0 专栏介绍 🔥附C/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划…

nginx简单介绍

文章目录 1. 下载并解压2. 80端口被占用,更改nginx默认的监听端口3. 访问nginx4. 在linux上安装nginx5. nginx常用命令6. nginx.conf 1. 下载并解压 官网下载 2. 80端口被占用,更改nginx默认的监听端口 更改conf/nginx.conf文件 3. 访问nginx ht…

[译] 实战 React 18 中的 Suspense

> 原文:https://dev.to/darkmavis1980/a-practical-example-of-suspense-in-react-18-3lln React 18 带来了很多变化,它不会破坏你已经编写过的代码,并且有很多改进和一些新概念。 它也让很多开发人员,包括我,意识到…

vue---mixin混入

一个混入对象可以包含任意组件选项(如data、methods、created、mounted等等)。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。 我们可以使用混入,向组件注入自定义的行为。 和组件注册和指令一样 vu…

Oracle Linux 9 上基于 CRI-O 安装 Kubernetes 1.27 集群

Oracle Linux 9 上基于 CRI-O 安装 Kubernetes 1.27 集群 1. 禁用 swap2. 禁用防火墙3. 将 SELinux 设置为 permissive 模式4. 安装cri-o5. 安装kubelet kubeadm kubectl6. 更新模块设置7. 初始化Kubernetes集群8. 配置集群访问9. 安装网络插件10. 验证集群 1. 禁用 swap sudo…

docker容器原样迁移完整过程(nignx例子)

我们在测试服务器上,辛辛苦苦开发,各种配置好了服务,然后想着傻瓜式的迁移部署。接下来的就是干货了 过程描述: 为了体现一个完成性的描述,我们最初拉镜像开始,一直说到迁移后的服务正常运行。 接下来以ng…

centos7 查看服务器配置信息

1.linux查看版本当前操作系统发行信息 cat /etc/centos-release cat /etc/centos-release 2、查看内核版本uname -a或者cat /proc/version 3、查看CPU参数 1)、查看 CPU 物理个数   grep physical id /proc/cpuinfo | sort -u | wc -l 2)、查看 CPU …

如何降低小程序开发费用:从项目管理到技术选型

小程序的开发费用是许多企业和初创公司的瓶颈。在本文中,我们将介绍如何通过项目管理和技术选型来降低小程序开发费用,让您的企业更加高效。我们会详细阐述如何在项目管理中制定清晰的项目计划、与开发团队密切合作、采用敏捷开发方法。在技术选型方面&a…

jmeter压测结果分析

jmeter结果查看主要在结果树和聚合报告,实际在做压测过程中不做可视化操作,用命令行执行,再查看测试报告。 python在本地起服务 cmd打开命令框执行语句:python -m http.server 9090(端口号,可自定义&…

magento webapi 接口返回 json对象

前言 现在主流的项目开发都是前后端分离,数据通过json对象格式进行传输。但是magento框架,和传统PHP框架相比,区别很大。虽然也支持以RestApi的形式传输数据,但是要么格式并非是传统jsonObject要么就是需要大量的get、set方法。本…

TypeScript学习笔记以及学习中遇到的问题

本笔记是来自翻阅xcatliu的typeScript入门教程文档、TypeScript官方文档的部分摘录、以及观看B站学习视频进行笔记记录与知识点补充、本人实际使用时遇到的问题与解决记录、碎片化接触到相关知识点合并整理而成 仅供本人洪的学习使用 hello TypeScript 一、TypeScript安装 Ty…

【QT】如何检测目录或文件中的内容被修改,可以使用QFileSystemWatcher类进行检测

目录 1. QFileSystemWatcher类的介绍2. QFileSystemWatcher的公共函数2.1 构造函数2.2 析构函数2.3 添加监控的路径2.4 返回正在监控的目录或文件2.5 从文件系统监视程序中删除指定的路径 3. QFileSystemWatcher的信号4. 测试代码4.1 操作步骤4.2 MainWindow.h4.3 MainWindow.c…

Spring之Bean的配置与实例

Spring之Bean的配置与实例 一、Bean的基础配置1. Bean基础配置【重点】配置说明代码演示运行结果 2. Bean别名配置配置说明代码演示打印结果 3. Bean作用范围配置【重点】配置说明代码演示打印结果 二、Bean的实例化1. Bean是如何创建的2. 实例化Bean的三种方式2.1 构造方法方式…

数据库系统-数据库查询实现算法之

文章目录 一、一趟扫描算法1.1 算法概述1.2 算法逻辑&物理实现1.2.1 逻辑层面1.2.2 物理层面1.2.2.1 P11.2.2.2 P21.2.2.3 P31.2.2.4 P4 1.3 迭代器构造查询实现算法1.4 关系操作的一趟扫描算法1.4 基于索引的查询实现算法 二、两趟扫描算法2.1 两趟算法基本思想2.2 多路归…

SaaS是什么?企业为什么要有SaaS系统?

什么是SaaS系统?企业为什么要有SaaS系统? 近几年,SaaS突然变成了一个热门词汇,无论是一些权威报告,还是知乎上知友们热烈的讨论,对于Saas系统可谓是各有各的见解和看法。 今天就综合几位答主的观点&#…

【1163. 按字典序排在最后的子串】

来源:力扣(LeetCode) 描述: 给你一个字符串 s ,找出它的所有子串并按字典序排列,返回排在最后的那个子串。 示例 1: 输入:s "abab" 输出:"bab"…

安波福又有大动作,行泊一体中国方案即将量产

“安波福的目标是,2030年营收达到400亿美元规模,这其中有一大部分收入来自于软件。”安波福亚太区总裁杨晓明在接受高工智能汽车提问时表示。 他介绍,2030年软件业务目标是达到60亿美元的规模,而在2022年,安波福实现了…

Nacos身份绕过漏洞复现(QVD-2023-6271)

Nacos身份绕过漏洞复现(QVD-2023-6271) 公司上级预警QVD-2023-6271,领导安排进行排查。 本着知己知彼的原则,我在本地将该漏洞复现出来。 漏洞原理:Nacos 在默认配置下未对 token.secret.key 进行修改,导…

【好题】好题分享

1001-四舍五入_牛客竞赛语法入门班数组模拟、枚举、贪心习题 (nowcoder.com) 题目描述 四舍五入是个好东西。比如你只考了45分,四舍五入后你是50分再四舍五入你就是满分啦!qdgg刚考完拓扑。成绩十分不理想。但老师觉得他每天都很认真的听课很不容易。于是…