SAM 2——视频和图像实时实例分割的全新开源模型

2024-08-22 09:20

本文主要是介绍SAM 2——视频和图像实时实例分割的全新开源模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引言

源码地址:https://github.com/facebookresearch/segment-anything-2
过去几年,人工智能领域在文本处理的基础人工智能方面取得了显著进步,这些进步改变了从客户服务到法律分析等各个行业。然而,在图像处理方面,我们才刚刚开始。视觉数据的复杂性以及训练模型以准确解释和分析图像的挑战带来了重大障碍。随着研究人员继续探索图像和视频的基础人工智能,人工智能图像处理的未来有望为医疗保健、自动驾驶汽车等领域带来创新。

对象分割是计算机视觉中的一项关键任务,它涉及精确定位图像中与感兴趣对象相对应的像素。传统上,这涉及创建专门的 AI 模型,这需要广泛的基础设施和大量带注释的数据。去年,Meta 推出了 分段任何模型(SAM),以 基础人工智能 模型简化了这一过程,允许用户通过简单的提示分割图像。这项创新减少了对专业知识和大量计算资源的需求,使图像分割更容易实现。

现在,Meta 又迈进了一步, SAM 2。这一新版本不仅增强了 SAM 现有的图像分割功能,还将其进一步扩展到视频处理。SAM 2 可以分割图像和视频中的任何对象,甚至是它以前从未遇到过的对象。这一进步是计算机视觉和图像处理领域的一次飞跃,为分析视觉内容提供了更通用、更强大的工具。在本文中,我们将深入探讨 SAM 2 令人兴奋的进步,并探讨其重新定义计算机视觉领域的潜力。

引入“任意细分模型”(SAM)

传统的分割方法要么需要手动细化(称为交互式分割),要么需要大量带注释的数据才能自动分割成预定义的类别。SAM 是一种基础 AI 模型,支持使用多种提示(如点击、框或文本输入)进行交互式分割。它还可以使用最少的数据和计算资源进行微调,以实现自动分割。SAM 经过超过 1 亿个不同的图像注释的训练,可以处理新对象和图像,而无需自定义数据收集或微调。

SAM 有两个主要组件:一个用于处理图像的图像编码器和一个用于处理点击或文本等输入的提示编码器。这些组件与一个轻量级解码器一起用于预测分割掩码。处理完图像后,SAM 可以在 Web 浏览器中仅用 50 毫秒创建一个片段,使其成为实时交互式任务的强大工具。为了构建 SAM,研究人员开发了一个三步数据收集过程:模型辅助注释、自动和辅助注释的混合以及全自动掩码创建。这个过程导致了 SA-1B 数据集,其中包括 1.1 万张获得许可的隐私保护图像上的超过 11 亿个蒙版,比任何现有数据集都大 400 倍。SAM 的出色表现源于这个广泛而多样化的数据集,与之前的数据集相比,它确保了各个地理区域的更好代表性。
在这里插入图片描述

揭开 SAM 2 的面纱:从图像到视频分割的飞跃

SAM 2 以 SAM 为基础,旨在实时、可提示地分割图像和视频中的对象。与仅专注于静态图像的 SAM 不同,SAM 2 通过将每一帧视为连续序列的一部分来处理视频。这使 SAM 2 能够更有效地处理动态场景和不断变化的内容。对于图像分割,SAM 2 不仅提高了 SAM 的功能,而且在交互式任务中的运行速度提高了三倍。

SAM 2 保留了与 SAM 相同的架构,但引入了用于视频处理的记忆机制。此功能允许 SAM 2 跟踪来自先前帧的信息,从而确保无论运动、光照或遮挡如何变化,都能实现一致的对象分割。通过参考过去的帧,SAM 2 可以在整个视频中完善其掩码预测。

该模型是在新开发的数据集上进行训练的, SA-V数据集,其中包括来自 600,000 个国家/地区的 51,000 个视频的 47 多个 masklet 注释。这个多样化的数据集涵盖了整个对象及其部分,提高了 SAM 2 在现实世界视频分割中的准确性。

SAM 2 是 Apache 2.0 许可下的开源模型,可用于各种用途。Meta 还根据 CC BY 2 许可共享了用于 SAM 4.0 的数据集。此外,还有一个 基于网络的演示 让用户探索模型并查看其性能。
在这里插入图片描述

潜在用例

