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(Segment Anything Model)在实例分割中的应用 #### 1. **SAM 的核心功能** Segment Anything Model (SAM) 是一种通用的分割模型,其设计目标是实现“一切的分割”,并结合了语义分割实例分割的能力[^1]。通过提供提示(如点、边界框),它可以精确地分割图像中的对象,而无需针对特定任务或类别进行专门训练。 #### 2. **SAM 的组成结构** SAM 模型由三个主要组件构成: - 图像编码器:负责提取输入图像的特征表示。 - 提示编码器:处理用户提供的提示信息(如点、边界框等)。 - 掩码解码器:基于图像特征提示信息生成最终的对象掩码[^2]。 这些组件共同协作,使得 SAM 能够高效完成实例分割任务。 #### 3. **SAM实例分割中的具体实现** 以下是使用 Python PyTorch 实现 SAM 进行实例分割的一个简单代码示例: ```python import torch from segment_anything import sam_model_registry, SamPredictor # 加载预训练的 SAM 模型 sam_checkpoint = "path/to/sam_vit_h_4b8939.pth" model_type = "vit_h" device = torch.device("cuda" if torch.cuda.is_available() else "cpu") sam = sam_model_registry[model_type](checkpoint=sam_checkpoint).to(device) predictor = SamPredictor(sam) # 输入图像路径 image_path = "example.jpg" image = cv2.imread(image_path) image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # 设置预测器 predictor.set_image(image) # 用户提示:例如,在图像上指定一个点作为前景提示 input_point = torch.tensor([[500, 375]]) # 前景点坐标 input_label = torch.tensor([1]) # 标签为1表示前景 masks, scores, logits = predictor.predict( point_coords=input_point, point_labels=input_label, multimask_output=True, ) for i, mask in enumerate(masks): plt.figure(figsize=(10, 10)) plt.imshow(image) show_mask(mask, plt.gca()) show_points(input_point, input_label, plt.gca()) plt.title(f"Mask {i+1}, Score: {scores[i]:.3f}", fontsize=18) plt.axis('off') plt.show() ``` 上述代码展示了如何加载 SAM 模型并对一张图片执行实例分割操作。用户可以通过指定点或其他提示来控制分割的结果。 #### 4. **SAM 的优势** 相比于传统的实例分割方法,SAM 具有以下显著优点: - 不依赖于预先定义的目标类别,能够泛化到未见过的新类别。 - 支持多种类型的提示(如点、边界框等),增强了灵活性交互能力。 - 即使是在复杂背景下的多实例场景中也能表现出较高的精度。 #### 5. **实际应用场景** SAM 已经被广泛应用于多个领域,尤其是在需要高精度分割的任务中表现突出。例如: - 自动驾驶中的障碍物检测与分割。 - 医疗影像分析中的病变区域定位。 - 地理信息系统中的遥感图像解析。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

知来者逆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值