【论文精读】SAM

摘要

       本文提出Segment Anything(SA),一个可prompt的视觉分割模型,通过一个 能实现视觉特征强大泛化的任务在包含大量图像的数据集上对模型进行预 训练,旨在通过使用prompt工程解决新数据 分布上的一系列下游分割问题。 主要改进有:
image

  • 提出了可prompt的分割任务,目标是给定任何分割prompt,模型可返回一个有效的分割掩码。prompt只需指定要在图像中分割的内容,可以为识别对象的空间或文本信息(上图a)
  • 建立了包含三组模块的模型,包括一个用于计算图像嵌入的图像编码器,一个用于计算prompt嵌入的prompt编码器,以及将这两组信息源组合并预测分割mask的轻量级mask解码器,并将此模型称为Segment Anything(SAM)(上图b)
  • 通过数据引擎建立了一个包括1100万张图像及超过1B个mask的数据集SA-1B(上图c)

框架

Task

Task

       prompt可以为一组foreground/background points,一个粗略的box或mask,或自由形式的文本,或者任何可以表示图像中要分割的目标的信息。即promptable分割任务就是在给定任何提示时模型都应该返回至少一个有效的分割mask,无论prompt的描述是模糊的,还是引用了多个对象。这种任务设置导致了一种自然的预训练算法和一种通过zero-shot prompt就可将模型迁移到下游分割任务的通用方法。

Pre-training

       预训练采用交互式promptable segmentation方法,预训练过程中为每个训练图像模拟一系列提示(points,boxes,mask等),损失定义为模型预测的mask与真实mask之间的偏差。

Zero-shot transfer

       预训练任务赋予了模型在推理时适当响应任何提示的能力,故下游任务只需设计合适的提示即可解决。例如,给定一个猫的边界检测器,通过检测器预测的box作为SAM的prompt即可产生猫的实例分割结果。

Model

       SAM包括图像编码器、prompt编码器、mask解码器三个组件。
image

Image encoder

       图像编码器使用MAE预训练的ViT,每张图像只进行一次图像编码。

Prompt encoder

       prompt有稀疏(points、boxes、text)和密集(mask)两种。points、boxes prompt使用positional encodings表示,并与对应prompt类型的可学习嵌入相加;自由格式的文本(text)使用预训练CLIP文本编码器表示;密集prompt(mask)使用卷积嵌入,并与图像嵌入逐元素求和。

Mask decoder

       mask解码器是一个经过修改的transformer解码器块,其可将图像嵌入、prompt嵌入和输出token映射为mask。解码器使用两个方向的prompt自注意力和交叉注意力(prompt-to-image embedding或反之)来更新所有的嵌入,随后对嵌入进行上采样,并通过MLP将输出token映射到动态线性分类器,该分类器会计算图像的每个位置是否为mask前景的概率。

Resolving ambiguity

image
       如果给定一个模糊的prompt,模型会预测单个prompt的多个输出mask(如上图),实验发现3个mask输出就可以解决大多数常见的情况(嵌套mask通常包含一个物体的整体、部分和子部分)。在训练期间,根据模型预测的mask置信度分数(即估计的IoU)对mask进行排名,并利用mask的最小损失进行反向传播。

Efficiency

       给定一个预先计算的图像嵌入,prompt编码器和mask解码器在CPU上运行时间为∼50毫秒,可以实现实时性。

Losses and training

       采用focal loss和dice loss的线性组合来监督mask预测。使用geometric prompts的混合来训练可提示的分割任务,对每个mask都进行11轮人工prompt交互并从其中随机采样出prompt,使SAM能无缝集成到数据引擎中。

Data Engine

       本工作通过构建了一个数据引擎来收集包括11亿mask的数据集SA-1B。该数据引擎有三个阶段:

  • 模型辅助的人工手动标注阶段
  • 半自动阶段,首先模型自动预测mask,随后人工利用模型进行辅助标注
  • 全自动阶段,该阶段模型在没有标注者输入的情况下生成掩码

Assisted-manual stage

       在第一阶段,首先使用常见的公共分割数据集对SAM进行训练。随后由本工作组建的一个专业注释者团队通过使用基于浏览器的由SAM提供的交互式分割工具,通过点击前景/背景对象点来标记mask,mask可以使用“笔刷”和“橡皮擦”工具来调整。本阶段没有对标记对象施加语义约束,但建议注释者标记他们可以命名或描述的对象,不过没有收集这些名称或描述。注释者被要求按目标的突出程度顺序来标记,并被鼓励对每幅图花费超过30秒来进行注释,随着数据注释的增多。

       本阶段总共从12万张图像中收集了430万个mask。mask收集过程中,随着收集到更多的mask,仅使用新注释的mask重新训练模型,SAM图像编码器也从ViT-B扩展到ViT-H。该过程总共重新训练了模型6次,随着SAM的改进,每个图像的平均mask数量从20个增加到44个。

