SINE:上下文示例驱动,打造真正的通用分割模型 | NeurIPS'24
来源:晓飞的算法工程笔记 公众号,转载请注明出处
论文: A Simple Image Segmentation Framework via In-Context Examples

创新点
- 探索了通用的分割模型,发现现有方法在上下文分割中面临任务模糊性的问题,因为并非所有的上下文示例都能准确传达任务信息。
- 提出了一个利用上下文示例的简单图像分割框架
SINE(Segmentation framework via IN-context Examples),利用了一个Transformer编码-解码结构,其中编码器提供高质量的图像表示,解码器则被设计为生成多个任务特定的输出掩码,以有效消除任务模糊性。 SINE引入了一个上下文交互模块,以补充上下文信息,并在目标图像与上下文示例之间产生关联,以及一个匹配Transformer,使用固定匹配和匈牙利算法消除不同任务之间的差异。- 完善了当前的上下文图像分割评估系统,实验结果表明,
SINE可以处理广泛的分割任务,包括少量样本的语义分割、少量样本的实例分割和视频目标分割。
内容概述
图像分割涉及在像素级别上定位和组织概念,比如语义分割、实例分割、全景分割、前景分割和交互分割。然而,现有的大多数分割方法都是针对特定任务量身定做的,无法应用于其他任务。

最近一些工作探索了通用分割模型,通过上下文学习解决多样且无限的分割任务。上下文分割模型需要理解上下文示例传达的任务和内容信息,并在目标图像上分割相关概念,但并不是所有的上下文示例都能准确传达任务信息。例如当提供一个特定个体的照片,是仅限于个体本身、涵盖所有人的实例分割,还是集中于语义分割?模糊的上下文示例可能使传统的上下文分割模型难以清晰地定义不同任务之间的边界,从而导致不期望的输出。
为了解决这个问题,论文提出了基于上下文示例的简单图像分割框架SINE(Segmentation framework via IN-context Examples)。受到SAM模型的启发,SINE预测针对不同复杂度任务定制的多个输出掩码。这些任务包括相同物体、实例到整体语义概念。SINE统一了现有的各种粒度的分割任务,旨在实现更广泛的任务泛化。
与SegGPT相比,SINE能够在可训练参数更少的情况下有效地解决上下文分割中的任务模糊性问题,而SegGPT仅输出语义分割结果。此外,论文进一步将少样本实例分割引入当前的评估系统,以便全面评估这些模型。
SINE

SINE是一个基于查询的分割模型,遵循DETR和Mask2Former的设计。使用相同对象(ID)查询 \(\textbf{q}_{id}\) 来识别和定位目标图像中与参考图像中具有相同对应关系的对象,使用可学习的实例查询 \(\textbf{q}_{ins} \in \mathbb{R}^{S \times C}\) 来识别和定位目标图像中与参考图像具有相同语义标签的对象。
SINE基于经典的Transformer结构,引入了一些针对上下文分割任务的有效设计,包括一个冻结的预训练图像编码器、一个上下文交互模块和一个轻量级匹配Transformer (M-Former) 解码器。
上下文交互

