FS【2】:CAT-Net

文章目录

  • 前言
  • Abstract
  • Introduction
  • Methods
    • Problem Definition
    • Network Overview
    • Mask Incorporated Feature Extraction
    • Cross Masked Attention Transformer
      • Self-Attention Module
      • Cross Masked Attention Module
      • Prototypical Segmentation Module
    • Iterative Refinement Framework
  • 总结


前言

本文来自港科陈浩老师组发表在 MICCAI23 上的一篇有关 few-shot 在医学图像上的应用。方法简洁高效,可供参考。插一句题外话,医学图像做 few-shot 主要基于腹部器官的 3 个数据集,期待后续可以见到一些在更多数据集上更通用更有效的方法。

原论文链接:Few Shot Medical Image Segmentation with Cross Attention Transformer


Abstract

本文提出了一种基于交叉掩码注意力 Transformer 的少样本医学图像分割新框架 CAT-Net

  • 通过挖掘 supportquery 图像之间的相关性,并限制模型仅关注有用的前景信息,来提高 supportquery 特征的表达能力
  • 同时,本文还进一步设计了一个迭代细化训练框架来优化查询 query 图像分割

Introduction

大多数 few-shot 分割方法都在学习如何学习(旨在学习元学习器),根据 support 图像及其相应的分割标签的知识预测 query 图像的分割,而这里的核心是:如何有效地将知识从 support 图像传递到 query 图像。现有的少样本分割方法主要集中在以下两个方面:

  1. 如何学习一个元学习器
  2. 如何更好地将知识从 support 图像传递到 query 图像

尽管基于原型的方法效果已经不错,但它们通常忽略了训练过程中 supportquery 特征之间的交互。

本文提出了一种名为 CAT-Net 的新型网络结构,其基于交叉注意力 Transformer:

  • 可以更好地捕捉 support 图像和 query 图像之间的相关性,促进 supportquery 特征之间的相互作用,同时减少无用像素信息,提高特征表达能力和分割性能
  • 此外,本文还提出了一个迭代训练框架,将先前的support分割结果反馈到注意力 Transformer 中,以有效增强并细化特征和分割结果。

Methods

Problem Definition

少样本分割(Few-shot segmentation,FSS)的目的是通过只有少量标注的样本来分割新类别。在FSS中,数据集被分为训练集 Dtrain 和测试集 Dtest,其中训练集包含基类别 Ctrain,测试集包含新类别 Ctest,且 CtrainCtest 没有交集。为了获得用于 FSS 的分割模型,采用了通常使用的 episode 训练方法。每个训练 / 测试 e p i s o d e ( S i , Q i ) \mathrm{episode(S_i,Q_i)} episode(Si,Qi) 实例化一个 N-way, K-shot 分割学习任务。具体而言:support 集 S i \mathrm{S_i} Si 包含 N 个类别的 K 个样本,而 query 集 Q i \mathrm{Q_i} Qi 包含同一类别的一个样本。FSS 模型通过 episode 训练以预测 query 图像的新类别。在模型推理测试时,模型直接在 Dtest 上进行评估,无需重新训练。

Network Overview

在这里插入图片描述

CAT-Net 主要由三部分组成:

  1. 带有mask的特征提取 MIFE 子网络,用于提取初始 querysupport 特征以及 query mask
  2. 交叉 mask 注意力 Transformer 模块 CMAT,其中 querysupport 特征相互促进,从而提高 query 预测的准确性
  3. 迭代细化框架,顺序应用 CMAT 模块以持续促进分割性能,整个框架以端到端的方式进行训练

Mask Incorporated Feature Extraction

MIFE 子网络接收查询和支持图像作为输入,生成它们各自的特征,同时集成支持掩膜。然后,使用一个简单的分类器来预测查询图像的分割结果:

  • 具体地,首先使用一个特征提取器网络(即 ResNet-50)将查询和支持图像对 I q I^q Iq I s I^s Is 映射到特征空间中,分别产生查询图像的多层特征图 F q F^q Fq 和支持图像的特征图 F s F^s Fs
  • 接下来,将支持掩膜与 F s F^s Fs 进行池化,然后将其扩展并与 F q F^q Fq F s F^s Fs 进行连接
  • 此外,还将一个先验掩膜进一步与查询特征进行连接,通过像素级相似度图来增强查询和支持特征之间的相关性
  • 最后,使用一个简单的分类器来处理查询特征,得到查询掩膜

