当前位置: 首页 > news >正文

小样本语义分割(MSDNet网络详解)

1. MSDNet: Multi-Scale Decoder for Few-Shot Semantic Segmentation via Transformer-Guided Prototyping

语义分割

语义分割通常需要大量标注样本来训练模型,以便模型能学习到每个类别的特征。例如,如果要进行城市街景分割,可能需要几千到几万张带有详细标注的图像来训练模型。

假设你要分割城市街景中的汽车、行人和道路。你收集了成千上万张街景图像,每张都有详细的分割掩码。模型通过这些大量数据学习每个类别的特征,最终能够在新的街景图像中精确地分割这些类别。

小样本语义分割

仅需要少量样本(例如1到5张)来学习新类别的特征。模型需要在有限的数据上进行学习,以便在新的、未见过的图像中进行分割。

假如现在你想分割一种特定型号的汽车,但只有1-2张这种汽车的图像和对应的分割掩码。你将这些图像作为支持集,并用它们来训练小样本语义分割模型。接着,你用模型对其他未标注的街景图像进行推断,期望模型能够识别并分割出这种特定型号的汽车,尽管它在训练时没有见过更多样本。

1.1 模型概览

在这里插入图片描述

  1. Support Image 和 Query Image 分别通过卷积网络(Conv3_X、Conv4_X、Conv5_X)提取特征。
  2. Support Image 提取到的特征与 Support Mask 结合生成一个类别原型(Support Prototype),类别原型可以看作是通过支持图片和其对应的标注(如mask)提取出的特征向量,用来概括该类别的视觉特征,用于表示该类别的特征。
  3. Query Image的特征通过空间Transformer解码器(Spatial Transformer Decoder),结合Support Prototype进行匹配。通过Transformer机制,查询图像的特征被关联到支持原型,从而找到相应的目标区域。其中空间Transformer解码器通过注意力机制,将支持图像中的类别原型(support prototype)与查询图像的特征进行动态匹配。支持原型作为Query,而查询图像的特征作为Key和Value,通过Transformer的自注意力机制,找到与支持原型相关的查询图像区域。这种方式能够帮助网络有效地区分相似类别,提高分割的精度。
  4. 最终,通过将多尺度解码器的输出与空间Transformer解码器输出进行特征融合,输出预测的 Query Mask,并与真实的Query Mask计算**损失(Loss)**进行训练。

1.2 摘要

小样本语义分割解决了在查询图像中分割对象的挑战,只有少量的注释示例。然而,许多现有技术的方法要么必须丢弃复杂的局部语义特征,要么遭受高计算复杂度的困扰。

为了克服上述缺陷,本文提出一种新的基于Transformer架构的小样本语义分割框架。我们的方法引入了空间Transformer解码器和上下文掩码生成模块,以提高支持图像和查询图像之间的关系理解。此外,我们还引入了一个多尺度解码器,通过以分层方式合并来自不同分辨率的特征来细化分割掩模。此外,我们的方法集成了来自中间编码器阶段的全局特性以提高上下文理解,同时保持轻量级结构以降低复杂性。性能和效率之间的这种平衡使我们的方法能够在基准数据集(如PASCAL−5i和COCO− 20 i)上在1次和5次激发设置下获得最先进的结果。值得注意的是,我们的模型仅包含150万个参数,在克服现有方法的局限性的同时,也展示了具有竞争力的性能。

1.3 CMGM模块

在这里插入图片描述
余弦相似性是一种衡量相似程度的常用方法,它的值在-1到1之间,值越接近1表示相似度越高,在小样本语义分割任务中,余弦相似性用于计算查询特征和支持特征之间的相似性,以帮助生成上下文掩码。

通过计算逐像素的余弦相似性,CMGM可以识别查询图像中与支持图像相似的区域,从而提高对目标对象的捕捉能力。

1.4 Support Prototype

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.5 多尺度解码器

多尺度解码器的第一层输入是支持特征(支持原型)、查询特征、上下问掩码。

在这里插入图片描述
思考为什么要让 Support prototype与CMGM生成的上下文掩码和query图像的中级特征进行拼接输入,而不是直接让CMGM生成的上下文掩码和query图像的中级特征进行拼接输入?

在这个网络结构图中,支持原型 (Support prototype) 被用于与上下文掩码生成模块 (CMGM) 输出的上下文掩码和 query 图像的中级特征进行拼接,这样设计的目的是为了更好地捕捉支持图像和 query 图像之间的语义关系。

具体而言,支持原型是从支持图像生成的语义特征表示,经过 MAP 生成的支持原型作为一种全局语义信息,提供了关于目标类别的独特特征。这一信息包含了支持图像中物体的类别信息,并且通过与 query 图像的特征结合,可以更好地帮助网络识别 query 图像中相应的目标物体。

如果仅仅拼接 CMGM 生成的上下文掩码和 query 图像的中级特征输入,网络可能会缺乏足够的类别语义信息,导致对于目标物体的区分能力较弱。而加入支持原型后,网络可以更加明确地了解目标物体的类别特征,从而在 query 图像中更准确地定位和分割相应物体。

从网络结构图上看,这样的设计思路体现了一个跨图像语义共享的机制,通过支持原型的引入,网络能够更好地将支持图像中的类别特征与 query 图像中的对应物体建立关联,从而提高分割的精度和鲁棒性。

为什么此处要用支持特征进行残差连接,输入明明是查询特征、上下文掩码、support prototype?

