Meta强势推出分割一切新工作的视觉大模型!SAM2对比YOLOV8

SAM 2 是 Meta 的Segment Anything Model (SAM) 的后续产品,是一款专为图像和视频中的综合对象分割而设计的尖端工具。它采用统一、可提示的模型架构,支持实时处理和零镜头泛化,在处理复杂的视觉数据方面表现出色。

主要功能

统一模型架构

SAM 2 在单一模型中结合了图像和视频分割功能。这种统一简化了部署,并能在不同媒体类型中实现一致的性能。它利用灵活的基于提示的界面,使用户能够通过各种提示类型(如点、边界框或掩码)指定感兴趣的对象。

实时性能

该模型可实现实时推理速度,每秒处理约 44 帧图像。这使得SAM 2 适用于需要即时反馈的应用,如视频编辑和增强现实。

零点概括

SAM 2 可以分割它从未遇到过的物体,展示了强大的零点泛化能力。这在多种多样或不断变化的视觉领域尤其有用,因为在这些领域中,预定义的类别可能无法涵盖所有可能的物体。

互动式改进

用户可以通过提供额外的提示来迭代完善分割结果,从而实现对输出的精确控制。这种交互性对于微调视频注释或医学成像等应用中的结果至关重要。

视觉挑战的高级处理

SAM 2 包括一些机制,用于管理常见的视频分割难题,如物体遮挡和重现。它使用复杂的记忆机制来跟踪各帧中的物体,即使物体暂时被遮挡或退出和重新进入场景,也能确保连续性。

 我已打包好,不方便的可以上图自取

性能和技术细节

SAM 2 树立了该领域的新基准,在各种指标上都优于以前的模型:

模型架构

核心部件

  • 图像和视频编码器:利用基于变换器的架构,从图像和视频帧中提取高级特征。该组件负责理解每个时间步的视觉内容。
  • 提示编码器:处理用户提供的提示(点、框、遮罩),以指导分割任务。这样,SAM 2 就能适应用户输入,并锁定场景中的特定对象。
  • 记忆机制:包括记忆编码器、记忆库和记忆注意力模块。这些组件共同存储和利用过去帧的信息,使模型能够在一段时间内保持一致的目标跟踪。
  • 掩码解码器:根据编码图像特征和提示生成最终的分割掩码。在视频中,它还使用内存上下文来确保跨帧的准确跟踪。

 记忆机制和闭塞处理

记忆机制允许SAM 2 处理视频数据中的时间依赖性和遮挡。当物体移动和互动时,SAM 2 会将其特征记录在记忆库中。当一个物体被遮挡时,模型可以依靠这个记忆库来预测它再次出现时的位置和外观。遮挡头专门处理物体不可见的情况,预测物体被遮挡的可能性。

多掩码模糊解决

在模棱两可的情况下(如物体重叠),SAM 2 可以生成多个掩码预测。这一功能对于准确呈现复杂场景至关重要,因为在复杂场景中,单一掩码可能无法充分描述场景的细微差别。

SA-V 数据集

SA-V 数据集是为SAM 2 的训练而开发的,是目前最大、最多样化的视频分割数据集之一。它包括

  • 51,000 多部视频:在 47 个国家拍摄,提供各种真实场景。
  • 600,000+ 个掩码注释:详细的时空掩码注释,称为 "小掩码",涵盖整个物体和部分。
  • 数据集规模:与以往最大的数据集相比,该数据集的视频数量增加了 4.5 倍,注释数量增加了 53 倍,提供了前所未有的多样性和复杂性。

基准

视频对象分割

SAM 2 在主要的视频分割基准测试中表现出了卓越的性能:

 交互式细分

在交互式分割任务中,SAM 2 显示出显著的效率和准确性:

安装

要安装SAM 2,请使用以下命令。首次使用时,所有SAM 2 型号都会自动下载。

pip install ultralytics

 如何使用SAM 2:图像和视频分割的多功能性 下表详细介绍了可用的SAM 2 模型、预训练权重、支持的任务以及与推理、验证、训练和导出等不同操作模式的兼容性。

SAM 2 预测示例

SAM 2 可用于各种任务,包括实时视频编辑、医学成像和自主系统。它能够分割静态和动态视觉数据,是研究人员和开发人员的多功能工具。

带提示的片段

使用提示来分割图像或视频中的特定对象。

from ultralytics import SAM

# Load a model
model = SAM("sam2_b.pt")

# Display model information (optional)
model.info()

# Segment with bounding box prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])

# Segment with point prompt
results = model("path/to/image.jpg", points=[150, 150], labels=[1])
一切分段

分割整个图像或视频内容,无需特定提示。

from ultralytics import SAM

# Load a model
model = SAM("sam2_b.pt")

# Display model information (optional)
model.info()

# Run inference
model("path/to/video.mp4")

  • 本示例演示了SAM 2 如何在不提供提示(bboxes/points/masks)的情况下用于分割图像或视频的全部内容。

 SAM 对比YOLOv8