Semi-automatic stage

       在这个阶段,关键目标是增加mask的多样性,以提高SAM分割任何东西的能力。为了使标注者专注于不太突出的对象,首先使用通用的“object”类别在第一阶段的所有mask上训练了一个边界框检测器,并由模型自动检测出置信度较高的mask,然后向标注者展示了预填充这些掩码的图像,并要求他们注释任何其他未注释的对象。

       本阶段总共从180k图像中收集了额外的590万个掩mask(总共1020万个mask)。与第一阶段一样,本阶段定期对新收集的数据重新训练模型(5次),每个mask的平均注释时间为34秒(不包括模型自动生成的mask),每张图片的平均mask数量从44个增加到72个(包括模型自动生成的mask)。

Fully automatic stage

       到此阶段,模型以经基本通用,故本阶段采用模型进行全自动标注。使用 32 × 32 32×32 32×32个规则的点网格来prompt模型,每个点位置都预测一组mask,如果一个点同时位于某个对象的局部或子部分上,模型将返回子部分、局部和整个对象,SAM的IoU预测模块会预测对应mask的置信度,并选择置信度高的mask。此外,还进行了mask稳定性筛选(一个mask与其置信度的 0.5 − δ 0.5−δ 0.5δ 0.5 + δ 0.5+δ 0.5+δ区间内的其他mask类似,则认为该mask是稳定的)。最后,在经过置信度和稳定性筛选后的mask中,采用非极大值抑制(NMS)进行重复数据过滤,并处理了多个重叠的但更大的图像mask。

       本阶段将模型全自动生成的mask应用于数据集中的所有1100万张图 像,产生了总共11亿个高质量mask。

Dataset

       本工作发布的SA-1B数据集由11M不同的、高分辨率的、授权的、保护隐私的图像和用数据引擎收集的11亿个高质量的分割掩码组成。

Images

       本工作从一家直接与摄影师合作的提供商那里获得了一套1100万张图像,这些图像的平均分辨率为 3300 × 4950 3300×4950 3300×4950像素,并将发布图像最短边设置为1500像素的下采样图像。在公布的照片中,人脸和车牌都被模糊处理。

Masks

       数据引擎产生了11亿个mask,其中99.1%是由模型全自动生成的。实验验证这些mask是高质量的,对训练模型是有效的。故受这些发现的启发,SA-1B只包括自动生成的mask。

Mask quality

       为了验证mask质量,随机抽样了500张图像(∼50k mask),并要求专业标注者团队通过交互式分割工具来提高这些图像中所有mask的质量,这一过程产生了成对的自动预测和专业校正的mask。随后计算了每对mask之间的IoU,发现94%对mask的IoU大于90%(97%对mask的IoU大于75%),而以往的分割数据集进行类似的操作得到的IoU在85-91%IoU。故相对于其他数据集,SA-1B的mask质量很高。

Mask properties

image
       上图绘制了SA-1B及其他分割数据集中图像的对象中心的空间分布。观察到,与LVISv1和ADE20K这两个分布最相似的数据集相比,SA-1B具有更大的图像角点覆盖率,而COCO和Open ImagesV5具有更突出的中心偏差。
image
       上图按数据大小比较了这些数据集。观察到,SA-1B比LVISv1多11×张图片和400×张掩码,平均每张图像多36× mask。即使使mask较为密集的ADE20K,每张图像仍然少3.5× mask。如上图左绘制了所有数据集的图像的mask数量分布。

       上图右显示了mask相对图像大小(掩模区域除以图像区域的平方根),观察到,由于SA-1B每张图像有更多的mask,所以也包括了更多的中小型尺寸的mask。

       上图右显示了各数据集mask的凹性(1减去掩模面积除以掩模的凸包面积)以分析mask形状的复杂性。由于形状复杂度与掩码大小相关,首先通过对数据集的掩模大小进行分层采样来控制数据集的掩模大小分布。通过实验结果观察到,SA-1B中mask的凹凸分布与其他数据集的大致相似。

RAI Analysis

       本节调查了使用SA-1B和SAM时潜在的公平性问题和偏见。分析了SA-1B在地理和收入水平以及SAM在受保护的人群属性中的公平性。

