TransMIL:基于Transformer的多实例学习
MIL是弱监督分类问题的有力工具。然而,目前的MIL方法通常基于iid假设,忽略了不同实例之间的相关性。为了解决这个问题,作者提出了一个新的框架,称为相关性MIL,并提供了收敛性的证明。基于此框架,还设计了一个基于Transformer的MIL (TransMIL)。TransMIL可以有效地处理不平衡/平衡和二元/多分类,具有良好的可视化和可解释性。在CAMELYON16数据集上,二元肿瘤分类的测试AUC高达93.09%。在TCGANSCLC和TCGA-RCC数据集上,癌症亚型分类的AUC分别高达96.03%和98.82%。
来自:TransMIL: Transformer based Correlated Multiple Instance Learning for Whole Slide Image Classification
目录
- 背景概述
- 方法
- 如何应用Transformer到相关性MIL
背景概述
WSI将活检切片上的组织转换成完全保留原始组织结构的十亿像素图像。然而,WSI中基于深度学习的活检诊断由于像素空间庞大导致缺乏像素级标注。为了解决这个问题,通常采用MIL将诊断分析作为一个弱监督学习问题。
在基于深度学习的MIL中,一个简单的想法是对CNN提取的instance特征嵌入进行pooling操作。Ilse等人提出了一种基于注意力的聚合算子,通过可训练的注意力为每个实例提供额外的贡献信息。此外,Li将非局部注意力引入了MIL问题。通过计算得分最高的实例与其他实例之间的相似度,赋予每个实例不同的注意力权重,从而得到可解释的注意力图。
然而,所有这些方法都基于这样的假设:每个bag中的所有实例都是独立且同分布的。虽然在许多任务中取得了一些改进,但在许多情况下,这种假设并不完全有效。实际上,在做出诊断决定时,病理学家通常会同时考虑单个区域周围的环境信息和不同区域之间的相关信息。因此,在MIL诊断中考虑不同instance之间的相关性是可取的。
目前,Transformer由于具有较强的描述序列中不同token之间的相关性以及对远距离信息建模的能力,被广泛应用于视觉任务中。如图1所示,Transformer采用自注意力机制,可以关注序列内每个token之间的两两相关性。然而,传统的Transformer受到其计算复杂性的限制,只能处理较短的序列(例如,小于1000或512)。因此,它不适合WSI等大尺寸图像。
- 图1:决策过程图示。MIL注意力机制:遵循iid假设。自注意机制:属于相关性MIL。
方法
以二元MIL为例,我们想要预测target value Y i ∈ { 0 , 1 } Y_{i}\in\left\{0,1\right\} Yi∈{0,1},给定一个bag X i X_{i} Xi(instance为 { x i , 1 , x i , 2 , . . . , x i , n } \left\{x_{i,1},x_{i,2},...,x_{i,n}\right\} {xi,1,xi,2,...,xi,n}),其中 i = 1 , . . , b i=1,..,b i=1,..,b,实例级标签是未知的: { y i , 1 , y i , 2 , . . . , y i , n } \left\{y_{i,1},y_{i,2},...,y_{i,n}\right\} {yi,1,yi,2,...,yi,n},bag标签是已知的,并且与实例标签有联系:
b b b是袋的总数, n n n是第 i i i个袋里的实例数, n n n的个数可以根据不同的袋而变化。
关于相关性MIL的优势,文中给出了证明,但是在此略过。主要意思是:
- 考虑实例相关性可以具有更小的信息熵,从而减少不确定性,为MIL带来更多有效信息。TransMIL与过去方法的主要区别如图2
- 图2:不同pooling矩阵 P P P的差异。假设从a中的WSI采样5个instance, P ∈ R 5 × 5 P\in\R^{5\times 5} P∈R5×5是对应的pooling矩阵,其中对角线内的值表示instance自身的注意力权重,其余值表示不同instance之间的相关性。b,c,d 都忽略了相关信息,因此 P P P是对角矩阵。在b中,第一个实例是由Max-pooling算子选择的,所以在对角线位置只有一个非零值。在c中,由于Mean-pooling运算符,对角线内的所有值都是相同的。在d中,由于引入的是bypass注意力,对角线内的值可能会发生变化。但其余位置为0(独立同分布假设)。e服从相关性假设,因此在非对角线位置存在非零值,表示不同实例之间存在相关性。
对于MIL的pooling,这里有一个通用的三步法:
- 形态信息:morphological,空间信息:spatial
如何应用Transformer到相关性MIL
Transformer使用自注意力机制对序列中所有令牌之间的交互进行建模,位置信息的添加进一步增加了顺序信息。因此,将Transformer引入相关性MIL问题是合理的,其中函数 h h h对实例之间的空间信息进行编码,pooling矩阵 P P P使用自注意力进行信息聚合。为了说明这一点,进一步给出一个正式的定义。
给定一个bag集合 { X 1 , . . . , X b } \left\{X_{1},...,X_{b}\right\} {X1,...,Xb},每个bag对应一个标签 Y i Y_{i} Yi。目标是学习映射: X → T → Y \mathbb{X} \rightarrow \mathbb{T}\rightarrow \mathbb{Y} X→T→Y,即从bag空间,到Transformer空间,再到标签空间。
为了更好地描述 X → T \mathbb{X} \rightarrow \mathbb{T} X→T的映射,作者设计了一个包含两个Transformer层和一个位置编码层的TPT模块,其中Transformer层用于聚合形态信息,PPEG (Pyramid position encoding Generator)用于编码空间信息。所提出的基于MIL (TransMIL)的Transformer的概述如图3所示。
- 图3:每个WSI被裁剪成patch(背景被丢弃),并被ResNet50嵌入到特征向量中。然后用TPT模块对序列进行处理:1)序列的平方;2)序列相关性建模;3)条件位置编码与局部信息融合;4)深度特征聚合;5) T → Y \mathbb{T}\rightarrow \mathbb{Y} T→Y的映射。
序列来自每个WSI中的特征嵌入。TPT模块的处理步骤如算法2所示,其中MSA表示多头自注意力,MLP表示多层感知机,LN表示 Layer Norm。
相关文章:

