从病理AI的基础模型发展历程,看未来的医学AI发展趋势|个人观点·24-10-23

小罗碎碎念

在临床相关的人工智能(AI)模型发展方面,传统上需要大量标注数据集,这使得AI的进步主要围绕大型中心和私营企业展开。所以,在这期推文中,我会介绍一些已经商用的模型,并且为计划进军这个领域的商业同行提供一些建议

数据的可用性也决定了AI应用的发展:大多数研究聚焦于常见癌症类型,而忽略了罕见疾病。然而,随着基础模型(foundation models,FMs)的出现,这一范式正在改变,使得可以使用更小的数据集训练更加强大和健壮的AI系统【1】。

所以我们如何用更小的数据集(即更少的成本和更短的时间)去搭建一个适合我们研究领域的模型呢?又或者说,有没有一个通用的套路来快速的验证我们提出的假说呢

为了解决上面两个问题,我挑选了几篇高分文献,并且把其中关键的部分揉合在一起,不再像之前那样,只是推荐,而没有系统的归纳总结。写作不易,希望能对大家有所启发!!


一、AI在组织病理学图像分析中的应用

在组织病理学图像分析中,AI流程通常包括两个部分:特征提取和特定任务的预测。

图像编码器用于将病理图像压缩成低维特征向量。在此基础上,可以为特定任务(如癌症检测、生存结果预测或治疗反应)训练预测模型。

自2022年以来,由于自监督学习的推动,组织病理学的AI应用进入了一个新时代。这种方法使得可以在不需要任何标注数据的情况下高效训练特征提取器。这些大量的数据进而使得可以训练包含数十亿参数的更大、更全面的模型。以这种方式训练的模型被称为基础模型(FM)。

FMs对组织学图像中的形态模式有全面的理解,因此与在自然图像上预训练的模型相比,使用更少的训练样本就能训练出更准确的预测模型【1】。这种训练方法在本质上类似于人类学习,具有组织学一般知识的专家比非专家使用更少的样本就能解读特定的病理发现。

此外,未标注数据集自然具有高度可变性,包括不同的组织、疾病、扫描仪和制备协议。总的来说,使用FM作为训练特定任务模型的基线,显著提高了计算病理学模型的性能和泛化能力【2】,同时减少了结果预测模型中的任何偏差【3】。


二、基础模型的发展和应用

过去几年中,一波FMs已经进入组织病理学图像分析领域。

CTransPath是最早广泛使用的FM之一【4】。这些早期的FMs是使用公开可用的数据集(如癌症基因组图谱TCGA)构建的,而后续的研究则使用了带有更多数据和参数的私有数据集。

来源:https://doi.org/10.1038/s41571-024-00941-8

尽管FM的开发通常仅限于资源丰富的机构(由于对数据可用性、数据存储和计算能力的高要求),但有几个小组公开发布了他们的预训练模型。这种开放性使得研究人员能够从私有数据集上的大规模预训练中受益。


在最近发表在《nature medicine》上的一篇文章中,Vorontsov等人【5】介绍了另一个名为“Virchow”的FM。

Virchow 模型介绍

在所有可用的FMs中,Virchow拥有最多的参数和最广泛的训练集。Virchow在来自100,000名患者的数据上训练,包括大约1.5百万张恶性和非恶性组织的全切片图像,这些数据来自纪念斯隆-凯特琳癌症中心(MSKCC)。

Virchow模型通过自监督学习算法训练,能够生成数据表示(嵌入),这些嵌入能够很好地泛化到多种预测任务,从而构建一个跨多种组织类型的泛癌症模型。在九种常见和七种罕见癌症类型的队列上进行测试时,基于Virchow的泛癌症模型在性能上超越了或与所有其他测试的FMs相当。

最重要的是,Virchow模型可以处理罕见肿瘤类型或不常见的诊断任务,例如预测特定的基因组变化、临床结果和治疗反应,先不说效果如何,至少作者已经考虑到这一方面,那么就是方法和思路的一个创新!!


尽管使用了更少的特定任务标签进行训练,但相同的泛癌症检测模型在性能上几乎与临床级商业模型(特别是Paige Prostate、Paige Breast和Paige Breast Lymph Node)相匹配,甚至在检测某些罕见癌症变体时超过了它们。

https://info.paige.ai/prostate