Geographic and income representationimage

       上图可视化了SA-1B在每个国家的图像数量(左)和图像占比最多的50个国家(右)。观察到,排名前三的国家来自世界不同地区。
image
       上表比较了SA-1B、COCO和Open Images中图像在不同地理和收入水平的分布。观察到,SA-1B在欧洲、亚洲和大洋洲以及中等收入国家拥有更高比例的图像,而在非洲和低收入国家的占比较小。其次,非洲区域至少包含2800万个mask,比以往任何数据集的mask总数多10×。每个图像的平均mask数量在不同地区和收入之间相当一致(每个图像94-108)。

Fairness in segmenting people

image
       本实验通过测量不同人口群体在SAM的表现差异,调查了SAM在感知性别、感知年龄组和感知肤色方面的表现之间的潜在的公平问题。使用More Inclusive Annotations for People(MIAP)数据集调查SAM在不同性别和年龄的表现,以及一个专有的数据集用于评估SAM在不同肤色间的表现。本评估使用交互式分割,随机抽样1 points和3 points。

       上表左上为SAM感知 性别的结果。观察到,SAM对女性的检测和分割性能较差,但在 不同性别的组间表现类似。上表左下为SAM感知年龄 的结果,观察到,SAM在针对青年和中年的分割性能较差,SAM在老年人上的表现最好(尽管置信区间很大)。上表右为SAM感知肤色的结果,观察到,SAM在针对 肤色较浅的人的分割性能较好,而对肤色较深的人的分割性能较差(范围从1(最 浅的肤色)到6(最暗的肤色))。但在 不同肤色的组间表现类似。

Fairness in segmenting clothing

       本实验分析SAM在分割不同人群的服装上的表现,使用了公开图像 及6.5k的真实mask。
image
       上表比较了SAM感知性别表示和年龄组的表现。发现SAM在分割以男性为主的服装方面表现得更好,具有相对95%置信区间,当采用3个点prompt评估时,差距会缩小。感知不同年龄组时差异不显著。结果表明,在用一个点prompt分割跨性别的服装时SAM感知存在偏见。

实验

Zero-Shot Single Point Valid Mask Evaluation

Task

       本实验评估SAM从单个前景点(single foreground point)prompt分割对象的能力,该任务是ill-posed的,因为一个点可能指代多个对象。首先采用mIoU指标自动评估模型分割质量(即所有预测mask和真实mask之间IoU的平均值);其次还利用人工进行mask质量评估,注释者对mask质量的评级从1(无意义)到10(像素完美)。

       默认情况下,从图像真实mask的“中心”(掩码内部边界距离的最大值)中采样前景点。因为一般的分割baseline模型都只能预测单个mask,而SAM是多mask方法,为了公平比较,只评估SAM预测的置信度最高的mask。实验主要与RITM进行比较,这是一个强大的交互式分割器,与其他强baseline相比,SAM表现最好。

Datasets

image
       本实验使用了23种具有不同图像分布的数据集,如上图,其中显示了每个数据集的一个样本。对于人工评估实验,使用下图b中列出的子集。
image
       上表为数据集的详细描述。

Results

image
       首先研究使用mIoU对23个数据集进行的自动评估,如上图a在所以数据集上对SAM与RITM进行了比较。观察到,SAM在23个数据集中的16个上产生了更高的结果,最高可达∼47IoU。另外还实验了“oracle”版本的结果,通过比较SAM预测的3个mask与真实mask的相关性来选择最相关的mask,该配置下,SAM在所有数据集上都优于RITM。

       上图b为人工评估实验结果,误差条多种分割器在所有测试数据集的平均mask评级。观察到,注释者对SAM预测的mask质量评价明显高于RITM,“oracle”版本的SAM的评级较低,但其评分仍然高于RITM。SAM的平均评级落在7到9之间的高分数(7-9)段(对象是可识别的,错误是很小和罕见的),表明SAM已经学会从单个点分割有效的mask。

       上图c比较了和SimpleClick和FocalClick方法的比较结果,观察到其性能低于RITM和SAM。当前景点的数量从1增加到9时,观察到方法之间的差距减小。

       上图d中比较了用随机点采样替换默认的中心点采样实验的结果,观察到相比于中心点采样结果,SAM和其他baseline之间的差距增大。

Zero-Shot Edge Detection

Approach

       本实验使用BSDS500数据集在边缘检测任务中评估SAM。生成过程为,首先用一个 16 × 16 16×16 16×16的前景点规则网格prompt SAM,从而得到768个预测mask(每个点3个),冗余mask会被NMS去除,然后使用Sobel滤波和标准的轻量级后处理来计算边缘映射,包括边缘NMS。

