视觉大模型:SAM(Segment Anything)及示例

aaaa
创建于2023-12-16
阅读 231
收藏TA

需扫码在手机上打开
文章后点击更新提醒

本篇记录一下用于图像分割的视觉基础大模型:SAM(Segment Anything Model)。

《Segment Anything》由Meta AI Research于2023年4月5号放在arxiv上。代码已开源。


    图像的分割问题是计算机视觉领域的核心问题之一,旨在判断哪个像素属于哪个类别,在像素级进行分类。有广泛的应用,比如自动驾驶、医学图像分析、卫星遥感图像分析等等。


    不同于一般的图像分割算法,SAM旨在设计一个图像分割的基础模型,即使是在训练阶段没有见过的物体类别也能够分割,即zero-shot。SAM的核心是减少图像分割对特定任务建模的专业知识、训练计算量和自定义数据的标注的需求,实现方法就是采用可提示的方法,根据不同的数据进行训练,并且可以适应特定的任务,类似于自然语言处理模型中如何使用提示。


    实现这一目标取决于三个部分:任务、模型和数据,即三个方面的问题:


  1. 什么任务可以实现零样本泛化?
  2. 相应的模型架构是什么?
  3. 什么数据可以为这个任务和模型提供动力?


    因此,对应的三个组成部分的设计:


可提示分割任务,其目标是在给定任何分割提示的情况下返回有效的分割掩码。


模型必须支持灵活的提示,需要分摊实时计算掩码以允许交互使用,并且必须具有模糊性意识。强大的图像编码器计算图像嵌入,提示编码器编码提示信息(点、框、掩模和文本等), 然后将两个信息源组合在一个轻量级掩模解码器中,该解码器预测分割掩模;SAM 具有三个组件:图像编码器、灵活的提示编码器和快速掩模解码器。


数据引擎分为三个阶段:辅助手动(人工最多,此时模型效果还不行)、半自动(半人工半自动,模型效果持续提升中)和全自动(人工参与最少甚至不需要,都由模型生成掩膜)。


    SAM 执行可提示的分割,与语义分割有两点不同:(1)SAM 生成的掩码没有标签;(2) SAM 依赖提示词(point, box, mask, etc.)。换句话说,SAM 只剪切图像中的对象,而不分配标签,而剪切哪个对象取决于给定的提示。鉴于所谓的提示词工程,SAM 在无需微调的情况下表现出了出色的零样本迁移性能,使许多人认为 SAM 就像计算机视觉的 GPT-3 。SAM 在 SA-1B 上进行训练,其中包含来自 1100 万张图像的超过 1B 个掩模,使其成为有史以来发布的最大的分割数据集。


    SAM 利用提示分割任务作为预训练目标,利用提示工程来处理一般的下游分割任务。为了增强模型适应提示的灵活性并提高其抗干扰的鲁棒性,SAM分为三个部分:图像编码器、提示编码器和掩模解码器。这种划分有效地分配了计算成本,从而产生了具有足够适应性和通用性的分割模型。SAM 的优势在于其能够有效地泛化不同的细分任务,这要归功于提示词工程方法。


    关于SAM提出的数据引擎:由于缺乏足够的公共数据进行训练,研究人员利用训练-标注迭代过程形成数据引擎,同时实现模型训练和数据集构建。


具体过程可分为三个阶段。


1) 辅助手动阶段。专业标注者使用浏览器上的交互式标注工具,结合SAM进行手动标注。SAM 首先使用公共数据集进行训练。随着数据逐渐增加,SAM的图像编码器的尺寸也随之增加。在此阶段结束时,收集了 430 万个掩模和 12 万张图像。


2)半自动阶段。为了增加掩模的多样性并提高模型的性能,研究人员首先通过模型预先填充了掩模,使模型可以做出高置信度的预测。然后他们要求标注者交互式地标注未填充的部分。在此阶段结束时,一张图像平均可以提供 72 个掩模。


3)全自动阶段。在这个阶段,由于收集了足够的掩模并引入了模糊感知模型,可以进行SAM的最终训练和SA-1B数据集的获取。即使提示不明确,模糊感知模型也使 SAM 能够预测有效的掩码。具体来说,研究人员使用32x32的网格来均匀地获取每张图像上的提示点。如果提示点位于目标部件或子部件结构上,模型将返回子部件、部件或整个对象的掩模(比如一个人穿着T恤,当点在T恤上时,也可能是人和T恤)。并根据置信度对输出进行过滤排序。在此阶段结束时,最终的 SA-1B 数据集包含 1100万 张图像和 11亿 个掩模。


一些例子:输入一张图,可使用点、框或者点+框进行提示需要分割的物体(默认分割全部物体)。

分割全部mask


使用box框柱最左边小鸭子


使用点进行提示


使用点提示的结果


    通过之前介绍的短语定位模型,比如MDETR、GLIP和GroundingDINO等还可以实现全自动的基于文本提示的实例分割,这是使用MDETR的结果(通过文本“fish”使用MDETR获取fish的标注框,将框作为SAM模型的提示词输出mask):

查看原文 原文转载自微信公众号,著作权归作者所有
阅读 231
文章由 美篇工作版 编辑制作
投诉