在该网络架构中使用支持特征进行残差连接的原因主要是为了实现语义对齐,以及确保模型在解码过程中持续参考支持特征中的类别信息。这种做法有助于增强查询特征的语义表达能力,提高分割的精度。

  1. 实现更好的语义对齐

在少样本分割任务中,支持图像提供的类别信息是模型分割查询图像的唯一参考依据。通过残差连接将支持特征融入到解码过程中,能够帮助模型在分割过程中始终对齐支持图像的语义特征。

残差连接可以确保支持特征在不同尺度上不断融入到解码过程,使得查询图像的特征可以持续参考支持图像的类别信息。
这种对齐的方式可以减少模型误识别查询图像中的背景或其他无关区域,确保分割结果更加精准。

  1. 提供丰富的类别信息,提高模型的泛化能力

少样本分割任务中的样本量有限,模型的泛化能力需要依赖于有效的类别信息传递。支持特征在网络的多个尺度上被多次融入,实际上相当于在各个尺度上不断强化目标类别的特征,这对提高模型的泛化能力至关重要:

多尺度解码器每一层都使用残差连接融合支持特征,模型在上采样过程中可以不断接收到丰富的类别信息。
即使在少样本的场景下,通过多次引入支持特征,模型也能更好地将支持图像中的类别特征推广到查询图像上,从而提升分割效果。

多尺度解码器阶段

在这里插入图片描述
多尺度解码器的作用

主要目的在于融合多分辨率特征,从而更好地捕捉query image 目标对象的细节和全局上下文信息。

在少样本分割任务中,分割的目标对象可能具有复杂的形状和边界,而这些细节在特征的不同尺度中表现出不同的语义信息。继续在解码器中引入支持图像的中级特征可以提供更丰富的细节和局部信息,确保模型在高分辨率的上采样过程中不会丢失关键的空间信息。 这些细节在多尺度分割中非常重要,有助于模型更准确地捕捉到目标对象的精细边界。

解码器中的每个阶段通过不断拼接支持图像的中级特征,有助于在解码过程中保持查询和支持特征之间的语义对齐。特征对齐的目的是在查询图像中识别出与支持图像中的目标类别相似的区域。

在少样本分割中,由于训练数据稀少,模型可能会因为缺乏多样的样本而难以泛化到新数据。通过在每个阶段重复引入支持图像的中级特征,模型可以在解码过程中反复“参考”支持图像的特征,从而在推理时更好地泛化到未见过的查询图像。这种特征重复引入的机制类似于一种稳健的“记忆”过程,使模型在解码过程中不断强化对目标类别的特征理解。

1.6 Spatial Transformer Decoder (STD)

在这里插入图片描述STD模块的核心思想是:利用支持图像中的目标对象特征来引导查询图像的分割。在少样本分割任务中,我们通常只有少量样本,因此模型需要依靠支持图像中的信息来识别和分割查询图像中的相似对象。

STD通过注意力机制让模型能够关注查询图像中与支持图像相似的区域。

STD模块的核心原理可以归纳为以下几点:

  1. 利用支持图像特征指导查询图像分割:STD模块利用支持图像中的特征(作为Query)来“寻找”查询图像中的目标对象区域,从而实现目标引导的分割。
  2. 多头交叉注意力机制:STD通过多头交叉注意力机制计算支持图像和查询图像之间的相似性,生成动态卷积核,专注于查询图像中的相关区域。
  3. 位置编码增强空间理解:位置编码增强了支持特征的空间信息,使得模型在分割中可以精确地定位目标对象的形状和位置。
  4. 与多尺度解码器融合:STD输出的分割掩码嵌入与多尺度解码器输出的特征图点积融合,提升了分割的精度和细节表现。

在这里插入图片描述


http://www.mrgr.cn/news/59757.html

相关文章:

  • 多模态大语言模型(MLLM)-Deepseek Janus
  • 网络编程_day3
  • 基于用户体验的在线相册管理平台创新设计与实现
  • docker配置普通用户访问
  • [机器学习]集成学习
  • 【三十八】【QT开发应用】vlcplayer视频播放器(一)实现视频播放,视频暂停,视频停止,进度条调节,音量调节,时长显示功能
  • 【iOS】使用AFNetworking进行网络请求
  • XJ07、消费金融|信贷还款的基本种类及其系统交互
  • 【MySQL】LeeCode高频SQL50题基础版刷题记录(持续更新)
  • 实验干货|电流型霍尔传感器采样设计03-信号调理
  • BGP 12 条选路原则笔记
  • mysql 视图中用变量实现 自增序号
  • Nature 正刊丨利福昔明预防引起对最后一种抗生素达托霉素的耐药性
  • 如何创建一个Vue项目【手把手教会你】
  • 猫头虎 分享:MySQL 中 TEXT 与 LONGTEXT 数据类型详解与使用场景分析
  • C++标准库之std::begin、std::end、std::pre和std::next
  • Maven 项目构建打包,如何引入本地 Jar 包?
  • 【Rust练习】18.特征 Trait
  • 人工智能与深度学习入门
  • 【K8S系列】Kubernetes 中 Service IP 地址和端口不匹配问题及解决方案【已解决】
  • Maven:详解 clean 和 install 命令的使用
  • promise+async/await+任务队列
  • 同步电机不同电流参考方向下的功率计算
  • Python毕业设计选题:基于Python的个性化旅游路线推荐系统-flask+vue
  • 位运算技巧
  • 玩转springboot之springboot属性绑定原理