Results

image
       上图为SAM预测的可视化的边缘图的一个例子。观察到,即使SAM没有进行边缘检测训练,也能产生合理的边缘映射。与真实边缘标注相比,SAM预测了更多的边缘,包括在BSDS500中没有注释的边缘。
image
       上表中定量反映了SAM的性能,观察到,SAM的50%精度(R50)的召回率很高,验证了SAM检测的边缘的全面性。其次,SAM落后于最先进的边缘检测方法,因为这些方法学习了BSDS500的偏差。与HED(也在BSDS500上训练)等开拓性的深度学习方法相比,SAM表现良好,并明显优于之前的zero-shot方法。

Visualizations

image
       上图展示了SAM的其他边缘检测示例。这些定性的例子进一步说明,尽管没有经过边缘检测的训练,但SAM也会倾向于输出合理的边缘图。观察到,边缘可以很好地与人工标注对齐。

Zero-Shot Object Proposals

Approach

       本实验评估SAM在对象建议生成的性能,这项任务可以在目标检测中发挥了重要。为了生成对象建议,对自动mask生成管道进行了略微修改,并将mask输出为建议。

       实验在LVISv1数据集上度量了平均召回率(AR),并与ViTDet(cascade Mask R-CNN ViT-H)实现的强baseline检测器进行了比较。

Resultsimage

       结果如上表。观察到,使用ViTDet-H的检测作为对象建议总体上表现最好,但是SAM在几个指标上也都做得非常好,在中型和大型物体以及稀有和普通物体上的建议质量都优于ViTDet-H,只在小对象和频繁对象上的表现低于ViTDet-H,因为ViTDet-H是在LVIS上训练的,可以很容易地学习LVIS特定的注释偏差。还比较了“oracle”版本的SAM,其在所有AR指标上的表现都明显低于SAM。

Zero-Shot Instance Segmentation

Approach

       本实验SAM作为实例分割的分割模块的性能。实验流程为,首先运行一个对象检测器(之前使用的ViTDet),并使用其输出框作为SAM的prompt,随后分割。

Results

image
       上表比较了SAM和ViTDet在COCO和LVIS数据集的maskAP性能。观察到在两个数据集上SAM的性能都相当接近ViTDet。
image
       上图为实例分割的可视化输出,观察到SAM掩模在质量上往往优于ViTDet,其边界更清晰。
image
       另外还进行了人工评估,要求注释者按照之前使用的1到10的质量尺度对ViTDet mask和SAM mask进行评分。结果如上图,观察到SAM在人类评估的表现中始终优于ViTDet。

Zero-Shot Text-to-Mask

Approach

       本实验评估SAM从自由形式的文本prompt中分割对象的能力。具体过程为,对于每个手工收集的面积大于 10 0 2 100^2 1002的掩模,提取其CLIP图像嵌入。因为CLIP的图像嵌入被训练成与文本嵌入对齐,所以可以使用图像嵌入进行训练,故在训练过程中,将提取的CLIP图像嵌入作为SAM的prompt进行训练。而在推理时,使用CLIP的文本编码器将生成的文本嵌入作为prompt提供给SAM。

Results

image
       上图显示了定性结果。观察到,SAM可以根据简单的文本提示如““a wheel”以及“beaver tooth grille”等短语来分割对象。当SAM不能仅从文本提示中选择正确的对象时,通常会添加一个点prompt修复预测结果。

Ablations

       本实验使用单中心点prompt对23个数据集套件进行了几次消融,另外报告包括“oracle”配置的结果。
image
       上图左绘制了SAM在数据引擎收集数据不同阶段的累积数据上进行训练时的性能。观察到每个阶段都增加了mIoU。在所有三个阶段的训练中,全自动mask的数量远远超过了手动和半自动mask,为了解决数据平衡的问题,实验发现在训练过程中采样10×的手动和半自动mask数量的全自动mask,效果最好。因此,第四种测试只使用自动生成的mask,该配置下的SAM的性能仅略低于使用所有mask(∼0.5mIoU),故在默认情况下,只使用自动生成的mask进行训练。

       上中间观察了数据量的影响。完整的SA-1B包含11M的图像,本实验在其种均匀地子采样到1M和0.1M的子数据集进行消融。对0.1M的图像训练的结果,观察到在所有设置下,mIoU都大幅下降。对1M幅图像训练的结果,与使用完整数据集相当,其中包括大约100m的掩模。

       上图右显示了使用ViT-B、ViT-L和ViT-H图像编码器的结果。观察到,ViT-H比ViT-B有了很大的改进,但比ViT-L只有少许的增益。

