本文入选【技术写作训练营】优秀结营作品,作者:林天文
总览 SAM 的成就,本人认为主要有以下 3 点
总之,最让人激动的是以上 3 个成果都是 SAM 在监督任务上挑战 Zero-shot 带来的。
Demo:
https://segment-anything.com/demo
Paper:
https://arxiv.org/abs/2304.02643
ZERO-SHOT 的基本概念
我们先从生活中的视角去理解 Zero-shot。
假设小明和爸爸去参观动物园。看到了一只黑白相间的「斑马」、一只喙很大的「鹦鹉」和一只圆滚滚的幼年「海豹」。爸爸给小明提示,让他在动物园找到一只像斑马一样黑白相间、像鹦鹉一样有大喙、像幼年海豹一样圆滚滚的动物。
假设小明从未见过其他的动物,他也可以通过总结现有动物共有的特征来推断出其他动物的外貌。例如,小明知道斑马、鹦鹉、海豹。当小明看到一只企鹅时,便可以根据已知的属性信息推测出它可能就是爸爸要他找的黑白相间的、有大喙、圆滚滚的动物,因此他能够很自然地把这只企鹅归类为「新知」。这就是 Zero-shot 的基本概念,即通过已知的类别和属性信息对新的未见过的类别进行分类。
在实际应用中,ZSL(Zero-shot Learning)可以帮助我们解决各种问题,例如图像识别、自然语言处理等领域中的数据不足或无法获得实际标签的问题。通过零样本学习,我们可以先积累先验知识,再推断和预测新的未知类别,从而实现更加灵活和高效的智能化应用。
什么驱使了 Segment Anything
可以 ZERO-SHOT
Segment Anything 这篇工作的主要特点有两个:
在图文模态算法的近期发展进程中,一直围绕着一个关键词,即「n to n」,也就是我们常说的「模态对齐」。让属于特定 1 个词组的 n 种图像对齐到该单词,同时,让属于特定 1 个图像的 n 种词组对齐到该图片,是 Clip 十分擅长举一反三的关键。后续的 ALBEF 工作进一步优化了模态对齐的解决方案。另外,自从 CNN➕Pooling 的架构带飞了基于空间信息的 CNN 算法以来,我们都意识到不同抽象尺度对于学习算法的重要性,只有不断下采样池化,才能强迫模型站在多种尺度上观察空间信息特征,增广空间数据学习的视角。Segment Anything 正是 n to n 与多尺度抽象的实践者,以 n to n 为本,以多尺度抽象为基。
SAM 利用 Transformer 的 Cross attention 机制,促使图像的特征图创新性地与点模态、定位框模态、掩码模态(不是最终预测的掩码哦)和文本模态相互作用。值得注意的是,这 4 种模态的实例对于它所属的目标图像块并不是唯一确定的,本质上是在鼓励模型关注 n to n 的关系。
尤其是点、定位框、掩码这 3 种模态,它们随机采样于最终要预测的掩码中,刻意打乱了清晰确切的空间信息。它们在像素级和对象级两种尺度上分级抽象,原本模型只学习从 1 个目标到 1 个掩码块的映射,现在模型学习 1 个掩码块的同时要关注特征图与 3 个自由度极高的模态,它们的组合以及不同组合之间的联系迫使模型抽象图像的高级语义。曾经我们的 1 to 1 算法相比之下已然成为了模型“偷懒”的捷径。
在 SAM 中除了文本模态,其他 3 个模态的自由度都很高(注:文本模态受限于数据集,每个图片只能对应一段描述文本,自由度稍逊)。这 3 个模态作为某个图像之外的额外提示(prompt),几乎是无穷无尽的。理论上你可以从一个掩码块中随机取出无穷个点,也可以随机取出无穷个内部定位框和无穷个像素块。这种灵活的抽象关系让模型具有极其复杂的学习视角,这种学习视角在理论上是无穷的。也因此,引入了提示工程(prompt engineering,基于需求对提示做灵活变换)的 SAM 几乎可以做所有分割领域的细分任务,甚至包括了还未曾存在的新任务。
极其庞大且多元的互联网数据源是 Zero-Shot 能力的另一大核心。SA-1B 涵盖了各种类型、风格、场景和视角的图像。这有利于模型学习更通用和鲁棒的特征表示,从而提高分割算法举一反三的水平。
上面已经分析了 SAM 具有 Zero-Shot 性能的几个核心原因,而下面分析的是一些次要的因素。SA-1B 的虽然没有类别标注的概念,但实际上覆盖的分割对象种类特别全面,包含了大量的常见和罕见类别,它们覆盖了自然界和人造界的各个领域。这有利于模型学习更广泛和细致的语义信息,从而提高 Zero-shot 的性能。
SA-1B 的标注十分精确,大量噪声被有意修复,有利于模型学习更准确和清晰的边界信息,从而提高 Zero-shot 分割的性能。
监督学习将跳出过拟合泥潭
SAM 很快就能掌握自动标注能力,在 SA-1B 中,仅仅进行了 0.012%(120, 000 张) 的专家标注,就已经具备优秀的全自动分割水平(99.1% 的标注由 SAM 自动生成),其他模型需要 10% 甚至更多的标注量才能达到类似的水平,印证了 SAM 充分挖掘了数量有限的监督数据集,大大降低了监督算法对数据量的依赖,从而大大降低了监督算法过拟合的可能。
SAM 在监督学习的框架内实现了极其优异的 Zero-shot 性能,这带给我们一个思考——到底是数据集还是多模态带来了这种能力?互联网数据源或许能给出答案。当你提示“猫”,在图像数据集无穷大的时候,理论上“猫”的文本语义对应到了无数张不同的猫的图像,这样只要你给定文本语义,模型总是能准确地提取对应掩模。
所以我们首先可以确定,数据量足够庞大足够多元才能充分激发这种 Zero-shot 性能。那就是数据集才是根本吗?并不是。前面我们提到,无论是站在 3 个空间模态的角度来看,还是站在图像模态的角度来看,它们的学习视角十分自由,都近乎是无穷的。也就是说,当你图像模态有效增长了 1 个数据,SAM 的 3 种空间模态就能从分割面中自由提取几乎无数种可以配对的点、框、掩码(标签文本例外)。所以可以这么建模:自由度高的模态选择 x 数据集多元 = 优秀的 Zero-Shot 性能。两个因素理论上是平等的,但实际上,你无法获取无穷的数据,所以自由度高的模态设计更加重要,性价比也更高,这也启发了我们一种降低人工标注成本的预训练模型获取方式。
而在无监督任务中,我们常定义一对正负样本规则做对比学习。这种模式本身对正负样本的定义有较高的要求。比如 1 张图像与 n-1 个不匹配文本做对比,就能将图像模态与近乎无穷的文本模态建立负相关,反之 1 个文本如果与 n-1 张不匹配图像做对比,就能将文本模态与近乎无穷的图像模态建立负相关。这或许就是无监督目前 Zero-shot 性能的根源,但由于互联网图文对获取困难,质量不一,此处提到的这种正负样本规则还不足以充分激发 Zero-shot 性能,故无监督领域的大部分多模态工作(比如 Clip)只能靠砸钱堆数据来取得成效。它们应当学习 SAM 对模态自由度的精心设计。
仍有不足
本人观点
当前的文本模态在等待变革
进击的提示工程
作者的观点
总结
作为元宇宙概念的拥护者,Meta 公司推出可提示分割器大概率还是一种占领 MR 市场的商业策略,它搭建了一套成熟的官网演示 VR 设备如何跟踪用户视线(点模态)并提取任何被关注的对象。SAM 的商业意义是毋庸置疑的,但正是对 VR 产品交互的设想在学术上启发了我们关于 Zero-shot 更深入的认识并展现了一种可行的实践。
在 SAM 火热的这段时间,OpenMMLab 的开发者们维护了 Playground 项目(https://github.com/open-mmlab/playground)。
该项目仅在三天的时间内就将 SAM 的 Zero-shot 实例分割应用在的 OpenMMLab 的各项 Demo 上,足以看到 SAM 广泛的应用价值。
由于分割任务涵盖了分类、定位、检测等基本任务于一身,所以 MMDetection
、MMOCR、MMEditing 等工具箱就像开胃小菜一样一口一个 SAM。而基于分割掩码的引导,姿态检测、旋转框检测也融合了 SAM 到 SOTA 算法中。随后,Lable Studio 等标注工具也引入了 SAM 做可以提示的辅助标注。
过去我很喜欢打听大公司背后玩的统一模态大模型,而现在我们已经能在 GPT4 的宣传片中感受到一个多模态 AI 带来的冲击力,其本质上就是 Zero-shot 的魅力,并进一步转化为生成式模型的魅力。当我再次回到 SAM 诞生的当天,我会更期待那天看到的不只是一个靠打点画框分割一切的 SAM,而是一个感官更「健全」的 SAM,会期待那天诞生一个可以用语音教导的 SAM,会期待那天遇到一个会开口与我交谈的 SAM……有媒体说 SAM 标志着 CV 终结了,但是我们亦看到了有意思的新可能。CV 不断发展启发后人,远没有终结,希望越来越多的 AI 贡献者和创业者开拓疆界,打开更多新世界的大门~