赞
踩
论文:https://arxiv.org/pdf/2304.02643.pdf
代码:https://github.com/facebookresearch/segment-anything
SAM(CV界的GPT),一个零样本的分割任务模型、一个分割一切模型、拥有10亿+mask的超大数据集。
"Segment Anything"模型是为了解决图片中对象识别和分割的问题提出的,它通过理解指令(Segment)和利用大量图片数据(Anything)来精确地标出图片中指定的对象。
针对“Segment Anything”项目的核心子问题,我们将进行5why分析来探索问题的根本原因,然后通过5so分析来探讨可能的解决方案及其潜在影响。以下是关于这个项目的一个核心子问题的示例分析。
具体算法设计:
灵活性 - 零样本学习(Zero-Shot Learning):
实时性 - 发一个轻量级掩码解码器,快速响应:
跟语言大模型一样,需要给 SAM 模型一个prompt提示,这个提示可以是一个点(point),也可以是几个点(points),也可以是一个框(box),也可以是一个文本(text),而SAM就根据prompt提示分割目标物体,就像下面这样:
这个图像描述的是一种交互式图像分割模型的结构,主要由几个部分组成:
图像编码器(Image Encoder):使用被训练的MAE ViT作为图像编码器。这个编码器将原始图像转换为一系列图像嵌入,这些嵌入后续用于生成和评估分割掩模。在这个过程中,原始图像会被等比缩放并填充至大小为1024的输入。
提示编码器(Prompt Encoder):分为稀疏提示和密集提示两种:
掩模解码器(Mask Decoder):这部分将图像嵌入、点、框、文本以及掩模编码结合起来,输出多个有效的掩模和对应的分数。
假设你有一张图像,其中有一个人物和一个狗。
如果你想交互式地分割出狗的图像,你可能会用一个框框住狗,并给出文本提示“狗”。
图像编码器首先对整张图像进行编码,然后提示编码器针对“狗”这个词和框住的区域进行编码。
这些编码信息会被送到掩模解码器,最后解码器会输出狗的掩模以及对应的分数,表示这个掩模的准确性。
补充一下,解码器、掩码解码器、分割掩码:
解码器是一种算法或模型组件,它的任务是从某种编码的数据中重构或解释信息。在机器学习和深度学习中,解码器通常用于将编码的表示(例如,一个深度神经网络中间层的输出)转换为更容易理解或更有用的格式(如文本、图像等)。
掩码解码器是一种特殊类型的解码器,专门设计用于生成图像的分割掩码。
在图像分割任务中,掩码解码器接收图像的编码表示(通常由图像编码器产生)和可能的其他信息(如分割任务的指令),并输出一个或多个分割掩码。
这些掩码精确地指示图像中的特定区域,如哪些像素属于特定的对象或背景。
这个图解展示了一个基于注意力机制的掩模解码器的工作流程,具体步骤如下:
在掩模解码器的右侧部分:
假设你想从一张图像中分割出所有的车辆。
你将车辆的提示令牌和图像的嵌入作为输入。
通过以上步骤,系统将生成每个车辆的掩模,并计算每个掩模与实际车辆图像的IoU分数。
这些分数可以帮助评估掩模的准确性,高IoU分数的掩模表示与实际车辆的重叠度高,是一个好的掩模。
你有一张包含猫和狗的照片,你想分别标出猫和狗的位置。
优势在于能够快速并准确地响应复杂的图像分割请求,使之适用于实时交互场景,如在线图像编辑工具或实时监控系统中的对象识别和跟踪。
SAM 的设计取决于三个主要组件:
图1 (a) Task: promptable segmentation
图1 (b) Model: Segment Anything Model (SAM)
图1 © Data: data engine (top) & dataset (bottom)
在这个三阶段的掩码生成和改进过程中,每个阶段都具有其特定的目标和方法,以提高数据的质量和模型的性能:
第一阶段:辅助人工标注
第二阶段:半自动
第三阶段:全自动
假设在一个城市景观图像中,需要标注出所有的车辆、行人和建筑。
第一阶段,标注者使用交互工具选出最明显的对象,如汽车和大楼。
第二阶段,目标检测器帮助识别并确认小型或部分遮挡的行人。
第三阶段,系统能够自动识别和生成复杂场景中所有相关对象的掩码,例如在部分遮挡的情况下同时识别出整个和部分行人的掩码。
这个过程通过逐步增加自动化和改进技术,极大地提高了掩码生成的质量和数量,同时降低了对人工输入的依赖。
图3显示了SAM模型如何对一个给定的模糊提示(绿圈)生成多个有效的分割掩码。
在图像分割任务中,一个模糊的提示可能对应于图像中多个不同的对象。
例如,如果提示是图像中的一个点,那么这个点可能位于多个重叠物体的交叉点上,或者无法清楚地指明是指哪个物体。
在这种情况下,模型面临的挑战是如何解释这个模糊的提示并决定哪个对象应该被分割。
SAM模型采用的方法是生成多个可能的分割掩码,每个掩码代表了一个潜在的对象。
这样,即使一个提示可能对应于多个对象,SAM也能提供多个合理的分割选项,用户随后可以从中选择最合适的掩码。
这种方法提高了模型在处理不明确或多义性情况时的实用性和灵活性。
SAM模型的逻辑结构。
在预训练过程中,模型会尝试理解这些提示并产生对应的分割掩码。模型的输出会与真实的分割掩码(即ground truth)进行比较,并根据这些比较进行优化。
随着训练的进行,模型会越来越好地学习如何解释各种提示并生成高质量的分割掩码,这样在实际应用中,当用户提供一个提示时,模型就能够生成一个准确的分割掩码,即使这个提示在不同的情境下可能会引用到多个不同的对象。
任务是从一张充满人群的街景照片中,分割出特定穿红衣服的人:
SAM 和专门训练的分割器差异不大,效果不错,就是速度会比较慢,需要加载比较大的图像编码器,最好安装在云端。
我们在医学图像上研究了最近的分割一切模型(SAM),并报告了9个医学图像分割基准上的定量和定性零样本分割结果,包括各种成像方式,如OCT、MRI、CT、内窥镜、X射线等,以及不同的应用,包括皮肤病学,眼科和放射学。
我们的实验表明,虽然SAM在普通域的图像上表现出惊人的分割性能,但对于那些分布外的图像,例如医学图像,其零样本分割性能仍然有限。
此外,SAM在不同的未知医学领域中表现出不同的零样本分割性能。
例如,在视网膜OCT的布鲁赫膜层下分割时,其平均Dice得分为0.8704,而在分割视网膜色素上皮时,分割精度降至0.0688。
对于某些结构化目标,例如血管,SAM的零样本分割完全失败,而用少量数据对其进行简单微调可以显著提高分割质量。
我们的研究表明,视觉基础模型在解决医学成像中的特定任务方面具有多功能性,并且具有通过精细转向实现所需性能的巨大潜力,并最终解决访问大量不同医学数据集和医学领域复杂性的挑战。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。