附录

Model and Task Details

Image encoder

       基于可伸缩性和强大的预训练方法,本文使用MAE预训练Vision Transformer(ViT),其天然适用本文使用的高分辨率输入,特别是ViT-h/16。

       输入图像使用 1024 × 1024 1024×1024 1024×1024的分辨率,图像嵌入维度为 64 × 64 64×64 64×64,故图像编码器的输出是输入图像缩小16×后的嵌入。在ViT之后,为了降低通道维度,使用 1 × 1 1×1 1×1卷积得到256个通道,再使用 3 × 3 3×3 3×3卷积得到256个通道。每个卷积之后都有一个层归一化。

Prompt encoder

       稀疏提示会被映射到256维的向量嵌入。其中,点prompt会被表示为该点在图像中位置的位置编码和可学习嵌入的总和,表明该点是在前景中还是在背景中。box prompt由嵌入对表示,其左上角/右下角点的嵌入为位置编码与表示“左上角”的可学习嵌入的和。自由形式的文本prompt,使用CLIP文本编码器嵌入。

       密集提示与图像具有空间对应关系。输入mask的分辨率比输入图像低4×,并使用两个 2 × 2 2×2 2×2且分别具有输出通道4和16的stride-2-conv在将mask缩小4×倍,最后用 1 × 1 1×1 1×1卷积将通道维度映射到256,每个层由GELU激活和层归一化分开,然后逐元素相加mask和图像嵌入。如果没有掩码提示,则将表示“no mask”的学习嵌入添加到每个图像嵌入位置。

Lightweight mask decoder

       解码器可以将图像嵌入和一组提示嵌入映射到输出mask。在应用解码器之前,首先会向prompt嵌入集合中插入一个学习到的输出token嵌入(类似[class] token),该token将在解码器的输出中使用,上述嵌入(不包括图像嵌入)统称为token。
image
       解码器结构如上图。每个解码器层有4个步骤:

  • token的自注意力
  • 从token(作为query)到图像嵌入的交叉注意力
  • 逐点MLP更新每个token
  • 从图像嵌入(作为query)到token的交叉注意力,用prompt信息更新图像嵌入

       在交叉注意力过程中,图像嵌入被视为 6 4 2 64^2 642个256维向量的集合。每个self/cross-attention和MLP都有残差连接,层归一化和训练时的drop率为0.1的dropout。整体使用一个两层的解码器,下一层解码器接收上一层更新的token和图像嵌入。

       为了确保解码器能够访问关键的几何信息,每当位置编码参与注意力层时,都将其添加到图像嵌入中。此外,token在更新后,都会重新添加整个原始prompt token(包括它们的位置编码)。这允许图像嵌入强烈地依赖于prompt token的几何位置和类型。

       运行解码器后,使用两层转置卷积对更新后的图像嵌入进行4×的上采样。然后,输出token再次计算到图像嵌入的交叉注意力以更新token,更新后的输出token嵌入将被传递给一个3层MLP,该MLP输出与放大后的图像嵌入的通道维度相匹配。最后,用放大后的图像嵌入和MLP输出的逐点乘积来预测mask。

       transformer的嵌入维度为256,transformer MLP块的尺寸为2048,但MLP仅应用于prompt token。交叉注意力层中图像嵌入尺寸为 64 × 64 64×64 64×64,为了计算效率,将query、key和value的通道维度减少到128。所有的注意力层使用8个头。

       用于放大输出图像嵌入的转置卷积核为 2 × 2 2×2 2×2,步幅为2,输出通道尺寸为64和32,并使有GELU激活,两个卷积之间采用层归一化划分。

Making the model ambiguity-aware

       单个输入提示可能是模糊不清的,其可能对应多个有效mask,这会导致模型学习这些掩码的平均。故本文会使用输出token同时预测多个mask,默认情况下,预测三个mask,因为三层(整体、部分和子部分)通常足以描述嵌套mask。在训练过程中,会计算真实mask和每个预测mask之间的损失,但只从最低损失进行反向传播。为了在应用程序中使用,添加了一个小预测头,以估计每个预测掩码的IoU。

       当给定多个prompt时,提示的模糊性会降低,通常三个输出mask会变得相似,故这种情况下会额外预测一个新的mask。单个prompt的情况不会返回这第四个mask,其只在多个prompt时唯一返回(其余三个mask不返回)。