TransMIL:基于Transformer的多实例学习
MIL是弱监督分类问题的有力工具。然而,目前的MIL方法通常基于iid假设,忽略了不同实例之间的相关性。为了解决这个问题,作者提出了一个新的框架,称为相关性MIL,并提供了收敛性的证明。基于此框架,还设计了一…...

3.用户程序与驱动交互
驱动程序请使用第二章https://blog.csdn.net/chenhequanlalala/article/details/140034424 用户app与驱动交互最常见的做法是insmod驱动后,生成一个设备节点,app通过open,read等系统调用去操作这个设备节点,这里先用mknode命令调…...

尽量不写一行if...elseif...写出高质量可持续迭代的项目代码
背景 无论是前端代码还是后端代码,都存在着定位困难,不好抽离,改造困难的问题,造成代码开发越来越慢,此外因为代码耦合较高,总是出现改了一处地方,然后影响其他地方,要么就是要修改…...

xcrun: error: unable to find utility “simctl“, not a developer tool or in PATH
目录 前言 一、问题详情 二、解决方案 1.确认Xcode已安装 2.安装Xcode命令行工具 3.指定正确的开发者目录 4. 确认命令行工具路径 5. 更新PATH环境变量 前言 今天使用cocoapods更新私有库的时候,遇到了"xcrun: error: unable to find utility &…...

【linux高级IO(一)】理解五种IO模型
💓博主CSDN主页:杭电码农-NEO💓 ⏩专栏分类:Linux从入门到精通⏪ 🚚代码仓库:NEO的学习日记🚚 🌹关注我🫵带你学更多操作系统知识 🔝🔝 Linux高级IO 1. 前言2. 重谈对…...

