SAM - Segment Anything Model

模型详细情况和参数

SAM

模型全称
Segment Anything Model
模型简称
SAM
模型类型
基础大模型
发布日期
2023-04-05
预训练文件大小
2.4GB
是否支持中文(中文优化)
最高支持的上下文长度
2K
模型参数数量(亿)
10.0
模型代码开源协议
预训练结果开源商用情况
-
模型GitHub链接
暂无
模型HuggingFace链接
暂无
在线演示地址
暂无
DataLearnerAI的模型介绍
官方博客论文
Segment Anything
基础模型
无基础模型

Segment Anything Model 简介

SAM全称是Segment Anything Model,由MetaAI最新发布的一个图像分割领域的预训练模型。该模型十分强大,并且有类似GPT那种基于Prompt的工作能力,在图像分割任务上展示了强大的能力!此外,该模型从数据集到训练代码和预训练结果完全开源!真Open的AI!


在自然语言处理和最近的计算机视觉领域,基础模型是一个有前途的发展方向,它通常可以通过使用“提示”技术对新的数据集和任务进行零-shot和少量样本学习。但是,这样的工作方式目前很少运用在CV领域。而MetaAI试图提出可提升的分割任务( promptable segmentation)。其目标是在给定任何分割提示的情况下返回一个有效的分割掩码,如下图所示:




SAM模型的原理简介

提示简单地指定要在图像中分割的内容,例如,提示可以包括标识对象的空间或文本信息。有效输出掩码的要求意味着即使提示是模棱两可的并且可能指代多个对象(例如,衬衫上的一个点可以表示衬衫或穿着衬衫的人),输出也应该至少是这些对象中一个合理的掩码。我们将可提示的分割任务用作预训练目标,并通过提示工程解决通用的下游分割任务。


但是,实现这一任务其实很不容易,对图像分割的模型架构有很多限制。然而,MetaAI发现了一个简单的设计可以满足:

  • 一个强大的图像编码器计算图像嵌入
  • 一个提示编码器嵌入提示
  • 然后这两个信息源在轻量级的掩码解码器中组合,预测分割掩码

这个方法的核心如上图的Figure 1b所示!通过将SAM分解为一个图像编码器和一个快速提示编码器/掩码解码器,可以重用相同的图像嵌入(并摊销其成本)来处理不同的提示。给定一个图像嵌入,提示编码器和掩码解码器在Web浏览器中从提示中预测出掩码需要约50ms的时间。


SAM模型的效果

SAM在零样本迁移学习中效果十分强大。MetaAI做了5项相关任务的评估,其中4项都是与可提示分割无关的任务。具体的评测任务如下:


  • Zero-Shot Single Point Valid Mask Evaluation Task(零-shot单点有效掩码评估任务)
  • Zero-Shot Edge Detection(零-shot边缘检测)
  • Zero-Shot Object Proposals(零-shot对象建议)
  • Zero-Shot Instance Segmentation(零-shot实例分割)
  • Zero-Shot Text-to-Mask(零-shot文本到掩码)


以第一个任务为例,SAM显示了强大的效果,在23个数据集上,表现大部分都好于之前的RITM:

其它测试结果大家看原论文。


实验从测试可提示分割的核心目标开始:从任何提示中生成一个有效的掩码。MetaAI强调了单个前景点提示的挑战性场景,因为它比其他更具体的提示更容易产生歧义。接下来,作者展示了一系列实验,跨越了图像理解的低、中、高级别,大致与该领域的历史发展平行。具体来说,提示SAM执行以下任务:(1)执行边缘检测,(2)分割所有物体,即对象建议生成,(3)分割检测到的物体,即实例分割,以及(4)作为概念证明,从自由文本中分割对象。这四个任务与SAM训练时的可提示分割任务有很大的不同,并通过提示工程实现。


SMA实际测试结果

SAM完全开源,官方发布了在线演示模型和测试效果。效果十分强大!


从草丛中分割出小狗



下图是我实际测试的结果,把黑色眼睛完整从黑色键盘背景中分割出来了!


实在是太强大了!


官方还有一个演示,与其它系统结合来使用SAM,包括AR/VR眼镜等。效果非常好!

实时检测效果很准确,或许这就是Meta之前全部投入元宇宙的成果之一!


SAM开源代码、预训练模型以及其它资源

SAM完全开源,这也是继MetaAI贡献的LLaMA之后又一个十分卓越的开源贡献!很快,各种新的分割应用应该就会出现了!


目前,SAM开源了3个模型,即 vit_h、vit_l和vit_b,最后一个是最大的结果!


SAM官方博客地址: https://ai.facebook.com/blog/segment-anything-foundation-model-image-segmentation/ 

SAMGitHub项目开源地址: https://github.com/facebookresearch/segment-anything 

SAM在线演示地址: https://segment-anything.com/demo# 

SAM数据集地址: https://segment-anything.com/dataset/index.html 

SAM论文地址: https://scontent-sjc3-1.xx.fbcdn.net/v/t39.2365-6/10000000_900554171201033_1602411987825904100_n.pdf


SAM使用方法

官方完全开源的方式让我们使用SAM非常简单。主要依赖:python>=3.8pytorch>=1.7以及torchvision>=0.8


首先,直接安装GitHub上提供的包:


pip install git+https://github.com/facebookresearch/segment-anything.git


当然,如果需要使用mask后处理,需要安装如下依赖:


pip install opencv-python pycocotools matplotlib onnxruntime onnx

然后就可以直接在代码中使用,方法如下:


from segment_anything import build_sam, SamPredictor predictor = SamPredictor(build_sam(checkpoint="</path/to/model.pth>")) predictor.set_image(<your_image>) masks, _, _ = predictor.predict(<input_prompts>)


需要注意的是,上面的checkpoint参数里面的pth文件需要大家提前下载好(可选3个任意一个):

ViT-H SAM模型checkpoints: https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth 

ViT-L SAM模型checkpoints:  https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth 

ViT-B SAM模型checkpoints:  https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth 



欢迎大家关注DataLearner官方微信,接受最新的AI模型和技术推送

SAM所属的领域
SAM相关的任务