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.添加查看结果树…

算法练习03——滑动窗口

目录 3. 无重复字符的最长子串*438. 找到字符串中所有字母异位词*30. 串联所有单词的子串***(hard) 3. 无重复字符的最长子串* https://leetcode.cn/problems/longest-substring-without-repeating-characters/ class Solution {public int lengthOfLongestSubstring(String …

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…

利用nginx替换Docker内部程序_静态资源_实现自定义背景--nginx工作笔记008

因为有个程序是打包的Docker镜像,那么问题就来了,我想修改登录页面上的一个图片,如果 你不想再去修改程序了,那么怎么办? 你可以这样,让nginx请求某个图片的时候,自动给他重定向,访问其他的图片资源,很好用: 来看看怎么做吧: server {listen 9003;server_name localhost;loc…

基于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;连续五…

前端面试题-vue-MVC和MVVM-VUE常见指令

前端面试题-vue-MVC和MVVM MVC和MVVMVUE常见指令v-if和v-for 为什么不建议一起使用Vue双向数据绑定原理&#xff08;响应式原理&#xff09;&#xff08;v-model&#xff09;v-if和v-show的区别 写在最先&#xff0c;不知不觉更新面试题系列也一个月过去了&#xff0c;在这个过…

突破编程_C++_面试(基础知识(3))

面试题5&#xff1a;函数调用的过程 C 中函数的调用包含参数入栈、函数跳转、保护现场、回复现场等过程&#xff0c;重点过程如下&#xff1a; &#xff08;1&#xff09;将函数的参数压入栈中&#xff0c;从右至左压入。 &#xff08;2&#xff09;调用函数时&#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;且也可以在引入的工程中修改这些配置的值。这…

金蝶云星空本地构建部署包时报错

文章目录 金蝶云星空本地构建部署包时报错报错内容原因分析 金蝶云星空本地构建部署包时报错 报错内容 描述 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2769,5): error MSB3086: 任务未能使用 SdkToolsPath“”或注册表项“HKEY_LOCAL_MACHIN…

通过低代码开发实现数据可视化应用的简易指南

随着数据分析和决策变得越来越重要&#xff0c;数据可视化应用的需求也不断增长。低代码开发平台为开发人员提供了一种快速构建数据可视化应用的途径&#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…

MS Access 函数参考手册(MS Access 日期函数、MS Access 其他函数)

目录 MS Access 日期函数 MS Access Date() 函数 MS Access DateAdd() 函数 MS Access DateDiff() 函数 MS Access DatePart() 函数 MS Access DateSerial() 函数 MS Access DateValue() 函数 MS Access Day() 函数 MS Access Format() 函数 MS Access Hour() 函数 …

pyspark学习-spark.sql.functions 聚合函数

https://spark.apache.org/docs/3.4.1/api/python/reference/pyspark.sql/functions.html 1. approx_count_distinct和count_distinct #approx_count_distinct(col:ColumnOrName,rsd:Optionnal[float]None) """ 作用:返回列col的近似不同计数&#xff0c;返回…

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

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