前端引用vue/element/echarts资源等引用方法Blob下载HTML
前端引用下载vue/element/echarts资源等引用方法 功能需求 需求是在HTML页面中集成Vue.js、Element Plus(Element UI的Vue 3版本)、ECharts等前端资源,使用Blob下载HTML。 解决方案概述 直接访问线上CDN地址:简单直接,…...

昇思MindSpore学习笔记2-01 LLM原理和实践 --基于 MindSpore 实现 BERT 对话情绪识别
摘要: 通过识别BERT对话情绪状态的实例,展现在昇思MindSpore AI框架中大语言模型的原理和实际使用方法、步骤。 一、环境配置 %%capture captured_output # 实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下…...

uniapp实现图片懒加载 封装组件
想要的效果就是窗口滑动到哪里,哪里的图片进行展示 主要原理使用IntersectionObserver <template><view><image error"HandlerError" :style"imgStyle" :src"imageSrc" :id"randomId" :mode"mode&quo…...

持续交付:自动化测试与发布流程的变革
目录 前言1. 持续交付的概念1.1 持续交付的定义1.2 持续交付的核心原则 2. 持续交付的优势2.1 提高交付速度2.2 提高软件质量2.3 降低发布风险2.4 提高团队协作 3. 实施持续交付的步骤3.1 构建自动化测试体系3.1.1 单元测试3.1.2 集成测试3.1.3 功能测试3.1.4 性能测试 3.2 构建…...

VBA常用的字符串内置函数
前言 在VBA程序中,常用的内置函数可以按照功能分为字符串函数、数字函数、转换函数等等,本节主要会介绍常用的字符串的内置函数,包括Len()、Left()、Mid()、Right()、Split()、String()、StrConV()等。 本节的练习数据表以下表为例ÿ…...

大数据面试题之Spark(7)
目录 Spark实现wordcount Spark Streaming怎么实现数据持久化保存? Spark SQL读取文件,内存不够使用,如何处理? Spark的lazy体现在哪里? Spark中的并行度等于什么 Spark运行时并行度的设署 Spark SQL的数据倾斜 Spark的exactly-once Spark的…...

AI绘画 Stable Diffusion图像的脸部细节控制——采样器全解析
大家好,我是画画的小强 我们在运用AI绘画 Stable Diffusion 这一功能强大的AI绘图工具时,我们往往会发现自己对提示词的使用还不够充分。在这种情形下,我们应当如何调整自己的策略,以便更加精确、全面地塑造出理想的人物形象呢&a…...

liunx离线安装Firefox
在Linux系统中离线安装Firefox浏览器,您需要先从Mozilla的官方网站下载Firefox的安装包,然后通过终端进行安装。以下是详细的步骤: 准备工作 下载Firefox安装包: 首先,在一台可以上网的电脑上访问Firefox官方下载页面…...

UNet进行病理图像分割
数据集链接:https://pan.baidu.com/s/1IBe_P0AyHgZC39NqzOxZhA?pwdnztc 提取码:nztc UNet模型 import torch import torch.nn as nnclass conv_block(nn.Module):def __init__(self, ch_in, ch_out):super(conv_block, self).__init__()self.conv nn…...

初二数学基础差从哪开始补?附深度解析!
有时候,当你推不开一扇门的时候,不要着急,试着反方向拉一下,或者横向拉一下。下面是小偏整理的初二数学基础差从哪开始补2021年,感谢您的每一次阅读。 初二数学基础差从哪开始补2021年 第一个问题是很多同学都…...

【C语言】return 关键字
在C语言中,return是一个关键字,用于从函数中返回值或者结束函数的执行。它是函数的重要组成部分,负责将函数的计算结果返回给调用者,并可以提前终止函数的执行。 主要用途和原理: 返回值给调用者: 当函数执…...

华为机试HJ13句子逆序
华为机试HJ13句子逆序 题目: 将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符 想法: 将输入的字符串通过…...

代码随想录day40 动态规划(5)
52. 携带研究材料(第七期模拟笔试) (kamacoder.com) 完全背包,可重复放入物品,需要用一维滚动数组从前往后遍历。 由于第0个物品和后面物品的转移方程没有区别,可以不额外初始化dp数组,直接用元素全0的d…...