在此,我们将 Meta 的最小SAM 模型SAM-b 与Ultralytics 的最小分割模型YOLOv8n-seg 进行比较:

这种比较显示了不同模型之间在模型大小和速度上的数量级差异。虽然SAM 在自动分段方面具有独特的功能,但它并不是YOLOv8 分段模型的直接竞争对手,后者更小、更快、更高效。

测试在配备 16GB 内存的 2023 Apple M2 Macbook 上进行。重现此测试

from ultralytics import SAM, YOLO, FastSAM

# Profile SAM-b
model = SAM("sam_b.pt")
model.info()
model("ultralytics/assets")

# Profile MobileSAM
model = SAM("mobile_sam.pt")
model.info()
model("ultralytics/assets")

# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model("ultralytics/assets")

# Profile YOLOv8n-seg
model = YOLO("yolov8n-seg.pt")
model.info()
model("ultralytics/assets")

自动注释:高效创建数据集

自动标注是SAM 2 的一项强大功能,用户可以利用预先训练好的模型快速准确地生成分割数据集。这一功能对于创建大型、高质量的数据集尤为有用,无需大量人工操作。

如何使用SAM 2 自动注释

要使用SAM 2 自动标注数据集,请参考以下示例:

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model="sam2_b.pt")

该功能有助于快速创建高质量的分割数据集,是旨在加快项目进度的研究人员和开发人员的理想选择。

局限性

SAM 2 虽然有其优势,但也有一定的局限性:

  • 跟踪稳定性:SAM 2 在长时间连续跟踪或视角发生重大变化时,可能会失去对物体的跟踪。
  • 物体混淆:模型有时会混淆外观相似的物体,尤其是在拥挤的场景中。
  • 处理多个对象时的效率:同时处理多个对象时,由于缺乏对象间通信,分割效率会降低。
  • 细节准确性:可能会遗漏细节,尤其是快速移动的物体。额外的提示可以部分解决这一问题,但无法保证时间上的流畅性。

 常见问题

什么是SAM 2,它是如何改进原来的 "分段式任何模式" (SAM) 的?

SAM 2 是 Meta 的Segment Anything Model (SAM) 的后续产品,是一款专为图像和视频中的综合对象分割而设计的尖端工具。它采用统一、可提示的模型架构,支持实时处理和零镜头泛化,在处理复杂视觉数据方面表现出色。SAM 与最初的SAM 相比,2 提供了多项改进,包括

  • 统一模型架构:将图像和视频分割功能整合到一个模型中。
  • 实时性能:每秒可处理约 44 帧图像,适合需要即时反馈的应用。
  • 零镜头泛化:对从未遇到过的物体进行分段,适用于各种视觉领域。
  • 交互式细化:通过提供额外的提示,允许用户迭代完善细分结果。
  • 先进的视觉挑战处理能力:处理常见的视频分割难题,如物体遮挡和重现。

如何使用SAM 2 进行实时视频分割?

SAM 2 可利用其可提示界面和实时推理功能进行实时视频分割。下面是一个基本示例:

from ultralytics import SAM

# Load a model
model = SAM("sam2_b.pt")

# Display model information (optional)
model.info()

# Segment with bounding box prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])

# Segment with point prompt
results = model("path/to/image.jpg", points=[150, 150], labels=[1])

 SAM 2 使用哪些数据集进行训练,这些数据集如何提高其性能?

SAM 2 是在 SA-V 数据集上进行训练的,该数据集是目前最大、最多样化的视频分割数据集之一。SA-V 数据集包括

  • 51,000 多部视频:在 47 个国家拍摄,提供各种真实场景。
  • 600,000+ 个掩码注释:详细的时空掩码注释,称为 "小掩码",涵盖整个物体和部分。
  • 数据集规模:比以往最大的数据集多 4.5 倍的视频和 53 倍的注释,提供前所未有的多样性和复杂性。

这一广泛的数据集使SAM 2 在主要的视频分割基准测试中取得了优异的性能,并增强了其零镜头泛化能力。更多信息,请参阅SA-V 数据集部分。

SAM 2 如何处理视频分割中的遮挡和物体重现?

SAM 2 包括一个复杂的存储机制,用于管理视频数据中的时间依赖性和遮挡。存储机制包括

  • 记忆编码器和记忆库:存储过去帧的特征。
  • 记忆注意力模块:利用存储的信息保持对物体的追踪始终如一。
  • 遮挡头:专门处理物体不可见的情况,预测物体被遮挡的可能性。

即使物体被暂时遮挡或退出并重新进入场景,该机制也能确保连续性。更多详情,请参阅 "记忆机制和遮挡处理"部分。

SAM 2 与其他细分模型(如YOLOv8 )相比如何?

SAM 2 和Ultralytics YOLOv8 的目的不同,擅长的领域也不同。SAM 2 专为综合物体分割而设计,具有零镜头泛化和实时性能等高级功能,而YOLOv8 则针对物体检测和分割任务的速度和效率进行了优化。下面是一个比较:

 

  • 13
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值