SAM(2023)-分割万物

news/2025/1/9 3:34:23/

文章目录

  • 摘要
  • 算法
  • 数据引擎
  • 实验
    • 7.1 零样本单点生成mask
    • 7.2 零样本边缘检测
    • 7.3. 零样本目标Proposals
    • 7.4. 零样本实例分割
    • 7.5. 零样本文本生成Mask
    • 7.6. 消融实验
  • 讨论
    • 限制:
    • 结论:

论文: 《Segment Anything》
github: https://github.com/facebookresearch/segment-anything

摘要

作者构建到目前为止最大分割数据集,包括1billion mask及11M image,该模型训练过程是可提示的,所有可以进行zero-shot任务,甚至超越之前全监督结果。

算法

在这里插入图片描述

SAM结构如图4,包括:图像编码器、灵活的prompt编码器、mask解码器
Image encoder:
使用MAE预训练的ViT

Prompt encoder:
prompt分为两种:sparse (points, boxes, text) and dense (masks)。使用位置编码与可学习embedding相加表征points及boxes,使用clip中文本编码器编码text;对于稠密prompt(masks),使用卷积embedding并与image embedding逐像素相加。

Mask decoder:
映射image embedding、prompt embedding、output token至mask。Transformer decoder跟随一个动态mask预测头,decoder block使用prompt self-attention及cross-attention(prompt2img、img2prompt)更新所有embedding。两个block结束后上采样image embedding,通过MLP映射output token至动态线性分类器,计算每个像素前景概率。

Resolving ambiguity:
仅有一个输出,对于模棱两可prompt,模型将平均多个有效mask。为解决此问题,对于一个prompt,作者进行预测多个输出,如图3.分为三个层级:whole、part、subpart。训练过程中仅反向传播最小loss。为了对mask排序,模型对每个mask预测置信度得分(比如估计IoU)
在这里插入图片描述

Efficiency:
给出处理过的image embedding,在web浏览器prompt encoder及mask encoder运行在50ms内,达到实时交互。

Losses and training:
作者使用focal loss与dice loss的线性结合监督预测mask。作者使用混合prompt训练提示性分割任务,每个mask中随机采样11轮prompt来模拟交互,使 SAM能够无缝集成到数据引擎中。

数据引擎

数据引擎有三个阶段:
1、模型辅助的人工标注;
2、自动化预测mask及模型辅助标注;
3、模型生成mask,无需人工;

Assisted-manual stage
借助基于SAM的交互分割工具,人工点击前景或背景目标点进行标注mask。仅标注能够命名及描述的目标,无需收集这些文本信息,按照重要性进行顺序标定目标。
该阶段的SAM使用开源分割数据集训练,当收集足够多数据后,使用新标注数据训练。锁着数据的收集,image encoder逐渐扩大,作者训练了6次模型,每个mask标注耗时从34秒下降到14秒**。该过程收集了4.3M mask及120k image**。

Semi-automatic stage
为了增加模型分割万物的能力,让标注者关注不太重要目标,即模型未预测mask。该阶段收集5.9M mask及180k image

Fully automatic stage
该阶段标注可完全自动化,归因于模型的两个强化点:收集足够多的mask改进模型;关注模棱两可目标的模型,使用32*32个网格点,每个点预测一系列有效目标相关的mask。

实验

7.1 零样本单点生成mask

在这里插入图片描述

真值mask在所有数据集上并未全部标注,因此原始评估结果不可信,作者补充标准mIoU评估方案,其中标注者对mask质量进行打分。
在23个数据集上,使用常规评估方案mIoU,SAM与RITM结果对比如图9a,SAM在16个数据集超越RITM,如果选用最相关的3个mask,而不是置信度最高的mask,性能够将全部超越RITM,如图9a中圆点所示,说明模棱两可目标对评估方案影响。
图9b展示标注人员对mask人工评分结果
图9c展示选取目标中心点,SimpleClick、FocalClick、RITM及SAM结果。
图9d展示随机选取点生成mask效果。

7.2 零样本边缘检测

使用16*16个规则网格前景点提示SAM生成768个预测mask,通过NMS除去多余mask,利用Soble算子计算边缘map。可视化结果如图10,
在这里插入图片描述
在BSDS500数据集实验结果如表3。
在这里插入图片描述

7.3. 零样本目标Proposals

以SAM输出mask作为proposal,最大1000个进行评估,实验结果如表4,ViTDet-H整体效果最佳,但是其在LVIS数据集训练过
在这里插入图片描述