Cross Masked Attention Transformer

CMAT模块包括三个主要组成部分:自注意力模块、交叉掩码注意力模块,和原型分割模块

  • 自注意力模块用于提取查询 query 特征和支持 support 特征中的全局信息
  • 交叉掩码注意力模块用于在传递前景信息的同时消除冗余的背景信息
  • 原型分割模块用于生成查询图像的最终预测结果

Self-Attention Module

自注意力模块首先将查询特征 F 0 q F_0^q F0q 和支持特征 F 0 s F_0^s F0s 展平为 1D 序列,然后输入到两个相同的自注意力模块中。每个自注意力模块由一个多头注意力层(MHA)和一个多层感知器层(MLP)组成。给定一个输入序列 S S SMHA 层首先使用不同的权重将序列投影为三个序列 Q Q Q K K K V V V。然后计算注意力矩阵 A A A,公式为:

在这里插入图片描述

其中, d d d 是输入序列的维度。注意力矩阵通过 softmax 函数归一化,并乘以值序列 V V V 以获得输出序列 O O OMLP层是一个简单的 1 × 1 1 \times 1 1×1 卷积层,将输出序列 O O O 映射到与输入序列 S S S 相同的维度。最终,将输出序列 O O O 添加到输入序列 S S S 中,并使用层归一化(LN)对其进行规范化,以获得最终的输出序列 X X X。自注意力对齐编码器的输出特征序列分别表示为 X q X^q Xq X s X^s Xs,分别对应于查询和支持特征

Cross Masked Attention Module

用于将查询特征和支持特征按照它们的前景信息结合起来

具体来说,给定查询特征 X q X^q Xq 和来自自注意力模块的支持特征 X s X^s Xs,首先使用不同的权重将输入序列投影到三个序列 K K K Q Q Q V V V 中,从而得到 K q K^q Kq Q q Q^q Qq V q V^q Vq K s K^s Ks Q s Q^s Qs V s V^s Vs。以查询特征为例,交叉注意力矩阵通过下面的公式计算得到:

在这里插入图片描述

其中, d d d 表示查询特征的维度。这里使用的是点积注意力的形式,通过 K q K^q Kq Q s Q^s Qs 的点积计算查询和支持之间的相关性。通过 d \sqrt{d} d 来缩放点积,防止在较高维度时点积的大小对注意力分布的影响过大

Prototypical Segmentation Module

通过 MAP 建立每个类别的原型 p c p_c pc,用于表示该类别的特征分布:
在这里插入图片描述

  • K K K 是支持集中图像的数量
  • m ( k , x , y , c ) s m_{(k,x,y,c)}^s m(k,x,y,c)s 是一个二进制掩模,表示位置 ( x , y ) (x,y) (x,y) 在支持特征 k k k 中是否属于类别 c c c
  • F 1 s F_1^s F1s 是支持特征

对于每个类别 c c c,该原型是在所有支持图像中该类别对应位置的特征平均值,这样可以得到每个类别的原型 p c p_c pc

接着使用非参数度量学习方法进行分割。原型网络计算查询特征向量与原型 P = P c ∣ c ∈ C P=P_c|c \in C P=PccC 之间的距离。对所有类别应用 softmax 函数,生成查询分割结果:

在这里插入图片描述

  • c o s ( ⋅ ) cos(·) cos() 表示余弦距离
  • α \alpha α 是一个缩放因子,有助于在训练中反向传播梯度,本文中设置为 20

Iterative Refinement Framework

该模块的设计目的是优化查询和支持特征以及查询分割掩模。因此可通过迭代优化的思路进行精细化分割,第 i i i 次迭代后的结果由以下公式给出:

