论文120:Giga-SSL: Self-supervised learning for gigapixel images (2023, CVPR, 开源)

文章目录

  • 1 要点
  • 2 方法
    • 2.1 算法设计
    • 2.2 设计选择

1 要点

题目:用于千兆像素图像的自监督学习 (Giga-SSL: Self-Supervised Learning for Gigapixel Images)

代码:https://github.com/trislaz/gigassl

研究目的
现有的WSI分类方法依赖于有限的标注数据集,这可能导致模型过拟合和性能不足。同时,大量未标注的WSI数据集的可用性不断增加,但这些数据在现有的自监督学习 (SSL) 框架下未能充分利用。因此,拟提出了一种在WSI标签下进行SSL的策略,以利用大量未标注的WSI数据并在小数据集上提高分类性能。

关键技术

  1. Giga-SSL框架
    一个转为WSI设计的自监督学习框架,能够在不使用任何标注数据的情况下,仅使用WSI图像来学习包表示;
  2. SparseConvMIL架构
    用于WSI分类的扩展,结合了ResNet网络作为区块嵌入器和池化函数,以及子流形卷积网络来处理稀疏数据;
  3. 对比损失(Contrastive Loss)
    在SSL使用,通过优化正样本对的相似度来训练模型;

数据集

  • TCGA

2 方法

2.1 算法设计