FFmpeg 命令行 音视频格式转换
📚:FFmpeg 提供了丰富的命令行选项和功能,可以用来处理音视频文件、流媒体等,掌握命令行的使用,可以有效提高工作效率。 目录 一、视频转换和格式转换 🔵 将视频文件转换为另一种格式 🔵 指定…...

Jmeter使用JSON Extractor提取多个变量
1.当正则不好使时,用json extractor 2.提取多个值时,默认值必填,否则读不到变量...

c++ 设计模式 的课本范例(下)
(19) 桥接模式 Bridge,不是采用类继承,而是采用类组合,一个类的数据成员是类对象,来扩展类的功能。源码如下: class OS // 操作系统负责绘图 { public:virtual ~OS() {}virtual void draw(cha…...

结合数据索引结构看SQL的真实执行过程
引言 关于数据库设计与优化的前几篇文章中,我们提到了数据库设计优化应该遵守的指导原则、数据库底层的索引组织结构、数据库的核心功能组件以及SQL的解析、编译等。这些其实都是在为SQL的优化、执行的理解打基础。 今天这篇文章,我们以MySQL中InnoDB存…...

spark shuffle——shuffle管理
ShuffleManager shuffle系统的入口。ShuffleManager在driver和executor中的sparkEnv中创建。在driver中注册shuffle,在executor中读取和写入数据。 registerShuffle:注册shuffle,返回shuffleHandle unregisterShuffle:移除shuff…...

HTMLCSS(入门)
HTML <html> <head><title>第一个页面</title></head><body>键盘敲烂,工资过万</body> </html> <!DOCTYPE>文档类型声明,告诉浏览器使用哪种HTML版本显示网页 <!DOCTYPE html>当前页面采取…...

富格林:曝光可信策略制止亏损
富格林指出,相信大家都对黄金投资的价值空间有目共睹,现如今黄金市场波动频繁,因此不少投资者也开始加入该市场试图赢得额外的财富。但作为新手投资者贸贸然地进场操作,亏损的几率是很大的,因此要学会掌握正规平台曝光…...

Android --- Service
出自于此,写得很清楚。关于Android Service真正的完全详解,你需要知道的一切_android service-CSDN博客 出自【zejian的博客】 什么是Service? Service(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件。 服务可由其他应用组件…...

Vue3从入门到精通(三)
vue3插槽Slots 在 Vue3 中,插槽(Slots)的使用方式与 Vue2 中基本相同,但有一些细微的差异。以下是在 Vue3 中使用插槽的示例: // ChildComponent.vue <template><div><h2>Child Component</h2&…...

【FreeRTOS】同步与互斥通信-有缺陷的互斥案例
目录 同步与互斥通信同步与互斥的概念同步与互斥并不简单缺陷分析汇编指令优化过程 - 关闭中断时间轴分析 思考时刻 参考《FreeRTOS入门与工程实践(基于DshanMCU-103).pdf》 同步与互斥通信 同步与互斥的概念 一句话理解同步与互斥:我等你用完厕所,我再…...

Docker 安装 Python
Docker 安装 Python 在当今的软件开发领域,Docker 已成为一项关键技术,它允许开发人员将应用程序及其依赖环境打包到一个可移植的容器中。Python,作为一种广泛使用的高级编程语言,经常被部署在 Docker 容器中。本文将详细介绍如何在 Docker 中安装 Python,以及如何配置环…...

外泌体相关基因肝癌临床模型预测——2-3分纯生信文章复现——4.预后相关外泌体基因确定单因素cox回归(2)
内容如下: 1.外泌体和肝癌TCGA数据下载 2.数据格式整理 3.差异表达基因筛选 4.预后相关外泌体基因确定 5.拷贝数变异及突变图谱 6.外泌体基因功能注释 7.LASSO回归筛选外泌体预后模型 8.预后模型验证 9.预后模型鲁棒性分析 10.独立预后因素分析及与临床的…...