常见问题

什么是 Segment Anything?

Segment Anything 是 Meta AI 开发的一个图像分割模型,旨在通过一个统一的框架完成任意物体的分割任务。它基于一个称为 SAM(Segment Anything Model)的模型,能够根据点、框、文本提示或自动生成掩码,无需针对特定类别进行训练。官方项目页面位于 segment-anything.com,提供交互式演示、模型权重、数据集和文档。

Segment Anything 的核心创新是什么?

其核心创新在于“提示分割”范式。用户可以通过多种提示(如点击物体上的一个点、画一个框、输入自然语言描述)来指定想要分割的对象,模型会实时生成高质量的分割掩码。这种交互方式大幅降低了分割任务的使用门槛,同时模型具有强大的零样本泛化能力,能够分割从未在训练集中见过的物体。

Segment Anything 模型(SAM)的架构是怎样的?

SAM 包含三个主要组件:图像编码器(基于 Vision Transformer,经过预训练)、提示编码器(处理点、框、文本等提示)和掩码解码器(输出分割掩码)。图像编码器计算图像特征,提示编码器将用户输入转换为嵌入向量,然后掩码解码器根据这些特征生成最终的掩码。这种设计使得 SAM 可以在一次前向传播中处理多个提示,并快速生成结果。

Segment Anything 的训练数据集有多大?

Meta AI 发布了一个名为 SA-1B 的数据集,包含超过 11 亿个分割掩码,覆盖约 1100 万张图像。这是目前公开可用的最大规模分割数据集。数据采集过程中使用了半自动和全自动的标注流程,通过模型辅助循环扩展掩码数量,最终实现了高质量、多样化的全覆盖标注。

Segment Anything 支持哪些输入提示方式?

支持四种主要提示方式:点提示(点击物体上的正点或背景上的负点)、框提示(拖拽矩形框住物体)、文本提示(通过自然语言描述物体,例如“汽车”、“椅子”)和自动分割(无需任何提示,模型会生成图像中所有可能物体的掩码)。其中文本提示依赖 CLIP 等模型进行文本嵌入编码。

如何使用 Segment Anything 进行图像分割?

可通过以下方式使用:访问 segment-anything.com 上的在线演示,上传图像后点击或画框即可体验;下载官方代码仓库(GitHub 上提供的 segment-anything 仓库)并在本地运行;使用 PyTorch 加载预训练模型权重(提供 ViT-B、ViT-L、ViT-H 三种规模);调用 SAM 的预测器接口,输入图像和提示,获取掩码输出。

Segment Anything 的性能表现如何?

在多个零样本分割基准测试中,SAM 表现出色。例如在 COCO 数据集上,使用点提示的 SAM 在零样本设定下取得了与经过微调的专门模型相媲美的结果。同时模型对不同物体大小、形状、遮挡和背景杂乱场景具有鲁棒性。不过对于细长结构或极小物体,有时需要多点提示才能精确分割。

Segment Anything 能否用于视频分割?

虽然 SAM 本身是针对单张图像设计的,但可以通过逐帧应用并结合跟踪方法扩展至视频分割。社区已经开发出基于 SAM 的视频分割工具,例如使用光流或特征匹配来保持时序一致性。Meta 官方也提供了 SAM 与时间线索结合的示例,但未经专门训练。

Segment Anything 能否处理其他领域图像(如医学影像、卫星图)?

SAM 在自然图像上训练,但零样本泛化能力使其对医学成像、遥感图像等领域也有效。许多研究已成功将 SAM 用于细胞显微镜、CT 扫描、卫星建筑物分割等任务,但领域差异较大时可能需要微调或精心校准提示。通常领域图像质量越高、物体形态越接近自然图像,效果越好。

Segment Anything 是否开源?许可证是什么?

是开源的。模型权重、推理代码、数据集和标注工具均在 GitHub 上以 MIT 许可证发布(segment-anything 仓库)。SA-1B 数据集则采用特定的数据许可协议,允许研究用途。商业使用时需检查具体条款,但模型权重本身受 MIT 保护,较为宽松。

Segment Anything 与之前的分割模型(如 Mask R-CNN、DeepLab)有何区别?

传统分割模型通常针对固定类别集进行训练(例如 80 类 COCO),无法识别训练集之外的物体,且需要大量标注数据进行微调。SAM 则是提示驱动的通用分割模型,不需要针对新类别重新训练,只需在推理时提供提示即可分割任意物体。此外 SAM 的交互速度极快(毫秒级响应),适合人机协作。

Segment Anything 可以用于编辑图像或目标删除吗?

可以。由于 SAM 能精确生成物体掩码,用户可先用 SAM 分割出目标区域,然后使用后续处理(如修补、背景替换、移除)实现编辑。配合文本提示,甚至可以用语言指定要删除的对象。网上已有许多基于 SAM 的交互式图像编辑工具。

Segment Anything 模型有多重(大小)?需要什么硬件?

提供了三种规模的模型:ViT-B(轻量级,约 90MB 权重)、ViT-L(约 350MB)和 ViT-H(约 2.6GB)。轻量级模型在 CPU 上也能运行,但速度较慢。推荐使用至少 8GB 显存的 GPU,例如 RTX 2080 或更高级别。ViT-H 在推理时大约需要 6GB 显存,但可切换精度以减少内存。

Segment Anything 的自动分割模式是如何工作的?

自动分割模式使用一个密集的网格点作为提示,对图像上的每个点进行一次前向传播,然后通过非极大值抑制合并重叠掩码。最终输出图像中所有物体(包括前景和背景)的完整掩码集合。该模式适合批量处理或快速预览,但可能产生冗余的小粒度掩码。

Segment Anything 能处理边缘不规则、纹理复杂的物体吗?

SAM 在大多数情况下表现良好,包括有毛边、透明、反光或纹理复杂的物体(如头发、玻璃瓶)。但若物体与背景颜色对比度极低,或者物体本身极其细小(如头发丝),可能需要提供更精确的位置提示(例如在物体内部多点击几点)来得到满意结果。

Segment Anything 的文本提示需要什么形式的描述?

文本提示通常使用简单的名词短语,例如“a dog”、“the red car”、“person in white shirt”。模型依赖于 CLIP 文本编码器,因此输入文本越具体、越准确,分割效果越好。避免使用过于抽象或包含否定句的描述(如“not a tree”)可能导致失败。官方演示中支持英文文本,中文提示需自行替换编码器或对接多语言 CLIP 模型。

Segment Anything 能否一次性分割多个物体?

可以。用户可以通过多个提示(例如点击多个位置或画出多个框)在一次推理中生成多个物体的掩码。自动分割模式更是直接输出全图所有物体的掩码。但需要注意,如果多个物体靠得太近或重叠,单个提示可能难以区分,此时需使用负点(背景点)来辅助分离。

Segment Anything 的未来发展方向有哪些?

Meta AI 团队表示将继续提升模型效率、扩展支持三维数据、改进文本提示对齐,并开发用于视频的时序版本。社区也在探索将 SAM 集成到 AR/VR 场景、实时应用、以及多模态大模型中。此外,SAM 的交互式标注能力有望大幅降低数据集构建的人力成本。