丹东有做公司网站的吗,搜索引擎 wordpress,做海报的免费网站,数字化营销系统一、引言
在这项工作中#xff0c;作者的目标是建立一个图像分割的基础模型。也就是说#xff0c;寻求开发一个提示模型#xff0c;并使用一个能够实现强大泛化的任务在广泛的数据集上对其进行预训练。有了这个模型#xff0c;使用即时工程解决新数据分布上的一系列下游分…
一、引言
在这项工作中作者的目标是建立一个图像分割的基础模型。也就是说寻求开发一个提示模型并使用一个能够实现强大泛化的任务在广泛的数据集上对其进行预训练。有了这个模型使用即时工程解决新数据分布上的一系列下游分割问题。 该计划的成功取决于三个组成部分:任务、模型和数据。为了开发它们作者解决了以下关于图像分割的问题: 1、什么任务可以实现zero-shot泛化? 2、相应的模型体系结构是什么? 3、哪些数据可以为这项任务和模型提供支持? 这些问题纠缠在一起需要综合解决。作者首先定义了一个提示的分割任务它足够通用可以提供一个强大的预训练目标并支持广泛的下游应用程序。此任务需要一个支持灵活提示的模型并且可以在提示时实时输出分段掩码以允许交互使用。为了训练模型需要一个多样化的、大规模的数据源。不幸的是没有网络规模的数据来源的分割;为了解决这个问题作者构建了一个“数据引擎”也就是说在使用高效模型来协助数据收集和使用新收集的数据来改进模型之间进行迭代。 **任务**在NLP和最近的计算机视觉中基础模型是一个很有前途的发展它可以通过使用“提示”技术对新的数据集和任务执行zero-shot和few-shot学习。受这一行工作的启发作者提出了提示分割任务其目标是给定任何分割提示返回有效的分割掩码(见图1a)。提示符只是指定图像中要分割的内容例如提示符可以包括识别对象的空间或文本信息。即使提示是模糊的并且可能引用多个对象(例如衬衫上的一个点可能表示衬衫或穿着它的人)输出也应该是这些对象中至少一个对象的合理掩码。使用提示分割任务作为预训练目标并通过提示工程解决一般的下游分割任务。 **模型**可提示的分割任务和实际使用的目标对模型体系结构施加了约束。特别是模型必须支持灵活的提示、需要实时计算掩码以实现交互式使用。 而且必须具有模糊感知能力。令人惊讶的是作者发现一个简单的设计满足所有三个约束:一个强大的图像编码器计算图像嵌入一个提示编码器嵌入提示然后将两个信息源组合在一个轻量级的掩码解码器中该解码器预测分割掩码。作者将此模型称为分段任意模型(Segment Anything model简称SAM)(见图1b)。通过将SAM分为图像编码器和快速提示编码器/掩码解码器可以使用不同的提示重复使用相同的图像嵌入(并平摊其成本)。给定图像嵌入提示编码器和掩码解码器在50ms内从web浏览器中的提示预测掩码。将重点放在点、框和掩码提示上并使用自由格式的文本提示来呈现初始结果。为了使SAM能够感知歧义将其设计为预测单个提示的多个掩码从而允许SAM自然地处理歧义例如衬衫与人的例子。
**数据引擎**为了实现对新数据分布的强泛化有必要在一个大而多样的掩码集上训练SAM而不仅仅是已经存在的任何分割数据集。虽然基础模型的典型方法是在线获取数据但掩模并不自然丰富因此需要一种替代策略。作者的解决方案是建立一个“数据引擎”也就是说与模型在循环数据集注释共同开发模型(见图1c)。数据引擎有三个阶段:辅助手动、半自动和全自动。在第一阶段SAM帮助注释者注释掩码类似于经典的交互式分段设置。在第二阶段SAM可以通过提示可能的对象位置来自动为对象子集生成掩码而注释器则专注于注释剩余的对象从而帮助增加掩码的多样性。在最后阶段用前景点的规则网格提示SAM平均每张图像产生100个高质量掩模。
**数据集**最终数据集SA-1B包括来自11M张授权和隐私保护图像的超过1B个掩码(见上图)。SA-1B是使用数据引擎的最后阶段完全自动收集的比任何现有的分割数据集都多400个掩码并且经过验证掩码具有高质量和多样性。除了将SA-1B用于训练SAM具有鲁棒性和通用性之外作者希望SA-1B成为旨在建立新基础模型的研究的宝贵资源。 实验 作者广泛评估SAM。首先使用23个不同的新分割数据集发现SAM从单个前景点产生高质量的掩模通常仅略低于手动注释的真值。其次在zero-shot传输协议下使用即时工程的各种下游任务上发现了一致的强定量和定性结果包括边缘检测目标提案生成实例分割以及文本到掩码预测的初步探索。这些结果表明SAM可以使用开箱即用的快速工程来解决涉及SAM训练数据之外的对象和图像分布的各种任务
二、Segment Anything Task
作者从NLP中获得灵感其中令牌预测下一个任务用于基础模型预训练并通过提示工程解决各种下游任务。为了建立分割的基础模型作者的目标是定义一个具有类似功能的任务。 任务首先将提示的概念从NLP翻译到分割其中提示可以是一组前景/背景点一个粗略的框或蒙版自由格式的文本或者一般情况下任何指示图像中要分割的信息。因此提示分段任务是在给定任何提示的情况下返回一个有效的分段掩码。“有效”掩码的要求仅仅意味着即使提示是模糊的并且可以引用多个对象(例如回想一下衬衫与人的例子参见下图)输出也应该是这些对象中至少一个的合理掩码。这个需求类似于期望语言模型对不明确的提示输出一致的响应。之所以选择这个任务是因为它带来了一种自然的预训练算法和一种通过提示将zero-shot转移到下游分割任务的通用方法。 预训练提示分割任务提出了一种自然的预训练算法该算法为每个训练样本模拟一系列提示(例如点、框、掩码)并将模型的掩码预测与基本事实进行比较。从交互式分割中采用了这种方法尽管与交互式分割不同交互式分割的目的是在足够的用户输入后最终预测一个有效的掩码但作者的目标是始终预测任何提示的有效掩码即使提示是模糊的。这确保了预训练模型在涉及歧义的用例中是有效的包括数据引擎所要求的自动注释。在这个任务中表现良好是具有挑战性的需要专门的建模和训练损失选择。 Zero-shot转移直观地说预训练任务赋予了模型在推理时对任何提示作出适当响应的能力因此下游任务可以通过设计适当的提示来解决。例如如果有一个猫的边界框检测器猫实例分割可以通过提供检测器的框输出作为提示给模型来解决。一般来说许多实际的分割任务都可以作为提示。 相关的任务分割是一个很广阔的领域有交互式分割、边缘检测、超像素化、目标建议生成、前景分割、语义分割、实例分割、全视分割等。提示分割任务的目标是产生一个功能广泛的模型可以通过快速工程适应许多(尽管不是全部)现有的和新的分割任务。这种能力是任务泛化的一种形式。请注意这与之前在多任务分割系统上的工作不同。在多任务系统中单个模型执行一组固定的任务例如联合语义分割、实例分割和全视分割但训练和测试任务是相同的。本文是训练用于提示分割的模型可以作为更大系统中的组件在推理时间执行新的不同任务例如执行实例分割提示分割模型与现有的对象检测器相结合。
三、Segment Anything Model
SAM有三个组件如下图所示:一个图像编码器一个灵活的提示编码器和一个快速掩码解码器。建立在Transformer视觉模型的基础上对(平摊)实时性能进行了特定的权衡。 图像编码器 在可扩展性和强大的预训练方法的激励下使用了MAE预训练的视觉变压器(ViT)以最小程度适应处理高分辨率输入。图像编码器每个图像运行一次可以在提示模型之前应用。 提示编码器考虑两组提示:稀疏(点、框、文本)和密集(掩码)。通过位置编码来表示点和框并对每个提示类型和使用CLIP的现成文本编码器的自由格式文本进行学习嵌入求和。密集提示(即掩码)使用卷积嵌入并在图像嵌入中按元素求和。 掩膜解码器 掩膜解码器有效地将图像嵌入、提示嵌入和输出令牌映射到掩码。该设计采用了对Transformer解码器块的修改然后是动态掩码预测头。改进的解码器块在两个方向上使用提示自注意和交叉注意(提示到图像嵌入再由嵌入到图像)来更新所有嵌入。在运行两个块之后对图像嵌入进行上采样MLP将输出标记映射到动态线性分类器然后该分类器计算每个图像位置的掩码前景概率。 解决歧义对于一个输出如果给出一个模糊的提示该模型将平均多个有效掩码。为了解决这个问题修改了模型以预测单个提示符的多个输出掩码(见下图)。3个掩码输出足以解决大多数常见情况(嵌套掩码通常最多有三个深度:整体、部分和子部分)。在训练中为了对掩码进行排序该模型预测每个掩码的置信度得分即估计的IoU。 效率 整个模型的设计很大程度上是出于效率的考虑。给定预先计算的图像嵌入提示编码器和掩码解码器在网络浏览器中运行在CPU上大约50ms。这种运行时性能使模型能够无缝、实时地交互提示。 损失和训练 使用的focal loss和dice loss的线性组合来监督掩模预测。使用几何提示的混合来训练可提示的分割任务。
四、 Segment Anything Data Engine
由于互联网上的分割掩码并不丰富作者建立了一个数据引擎来收集1.1亿掩码数据集SA-1B。数据引擎有三个阶段1模型辅助的手动注释阶段2混合了自动预测掩码和模型辅助注释的半自动阶段以及3模型在没有注释器输入的情况下生成掩码的全自动阶段。 辅助手动阶段在第一阶段类似于经典的交互式分割一组专业注释人员通过使用SAM提供的基于浏览器的交互式分割工具点击前景/背景对象点来标记mask。mask可以使用像素级“画笔”和“橡皮擦”工具进行细化。模型辅助注释直接在浏览器中实时运行使用预先计算的图像嵌入从而实现真正的交互式体验。作者没有对标记对象施加语义约束注释器可以自由地标记“东西”和“事物”。作者建议注释器标记他们可以命名或描述的对象但没有收集这些名称或描述。注释者被要求按照突出的顺序标记对象并被鼓励在mask注释超过30秒后继续下一张图像。 在这个阶段开始时SAM是使用公共分割数据集进行训练的。在充分的数据注释之后仅使用新注释的掩码对SAM进行再训练。随着更多掩模的收集图像编码器从ViT-B扩展到ViT-H其他架构细节也在发展作者总共对模型进行了6次训练。随着模型的改进每个掩码的平均注释时间从34秒减少到14秒。14秒比COCO的掩码注释快6.5倍仅比使用极值点的边界框标记慢2倍。随着SAM的改进每张图像的平均掩模数量从20个增加到44个。总的来说在这个阶段从120k张图像中收集了430万个mask。 半自动阶段 在这个阶段作者的目标是增加mask的多样性以提高模型分割任何东西的能力。为了将注释器集中在不太突出的对象上首先自动检测到自信的掩码。然后向注释器展示了预先填充了这些掩码的图像并要求他们注释任何其他未注释的对象。为了检测有信心的掩码使用通用的“对象”类别在所有第一阶段掩码上训练了一个边界框检测器。在此阶段在180k张图像中额外收集了590万个掩模总共1020万个掩膜。与第一阶段一样定期根据新收集的数据对模型进行再训练5次。每个掩码的平均注释时间回到了34秒不包括自动掩码因为这些对象更难标记。每张图像的平均mask数量从44个增加到72个包括自动mask。 全自动阶段 在最后阶段注释是完全自动的。这是可行的因为模型有两个主要的增强。首先在这个阶段开始时作者收集了足够的mask来大大改进模型包括前一阶段的各种mask。其次到了这个阶段已经开发了模糊感知模型它能够预测有效的掩码即使在模糊的情况下也是如此。具体来说用32×32的规则网格提示模型并为每个点预测一组可能对应于有效对象的掩码。使用模糊感知模型如果一个点位于部分或子部分上模型将返回子部分、部分和整个对象。模型的IoU预测模块用于选择置信掩码此外只识别并选择了稳定的掩码如果在0.5−δ和0.5δ处对概率图进行阈值处理会导致类似的掩码则认为掩码是稳定的。最后在选择了置信和稳定的掩码后应用非最大抑制NMS来过滤重复。为了进一步提高较小mask的质量还处理了多个重叠的放大图像裁剪。
五、网络结构细节
图像编码器 通常图像编码器可以是输出C×H×W图像嵌入块的任何网络。受可扩展性和强大的预训练的启发作者使用MAE预训练的视觉transformerViT具有最小的适应能力来处理高分辨率输入特别是具有14×14窗口注意力和四个等距全局注意力块的ViT-H/16。图像编码器的输出是输入图像的16倍缩小的嵌入。由于运行时目标是实时处理每个提示因此可以提供大量的图像编码器FLOP因为每个图像只计算一次FLOP而不是每个提示。 根据标准实践使用1024×1024的输入分辨率该分辨率是通过重新缩放图像并填充短边获得的。因此图像嵌入是64×64。为了降低通道维度使用1×1卷积来获得256个通道然后使用3×3卷积来获得同样的256个通道。每个卷积后面都有一个层归一化。
提示编码器 稀疏提示被映射到256维矢量嵌入。一个点被表示为该点的位置的位置编码和指示该点是在前景中还是在背景中的两个学习嵌入之一的总和。方框由嵌入对表示1其左上角的位置编码与表示“左上角”的学习嵌入相加2相同的结构但使用表示“右下角”的习得嵌入。最后为了表示自由形式的文本使用CLIP中的文本编码器通常可以使用任何文本编码器。密集提示即掩码与图像具有空间对应关系。以比输入图像低4倍的分辨率输入掩码然后使用两个分别具有输出通道4和16的2×2跨步-2卷积来缩小另外的4倍。最后的1×1卷积将通道维度映射到256。每一层通过GELU激活和层标准化进行分离。然后将掩码逐元素添加图像嵌入。如果没有掩码提示则向每个图像嵌入位置添加表示“无掩码”的学习嵌入。
轻量级掩码解码器 该模块有效地将图像嵌入和一组提示嵌入映射到输出掩码。为了组合这些输入从Transformer分割模型中获得灵感并修改了标准Transformer解码器。在应用解码器之前首先在提示嵌入集中插入一个学习的输出令牌嵌入该嵌入将在解码器的输出中使用。为了简单起见我们将这些嵌入不包括图像嵌入统称为“令牌” 我们的解码器设计如上图所示。每个解码器层执行4个步骤1对令牌的自注意力2从令牌作为查询到图像嵌入的交叉注意力3逐点MLP更新每个令牌以及4从图像嵌入作为查询的到令牌的交叉关注。最后一步使用提示信息更新图像嵌入。在交叉关注期间图像嵌入被视为642个256维向量的集合。每个自/交叉注意力和MLP在训练时都有残差连接、层归一化和dropout。下一解码器层从上一层获取更新的令牌和更新的图像嵌入。使用两层解码器。 为了确保解码器能够访问关键的几何信息每当位置编码参与注意力层时都会将其添加到图像嵌入中。此外当整个原始提示标记包括它们的位置编码参与注意力层时它们都会被重新添加到更新的标记中。这允许强烈依赖提示标记的几何位置和类型。 在运行解码器之后用两个转置卷积将更新的图像嵌入上采样4×现在它相对于输入图像缩小了4倍。然后令牌再次参与图像嵌入并且将更新的输出令牌嵌入传递给小的3层MLP该MLP输出与放大图像嵌入的通道维度匹配的向量。最后预测了在放大图像嵌入和MLP的输出之间具有空间逐点乘积的掩模。转换器使用256的嵌入尺寸。转换器MLP块具有2048的大尺寸但MLP仅应用于相对较少很少大于20的提示令牌。然而在具有64×64图像嵌入的交叉关注层中为了提高计算效率将查询、键和值的通道维度降低了2×至128。所有注意力层使用8个头。用于升级输出图像嵌入的转置卷积是2×2步长2输出通道尺寸为64和32并且具有GELU激活。它们通过层规范化来分隔。 Making the model ambiguity-aware 如上所述单个输入提示可能是模糊的因为它对应于多个有效掩码并且模型将学习在这些掩码上求平均值。作者通过一个简单的修改来消除这个问题使用少量输出令牌并同时预测多个掩码而不是预测单个掩码。默认情况下预测三个掩码因为作者观察到三个层整体、部分和子部分通常足以描述嵌套掩码。在训练过程中计算真值和每个预测掩码之间的损失但仅从最低损失进行反向传播。这是一种常见的技术用于具有多个输出的模型。为了在应用程序中使用希望对预测掩码进行排序因此我们添加了一个小头对额外的输出令牌进行操作用于估计每个预测掩码与其覆盖的对象之间的IoU。 多个提示的歧义要少得多三个输出掩码通常会变得相似。为了最大限度地减少训练中退化损失的计算并确保单个无模糊掩码接收规则梯度信号只在给出多个提示时预测单个掩码。这是通过添加用于附加掩码预测的第四输出令牌来实现的。第四个掩码从不为单个提示返回也是为多个提示返回的唯一掩码。