Losses

       本文用focal loss和dice loss的线性组合来监督mask预测,focal loss与dice loss的权重比为20:1。采用预测mask与真实mask的IoU与预测IoU之间的均方误差损失来训练IoU预测头。

Training algorithm

       训练期间会模拟交互式分割设置。首先,等概率随机选择前景点或边界box作为prompt,点从真实mask中均匀采样;box为真实mask的边界box,每个坐标都会添加box边长10%的标准差的随机噪声,最大不超过20像素。这种噪声轮廓是实例分割(在目标对象周围产生一个紧密的box)和交互式分割(用户可以绘制一个松散的box)之间的合理折衷。

       在对第一个prompt进行预测之后,从前一个预测mask和真实mask之间的误差区域均匀地选择后续的点,并提供了上一次迭代预测的mask作为对模型的额外提示,为了给下一次迭代提供最大信息的prompt,会提供无阈值的logits mask(此处非阈值过滤的二值mask),当上一代返回多个mask时,采用最高预测IoU的mask执行上述过程。

       实验发现在8个迭代采样点之后,训练收益会递减。此外,为了鼓励模型从提供的mask中受益,还进行了额外两次迭代,额外的迭代中没有采样额外的点,其中一次迭代会随机地抽出前8个迭代采样点中的一个点,而另一次使用最后一次迭代的点。故对于每个真实mask总共会进行11次迭代,一次初始输入prompt的采样迭代,8次采样点迭代,以及两次没有向模型提供新的外部信息的迭代。

Training recipe

       使用AdamW优化器( β 1 = 0.9 , β 2 = 0.999 β_1=0.9,β_2=0.999 β1=0.9β2=0.999)和线性学习率warmup进行250次迭代。warmup的初始学习率(lr)为 8 e − 4 8e−4 8e4,训练总共进行90k次迭代(2 SA-1B epochs),在60k次迭代和在86666次迭代时,将lr减少10倍,batch size为256。为了正则化SAM,将weight decay(wd)设置为0.1,并应用速率为0.4的drop path(dp),使用0.8的layer-wise learning rate decay(ld),且没有应用数据增强,并从MAE预训练的ViT-H初始化SAM。由于较大的图像编码器和 1024 × 1024 1024×1024 1024×1024的输入大小,将训练分布在256个gpu上。为了限制GPU内存使用,对每个GPU都随机采样64个mask进行训练。轻度过滤SA-1B,丢弃任何覆盖90%以上图像的mask,可以提高训练结果。

       在消融和训练其他变体时,会修改上述配置。当仅使用第一和第二数据引擎阶段的数据进行训练时,采用scale range为[0.1,2.0]的large-scale jitter增强,因为当训练数据比较有限时,数据增强可能是有用的。ViT-B和ViT-L的训练使用180k迭代,batchsize为128,分布在128个gpu上,并设置ViT-B/L分别为lr=8e−4/4e−4、ld=0.6/0.8、wd=0.1和dp=0.6/0.4。

Automatic Mask Generation Details

       本节讨论数据引擎的全自动阶段的mask生成过程。

Cropping

       mask有两部分生成,其一从完整图像上的 32 × 32 32×32 32×32的规则点网格生成;以及对原始高分辨率图像的 2 × 2 2×2 2×2 4 × 4 4×4 4×4的部分重叠裁剪并放大的20幅子图分别使用 16 × 16 16×16 16×16 8 × 8 8×8 8×8的规则点网格生成,并去除了触及裁剪图像内部边界的mask。随后,在两个阶段应用基于贪婪框的NMS(使用box用于提高效率),首先是在裁剪子图内,其次是跨裁剪子图。当在裁剪子图内应用NMS时,使用模型的预测IoU对mask进行排序并过滤。当在裁剪子图间应用NMS时,根据裁剪子图的放大程度从最大放大(即从 4 × 4 4×4 4×4裁剪)到最小放大(即原始图像)对mask进行排序,当不同子图的mask的IoU满足阈值时,删除序号靠后的mask。这两种情况下都使用0.7的NMS阈值。

Filtering

       使用了三种过滤器来提高mask的质量。首先,为了保留高置信度mask,使用模型预测的IoU分数(阈值为88.0)进行过滤。其次,为了保留稳定的mask,对一个预测mask采用-1和+1阈值过滤生成两个二值mask,若两个二值mask的IoU等于或大于95.0则保留预测mask。第三,注意到有时预测mask会覆盖整个图像,但这些mask通常没有意义,故会删除覆盖图像95%或更多的mask来过滤。