我们大部分团队是无法具备商业级模型的开发能力的,但是Virchow的作者比较良心,为这一部分人提供一个开发临床级AI的可能,同时也给我们研究罕见疾病提供了一个新的思路!!(这就非常适合用来申请大型的项目啊,参考我上个月发的推文)

https://mp.weixin.qq.com/s/23TYH9zAlSnpoBOboHo_1w

并且Virchow的发表,还给我们提供另外一个信息——仅增加数据集大小可能不再能带来实质性的性能提升——因为训练了1.5百万张图像的Virchow和训练了100,000张图像的另一个名为UNI1的FM在性能上差距不大。

那么我们更关心的问题来了,**既然堆数据不好使了,下一步应该做什么呢?**我个人认为,进一步调整模型架构,优化训练数据的质量,充分考虑到不同中心数据之间的差异性并尽可能消除这种数据不平衡带来的影响才是我们下一阶段研究的重点。

还有一点很关键,也是我推文中频繁出现的——多模态/多组学——我们想要提升模型的性能,就必须要整合额外的数据类型,如临床报告或分子信息(测序,也就是基因组学、蛋白组学……),只有这样,我们才能保证模型更接近临床落地的可能。


三、商业开发会促进医学AI发展

其实这段时间也有不少商业的前辈和我沟通,想要进军医学AI和病理AI行业,那么我觉得Virchow模型算是一个不错的切入点,因为它是允许商业再利用的。我个人也是赞同商业开发的,因为这样一定程度上会促进技术的进步,也能有更多的人关注这个领域。

这部分的商业价值是毋庸置疑的,所以作为数据的原始生产者——医院——自然也不会放弃这个大好的机会,越来越多的头部医院开始布局医学AI,这都是利好的消息,但是也意味着卷的程度越来越明显。

基础模型肯定是为少部分人准备的,他们享受了最好的资源,理应承担更大的风险,但是开源与否的权利还是在于他们,我们要做好他们不开源或者隐藏部分技术的心里建设,要早日掌握自己的核心技术。

我们能做的,或者说迫切要做的,就是在目前已经开源的模型基础上,构建一个可以使用几百或者几千名患者就能训练并且取得良好效果的模型。为什么要实现一个这样的目标?一方面是基层的医院没有办法提供头部医院那样的数据,另一方面是我们的模型如果在小样本数据集的表现都优秀,那么大数据集的表现,几乎是会更好的(除非你扩大数据时导致了原始数据污染,加入了很多噪声)


四、开放获取和模型评估的重要性

开放获取对于创新和人工智能模型的评估至关重要。然而,现有的开源概念不能总是直接应用于人工智能系统。特别是,病理学中的FMs通常作为开放权重模型发布(所以,最关键的就是那一系列权重文件)——这种方法意味着尽管这些模型可以作为特征编码器使用,但它们的训练数据仍然是私有的,这阻碍了重新训练和验证可重复性的尝试。

还有一点很头疼,就是文章的投稿到发表时间,这中间的间隔太大了,就会导致我们看到的研究,他的思路其实已经不是最新的了。比如说我前两天分享的郑大那篇文章,人家21年投稿,24年发表,用的模型我们现在可能部分新手都没听过。

https://mp.weixin.qq.com/s/LcR3UhlaYE6IKIr7hIrLmA

这里我只想表达一个观点,看文章不能只看方法和结果,发表的时间和团队成员,也是一个不可忽略的内容!!


五、未来发展

从最开始的仅用普通的HE图像进行基础模型的训练,再到现在各种格式的图像、文本都加入进来,再一次验证了我的观点——多模态、自监督模型的开发将是未来一段时间亟需攻克的难题。

文本信息和图像信息一起处理,一定是未来的趋势,因为这是Transformer架构底层就决定的。我们未来或许真的可以实现,给模型输入一张普通的切片,它就能输出各种各样目前需要复杂检查才能得出的报告。

不妨畅想一下未来,我们可以一起打造一个医院的智能化信息系统,从收集数据开始就由AI接管,这样模型的训练数据自然而然就统一了,并且收集数据的速度也会有一个质的飞跃,那时又将开启下一轮的竞争


