Segment Anything论文地址:https://arxiv.org/pdf/2304.02643.pdf
论文背景
在自然语言处理中,基于大规模语言模型的零样本和少样本学习已经取得了重要进展。在计算机视觉领域,例如CLIP和ALIGN,通过工程化的文本提示可以实现对新视觉概念的零样本泛化。本论文中,我们提出了可提示的分割任务,即根据分割提示返回有效的分割掩码。提示可以包含空间或文本信息,用于识别图像中的对象。有效的输出掩码意味着即使提示模棱两可且可能指向多个对象(例如,衣服上的一点可以表示衬衫或穿着衬衫的人),输出掩码也应该对其中至少一个对象产生合理的分割。我们将可提示的分割任务用作预训练目标,并通过提示工程来解决各种下游分割任务。
Segment Anything模型(SAM)
可提示的分割任务和实际应用要求模型架构具备一定的约束条件。特别是,模型必须支持灵活的提示,能够实时计算分割掩码以实现交互使用,并且必须具备对模棱两可情况的认知能力。令人惊讶的是,论文作者发现一个简单的设计可以满足所有这些约束条件:一个强大的图像编码器计算图像嵌入,一个提示编码器对提示进行编码,然后将这两种信息源结合在一个轻量级的掩码解码器中,预测分割掩码。大佬将这个模型称为Segment Anything模型,简称SAM。通过将SAM分解为图像编码器和快速提示编码器/掩码解码器,可以重复使用相同的图像嵌入(并分摊成本)进行不同提示的计算。给定一个图像嵌入,提示编码器和掩码解码器可以在网络浏览器中在约50毫秒内根据提示预测出掩码。我们关注点、框和掩码提示,并展示了使用自由文本提示的初步结果。为了使SAM具备认知模糊性的能力,我们设计它可以为单个提示预测多个掩码,从而自然地处理模棱两可的情况,如衬衫与人的示例。
Segment Anything数据引擎包括辅助手动、半自动和全自动三个阶段,用于构建大规模且多样化的掩码数据。SA-1B是通过数据引擎的全自动阶段生成的数据集,包含10亿个掩码,比现有数据集多400倍,具有高质量和多样性。SA-1B旨在用于训练具备鲁棒性和泛化能力的SAM,并成为构建新基础模型的宝贵资源。
Segment Anything任务方法
为了训练模型,研究人员提出了一种预训练算法,模拟了一系列的提示序列,并将模型的预测与真实掩码进行比较。与交互式分割不同,该方法的目标是在任何提示情况下始终生成有效的分割掩码。这确保了预训练模型在包括自动注释在内的各种应用场景中的有效性。
该技术的另一个优势是零样本迁移能力。通过预训练任务,模型能够在推理时适应不同的提示信息,因此可以通过设计适当的提示来解决各种实际分割任务。例如,如果已经有了一个用于检测猫的边界框检测器,可以通过将检测器的输出边界框作为提示,实现猫实例分割。这种方法使得广泛的分割任务可以被视为提示工程的一部分。
Segment Anything技术的出现为图像分割领域带来了新的思路和可能性。通过提示工程和组合方法,单一模型可以以可扩展的方式应用于各种任务,并适应未知的任务。这种方法为构建更灵活、适应性强的分割系统奠定了基础。
在未来,我们可以进一步探索提示工程和组合方法的潜力,以推动图像分割技术的发展和应用。
Segment Anything 模型架构
Segment Anything模型(SAM)用于可提示分割任务,包括三个组件:图像编码器、灵活的提示编码器和快速掩码解码器。它
基于Transformer视觉模型(如ViT)构建SAM,具有实时性能的权衡。以下是对这些组件的详细的介绍。
图像编码器(Image Encoder)
图像编码器使用了经过MAE预训练的Vision Transformer(ViT),并进行了最小程度的调整以处理高分辨率输入。图像编码器仅运行一次,可以在对模型进行提示之前应用。
提示编码器(Prompt Encoder)
提示编码器考虑两种类型的提示:稀疏型(点、框、文本)和密集型(掩码)。我们使用位置编码表示点和框,并与每种提示类型和自由形式文本的学习嵌入进行求和。密集型提示(即掩码)使用卷积进行嵌入,并与图像嵌入逐元素求和。
掩码解码器(Mask Decoder)
掩码解码器高效地将图像嵌入、提示嵌入和输出标记映射到掩码。该设计受到先前研究的启发,使用Transformer解码器块的修改版,后接动态掩码预测头部。我们的修改版解码器块使用自注意力和交叉注意力(提示到图像嵌入和反之)来更新所有嵌入。在运行两个块之后,我们上采样图像嵌入,并通过MLP将输出标记映射到动态线性分类器,计算每个图像位置的掩码前景概率。
这里的提示编码器和掩码解码器的功能与BERT模型中的掩码机制类似,它们通过稀疏型(点、框、文本)或密集型(掩码)的提示向模型提供了关于需要进行遮挡的部分的信息。这种遮挡使模型能够进行自监督学习,通过学习遮挡的内容来提高对图像中感兴趣目标的分割能力。
消除模糊性
当给定模棱两可的提示时,模型将对多个有效掩码进行平均。为了解决这个问题,大佬修改了模型,使其可以为单个提示预测多个输出掩码,如下图所示,我们发现输出3个掩码足以解决大多数常见情况(嵌套掩码通常最多有三层:整体、部分和子部分)。在训练过程中,我们只反向传播具有最小损失的掩码。为了对掩码进行排名,模型为每个掩码预测一个置信度分数(如估计的IoU)。
效率性
整体模型设计在很大程度上考虑了效率性。在预先计算的图像嵌入的基础上,提示编码器和掩码解码器可以在Web浏览器中在CPU上以约50毫秒的速度运行。
损失和训练
模型在训练过程中,使用了焦点损失(focal loss)和Dice损失(dice loss)的线性组合作为损失函数。这两种损失函数结合了目标检测和分割任务的特点,能够有效地引导模型学习正确的分割结果。
焦点损失(Focal Loss):
焦点损失是一种针对类别不平衡问题的损失函数,可以帮助模型更好地处理易分类和困难分类的样本。
焦点损失的计算公式如下:
F
L
(
p
t
)
=
−
α
t
(
1
−
p
t
)
γ
l
o
g
(
p
t
)
FL(p_t) = -\alpha_t(1-p_t)^\gamma log(p_t)
FL(pt)=−αt(1−pt)γlog(pt)
其中:
p
t
p_t
pt 表示模型的预测概率;
α
t
\alpha_t
αt 是平衡参数,用于调整易分类和困难分类样本的权重;
γ
\gamma
γ 是一个可调的指数参数,用于调整焦点损失的衰减速率。
通过对焦点损失公式的定义,可以看出当样本难以分类时,损失函数的值会更大,从而加大对这类样本的关注度,以便模型更好地学习困难样本。
Dice损失(Dice Loss)
Dice损失是一种常用的评估分割任务准确性的指标,它衡量了模型预测结果与真实分割结果之间的相似度。
Dice损失的计算公式如下:
D
i
c
e
(
p
,
g
)
=
2
∣
p
⋂
g
∣
∣
p
∣
+
∣
g
∣
Dice(p,g) = \frac{2|p \bigcap g|}{|p|+|g|}
Dice(p,g)=∣p∣+∣g∣2∣p⋂g∣
其中:
p
p
p 表示模型的预测结果,通常是一个二值化的分割掩码;
g
g
g 表示真实的分割结果,也是一个二值化的分割掩码;
∣
⋅
∣
|\cdot|
∣⋅∣ 表示对应的区域的像素数量;
∩
\cap
∩ 表示交集运算。
Dice损失的取值范围为0到1,值越大表示模型预测结果与真实分割结果的相似度越高。因此,最小化Dice损失可以使模型更接近真实分割结果。
综合使用焦点损失和Dice损失可以在训练过程中同时考虑样本的难易程度和分割准确性,以提高模型的性能和泛化能力。
对于训练promptable分割任务,采用了一种混合几何提示的策略。这意味着我们使用了多种几何形状的提示,如点、框等,以增加模型对各种场景和对象的适应能力。通过多样的几何提示,模型可以学习到不同对象的形状和结构信息,提高分割任务的泛化能力和鲁棒性。
Segment Anything 数据准备工作
为了收集 1.1B mask 数据集 SA-1B,构建了一个数据引擎。该数据引擎包括三个阶段:
- 模型辅助手动标注阶段
- 半自动阶段,结合了自动预测的掩码和模型辅助标注
- 全自动阶段
模型辅助手动标注阶段(第一阶段)
在这个阶段,组建了一个专业标注团队,使用基于 SAM 的基于浏览器的交互式分割工具,通过点击前景/背景对象点来标注掩码。标注员会标注他们能够命名或描述的对象。
在这个阶段开始时,我们使用常见的公共分割数据集对 SAM 进行训练。随着收集到更多的掩码,我们将图像编码器从 ViT-B 缩放到 ViT-H,并进行了其他相关的细节调整。我们总共对模型进行了6次重新训练。在这个阶段收集到了来自120k张图像的4.3M个掩码。
半自动阶段(第二阶段)
为了提高掩码的多样性,我们在这个阶段专注于标注不太明显的对象。SAM 首先自动检测出置信度较高的掩码,然后将这些掩码填充到图像中,并要求标注员标注任何其他未标注的对象。
在这个阶段,我们收集到了额外的5.9M个掩码,来自180k张图像(总计10.2M个掩码)。
全自动阶段(第三阶段)
在最后的全自动阶段,标注完全自动化进行。这得益于我们模型的两个主要改进。首先,在这个阶段开始时,我们已经收集到足够多的掩码,大大改善了模型的性能,包括来自前一个阶段的多样化掩码。其次,到了这个阶段,我们开发了具备模糊感知能力的模型,可以在模糊的情况下预测有效的掩码。
具体来说,通过一个 32×32 的规则点网格提示模型,并为每个点预测一组可能对应有效对象的掩码。使用模糊感知模型,如果一个点位于一个部分或子部分上,模型将返回子部分、部分和整个对象的掩码。模型中的 IoU 预测模块用于选择置信度高的码;此外,选择稳定的掩码(如果在概率图像阈值为0.5-δ和0.5+δ时结果相似,则该掩码是稳定的)。最后,在选择了置信度高和稳定的掩码后,我们应用非最大值抑制(NMS)来过滤重复的掩码。为了进一步提高较小掩码的质量,还对多个重叠的放大图像区域进行处理。
最终,我们构建了 SA-1B 数据集,包含了11M张图像和总共1.1B个高质量的掩码。
零样本迁移实验结果
从23个下游任务的性能表现
(a) 与RITM相比,SAM在23个数据集中的16个数据集上取得了更高的结果。
还提供了“oracle”结果,其中通过将SAM的3个掩码与地面真值进行比较,选择最相关的掩码,而不是选择最自信的掩码。这揭示了模糊性对自动评估的影响。
特别是,在使用oracle执行模糊性消解时,SAM在所有数据集上都优于RITM。
(b) SAM在自动度量上表现较差,但在人类研究中获得了一致较高的评级。
零样本迁移边缘预测
使用16×16的正则网格的前景点对SAM进行提示,产生768个预测的掩码(每个点3个)。通过非极大值抑制(NMS)去除冗余的掩码。然后,使用Sobel滤波计算边缘图。
尽管SAM并未针对边缘检测进行训练,但它能够产生合理的边缘图,并且具有较高的性能。
零样本迁移物体提示生成
ViTDet-H表现最佳。在零迁移条件下,SAM在多个指标上表现出色。
零样本迁移实例分割
SAM的性能与ViTDet相当,尽管稍逊一筹。
掩码质量
通过可视化输出,可以观察到SAM的掩码在质量上往往优于ViTDet。SAM在人类研究中始终优于ViTDet。
零样本迁移文本到掩码
首先提取CLIP图像嵌入。然后,在训练过程中,使用提取的CLIP图像嵌入对SAM进行提示。
由于CLIP的图像嵌入是训练与其文本嵌入对齐的,因此文本嵌入用于推理,即使用生成的文本嵌入作为对SAM的提示。
SAM可以根据简单的文本提示(如“一个轮子”)以及短语(如“海狸牙栅格”)对对象进行分割。文章来源:https://www.toymoban.com/news/detail-523791.html
文章来源地址https://www.toymoban.com/news/detail-523791.html
到了这里,关于Segment Anything:突破边界的图像分割新技术解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!