📕总览 SAM 的成就
Demo:Segment Anything | Meta AI (segment-anything.com)
Paper:arxiv
- 提出了新任务:基于提示的分割
- 提出了新模型:SAM(Segment Anything Moduel)
- 提出了新数据集:SA-1B
- 总之,最让人激动的是以上三个成果都是 SAM 在监督任务上挑战 Zero-Shot 带来的
📃ZERO-SHOT 的基本概念
- 😉我们先从生活中的视角去理解 Zero-Shot
- 假设小明和爸爸去参观动物园。开到了一只黑白相间的斑马、一只喙很大的鹦鹉和一只圆滚滚的幼年海豹。爸爸给小明提示,让他在动物园找到一只像斑马一样黑白相间、像鹦鹉一样有大喙、像幼年海报一样圆滚滚的动物
- 假设小明从未见过其他的动物,但他可以通过总结现有动物共有的特征来推断出其他动物的外貌。例如,小明知道斑马、鹦鹉、海豹。当小明看到一只企鹅时,他可以根据已知的属性信息推测出它可能就是爸爸要他找的黑白相间的、有大喙、圆滚滚的动物,因此他能够很自然地把这只企鹅归类为“未知”。这就是 Zero-Shot 的基本概念,即通过已知的类别和属性信息对新的未见过的类别进行分类
- 在实际应用中,ZSL可以帮助我们解决各种问题,例如图像识别、自然语言处理等领域中的数据不足或无法获得实际标签的问题。通过零样本学习,我们可以先积累先验知识,再推断和预测新的未知类别,从而实现更加灵活和高效的智能化应用
🤔什么驱使了模型可以 ZERO-SHOT
Segment Anything 这篇工作的主要特点有两个:一是在分割算法中引入了 3 种宽容度高的模态,二是构建了一个巨大的、多元的分割数据集,比最大的分割数据集大 6 倍,分割量大 400 倍。
- 利用 Transformer 的注意力架构,促使图像的特征同时与文本模态、点模态、定位框模态相互作用。原本模型只学得到从 1 个图像到 1 个标签的映射,现在模型学习 1 个标签的同时要关注图像模态与 3 个模态的组合以及不同组合之间的联系。曾经我们认为完整的 1 to 1 算法已然成为了模型“偷懒”的捷径。
- 另外,这三种辅助模态的宽容度好(注:标签文本模态略逊)。作为图像输入之外的额外提示(prompt),只要是属于分割对象的所有点、框或者同义文本都能作为辅助模态的输入。反之,每一个点、框或者文本都对应了各式各样的图像对象,这让模型在某个模态和某种图像对象中同时具有多个学习视角,无论是对于 3 个额外模态还是图像模态,这种学习视角都近乎是无穷的。也因此,基于提示工程(prompt engineering,基于需求对提示做灵活变换)的 SA 几乎可以做所有分割领域的细分任务,甚至还未曾存在的新任务。
- 极其庞大且多元的互联网数据源是 Zero-Shot 能力的另一大核心。SA-1B 涵盖了各种类型、风格、场景和视角的图像。这有利于模型学习更通用和鲁棒的特征表示,从而提高 Zero-Shot 分割的性能。
- 上面已经分析的 SA(Segment Anything) 具有 Zero-Shot 性能的几个核心原因,而下面分析的是一些次要的因素。SA-1B 的类别虽然不细但是特别全,包含了大量的常见和罕见类别,它们覆盖了自然界和人造界的各个领域。这有利于模型学习更广泛和细致的语义信息,从而提高零样本分割的性能。
- SA-1B 的标注十分精确,大量噪声被有意修复,有利于模型学习更准确和清晰的边界信息,从而提高零样本分割的性能。
📊零训练与完全监督的算法 PK
- 在从未训练过的 COCO-Stuff 数据集上,以 35.9% 的 mIoU 超越了完全监督学习的 SOTA——34.1%。
💖监督学习将跳出过拟合泥潭
- SAM 很快就能掌握自动标注能力,在 SA-1B 中,仅仅进行了 0.012%(120, 000张) 的专家标注,就已经具备优秀的全自动分割水平(99.1%的标注由 SAM 自动生成),其他模型需要 10% 甚至更多的标注量才能达到类似的水平,印证了 SAM 大大降低了监督算法对数据量的依赖,从而大大降低了监督算法过拟合的可能。
- SA 在监督学习的框架内实现了极其优异的 Zero-Shot 性能,这带给我们一个思考——到底是数据集还是多模态带来了这种能力?互联网数据源或许能给出答案。当你提示“猫”,在图像数据集无穷大的时候,理论上“猫”的文本语义对应到了无数张不同的猫的图像,这样只要你给定文本语义,模型总是能准确地提取对应掩模。
- 所以我们首先可以确定,数据量足够庞大足够多元才能充分激发这种 Zero-Shot 性能。那然道就是数据集才是根本吗?并不是。前面我们提到,无论是站在 3 个额外模态的角度来看,还是站在图像模态的角度来看,它们的学习视角都近乎是无穷的。也就是说,当你图像模态有效增长了 1 个数据,SA 的 3 种额外模态就能从分割面中提取几乎无数的点、框(标签文本例外)。所以,宽容度高的模态选择 x 数据集多元 = 优秀的 Zero-Shot 性能。两个因素理论上是平等的,但实际上,你无法获取无穷的数据,所以宽容度高的模态设计更加重要,性价比也更高,这也启发了我们一种降低人工标注成本的预训练模型的获取方式。
- 而在无监督任务中,我们常定义一对正负样本规则做对比学习。这种模式本身对正负样本的定义有较高的要求。比如 1 张图像与 n-1 个不匹配文本做对比,就能将图像模态与近乎无穷的文本模态建立负相关,反之 1 个文本如果与 n-1 张不匹配图像做对比,就能将文本模态与近乎无穷的图像模态建立负相关。这也是无监督目前 Zero-Shot 性能的根源,但由于高质量的图与配文的获取困难,此处提到的这种正负样本规则不足以充分激发 Zero-Shot 性能,故无监督领域的大部分多模态工作(比如 Clip)只能靠砸钱堆数据来取得成效。它们应当学习 SA 对各模态的精心设计。
🕹️未来可能基于 SA 的工作
- 在 SAM 火热的这段时间,OpenMMLab 的开发者们维护了 Playground 项目(项目地址)。该项目仅在三天的时间内就将 SAM 的 Zero-Shot 实力分割能力应用在的 MMLab 的各项 Demo 上
- 由于分割任务涵盖了分类、定位、检测等基本任务于一身,所以 MMDet、MMOCR、MMEditing 等工具箱就像开胃小菜一样一口一个 SAM。而基于分割掩码的引导,姿态检测、旋转框检测也融合了 SAM 到 SOTA 算法中。随后,Lable Studio 等标注工具也引入了 SAM 做可以提示的辅助标注。
🤔仍有不足
我的观点
-
当前的标签文本模态羸弱
- 与点模态、检测框模态相反,标签文本的多样性和宽容性不足。人类在认识未知事物的时候,采用的是具体属性描述的方式,并擅于进一步结合描述细节赋予其恰当的命名。虽然直接授予名字的方式常出现在人类教师的教学中,但我们都不希望老师让我们对着斑马的示意图背诵其名字,而是采用描述的方式,比如$$马^+$$的形状,$$黑白相间^+$$的颜色,其中$$^+$$标注的是人类的先验知识
- 在无监督的多模态工作中,Clip 的文本模态来自于社交网络的自然语句,较 SA 所用的标签文本模态更加多样、更具宽容性,但不乏噪声和信息缺失,后续工作都选择压制而不是革新,比如 ALBEF 从生成式和优化的角度引入了动量编码器+专门的损失函数来去噪。在监督的多模态任务中,还没有工作能提出一种模块进行图像描述属性的提取,更没有基于描述属性的文本做多模态工作的。反观点模态、检测框模态,都来源于分割面,具有很好的概括性、客观性和天生的宽容性。为此,采用了标签命名或互联网的文本模态或许并不是完备解。不过,现有标签命名是人类基于具体描述高度抽象的结果,并不是完全没有作用,且其属于人类生活中真正高频使用的文本,应当与文本新模态平等对待
- 如何建立和融合基于具体描述属性的文本新模态,甚至进一步赋予命名生成能力,成为了 SA 可能的优化方向。从生成式的视角,可能会引入能从图中生成描述属性关键词的模型,或能从图片的文本中挖掘关键词的模型,作为先验模型生成所有图片的文本新模态。从优化的视角,或许可以引入有形状、颜色等描述属性量化能力的数学建模,并融入到模型整体的损失计算中。从提取式的视角,可能会引入通道注意力(关注色彩)、多尺度模块(抽象形态与细节纹理)等来弥补文本新模态的缺失。但缺少了文本新模态后,提取式的优化空间十分有限
- 还有很多因素需要我们去思考~
作者的观点
- SA 不适合高精度要求的分割任务
- SA 的图像编码器太大,拖慢了整体效率。但可以提前完成图像编码,再根据用户需要制作 Prompt 并推理
- 文本模态仍不能很好地对应到图像语义,作者还没想明白怎么基于提示实现语义和全景分割任务。
- 在少数几个任务,比如绘画数据集、X光数据集、模糊场景数据集、细节信息密集的数据集上泛化性能不足。
本文参与了SegmentFault 思否写作挑战赛,欢迎正在阅读的你也加入。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net