参考文献

    1. Chen, R. J. et al. Towards a general-purpose foundation model for computational pathology. Nat. Med. 30, 850–862 (2024).
    1. Wagner, S. J. et al. Transformer-based biomarker prediction from colorectal cancer histology: a large-scale multicentric study. Cancer Cell 41, 1650–1661.e4 (2023).
    1. Vaidya, A. et al. Demographic bias in misdiagnosis by computational pathology models. Nat. Med. 30, 1174–1190 (2024).
    1. Wang, X. et al. Transformer-based unsupervised contrastive learning for histopathological image classification. Med. Image Anal. 81, 102559 (2022).
    1. Vorontsov, E. et al. A foundation model for clinical-grade computational pathology and rare cancers detection. Nat. Med. https://doi.org/10.1038/s41591-024-03141-0 (2024).
    1. Lu, M. Y. et al. A multimodal generative AI copilot for human pathology. Nature https://doi.org/10.1038/s41586-024-07618-3 (2024).
    1. Derraz, B. et al. New regulatory thinking is needed for AI-based personalised drug and cell therapies in precision oncology. NPJ Precis. Oncol. 8, 23 (2024).

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

逻辑推理学习笔记

目的 立场辩护整理思绪 基本框架 论题 (变化) 我要证明(讨论对象 变化) 论据 (变化) 拿什么证明?也就是证据呈现。 论证 (不变) 要如何证明?逻辑框架…

通过conda install -c nvidia cuda=“11.3.0“ 安装低版本的cuda,但是却安装了高版本的12.4.0

问题 直接通过 conda install -c nvidia cuda"11.3.0"安装得到的却是高版本的 不清楚原理 解决方法 不过我们可以分个安装 runtime toolkit 和 nvcc 安装指定版本的 cudatoolkit 和 nvcc conda install -c nvidia cuda-cudart"11.3.58" conda instal…

【Linux系统编程】——Linux入门指南:从零开始掌握操作系统的核心(指令篇)

文章目录 查看 Linux 主机 ip以及登录主机Linux基础文件操作指令man:查看命令的手册页,了解命令的详细用法。pwd:显示当前目录路径。cd:切换目录。ls:列出当前目录下的文件和文件夹。mkdir:创建新目录。 文…

第三讲、C的运算符和表达式

一、运算符分类: (1)按运算对象的数目: 单目运算符 双目运算符 三目运算符 (2)按运算对象的数目: 算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符、自增自减运算符、…

菜叶子芯酸笔记3:GPU、GPGPU、CUDA之间的关系;CUDA之外;Tensor Core

我今天看到B站一个up主很好的资料【云计算科普研究所的个人空间-云计算科普研究所个人主页-哔哩哔哩视频】,结合我这周的积累整理了这份我觉得相比之前逻辑更加完善的笔记。 先是GPU到GPGPU 到CUDA之间进化关系部分,然后CUDA之外的友商竞品部分&#xf…

orbslam安装

1.linux操作命令 pwd:查看终端所在路径 cd:切换路径 cd ..:跳回到上级目录 ls: 列出当前路径下的所有文件夹 touch:创建新的文件 mv :移动文件(在该文件所在目录的路径下执行此操作) 例如:mv test_file /ho…

vue3中mitt和pinia的区别和主要用途,是否有可重合的部分?

在 Vue 中,Mitt 和 Pinia 是两个不同的工具,它们的主要用途和功能有所不同,但在某些方面也存在重合的部分。 区别 Mitt: Mitt 是一个简单而强大的事件总线库,用于在组件之间进行事件的发布和订阅。 它提供了一种简洁…

讲一讲 kafka 的 ack 的三种机制?

大家好,我是锋哥。今天分享关于【K讲一讲 kafka 的 ack 的三种机制?】面试题?希望对大家有帮助; 讲一讲 kafka 的 ack 的三种机制? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka的消息确认机制&…

python实战项目46:selenium爬取百度新闻

python实战项目46:selenium爬取百度新闻 一、项目简介二、完整代码一、项目简介 思路是首先使用selenium打开百度新闻页面,然后实现翻页操作,获取每条新闻的标题和链接。接下来的问题是,在遍历标题和链接,对每一个链接发送请求时,发现会弹出百度安全验证,本文的思路是使…

远程root用户访问服务器中的MySQL8

