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.提取多个值时,默认值必填,否则读不到变量...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