上下文交互的目的是补充上下文信息,并在参考图像特征和目标图像特征之间产生关联。
掩码池化
为每个掩码分配不同的ID标签,将参考掩码 \(\textbf{m}_r\) 转换为ID掩码 \(\textbf{m}_{id} \in \mathbb{R}^{N \times H \times W}\) ,通过将具有相同类别标签的掩码合并来得到语义掩码 \(\textbf{m}_{sem} \in \mathbb{R}^{M \times H \times W}\) ,其中 \(N\) 和 \(M\) 分别是ID掩码和语义掩码的数量。
然后,使用这些掩码对参考特征 \(\textbf{F}_r\) 进行池化,获得提ID标记 \(\textbf{t}_{id} \in \mathbb{R}^{N \times C}\) 和语义标记 \(\textbf{t}_{sem} \in \mathbb{R}^{M \times C}\) 。
上下文融合模块
上下文融合模块该模块是一个Transformer块,包括自注意力机制、交叉注意力机制和前馈网络,实现参考特征和目标特征之间的上下文关联:
\begin{split}
\left<\textbf{q}_{id}, \textbf{p}_{sem}, \textbf{F}_t^{'}\right> = InContextFusion\left(\textbf{t}_{id}, \textbf{t}_{sem}, \textbf{F}_{t} ;\theta \right),
\end{split}
\end{equation}
\]
这些标记 ( \(\textbf{t}_{id}\) 和 \(\textbf{t}_{sem}\) ) 和目标特征 ( \(\textbf{F}_{t}\) ) 通过这个共享模块进行融合,在交叉注意力中它们彼此作为键和值,从而可以获得增强后的目标特征 \(\textbf{F}_t^{'}\) 、ID查询 \(\textbf{q}_{id}\) 和语义原型 \(\textbf{p}_{sem}\) 。
匹配Transformer
为了有效地进行上下文分割并消除任务模糊性,M-Former实现了一个双路径的Transformer解码器,共享自注意力层。一路径用于与查询( \(\textbf{q}_{id}\) 和 \(\textbf{q}_{ins}\) )交互,提取与目标图像中的上下文示例相关的特征。第二路径用于增强语义原型 \(\textbf{p}_{sem}\) 以实现更准确的匹配。这两条路径共享自注意力层,以便将语义从 \(\textbf{p}_{sem}\) 分配给 \(\textbf{q}_{ins}\) 。
M-Former共有 N 个块,整体的过程如下:
\begin{split}
\left<\textbf{q}_{id}^l, \textbf{q}_{ins}^l, \textbf{p}_{sem}^l\right> = MFormer_l\left(\textbf{q}_{id}^{l-1}, \textbf{q}_{ins}^{l-1}, \textbf{p}_{sem}^{l-1} ; \theta^l, \textbf{F}_t^{'} \right),
\end{split}
\end{equation}
\]
对于实例分割,使用更新后的语义原型 \(\textbf{p}_{sem}\) 作为分类器,并让 \(\hat{\textbf{y}}_{ins}=\{\hat{y}_{ins}^i\}_{i=1}^S\) 表示 \(S\) 个实例预测的集合。使用匈牙利损失来学习SINE,通过计算预测 \(\hat{y}_{ins}^i\) 和GT \(y^j\) 之间的分配成本以解决匹配问题,即 \(-p_i(c^j)+\mathcal{L}_\text{mask}(\hat{m}_{ins}^i,m^j)\) ,其中 \((c^j, m^j)\) 是GT对象的类别和掩码, \(c^j\) 可能为 \(\varnothing\) 。 \(p_i(c^j)\) 是第 \(i\) 个实例查询对应类别 \(c^j\) 的概率, \(\hat{m}_{ins}^i\) 表示其预测的掩码。 \(\mathcal{L}_\text{mask}\) 是一种二元掩码损失和Dice损失:
\begin{split}
\mathcal{L}_{\text{Hungarian}}(\hat{\textbf{y}}_{ins}, \textbf{y}) = \sum\nolimits_{j=1}^S \left[-\log p_{\sigma(j)}(c^j)
+ \mathbb{1}_{c^j\neq\varnothing} \mathcal{L}_{\text{mask}}(\hat{m}^{\sigma(j)}_{ins},m^j) \right],
\end{split}
\end{equation}
\]
其中 \(\sigma(j)\) 表示二分匹配的结果索引。
为了赋予SINE预测同一对象的能力,使用图像中同一实例的不同裁剪视图作为参考-目标图像对。设 \(\hat{\textbf{y}}_{id}=\{\hat{y}_{id}^i\}_{i=1}^N\) 表示 \(N\) 个ID预测的集合。
由于参考ID和目标ID之间的关系是固定的且可以准确确定,可以在预测和GT之间执行固定匹配,损失可以写为:
\begin{split}
\mathcal{L}_{\text{ID}}(\hat{\textbf{y}}_{id}, \textbf{y}) = \sum\nolimits_{i=1}^N \left[-\log p_i(c^i)
+ \mathbb{1}_{c^i\neq\varnothing} \mathcal{L}_{\text{mask}}(\hat{m}^i_{id},m^i) \right],
\end{split}
\end{equation}
\]
其中 \((c^i, m^i)\) 是GT的类别和掩码, \(c^i \in \{1, \varnothing\}\) , \(c^i=1\) 表示一个对象同时出现在参考图像和目标图像中。总损失为 \(\mathcal{L}=\mathcal{L}_{\text{Hungarian}}+\mathcal{L}_{\text{ID}}\) 。
一旦训练完成,SINE的全部能力在推理过程中得以释放,能够解决上下文示例中的模糊性并为不同的分割任务输出预测。
主要实验


如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

SINE:上下文示例驱动,打造真正的通用分割模型 | NeurIPS'24的更多相关文章
- StarSpace是用于高效学习实体向量的通用神经模型
StarSpace是用于高效学习实体向量的通用神经模型,用于解决各种各样的问题: 学习单词,句子或文档级嵌入. 文本分类或任何其他标签任务. 信息检索:实体/文件或对象集合的排序,例如 排名网络文件. ...
- PGTM通用性能测试模型
PTGM通用性能测试模型 一. 测试前期准备阶段 目标: 1. 保证系统稳定性: 2. 建立合适的测试团队. 活动: 1. 系统基础功能验证 类似于BVT测试,确保被测系统已具备进行性 ...
- 基于reflectasm打造自己的通用bean工具
业务场景: 在很多的业务系统中,erp,crm系统中,有许多的对象信息都是拆开来的,例如一个商品,那可能他的商品名称,商品等主要信息放在一个表(衍生出来一个对象),他的附属信息(商品图片,规格,价格等 ...
- JZ2440 裸机驱动 第11章 通用异步收发器UART
本章目标: 了解UART原理: 掌握S3C2410/S3C2440中UART的使用 11.1 UART原理及UART内部使用方法 11.1.1 UART原理说明 UART用于传输串行数据: ...
- s3c2440液晶屏驱动 (内核自带) linux-4.1.24
自带有一部分驱动的配置信息,只要修改这部分就能支援 不同的液晶屏 - /arch/arm/mach-s3c24xx/mach-smdk2440.c 另一部分在 /drivers/video/fbdev ...
- DDD领域驱动设计实践篇之如何提取模型
需求说明: 省级用户可以登记国家指标 省级用户和市级用户可以登记指标分解 登记国家指标时,需要录入以下数据:指标批次.文号.面积,这里省略其他数据,下同 登记指标分解时,需要录入以下数据:指标批次.文 ...
- stable diffusion打造自己专属的LORA模型
通过Lora小模型可以控制很多特定场景的内容生成. 但是那些模型是别人训练好的,你肯定很好奇,我也想训练一个自己的专属模型(也叫炼丹-_-). 甚至可以训练一个专属家庭版的模型(family mode ...
- 学习笔记TF059:自然语言处理、智能聊天机器人
自然语言处理,语音处理.文本处理.语音识别(speech recognition),让计算机能够"听懂"人类语音,语音的文字信息"提取". 日本富国生命保险公司 ...
- IDDD 实现领域驱动设计-理解限界上下文
上一篇:<IDDD 实现领域驱动设计-理解领域和子域> <实现领域驱动设计>前两章内容,基本上读完了,和<领域驱动设计>不同的是,它把很多的概念都放在前面进行讲述了 ...
- Linux驱动学习 —— 在/sys下面创建目录示例
有时我们需要在/sys下面创建一些目录, 下面给出了一个示例. 在加载驱动模块后, 在/sys下面会创建一个名为sysfs_demo的目录,并在其中在创建几个文件和目录. [root@tiny4412 ...
随机推荐
- python实战-编写请求方法重试(用途:请求重试、也可用于其他场景)、日志、执行耗时、手机号与邮箱校验装饰器
更新日志 2023.2.9 增加重试装饰器 防止函数原信息被改变使用:@functools.wraps(func)装饰执行函数 # _*_ coding: UTF-8 _*_ "" ...
- 什么是前后端分离应用(Full-stack Separation),想当然就会理解错
前后端分离应用指的是将应用的前端部分(用户界面与交互逻辑)和后端部分(业务逻辑.数据处理.服务器响应)拆分成独立的模块,各自通过 API 进行通信.这种架构设计的目的是提高开发效率.增强可扩展性和灵活 ...
- OpenPSG:离AGI再进一步,首个开放环境关系预测框架 | ECCV'24
全景场景图生成(PSG)的目标是对对象进行分割并识别它们之间的关系,从而实现对图像的结构化理解.以往的方法主要集中于预测预定义的对象和关系类别,因此限制了它们在开放世界场景中的应用.随着大型多模态模型 ...
- AI五子棋_08 五子棋落子规则对应的价值
AI五子棋 第八步 恭喜你到达第八步! 利用前一步得到的棋型分析结果,考察每一个可能落子的位置,给每一个可能的位置打分,将棋子落在分数最高的位置上.根据经验,我们可以总结出下面的落子规则: 1. 致胜 ...
- Web渗透09_文件包含漏洞
1 文件包含漏洞描述 开发人员编写代码时独立性好是一个很重要的要求,这边一个数据库类,那边一个模型类.几百行的整体代码,在整合时两行行代码就可以包含进来使用.文件包含有助于独立的代码之间的配合!有时引 ...
- NDT论文翻译
The Normal Distributions Transform: A New Approach to Laser Scan Matching 正态分布变换:激光扫描匹配的新方法 摘要:匹配 2D ...
- Promise 简单实例一枚
<script> function t(){ return new Promise((resolve, reject)=>{ setTimeout(()=>{ resolve( ...
- mongodb插入数据不能在vue显示
问题描述:当我们在命令行插入数据时,在MongoVUE却显示不了数据,并且查询有插入数据的数据库,如下图所示 网上资料说,这是引擎的问题,mongoDB3.2版本之后默认开启的存储引擎是wiredRi ...
- Next.js 实战开发入门 1 开发环境部署 - 曲速引擎 Warp Drive
开发目标 我们将构建一个简化版本的财务仪表板,其内容包括:公共主页.登录页面.受身份验证保护的仪表板页面.用户可以添加.编辑和删除发票 开发环境配置 开发客户端 Windows 10 (不限系统,兼容 ...
- python爬虫 正则表达式详解
正则表达式 最近学校布置了一个关于python爬虫的期末作业,而我之前对python爬虫一直都比较感兴趣但是没有系统的学过,就想借此机会开个新坑来系统学习和应用python爬虫,那我们开始吧 正则表达 ...