一、Ubuntu下的MySQL8安装 在Ubuntu系统中安装MySQL 8.0可以通过以下步骤进行1. 更新包管理工具的仓库列表: sudo apt update 2. 安装MySQL 8.0,root用户默认没有密码: sudo apt install mysql-server sudo apt install mysql-client 【…

动态规划 - 背包问题 - 01背包

01背包问题 二维数组 1. 确定dp数组(dp table)以及下标的含义:dp[i][j]-下标为[0,i]的物品,任取放容量为j的背包中的最大价值 2. 确定递推公式:dp[i][j] max(dp[i-1][j](不放物品i), dp[i-1][j-weight[i]]…

研发效能DevOps: Vite 使用 Vue Router

目录 一、实验 1.环境 2.初始化前端项目 3.安装vue-router 4.Vite 使用 Vue Router 二、问题 1.运行出现空页面 2.Vue Router如何禁止页面回退 一、实验 1.环境 (1)主机 表1 主机 系统 软件版本备注Windows11VS Code1.94.2Node.jsv18.20.4(LT…

Redis 篇-深入了解在 Linux 的 Redis 网络模型结构及其流程(阻塞 IO、非阻塞 IO、IO 多路复用、异步 IO、信号驱动 IO)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 用户空间与内核空间概述 2.0 Redis 网络模型 2.1 Redis 网络模型 - 阻塞 IO 2.2 Redis 网络模型 - 非阻塞 IO 2.3 Redis 网络模型 - IO 多路复用 2.3.1 IO 多路复…

WPF LiveChart控件基础属性介绍

WPF LiveChart控件基础属性介绍 在Nuget添加方法如下&#xff1a; 然后在xaml中添加引用&#xff1a; xmlns:lvc"clr-namespace:LiveCharts.Wpf;assemblyLiveCharts.Wpf"调用控件&#xff1a; <lvc:CartesianChart Name"chart" Margin"40"…

Java应用程序的服务器有哪些

1.Tomcat、Jetty 和 JBoss 区别&#xff1f; Apache Tomcat、Jetty 和 JBoss都是用于部署Java应用程序的服务器&#xff0c;它们都支持Servlet、JSP和其他Java EE&#xff08;现在称为Jakarta EE&#xff09;技术。尽管它们有一些相似的功能&#xff0c;但它们之间还是存在一些…

DownUnderCTF web sniffy

题目中给了源码 在index.php中将flag的值赋给了session[flag] session[theme]接收GET传入的theme参数。。。??是PHP中的空合并运算符它的作用是检查左侧的值是否存在且不为null。如果存在&#xff0c;则返回左侧的值&#xff1b;如果不存在&#xff0c;则返回右侧的值。 …

用友U8接口-采购管理(8)

概括 本文的操作需要正确部署U8API主要讲述采购管理接口的使用&#xff0c;以采购订单为例&#xff0c;其他单据接口都是大同小异的&#xff01;许多时候先在ERP做个单&#xff0c;然后仿造ERP单据参数&#xff0c;构造接口JSON参数是不错的做法哦 ERP单据金额计算 在ERP的许…

3DCAT亮相2024中国国际消费电子博览会,引领AI潮流

2024年10月18日-20日&#xff0c;备受瞩目的2024中国国际消费电子博览会&#xff08;以下简称“电博会”&#xff09;在青岛国际会展中心&#xff08;红岛馆&#xff09;盛大开幕。作为消费电子领域的盛会&#xff0c;本次电博会吸引了国内外300多家企业参展&#xff0c;展示了…

android openGL ES详解——缓冲区VBO/VAO/EBO/FBO/离屏渲染

目录 一、缓冲区对象概念 二、分类 三、顶点缓冲区对象VBO 1、概念 2、为什么使用VBO 3、如何使用VBO 生成缓冲区对象 绑定缓冲区对象 输入缓冲区数据 更新缓冲区中的数据 删除缓冲区 4、VBO应用 四、顶点数组对象VAO 1、概念 2、为什么使用VAO 3、如何使用VAO…

Django-中间件(切面编程AOP)

自定义中间件 官网&#xff1a;中间件 | Django 文档 | Django 中间件使用多就在主应用创建&#xff0c;仅限于子应用就在子引用中创建中间件文件.py 之后在settings.py文件中去配置中间件,运行的时候会自动调用中间件 def simple_middleware(get_response):def middleware…