7.4. 零样本实例分割

通过目标检测器(ViTDet)生成预测框,以此提示SAM输出mask。实验结果如表5,SAM比ViTDet效果略差,但SAM未在该数据集训练
在这里插入图片描述

7.5. 零样本文本生成Mask

SAM训练过程作者进行更改使其关注文本。具体地:对于100*100以上mask,使用CLIP提取image embedding,训练过程中使其提示SAM,因此推理时可使用CLIP文本embedding进行提示SAM生成mask。【个人认为不合理,image embedding与text embedding之间存在gap,因此效果不佳】
实验结果如图12,对于一些prompt难以分割正确目标,需要增加point辅助。
在这里插入图片描述

7.6. 消融实验

在这里插入图片描述
图13左展示仅使用自动标注数据比三阶段逐步训练效果低0.5,但训练复杂度降低
图13中展示数据规模影响,使用SA-1B数据集10%数据训练与全量训练效果相当;
图13右展示图像编码器使用VIT-H改善明显。

讨论

基础模型新范式:在大规模数据集训练,自适应小规模数据集下游任务;

限制:

  1. SAM泛化性不足;
  2. 由于复杂image encoder原因SAM无法做到实时;
  3. 文本引导mask仅进行初步探索,不够鲁棒;
  4. 目前还不清楚如何设计简单提示实现语义及全景分割;

结论:

SAM是语义分割基础模型时代的一次尝试;
本文贡献主要为:

  1. 一个新任务:提示性分割;
  2. 模型:SAM
  3. 数据集:SA-1B

http://www.ppmy.cn/news/55476.html

相关文章

辨析 可交付成果验收与项目验收

可交付成果验收与项目验收 辨析 可交付成果验收 1、过程:确认范围 2、做什么:正式验收已完成的项目可交付成果 3、怎么做: PM发起并组织,由客户或发起人审查从控制质量过程输出的核实的可交付成果,确认这些可交付成果…

IPsec中IKE与ISAKMP过程分析(主模式-消息5和消息6)

IPsec中IKE与ISAKMP过程分析(主模式-消息1)_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析(主模式-消息2)_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析(主模式-消息3)_搞搞搞高傲的博客…

Small Tip: 怎么去Schedule一个Analysis for Office的workbook

workbook的query不能是本地的,也就是说不能是在包$Tmp里面的。这种的没办法在BO里面用SSO。也就没办法Schedule。 前提条件有: 1.BO和BW系统的SSO配置得OK。 如果没有SSO,那么每次打开workbook就会有一个要登录BW的弹窗,这样是…

数据标注,优化模型辅助标注、Label 库管理|ModelWhale 版本更新

春夏之交,草木际天。ModelWhale 新一轮的版本更新,期待为你带来更好的使用体验。 本次更新中,ModelWhale 主要进行了以下功能迭代: • 优化 模型辅助数据标注(专业版✓ 团队版✓ ) • 新增 数据标注 Labe…

数据恢复软件EasyRecovery16下载安装步骤教程

EasyRecovery16是一款专业好用的数据恢复软件,软件提供了向导式的操作向导,可以有效地恢复电脑或者移动存储设备中丢失的各种文件,包括删除的文件、格式化丢失的文件和清空回收站的数据!千呼万唤始出来,大家期盼许久的EasyRecover…

【设计模式】责任链模式的设计与示例

前言 责任链模式是一种行为设计模式,执行上它允许请求沿着一条处理链路依次向下传递,每个处理节点都能对当前状态的请求进行处理,满足一定条件后传递给下一个处理节点,亦或者直接结束这一次处理流程。 在现实生产环境中&#xf…

【JUC】ThreadLocal

【JUC】ThreadLocal 文章目录 【JUC】ThreadLocal1. 概述2. Thread、ThreadLocal、ThreadLocalMap 关系2.1 Thread 和 ThreadLocal2.2 ThreadLocal 和 ThreadLocalMap2.3 三者之间的关系 1. 概述 ThreadLocal 提供线程局部变量。这些变量与正常的变量不同,因为每一…

跨子网通信【路由通信。配置路由】

路由通信条件是:服务器多网卡 or 单网卡多IP 查看路由表 route -n设置一网卡多IP 进行网络配置 进入setup中,选择网络配置 setup选择设备配置 去除DHCP动态协议 进来后,可能会发现无法对静态IP和子网掩码进行编辑,是因为你开启…