X X X表示一个WSI,算法的骨架是扩展的SparseConvMIL架构

  • 包含一个 ResNet网络 f θ f_θ fθ (例如ResNet18),它在第四个残差块的开始处被切成两个连续的部分:
    • 第一部分:实例 (tile) 嵌入器 e θ 1 e_{θ_1} eθ1,由 f θ f_θ fθ的从输入层到第四个残差块的部分组成;
    • 第二部分:池化函数KaTeX parse error: Expected '}', got 'EOF' at end of input: p_{θ_2,由 f θ f_θ fθ的余下层组成,包括后续的残差块直到全连接层。该部分已经转换为子流形卷积网络,以便它可以处理稀疏数据。
  • 对于任何图像 i i iResNet嵌入为:
    f θ ( i ) = p θ 2 ( e θ 1 ( i ) ) ∈ R 512 f_θ(i) = p_{θ_2}(e_{θ_1}(i)) \in \mathbb{R}^{512} fθ(i)=pθ2(eθ1(i))R512

算法的训练过程包括6个顺序步骤,以提取WSI表示,如图1。

  1. 在实例级别设置两个WSI增强函数 t 1 t_1 t1 t 2 t_2 t2,其图像增强域 A A A分别从颜色增强 (色彩抖动、灰度) 和几何增强 (翻转、旋转、缩放、模糊) 中采样:
    • X X X中为每个增强函数 t 1 t_1 t1 t 2 t_2 t2抽取 T T T个实例,得到实例集合 { X 1 } \{X_1\} {X1} { X 2 } \{X_2\} {X2}
    • 存储实例集合原采样位置的左上角像素坐标,以供进一步处理;
    • t 1 t_1 t1应用于 { X 1 } \{X_1\} {X1}中的所有实例,得到增强实例 t 1 ( { X 1 } ) t_1(\{X_1\}) t1({X1}),同理可得 t 2 ( { X 2 } ) t_2(\{X_2\}) t2({X2})
  2. 实例嵌入:通过实例嵌入器 e θ 1 e_{θ_1} eθ1同时独立地将 t 1 ( { X 1 } ) t_1(\{X_1\}) t1({X1}) t 2 ( { X 2 } ) t_2(\{X_2\}) t2({X2})中的每个实例向前传递。每张图像因此被转换为一个特征图,通过所有像素取平均,每个增强实例集合中的每个实例,都将获得一个大小为 F F F (对于ResNet18为256) 的实例嵌入;
  3. 构建稀疏图:按照SparseConvMIL框架,通过将 t 1 ( { X 1 } ) t_1(\{X_1\}) t1({X1})产生的每个嵌入分配到它们在步骤1中采样的原始实例的位置,构建一个稀疏图 S 1 S_1 S1 (下采样因子 d = 224 d = 224 d=224)。类似地,从 t 2 ( { X 2 } ) t_2(\{X_2\}) t2({X2})的嵌入构建一个稀疏图 S 2 S_2 S2
    • 难点:之所以叫稀疏图,是因为抽取的实例的位置随机,结合它们的 x x x y y y坐标,自然就是稀疏分布的实例图;
  4. S 1 S_1 S1 S 2 S_2 S2被随机翻转、旋转,并独立地沿 x x x 轴和 y y y轴以 [ 0.5 , 2 ] [0.5, 2] [0.5,2]中均匀采样的因子进行缩放;
    • 难点:这样做的目的是进一步增强稀疏图;
    • 这也可以用来增强WSI,不过当前和后续的训练过程只需要增强的稀疏图;
  5. 将稀疏图嵌入到两个增强的WSI表示中:为了计算表示,对两个增强的稀疏图 S 1 S_1 S1 S 2 S_2 S2应用 p θ 2 p_{θ_2} pθ2。在这个阶段,输入是 X X X的两个增强视图;
  6. 损失优化与SimCLR中的做法一样,最终将增强视图输入到投影器中,得到两个增强的投影,用它们来计算损失。我们通过优化对比损失NT-XENT来训练池化函数$p_{θ_2}的权重。给定一个由增强WSI ( X 1 i , X 2 i ) i ∈ B (X^i_1, X^i_2)_{i∈B} (X1i,X2i)iB组成的小批量 B B B,为WSI的正样本对设置损失函数如下:
    ℓ i = − l o g exp ⁡ ( sim ( X 1 i , X 2 i ) / τ ) ∑ x ∈ B ( 1 x ≠ X 1 i exp ⁡ ( sim ( X 1 i , x ) / τ ) (1) \tag{1} ℓ_i = - log\frac{\exp(\text{sim}(X^i_1, X^i_2) / τ)}{∑_{x∈B}( \mathbf{1}_{x\neq X^i_1} \exp(\text{sim}(X^i_1, x) / τ)} i=logxB(1x=X1iexp(sim(X1i,x)/τ)exp(sim(X1i,X2i)/τ)(1)其中 τ τ τ是温度参数, 1 ⋅ 1{\cdot} 1是指示函数。最终损失是这些项在整个视图中的平均值。

2.2 设计选择

  1. 选择基础CNN架构
    Giga-SSL理论上不依赖于ResNet架构。有许多好的架构可供选择,用于实例编码器和池化函数,包括不同架构的两部分。然而,池化函数必须能够处理稀疏数据,因为它处理增强的稀疏图;
  2. 离线增强策略
    GigaSSL训练的一个关键计算瓶颈是在线计算一批B个WSI的实例嵌入,每个WSI由 T T T个实例组成。GPU内存限制对 B B B N t N_t Nt施加限制,这实际上限制了每批可以使用的总实例数。此外,已经证明在自然图像的SSL中需要大的批次大小以获得具有良好下游分类性能的表示。解决这些问题的一个策略是冻结实例编码器 e θ 1 e_{θ_1} eθ1并预计算每个WSI的随机采样和增强实例的嵌入,即基本上绕过步骤1和2:
    • 采样50个实例级增强函数 t k t_k tk;
    • 对于每个 k k k,从WSI中随机抽取256个实例并用 t k t_k tk增强;
    • 同时独立地将每个增强实例输入 e θ 1 e_{θ_1} eθ1并存储。这个过程得到 N ∗ 50 ∗ 256 N*50*256 N50256个实例嵌入,其中 N N N是Giga-SSL训练数据集中WSI的总数。

说人话

  1. WSI很大,所有随机抽样 T T T个并增强,这样的结果被称为增强实例集合,也可以说是稀疏图。稀疏图将被进一步增强,这个过程相当于得到新的WSI;
  2. 新的WSI输入的预训练模型,后面就是自监督学习的过程了;

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

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

相关文章

C语言蓝桥杯:语言基础

竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_search函数,用于查找…

运动耳机哪个牌子最好用?年度精选五款好用的骨传导耳机推荐

相信大家都已经深有体会,拿那种常规的入耳式无线蓝牙耳机来做运动耳机,很难满足运动需要。如果选择前两年流行的颈挂式无线运动蓝牙耳机,虽然简单轻巧,但也是入耳式设计,长时间佩戴耳朵不舒服。这样看来,运…

vulhub spring 远程命令执行漏洞(CVE-2022-22963)

1.执行以下命令启动靶场环境并在浏览器访问 cd spring/CVE-2022-22963docker-compose up -ddocker ps 2.反弹shell 构造payload 页面刷新抓包,修改内容 POST /functionRouter HTTP/1.1 Host: 192.168.0.107:8080 Accept-Encoding: gzip, deflate Accept: */* Acc…

uni-app实现web-view和App之间的相互通信

双向实时 如果app端部署成网站&#xff0c;则web-view就是iframe&#xff0c;使用也可以双向通讯 https://uniapp.dcloud.net.cn/component/web-view.html APP端代码 index.vue: <template><web-viewid"m-webview":fullscreen"true":src"…

python-确定进制

题目描述 6 942 对于十进制来说是错误的&#xff0c;但是对于 13 进制来说是正确的。即 6(13)​ 9(13)​42(13)​&#xff0c;而 42(13)​4 13^12 13^054(10)​。 你的任务是写一段程序读入三个整数 p,q 和 r&#xff0c;然后确定一个进制 B(2≤B≤16) 使得 p qr 。如果 B 有…

CMS之Wordpress建设

下载 https://cn.wordpress.org/ 宝塔安装Wordpress 创建网站 上传文件、并解压、剪切文件到项目根目录 安装 -> 数据库信息 -> 标题信息 http://wordpress.xxxxx.com 登录 http://wordpress.xxxxxxxxx.com/wp-admin/ 1. 主题(模板) wordpress-基本使用-02-在主题…

VLAN配置学习笔记

1、VLAN的基础配置命令 &#xff08;1&#xff09;创建VLAN [Huawei] vlan vlan-id 通过此命令创建VLAN并进入VLAN视图&#xff0c;如果VLAN已存在&#xff0c;直接进入该VLAN的视图。 vlan-id是整数形式&#xff0c;取值范围是1&#xff5e;4094。 [Huawei] vlan batch {…

docker管理redis集群

1.拉取redis镜像 docker pull redis拉取完成 [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE redis latest a617c1c92774 3 years ago 105MB2.运行redis容器 docker run -itd --name redis-test01 -p 6379:6379…

Apache OFBiz 远程代码执行漏洞复现(CVE-2024-45195)并拿到shell

FOFA&#xff1a;app"Apache_OFBiz" 复现&#xff1a; VPS上准备两个文件 rceschema.xml <data-files xsi:noNamespaceSchemaLocation"http://ofbiz.apache.org/dtds/datafiles.xsd" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"…

c++基类和派生类对象的赋值转换——赋值兼容规则

1.引出 如下场景&#xff1a; 由于b是double类型&#xff0c;所以赋值给int类型的引用前&#xff0c;要先进行隐式类型转换&#xff0c;这中间会生成临时对象&#xff0c;类是对象具有常性&#xff0c;所以int&之前应该加上const。 但是下面的场景&#xff1a; 没有出现报…

Qt进程通信,不推荐使用QSharedMemory和QLocalSocket,而是推荐ZMQ

一、据一位资深的网友说QLocalSocket有问题&#xff0c;共享内存QSharedMemory也有&#xff0c;比如存在多线程问题&#xff0c;不灵活&#xff0c;丢数据等问题都有&#xff0c;而且还占资源。血的教训。后来换成了zmqprotobuf。ZMQ进程内&#xff0c;进程间&#xff0c;机器间…

电脑文件怎么加密?文件加密方法介绍

随着数字化时代的到来&#xff0c;电脑文件的安全性问题日益凸显。为了保护个人隐私和企业数据&#xff0c;文件加密成为了一项重要的安全措施。本文将详细介绍几种常见的电脑文件加密方法&#xff0c;帮助你更好地保护自己的数据安全。 超级加密3000 超级加密3000提供了两种主…

F110批量付款如何Debug BTE增强(后台JOB的调试方法)

F110批量付款如何Debug BTE增强&#xff08;后台JOB的调试方法&#xff09; SAP系统中的F110&#xff08;Automatic Payment&#xff09;是一个常用的付款程序&#xff0c;在实施过程中&#xff0c;也经常会遇到一些运行的错误&#xff0c;而对于此类的错误&#xff0c;通常的…

网络分析仪仪器校准要怎么进行检测?容易出现哪些误差?

当我们使用矢量网络分析仪时&#xff0c;会发现测量数据存在误差。要纠正它&#xff0c;首先要知道矢量网络分析仪的误差来源是什么。 主要有三个方面:漂移误差、随机误差、系统误差。 一、 漂移误差:是由于仪器或测试系统仪器校准之后性能发生变化引起的&#xff0c;主要是温…

uni-app和Node.js使用uni-push2.0实现通知栏消息推送功能

前言 uniapp 提供了 unipush 统一推送服务,但是每次要推送消息的时候都要登陆 Dcloud 开发者后台&#xff0c;有点不方便&#xff0c;运营需要在我们的后台系统就可以完成操作。 效果演示 消息下发流程 名词解释 名词解释通知消息指定通知标题和内容后&#xff0c;由个推 SD…

【STM32】OLED

OLED显示原理 OLED使用的是I2C协议&#xff0c;使用ssd1306芯片对所有灯进行控制&#xff0c;如果一个灯需要一个引脚的话&#xff0c;屏幕分为8页&#xff0c;每页有128列&#xff0c;8行 . 共有128* 88个灯 这样引脚是算不过来的&#xff0c;所以我们使用了ssd1306芯片&…

【深度学习】【图像分类】【OnnxRuntime】【C++】ResNet模型部署

【深度学习】【图像分类】【OnnxRuntime】【C】ResNet模型部署 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【图像分类】【OnnxRuntime】【C】ResNet模型部署前言模型转换--pytorch转onnxWindows平台搭建依赖环境ONNXRuntime推…

搜索功能技术方案

1. 背景与需求分析 门户平台需要实现对服务信息的高效查询&#xff0c;包括通过关键字搜索服务以及基于地理位置进行服务搜索。面对未来可能的数据增长和性能需求&#xff0c;选择使用 Elasticsearch 来替代 MySQL 的全文检索功能。这一选择的背景与需求可以总结为以下几点&am…

maven简介

1&#xff0c; 结构化管理项目 如果不用maven&#xff0c;研发拿到一个项目要去查看代码&#xff0c;了解其代码结构&#xff0c;了解其依赖文件&#xff0c;jar包位置&#xff0c;图片等文件存储路径等&#xff1b;而maven是规范地将对应的源代码、依赖文件等定义其固定位置&…