AI专题·论文解读 MetaAI图像分割基础模型SAM ——解锁数字大脑“视觉区” 西南证券研究发展中心计算机团队王湘杰2023年4月 内容提要 事件背景:2023年4月5日,MetaAI研究团队发布论文“分割一切”—《SegmentAnything》,并在官网发布了图像分割基础模型—SegmentAnythingModel(SAM)以及图像注释数据集—Segment-Anything1-Billion(SA-1B)。 论文核心观点: 目标:MetaAI的目标是通过引入三个相互关联的部分来构建一个用于图像分割的基础模型:1)可提示的图像分割任务;2)数据标注并通过提示实现零样本到一系列任务的分割模型-SAM;3)拥有超过10亿个掩码的数据集-SA-1B。 功能:1)SAM允许用户仅通过单击或通过交互式单击点来包含和排除对象来分割对象,也可以通过边界框进行提示;2)当分割对象存在歧义时,SAM可以输出多个有效掩码,是解决现实世界中分割的重要和必要能力之一;3)SAM可以自动查找并掩盖图像中的所有对象;4)SAM可以在预计算图像嵌入之后即时为任何提示生成分割掩码,从而允许与模型实时交互。 结论:SAM模型试图将图像分割提升到基础模型时代,而SAM是否能达到基础模型的地位还有待观察它在社区中的使用情况,但无论该项目前景如何,超过1B的掩码以及可提示的分割模型为其未来发展奠定了基础。 启发:我们认为,SAM模型在SA-1B强大分割数据集的支撑下,可以通过各种形式的提示对图像下达指令,无需额外训练即可自动完成分割任务,这一通用特性使得SAM模型在相关领域的推广应用成为可能。我们认为,SAM模型有望作为效率提升的工具,赋能自动驾驶、医疗健康、安防监控、游戏娱乐、农业科技等领域,跨视觉模态和相关场景将从中收益。 风险提示:AI技术发展不及预期风险;商业落地不及预期;政策支持不及预期;论文翻译偏差等。 1 一、论文研究 1介绍·Introduction 2任务·SegmentAnythingTask 3模型·SegmentAnythingModel 4数据引擎·SegmentAnythingDataEngine 5数据集·SegmentAnythingDataset 6RAI分析·SegmentAnythingRAIAnalysis 7零样本传输实验·Zero-ShotTransferExperiments 8讨论·Discussion 2 1、可提示的分割任务 2、分割模型 3、图像数据注释集 《SegmentAnything》 2023年4月5日,MetaAI研究团队发布论文《SegmentAnything》。 论文指出,MetaAI的目标是通过引入三个相互关联的部分来构建一个用于图像分割的基础模型:1)可提示的图像分割任务;2)数据标注并通过提示实现零样本到一系列任务的分割模型SAM;3)拥有超过10亿个掩码的数据集-SA-1B。 资料来源:MetaAI,西南证券整理3 摘要·Abstract 论文介绍SegmentAnything(SA)项目主要包括了用于图像分割的新任务、模型和数据集。 论文指出AI团队发现SAM在多任务上具备竞争力,且它的零样本性能让人印象深刻。 文章指出,通过在数据收集循环中使用高效模型,AI团队构建了迄今为止最大的分割数据集,在1100万张许可和尊重隐私的图像上有超过10亿个掩码。该模型被设计和训练为可提示的,因此它可以将零样本转移到新的图像分布和任务中。 文章提到,MetaAI研究团队在https://segment-anything.com上发布了SegmentAnythingModel(SAM)和相应的1B掩模和11M图像数据集(SA-1B),以促进对计算机视觉基础模型的研究。 资料来源:MetaAI,西南证券整理4 1介绍·Introduction 根据论文表述,SA的目标是建立一个图像分割的基础模型,即寻求开发一个可提示的模型,并使用能够实现强大泛化的任务在广泛的数据集上对其进行预训练,从而可以通过使用提示工程解决新数据分布上的一系列下游分割问题。 文章认为,SA项目成功的关键在于3个部分:任务、模型和数据,由此,团队需要解决以下问题: 1、什么任务可以实现零样本泛化? 文章认为,首先需要定义一个可提示的分割任务,该任务足够通用,以提供 强大的预训练目标并支持广泛的下游应用程序。 2、对应的模型架构是怎样的? 文章指出,需要一个支持灵活提示的模型,并且可以在提示时实时输出分割掩码,以供交互使用。 文章提出,训练模型需要多样化、大规模的数据源,为解决这一问题,可以构建一个“数据引擎”,即在使用高效模型来协助数据收集和使用新收集的数据来改进模型之间进行迭代。 3、哪些数据可以为这项 任务和模型提供支持? 资料来源:MetaAI,西南证券整理5 提示prompt 2任务·SegmentAnythingTask 掩码1 论文提到,团队是从NLP中获得了灵感,希望可以将NLP领域的Prompt范式延展到计算机视觉(CV)领域。其中: 图像分割的提示(Prompt):可以是一组前景/背景点、粗略框或掩码、自由格式的文本,或者指示分割图像的任何信息。 掩码2 可提示的分割任务(promptablesegmentationtask):指在给定任何提示的情况下返回有效的分割掩码。有效掩码是指,即使提示不明确、并且可能涉及多个对象,输出也应该是其中至少一个对象的合理掩码。 掩码3 文章通过展示右图,介绍了SAM模型在1个不明确的提示下,生成了3个有效掩码。其中,绿色圆点代表提示,红色框线所呈现的图形代表有效掩码。 资料来源:MetaAI,西南证券整理6 2任务·SegmentAnythingTask 2023年4月5日,MetaAI同时发布博客,将SAM与过去2种图像分割方法进行了对比,具体如下: 现在 SegmentAnything 前两类方法综合而成的单一模型,可执 行交互式分割和自动分割 SAM模型的提示接口允许它以灵活的方式使用,通过设计适当的提示,可以使一系列分割任务成为可能(如单击、框、文本等) 。此外,SAM在1亿多个掩码的多样化、高质量数据集上进行训练 ,使它能够适用于训练期间所未观察到的新型对象和图像类型,这种泛化能力意味着从业者将不再需要收集自己的分割数据并为其用例微调模型。 过去 分割方法1:交互式分割 允许对任何类别的对象进行分割,但需要人员通过迭代地细化掩码来指导方法 分割方法2:自动分割 允许预先定义特定对象类别的分割(如猫),但需要大量手动标记对象进行训练(如成千上万个分割的猫示例),以及计算资源和技术专业知识来训练分割模型 通用的、自动的 分割方法 博客介绍,SAM主要有以下突出功能: 1)SAM允许用户仅通过单击或通过交互式单击点来包含和排除对象来分割对象,也可以通过边界框进行提示; 2)当分割对象存在歧义时,SAM可以输出多个有效的掩码,这是解决现实世界中分割的重要和必要能力之一; 3)SAM可以自动查找并掩盖图像中的所有对象; 4)SAM可以在预计算图像嵌入之后即时为任何提示生成分割掩码,从而允许与模型实时交互。 资料来源:MetaAIblog,西南证券整理7 3模型·SegmentAnythingModel 论文指出,SAM是可提示分割模型,包括3部分:图像编码器、灵活提示编码器和快速掩码解码器,SAM建立在Transformer视觉模型的基础上,并在实时性能方面进行了一定的权衡。 图像编码器(Imageencoder):受可扩展性和强大的预训练方法的启发,团队使用MAE预训练的视觉转换器,该转换器最低限度地适用于处理高分辨率输入。每输入1个图像,图像编码器就运行一次,并且可以在提示模型之前应用。 提示编码器(Promptencoder):包括两组提示——sparse(点、框、文本)和dense(掩码),通过位置编码来表示点和框,其中位置编码与每个提示类型的学习嵌入相结合;用CLIP的现成文本编码器表示自由格式文本。掩码等dense提示使用卷积嵌入,并与图像嵌入元素结合。 掩码解码器(Maskdecoder):掩码解码器有效地将图像嵌入、提示嵌入和输出令牌映射到掩码。该设计的灵感来源于对Transformer解码器块的修改。修改的解码器块在两个方向上使用提示自注意和交叉注意来更新所有嵌入。在运行两个块之后,对图像嵌入进行上采样,MLP将输出令牌映射到动态线性分类器,然后动态线性分类器计算每个图像位置的掩码前景概率。 资料来源:MetaAI,西南证券整理8 4数据引擎·SegmentAnythingDataEngine 论文提到,由于互联网上的分割掩码并不丰富,因此,MetaAI团队构建了一个数据引擎来收集1.1B掩码数据集SA-1B,数据引擎分为3个阶段:模型辅助手动注释阶段、混合自动预测掩码和模型辅助注释的半自动阶段、全自动阶段。 阶段1—手动阶段:数据集通过使用SAM收集,标注者使用SAM交互地注释图像,新的注释数据反过来更新SAM,实现了相互促进。在该方法下,交互式地注释一个掩码约需要14秒,与之前大规模分割数据收集工作相比,Meta的方法比COCO完全手动基于多边形的掩码注释快6.5倍,比之前最大的数据注释工作快2倍,这正是基于SAM模型辅助的结果。 阶段1-手动阶段(Assisted-manualstage) 原理 类似于经典的交互式分割,一组专业注释者通过使用由SAM提供支持的基于浏览器的交互式分割工具单击前景/背景对象点来标记蒙版。蒙版可以使用像素精确的“画笔”和“橡皮擦”工具进行细化。模型辅助注释直接在浏览器中实时运行(使用预先计算的图像嵌入),从而实现真正的交互式体验。注释者被要求按照突出的顺序标记对象,并被鼓励在mask花费超过30秒后继续处理下一张图像。1、该阶段开始时,SAM使用常见的公共分割数据集进行训练。2、在完成足够的数据注释后,SAM仅使用新注释的掩码进行再训练。3、随着收集到更多掩码,图像编码器从ViT-B扩展到ViT-H,总共对模型进行了6次再训练。 成果 随着模型的改进,每个mask的平均注释时间从34s减少到14s,注意到14s比COCO的掩码注释快6.5倍。随着SAM的改进,每张图像的平均掩码数量从20个增加到44个。总的来说,在这个阶段从12万张图像中收集了430万个掩码。 资料来源:MetaAIblog,西南证券整理9 4数据引擎·SegmentAnythingDataEngine 阶段2-半自动阶段:帮助增加掩码的多 样性,提高模型分割任何图像的能力。 阶段3-全自动阶段:完全自动的掩模创建使得数据集扩展。最终数据集包括了在约1100万受许可和保护隐私的图像上收集的超11亿个分割掩模,SA-1B比任何现有分割数据集的掩模数量多400倍。经人工评估验证,其具有高质量和多样性,在某些情况下甚至与以前规模较小、手动注释的数据集的质量相当。 阶段2-半自动阶段(Semi-automaticstage) 阶段3-全自动阶段(Fullyautomaticstage) 原理 该阶段的目标是增加掩码的多样性,以提高模型分割任何东西的能力。为了将注释器集中在不太显眼的对象上,首先自动检测了置信掩码。然后向注释者展示了预先填充了这些掩码的图像,并要求他们对任何其他未注释的对象进行注释。为了检测置信掩码,使用通用的“对象”类别在所有第一阶段掩码上训练了一个边界框检测器。与第一阶段一样,定期根据新收集的数据重新训练模型(5次)。每个掩码的平均注释时间回溯到34秒(不包括自动掩码),因为这些对象的标记更具挑战性。 在最后阶段,注释是全自动的,其可行性在于模型有几大改进:1)在该阶段开始时,收集了足够多的掩码来改进模型,包括上一阶段的各种