在这里插入图片描述

每个步骤的细分可表示如下:

在这里插入图片描述

其中 C M A ( ⋅ ) CMA(·) CMA() 表示自注意力和交叉掩码注意力模块, P r o t o ( ⋅ ) Proto(·) Proto() 代表原型分割模块,该公式表示通过多次迭代应用 CMA 和 Proto 模块,来获得增强的特征和优化的分割结果


总结

本文提出了一种用于 few-shot 医学图像分割的交叉注意力 Transformer 网络 CAT-Net。通过交叉掩码注意力模块实现了查询和支持特征之间的交互,增强了特征表达能力。此外,所提出的 CMAT 模块可以通过迭代优化的方式以持续提高分割性能,实验结果表明了每个模块的有效性以及模型相对于 SOTA 方法的卓越性能。其中论文中的各个组件属于即插即用模块,可很好的嵌入到 few-shot 任务中,以提高少样本分割的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/664542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity | Spine动画记录

https://blog.csdn.net/linshuhe1/article/details/79792432 https://blog.csdn.net/winds_tide/article/details/128925407 1.需要的三个文件 通常制作好的 Spine 动画导出时会有三个文件: .png 、.json 和 .atlas: skeleton-name.json 或 skeleton-…

压力测试工具-Jmeter使用总结

目录 一.前言 二.线程组 三.线程组的组件 四.线程组-HTTP请求 1、JSON提取器 2、XPATH提取器 3、正则表达式提取器 五.线程组-断言 1、响应断言 2、JSON断言 六.创建测试 1.创建线程组 2.配置元件 3.构造HTTP请求 4.添加HTTP请求头 5.添加断言 6.添加查看结果树…

Mac电脑连接linux远程桌面