Postprocessing

       有两种类型的分割错误可以通过后处理缓解。首先,估计模型预测mask中有4%的mask包含小的、假的(实际不存在)成分,故会删除目标mask中面积小于100像素的关联成分(如果最大成分低于此阈值,则删除整个掩mask)。其次,估计还有4%的mask有小的假孔洞(预测mask内出现空洞),故会填充面积小于100像素的孔洞。

Automatic mask generation model

       最后训练了一个用于全自动掩mask生成的特殊版本SAM,其牺牲了一些推理速度以改进mask生成性能。该模型仅使用手动和半自动数据,并且采用大规模抖动数据增强进行了更长时间的训练(177656次迭代)。模拟交互训练过程中仅使用点和mask prompt(没有box),每个mask仅迭代采样4个点。使用了3层mask解码器。

SA-1B examples

image
       上图为SA-1B示例。

Model Cards

image
       上图为SAM模型卡,包含模型的生产、利用等详细信息。

Annotation Guidelines

image
image
       上2图为人工审查mask质量的完整指南。

reference

Alexander, K. , Eric, M. , Nikhila, R. , Hanzi, M. , Chloe, R. , Laura, G. , Tete, X. , Spencer, W. , Alexander, C. B. , Wan-Yen, L. , Piotr, D. , Ross, G. . (2023). Segment Anything.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/663958.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FPGA新起点V1开发板(七-语法篇)——程序框架+高级语法(选择性做笔记)

文章目录 一、模块结构二、赋值三、条件语句 一、模块结构 默认是wire类型&#xff0c;assign是定义功能。 上面这两个always都是并行 例化 二、赋值 有两种赋值“”和“<” “”是阻塞赋值&#xff0c;也就是从上到下&#xff0c;依次完成 “”是非阻塞赋值&#xff0c;…

PMP认证与NPDP认证哪个含金量高?

PMP和NPDP&#xff0c;哪个含金量更高呢&#xff1f; PMP可以全面提升你的职业发展&#xff0c;无论你是技术人员还是项目管理人员&#xff0c;都能帮助你打破思维定式&#xff0c;拓宽视野&#xff0c;并提升管理水平和领导能力。 NPDP不仅帮助个人了解新产品开发流程和原理…

032.最长有效括号

题意 给你一个只包含 ( 和 ) 的字符串&#xff0c;找出最长有效&#xff08;格式正确且连续&#xff09;括号子串的长度。 难度 困难 示例 输入&#xff1a;s "(()" 输出&#xff1a;2 解释&#xff1a;最长有效括号子串是 "()" 输入&#xff1a;s …

数据挖掘与机器学习——聚类算法

目录 无监督学习 聚类算法 概念&#xff1a; 功能&#xff1a; 应用场景&#xff1a; 评判标准&#xff1a; 划分聚类&#xff1a; K-means聚类 逻辑实现&#xff1a; 聚类方式 问题&#xff1a; 解决&#xff1a; 可能存在的问题&#xff1a; 1.初始值对K-means聚…

C/C++开发,opencv-objdetect模块,CascadeClassifier人脸识别应用

目录 一、CascadeClassifier应用简介 1.1 objdetect模块 1.2 CascadeClassifier类 1.3 detectMultiScale函数详解 二、CascadeClassifier应用示例 2.1 模型及图片下载准备 2.2 程序代码 2.3 程序编译及运行 一、CascadeClassifier应用简介 1.1 objdetect模块 在OpenCV…

信号与槽函数的魔法:QT 5编程中的核心机制

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、信号与槽函数的基本概念 二、信号与槽函数的实现原理 三、信号与槽函数的代码实例 四…

Windows环境下 postgresql16 增量备份及恢复

修改postgresql.conf isten_addresses * wal_level replica archive_mode on archive_command copy /V "%p" C:\\backup\\wal_files\\%f 注意写法&#xff0c;这里有大坑 restore_command copy c:\\backup\\wal_files\\%f "%p" recov…

FatFs文件系统移植到MCU平台详细笔记经验教程

0、准备工作 在移植FatFs文件系统前&#xff0c;需要准备好一块开发板&#xff0c;和一张SD卡&#xff0c;且需要已经实现开发板正常的读写SD卡或其它硬件设备。 本文笔记教程中使用的硬件设备是STM32F407VET6开发板&#xff08;板载SD插槽&#xff09;&#xff0c;配备8G和32G…

vscode:多个Tab同时展示项目

