Title: SegGPT: Segmenting Everything In Context
导读
图1.SegGPT 可以使用上下文示例指示不同任务,一个模型即可对所有内容进行分割。
前几天 Meta
发布了 Segment Anything Model (SAM)
,其表现出的“分割万物”能力让 CV
届掀起热潮。模型已公布,没体验过的朋友们赶紧去试试!
https://github.com/facebookresearch/segment-anything
紧接着,北京智源人工智能研究院也推出了通用分割大模型 SegGPT
。与 SAM
的交互分割方式不同,该方法利用提示 (prompt
) 完成任意目标的分割。本文将对 SegGPT
进行详细介绍。
SegGPT
将各种分割任务统一成一个通用的上下文学习框架,可用于分割上下文中的所有事物。SegGPT
的训练被制定为一个上下文着色问题,为每个数据样本随机分配颜色映射。目标是根据上下文完成不同的分割任务,而不是依赖于特定的颜色。
完成训练后,SegGPT
可以通过上下文推理执行图像或视频中的任意分割任务。SegGPT
在多种任务上进行了详细实验,包括少样本语义分割、视频目标分割、语义分割和全景分割。结果表明,SegGPT
在不同任务中均表现出强大的分割能力。
创作背景
图像分割技术是将图像中的有意义的概念(如前景、类别、目标实例等)定位和重新组织的过程。传统的分割模型针对特定的任务、类别、数据类型等进行训练,无法适应多样化的分割任务,并且需要昂贵的注释成本。
因此,本文提出的 SegGPT
旨在训练一个通用模型,可以用于解决所有的分割任务。
SegGPT
通过将不同类型的分割数据转换为相同的图像格式,使得不同的分割任务统一到一个通用的上下文学习框架中。SegGPT
的训练被制定为一个上下文着色问题,每个数据样本具有随机的颜色映射。训练目标是根据上下文完成多样化的任务,而不是依赖特定的颜色。训练过程中使用的随机着色方案强制模型参考上下文信息来完成分配的任务,这使得训练方法更加灵活和通用。
完成训练后,SegGPT
可以通过上下文推断执行任意分割任务。为了有效地集成多个示例,我们还提出了一种简单而有效的上下文集合策略——特征集合。此外,SegGPT
还可以方便地作为专业模型使用,无需更新模型参数,只需调整 prompt
以适应专业用例,如域内 (in-domain
) ADE20K
语义分割。
方法
图2. SegGPT 训练框架
SegGPT
是 Painter
框架的一个特殊版本。SegGPT
可以使用通用的 Painter
对所有事物进行分割,因此被称为 SegGPT
。
该训练框架重新定义了视觉任务的输出空间为“图像”,并将不同的任务统一到同一个图像修复问题中,即随机遮盖任务输出图像并重建缺失的像素。为了保持简单性和通用性,我们没有对架构和损失函数进行修改,即仅使用了一个普通的 ViT
和一个简单的平滑 损失,但设计了一个新的随机着色方案以提高模型的泛化能力。
In-Context Coloring
传统的 Painter
框架中,每个任务的颜色空间是预定义的,这导致模型容易陷入多任务学习的解决方案中。例如,对于语义分割,一组颜色是预定义的,每个语义类别被分配一个固定的颜色。同样,在实例分割中,根据其位置类别分配实例对象的颜色,即颜色的数量等于空间位置的数量,这导致模型只依赖颜色本身来确定任务,而不是使用分割之间的关系。
为了解决这个限制,本文提出了一种新的 in-context coloring
技术,其基本思想是在相似的语境下对颜色进行重新映射,这样可以避免在预定义的颜色空间中受限制,使得模型学习到更多的上下文信息。
具体地说,in-context coloring
技术是通过以下步骤实现的:首先,从与输入图像共享类似语境的另一张图像中随机采样。然后,从目标图像中随机采样一组颜色,并将每种颜色映射到一个随机的颜色。这将导致相应像素的重新上色。最终得到两个成对的图像,这被定义为 in-context pair
。
此外,本文还引入了 mix-context
训练方法,即使用混合示例来训练模型。首先将具有相同颜色映射的多个图像拼接在一起。然后,将结果图像随机裁剪和调整大小,形成混合上下文训练样本。
通过这种方式,模型学习关注图像的上下文信息而不仅仅依赖于特定的颜色信息来确定任务。此外,我们还根据不同的数据类型定义了不同的上下文,例如对于语义分割,随机采样类别,对于实例分割,随机采样目标实例数量。同一图像的不同视角被视为上下文中的图像。在实现中,采样都是关于颜色的,例如相同的颜色可以指代相同的类别或实例。
Context Ensemble
图3. 上下文集成策略
SegGPT
在推理阶段可以实现任意上下文的分割任务。给定一个待测试的输入图像和一个目标图像,目标图像可以是单色(不包括背景)或多色,例如,在一个画面种分割多个感兴趣的类别或物体。通过将输入图像与示例图像拼接并输入 SegGPT
,并得到相应的上下文预测。
为了提供更准确和具体的上下文,可以使用多个示例,例如,同一语义类别的几个示例或视频中的前几帧。为了有效利用多个示例,SegGPT
提出了两种上下文集成方法:空间集成和特征集成。
空间集成
将多个示例串联在n×n网格中,然后缩小到与单个示例相同的大小。
特征集成
将多个示例在批处理维度组合,并在每个注意力层之后对查询图像的特征进行平均。
这样,在推理过程中,查询图像就可以汇集多个示例的信息。
In-Context Tuning
图4. 根据不同任务规范进行上下文调整。
通过冻结整个模型并初始化一个可学习的图像张量作为输入上下文,仅更新这个可学习的图像张量来适应独特的用例。这个过程的训练过程保持不变,仍然使用相同的损失函数。调整完成后,可以将学习到的图像张量作为针对特定应用程序的一个即插即用的 key
。
通过这个功能,可以针对特定的数据集、场景、角色等训练一个定制的 prompt
,而不会影响模型的通用性,这为许多应用开启了可能性。
实验
SegGPT
在两个基准测试中实现与SOTA
模型相当或者更好的性能。对比通用模型Painter
,SegGPT
取得了显著的优势。
相比于在
FSS-1000
上训练的专家模型,SegGPT
表现出极具竞争力的性能。值得注意的是,SegGPT
没有在FSS-1000
数据集上进行训练,但仍然取得了显著的结果,这充分证明了它的有效性。
SegGPT
与RefineNet
等专家模型相比具有相媲美的性能。然而,与通用的Painter
相比,我们的方法在mIoU
上下降了10.3个点。这个观察结果可以通过引入随机颜色方案来解释,这使得模型更难以使用颜色作为领域任务的简单指示器。相反,模型需要依赖于上下文示例来确定任务,从而使优化变得更加困难。同样地,表格6显示了SegGPT
与Painter
通用模型相比下降了9.0个 PQ 点。
图5. 模型输入和输出可视化
总结
本文介绍了一种基于上下文视觉学习的通用分割模型 SegGPT
,展示了如何设计合适的训练策略,充分利用上下文视觉学习的灵活性。
该模型在处理领域内和领域外的分割任务方面表现出强大的能力。然而,文章也指出了一些缺点,在上下文训练中引入了新的随机着色机制,使得训练任务本质上更加困难。
我们相信,SegGPT
在图像/视频分割领域中有潜力成为实现更多种类应用的有力工具。后续我们计划通过扩大模型规模来进一步提高性能,但这也带来了寻找更多数据的挑战。我们希望我们的工作能够激励社区继续探索计算机视觉中上下文学习的潜力。
写在最后
如果您也对人工智能和计算机视觉全栈领域感兴趣,强烈推荐您关注有料、有趣、有爱的公众号『CVHub』,每日为大家带来精品原创、多领域、有深度的前沿科技论文解读及工业成熟解决方案!欢迎扫码与我交流,一起探讨更多有趣的话题!