起因 家庭中的内网下有一台ubuntu虚拟机,只能通过ssh终端操作或者通过实体机进行操作实在有些不方便。所以便想着通过linux远程桌面的方式进行连接,由于家庭内网,延迟还是非常低的。 步骤 首先在ubuntu虚拟机上安装xrdp(可能已…

Vue3下载WEBAPI导出的Excel文件

webApi查询数据保存为Excel /// <summary>/// 获取LMI3D相机涂胶测量数据/// </summary>/// <returns></returns>[HttpPost(Name "GetLMI3DGlueDataToExcel")]public async Task<IActionResult> GetLMI3DGlueDataToExcel(QueryGlueM…

基于SSM的健身房会员管理系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的健身房会员管理系统(有报告)。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringMvc Mybatis J…

国货之光--数据库设计开源工具-[PDManer 元数建模 - v4]

[PDManer 元数建模 - v4]&#xff0c;历时五年&#xff0c;持续升级&#xff0c;工匠精神&#xff0c;做一款简单好用的数据库建模平台。 元数建模平台&#xff0c;使用 ReactElectronJava 技术体系构建。 [PDMan-v2] --> [CHINER-v3] --> [PDManer-v4]&#xff0c;连续五…

车载测试Vector工具CANoe——常见问题汇总(上)

车载测试Vector工具CANoe——常见问题汇总(上) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一…

Javaweb之SpringBootWeb案例之yml配置文件的详细解析

4.2 yml配置文件 前面我们一直使用springboot项目创建完毕后自带的application.properties进行属性的配置&#xff0c;那其实呢&#xff0c;在springboot项目当中是支持多种配置方式的&#xff0c;除了支持properties配置文件以外&#xff0c;还支持另外一种类型的配置文件&am…

【数据开发】pyspark入门与RDD编程

【数据开发】pyspark入门与RDD编程 文章目录 1、pyspark介绍2、RDD与基础概念3、RDD编程3.1 Transformation/Action3.2 数据开发流程与环节 1、pyspark介绍 pyspark的用途 机器学习专有的数据分析。数据科学使用Python和支持性库的大数据。 spark与pyspark的关系 spark是一…

简单实践 java spring boot 自动配置模拟

1.概要 1.1 需求&#xff0c;自己写一个redis-spring-boot-starter模拟自动配置 自动配置就是在引入*-starter坐标后&#xff0c;可以已经spring框架的规则实现一些Bean的自动注入&#xff0c;并设置一些参数的默认值&#xff0c;且也可以在引入的工程中修改这些配置的值。这…

面试150 二进制求和 位运算

Problem: 67. 二进制求和 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 参考 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code class Solution {public String addBinary(String a, String b){StringBuilder ans new Stri…

C语言:内存函数(memcpy memmove memset memcmp使用)

和黛玉学编程呀------------- 后续更新的节奏就快啦 memcpy使用和模拟实现 使用 void * memcpy ( void * destination, const void * source, size_t num ) 1.函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 2.这个函数在遇到 \0 的时候…

常用抓包软件集合(Fiddler、Charles)

1. Fiddler 介绍&#xff1a;Fiddler是一个免费的HTTP和HTTPS调试工具&#xff0c;支持Windows平台。它可以捕获HTTP和HTTPS流量&#xff0c;并提供了丰富的调试和分析功能。优点&#xff1a;易于安装、易于使用、支持多种扩展、可以提高开发效率。缺点&#xff1a;只支持Wind…

龙芯3A6000_统信UOS_麒麟KYLINOS上创建密钥对加解密文件

原文链接&#xff1a;龙芯3A6000|统信UOS/麒麟KYLINOS上创建密钥对加解密文件 大家好&#xff01;在当今数字化时代&#xff0c;数据安全变得越来越重要。为了帮助大家更好地保护自己的数据&#xff0c;今天我为大家带来一篇关于在统信UOS和麒麟KYLINOS操作系统上创建和使用密钥…

【日常聊聊】开源软件影响力

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 方向一&#xff1a;开源软件如何推动技术创新 方向二&#xff1a;开源软件的商业模式 方向三&#xff1a;开源软件的安全风险 方…

为期 90 天的免费数据科学认证(KNIME)

从 2 月 1 日开始&#xff0c;KNIME 官方将免费提供 KNIME 认证 90 天。 无论您是刚刚迈入数据科学领域、已经掌握了一些技术&#xff0c;还是正在构建预测模型&#xff0c;都可以参加为期 90 天的 KNIME 认证挑战赛&#xff0c;完成尽可能多的认证并获得数据科学技能免费认证。…

C#验证字符串是否纯字母:用正则表达式 vs 用Char.IsLetter方法加遍历

目录 一、使用的方法 1.使用正则表达式 2.使用Char.IsLetter方法 二、实例 1. 源码 2.生成效果 一、使用的方法 1.使用正则表达式 使用正则表达式可以验证用户输入的字符串是否为字母。匹配的正则表达式可以是&#xff1a;^[A-Za-z]$、^[A-Za-z]{1,}$、^[A-Za-z]*$。 …

【C语言】数组的应用:扫雷游戏(包含扩展和标记功能)附完整源代码

这个代码还是比较长的&#xff0c;为了增加可读性&#xff0c;我们还是把他的功能分装到了test.c&#xff0c;game.c&#xff0c;game.h里面。 扫雷游戏的规则相信大家来阅读本文之前已经知晓了&#xff0c;如果点到雷就输了&#xff0c;如果不是雷&#xff0c;点到的格子会显…

Pytorch-统计学方法、分布函数、随机抽样、线性代数运算、矩阵分解

Tensor中统计学相关的函数 torch.mean() #返回平均值 torch.sum() #返回总和 torch.prod() #计算所有元素的积 torch.max() # 返回最大值 torch.min() # 返回最小值 torch.argmax() #返回最大值排序的索引值 torch.argmin() #返回最小值排序的索引值 torch.std() #返回标准差 …

BEV感知算法学习

BEV感知算法学习 3D目标检测系列 Mono3D(Monocular 3D Object Detection for Autonomous Driving) 流程&#xff1a; 通过在地平面上假设先验&#xff0c;在3D空间中对具有典型物理尺寸的候选边界框进行采样&#xff1b;然后我们将这些方框投影到图像平面上&#xff0c;从而避…