SAM 2 在图像和视频的实时、可提示对象分割方面的能力已解锁了不同领域的众多创新应用。例如,其中一些应用如下:

  • 医疗保健诊断: SAM 2 可通过分割解剖结构和识别手术室实时视频中的异常情况,显著改善实时手术辅助。它还可在医学扫描中准确分割器官或肿瘤,从而增强医学成像分析。
  • 自动驾驶汽车: SAM 2 可通过在视频帧中连续分割和跟踪行人、车辆和路标来提高物体检测精度,从而增强自动驾驶汽车系统。其处理动态场景的能力还可通过实时识别和响应环境变化来支持自适应导航和防撞系统。
  • 互动媒体和娱乐: SAM 2 可通过实时精确分割对象来增强增强现实 (AR) 应用,使虚拟元素更容易与现实世界融合。它还可通过自动分割素材中的对象来简化视频编辑,从而简化背景移除和对象替换等流程。
  • 环境监测: SAM 2 可通过分割和监控视频片段中的动物来协助野生动物追踪,支持物种研究和栖息地研究。在灾难响应中,它可通过准确分割视频中受影响的区域和物体来评估损失并指导响应工作。
  • 零售和电子商务: SAM 2 可通过在图像和视频中对产品进行交互式细分来增强电子商务中的产品可视化。这可以让客户从各个角度和环境查看商品。对于库存管理,它可以帮助零售商实时跟踪和细分货架上的产品,从而简化盘点并改善整体库存控制。

克服 SAM 2 的局限性:实用解决方案和未来增强功能

虽然 SAM 2 在图像和短视频方面表现良好,但在实际使用中还是有一些局限性。在通过显著的视点变化、长时间遮挡或拥挤场景(尤其是在长视频中)跟踪物体时,它可能存在困难。通过交互式点击进行手动校正可以帮助解决这些问题。

在物体外观相似的拥挤环境中,SAM 2 偶尔会误识别目标,但后续帧中的额外提示可以解决此问题。尽管 SAM 2 可以分割多个物体,但由于它分别处理每个物体,因此效率会降低。未来的更新可能会受益于集成共享上下文信息来提高性能。

SAM 2 还可能错过快速移动物体的精细细节,并且预测在各个帧之间可能不稳定。不过,进一步的训练可以解决这一限制。虽然自动生成注释的功能已经得到改进,但人工注释者对于质量检查和帧选择仍然是必要的,进一步的自动化可以提高效率。

底线

SAM 2 在其前身奠定的基础之上,代表了实时图像和视频对象分割的重大飞跃。通过增强功能并将功能扩展到动态视频内容,SAM 2 有望改变从医疗保健和自动驾驶汽车到互动媒体和零售等各个领域。尽管仍存在挑战,特别是在处理复杂和拥挤的场景方面,但 SAM 2 的开源性质鼓励持续改进和适应。凭借其强大的性能和可访问性,SAM 2 有望推动创新并扩大计算机视觉及其他领域的可能性。

这篇关于SAM 2——视频和图像实时实例分割的全新开源模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095866

相关文章

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v

PyQt6 键盘事件处理的实现及实例代码

《PyQt6键盘事件处理的实现及实例代码》本文主要介绍了PyQt6键盘事件处理的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起... 目录一、键盘事件处理详解1、核心事件处理器2、事件对象 QKeyEvent3、修饰键处理(1)、修饰键类

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

Java Stream流以及常用方法操作实例

《JavaStream流以及常用方法操作实例》Stream是对Java中集合的一种增强方式,使用它可以将集合的处理过程变得更加简洁、高效和易读,:本文主要介绍JavaStream流以及常用方法... 目录一、Stream流是什么?二、stream的操作2.1、stream流创建2.2、stream的使用2.

springboot项目中集成shiro+jwt完整实例代码

《springboot项目中集成shiro+jwt完整实例代码》本文详细介绍如何在项目中集成Shiro和JWT,实现用户登录校验、token携带及接口权限管理,涉及自定义Realm、ModularRe... 目录简介目的需要的jar集成过程1.配置shiro2.创建自定义Realm2.1 LoginReal

Python跨文件实例化、跨文件调用及导入库示例代码

《Python跨文件实例化、跨文件调用及导入库示例代码》在Python开发过程中,经常会遇到需要在一个工程中调用另一个工程的Python文件的情况,:本文主要介绍Python跨文件实例化、跨文件调... 目录1. 核心对比表格(完整汇总)1.1 自定义模块跨文件调用汇总表1.2 第三方库使用汇总表1.3 导

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We