号称分割一切的图片分割模型开源了——Segment Anything Meta SAM
头条号:人工智能研究所
微信号:启示AI科技
微信小程序:AI人工智能工具
代码解读
早期,解决各类分割问题主要采用两类方法。第一种是交互式分割,它能处理各类对象,但需要用户通过不断细化掩膜来指导。第二种是自动分割,它仅适用于预先定义的特定对象类别(如猫或椅子),但需要大量实例(如数千至数万个分割猫的实例)来训练。这两种方法均未提供通用的全自动化分割方案。

Segment Anything Meta SAM整合了上述两种方法。它是一个统一的模型,能够便捷地实现交互式分割和自动分割。该模型提供灵活的使用方式,只需输入正确的提示信息(如点击、分割框、文本等),即可完成分割任务。此外,Segment Anything Meta SAM基于包含超过10亿个掩码的多样化的高质量数据集进行训练,使其具备在新类型对象和图像上的泛化能力。

在 Segment Anything Meta SAM 中,该模式包含三个重要组成部分:
- 图像编码器。
- 提示编码器。
- 掩码解码器。

Segment Anything Model 是一种以最低的人为干预构建为全自动可提示图像分割模型的方法论。该模型提供了一键分割功能,同时,模型还可以通过输入一个坐标点、一个输入框,或通过输入一个对象的文本来完成分割任务。

任何具有突破性进展的深度学习模型都依赖于其训练数据。同样遵循这一原则的是Segment Anything Model。该数据集整合了超过1100万张图像和11亿个mask遮罩,最终命名为SA-1B数据集。

训练 Segment Anything 能力的模型需要具备该能力,但这样的数据集并不存在,因为手动标注如此多的图像对于人类来说是不可能的。那么,数据集的构建过程如何?简而言之,SAM 作为注释工具,通过与数据标注者互动,帮助构建了数据集。数据标注者通过 SAM 进行交互式标注,随后利用新标注的数据来训练 SAM。通过不断重复这一过程,SAM 形成了一个内部的数据引擎。

这个数据引擎+在数据集上训练 SAM 分为三个阶段:
- 辅助手动阶段
- 半自动阶段
- 全自动阶段

在第一个阶段,注释员通过预训练的 SAM 模型以交互式方式在浏览器中分割图像中的对象。在第一阶段结束后,数据集基于120,000张图像包含了430万个掩码。Segment Anything Model 在此数据集上进行了重新训练。

在该阶段,显著的物体通过 SAM 进行了分割。注释者对未被注释且不显眼的对象进行了注释。在该阶段,从180,000张图像中生成了额外的5,900,000个掩码,SAM 在这些图像上进行了进一步的微调。

在全自动化阶段,标注完全由 SAM 完成。在该阶段,SAM 已经在超过 10 million 的掩码上进行了训练。自动生成的蒙版被应用于 11 million 的图像,生成了 1.1 billion 的蒙版。

Segment Anything Dataset 最新版本标志着其成为公开图像分割数据集的领导者。与 OpenImages V5 相比,该数据集的图像数量增加了6倍,遮罩数量则提升了400倍。

SAM 支持用户通过点击或交互式点击操作来分割对象,以实现分离或排除目标对象。此外,边界框分割模型是一种基于区域的分割方法,能够更精确地识别和分离目标对象。

SAM在遇到被分割对象的歧义时,能够生成多个有效的遮蔽掩码,这一能力不仅不可或缺,而且对于提升分割精度具有重要意义。
SAM 可以自动发现并屏蔽图像中的所有对象。
在预处理阶段完成图像嵌入后,SAM能够实时响应各种提示生成相应的分割掩码,并持续支持与模型的实时交互。

此外,Meta推出了支持在线试玩的DEMO,用户可以通过官方网站便捷地上传自己的图片进行试玩。
https://segment-anything.com/demo#
代码解读

试玩demo提供了好几种分割方法
我们可以任意一个对象上进行单击操作,模型将根据点击位置自动分割周围的对象。
2、我们也可以选择box进行对象框的选择来进行对象的分割。
3、我们也可以选择everything,让模型自动进行所有对象的分割。

4、模型提供了多mask对象分割模型

SAM 可以作为 AR/VR、内容、科学、医学等领域的重要创造工具,同时为更广泛的通用人工智能系统提供服务。随着计算机硬件技术的不断进步,较大的模型将逐步实现普通用户的使用。

https://github.com/facebookresearch/segment-anything
代码解读
Segment Anything Model的代码已开源,我们后期将深入介绍相关代码实现细节。

from segment_anything import SamAutomaticMaskGenerator, sam_model_registry
sam = sam_model_registry["<model_type>"](checkpoint="<path/to/checkpoint>")
mask_generator = SamAutomaticMaskGenerator(sam)
masks = mask_generator.generate(<your_image>)
代码解读
更多transformer模型
VIT模型
swin transformer模型
参考头条号:人工智能研究所
ChatGPT的大火,
带动了人工智能学习的热潮,
AI学习圈,
分享相关人工智能技术,
AI学习圈 URL:
https://wx2.expostar.cn/qz/pages/manor/index?id=1137&share_from_id=79482&sid=24
代码解读