打开设置 设置中搜索window.nativeTabs&#xff0c;打钩。 这样就可以了

【稳定检索/投稿优惠】2024年语言、文化与艺术发展国际会议(LCAD 2024)

2024 International Conference on Language, Culture, and Art Development 2024年语言、文化与艺术发展国际会议 【会议信息】 会议简称&#xff1a;LCAD 2024大会时间&#xff1a;2024-08-10截稿时间&#xff1a;2024-07-27(以官网为准&#xff09;大会地点&#xff1a;中国…

【Java面试】六、Spring框架相关

文章目录 1、单例Bean不是线程安全的2、AOP3、Spring中事务的实现4、Spring事务失效的场景4.1 情况一&#xff1a;异常被捕获4.2 情况二&#xff1a;抛出检查异常4.3 注解加在非public方法上 5、Bean的生命周期6、Bean的循环引用7、Bean循环引用的解决&#xff1a;Spring三级缓…

JS-51-Node.js10-yarn

一、yarn的简介 Yarn 是一款 JavaScript 的包管理工具&#xff08;npm的代替方案&#xff09;&#xff0c;是 Facebook, Google, Exponent 和 Tilde 开发的一款新的 JavaScript 包管理工具。 正如 Yarn 官网的介绍&#xff0c;Yarn 的具有速度快 、安全 、可靠 的优点&#x…

【机器学习】Transformer模型大小与性能探究

Transformer模型大小与性能&#xff1a;不仅仅是尺寸的问题 一、Transformer模型的挑战二、经验标度定律的局限性三、记忆过程与性能动态五、结论与展望 在人工智能和机器学习的领域里&#xff0c;模型的大小与性能之间的关系一直是研究人员关注的焦点。然而&#xff0c;最近的…

比较好的Python课程

最近在学习夜曲编程的Python进阶课程——办公效率化&#xff1b;夜曲编程之前有推出一款学习Python的入门课程&#xff0c;在手机端和电脑端都可以学习的&#xff0c;如果没有时间在手机端学习都很好的。每节课程学习下来&#xff0c;可以收集到Python入门的知识卡片&#xff0…

VNC server ubuntu20 配置

介绍 最近想使用实验室的4卡服务器跑一些深度学习实验&#xff0c;因为跑的是三维建图实验&#xff0c;需要配上可视化界面&#xff0c;本来自带的IPMI可以可视化&#xff0c;但分辨率固定在640*480&#xff0c;看起来很别扭&#xff0c;就捣鼓服务器远程可视化访问了两天&…

Python | Leetcode Python题解之第120题三角形最小路径和

题目&#xff1a; 题解&#xff1a; class Solution:def minimumTotal(self, triangle: List[List[int]]) -> int:n len(triangle)f [0] * nf[0] triangle[0][0]for i in range(1, n):f[i] f[i - 1] triangle[i][i]for j in range(i - 1, 0, -1):f[j] min(f[j - 1], …

Javaweb基础之Cookie会话技术

大家好&#xff0c;这里是教授.F 引入&#xff1a; 我们想在登录一个网站时&#xff0c;能够显示我们上一次的登录时间啊&#xff0c;或者我们在该网站的浏览痕迹。哪这些要怎么做到&#xff1f;我们想&#xff0c;这些数据不可能从服务端给你返回来&#xff0c;因为一旦用户…

react 怎样配置ant design Pro 路由?

Ant Design Pro 是基于 umi 和 dva 的框架&#xff0c;umi 已经预置了路由功能&#xff0c;只需要在 config/router.config.js 中添加路由信息即可。 例如&#xff0c;假设你需要为 HelloWorld 组件创建一个路由&#xff0c;你可以将以下代码添加到 config/router.config.js 中…

ArcGIS教程(04):查找最近的消防站

本节目标 创建、设置和求解最近设施点分析。在本练习中&#xff0c;将查找可对给定地址处发生的火灾做出最快响应的四个消防站。还将生成消防队员的行进路线和驾车方向。 准备视图 双击打开【Exercise04.mxd】启用 【ArcGIS Network Analyst 扩展模块】单击【自定义 > 工…

游戏安全 | 一款「安全」的SLG游戏应该是什么样的?

谈到SLG游戏&#xff0c;也许会想到《万国觉醒》&#xff0c;海外上线5个月后&#xff0c;以5400万美元的月流水创造了新的SLG手游海外收入纪录。 谈到SLG游戏&#xff0c;也许会想到《王国纪元》&#xff0c;通过两军对战的方式&#xff0c;以大面积消灭敌人的攻势&#xff0c…