0. 前言

对于医学领域相关深度学习模型的发展,与其他领域相比,存在以下困难:

  • 手工标记数据集的规模往往较小。一方面,因为医学图像的拍摄成本和病人数据的隐私性,数据中病人数量常不是很多。另一方面,医学数据需要医生生成高质量的标签,不仅需要大量人力成本,还容易受到医生主观判断的影响。
  • 医学数据处理任务如果使用从 ImageNet 预训练的模型,由于图像特征差异较大,从而对模型的表现造成影响。
  • 因为医疗系统里存在很多文本图像对,目前提出的一种解决方法是从与医疗配对的文本报告数据中提取基于规则的标签信息。但是一方面提取规则通常不好用,有时候很难提取出某些标签。而且另一方面因为每个医生的写作方式不同,这种规则也很难跨医院进行使用。

本文关注于三篇连接文本和图像的对比学习模型,从而打造可迁移的视觉模型,在下游微调任务及零样本分类任务上应用表现良好。

1. 图像+数据 多模态模型的发展

  1. [2020] Contrastive Learning of Medical Visual Representations from Paired Images and Text
    学习医学图像(例如 X 射线)的视觉表示是医学图像理解的核心,但其进展因人类注释的缺乏而受到阻碍。现有的工作通常依赖于从 ImageNet 预训练传输的微调权重,由于图像特征截然不同,这并不是最优的;或者从与医学图像配对的文本报告数据中进行基于规则的标签提取,这是不准确且难以泛化的。与此同时,最近的几项研究显示了从自然图像中进行无监督对比学习的令人兴奋的结果,但我们发现这些方法对医学图像帮助不大,因为它们的类间相似性很高。我们提出了 ConVIRT,这是一种替代的无监督策略,通过利用自然发生的配对描述性文本来学习医学视觉表示。我们通过两种模式之间的双向对比目标使用配对文本数据对医学图像编码器进行预训练的新方法与领域无关,并且不需要额外的专家输入。我们通过将预训练权重转移到 4 个医学图像分类任务和 2 个零样本检索任务来测试 ConVIRT,并表明它导致图像表示在大多数设置中远远优于强基线。值得注意的是,在所有 4 个分类任务中,我们的方法仅需要 ImageNet 初始化对应方法的 10% 的标记训练数据,即可实现更好或可比的性能,展现出卓越的数据效率。
    代码:ConVIRT-pytorch
  2. [2021] Learning Transferable Visual Models From Natural Language Supervision
    最先进的计算机视觉系统经过训练可以预测一组固定的预定对象类别。这种受限的监督形式限制了它们的通用性和可用性,因为需要额外的标记数据来指定任何其他视觉概念。直接从原始文本中学习图像是一种很有前途的替代方案,它利用了更广泛的监督来源。我们证明,预测哪个标题与哪个图像对应的简单预训练任务是一种高效且可扩展的方法,可以在从互联网收集的 4 亿对(图像、文本)数据集上从头开始学习 SOTA 图像表示。预训练后,使用自然语言来引用学习的视觉概念(或描述新的视觉概念),从而实现模型零样本传输到下游任务。我们通过对 30 多个不同的现有计算机视觉数据集进行基准测试来研究这种方法的性能,涵盖 OCR、视频中的动作识别、地理定位和多种类型的细粒度对象分类等任务。该模型可以轻松地迁移到大多数任务,并且通常可以与完全监督的基线竞争,而无需任何数据集特定的训练。例如,我们在 ImageNet 零样本上匹配原始 ResNet-50 的准确性,而无需使用其所训练的 128 万个训练样本中的任何一个。
    代码:CLIP
  3. [2023] A visual–language foundation model for pathology image analysis using medical Twitter
    缺乏带注释的公开医学图像是计算研究和教育创新的主要障碍。与此同时,临床医生在医疗推特等公共论坛上分享了许多去识别化的图像和大量知识。在这里,我们利用这些人群平台来管理 OpenPath,这是一个包含 208,414 张病理图像并配有自然语言描述的大型数据集。我们通过开发病理语言图像预训练 (PLIP) 来展示该资源的价值,PLIP 是一种具有图像和文本理解能力的多模式人工智能,在 OpenPath 上进行训练。PLIP 在跨四个外部数据集对新病理图像进行分类方面实现了最先进的性能:对于零样本分类,PLIP 实现了 0.565–0.832 的 F1 分数,而之前的对比语言图像预训练模型的 F1 分数为 0.030–0.481 。与使用其他监督模型嵌入相比,在 PLIP 嵌入之上训练简单的监督分类器也可以将 F1 分数提高 2.5%。此外,PLIP使用户能够通过图像或自然语言搜索来检索相似的案例,极大地促进了知识共享。我们的方法表明,公开共享的医疗信息是一种巨大的资源,可以用来开发医疗人工智能,以增强诊断、知识共享和教育。
    代码:Pathology Language and Image Pre-Training (PLIP)

简单来说,三者的关系如下:

  • ConVIRT是CLIP之前的一篇工作,但可能由于医学影像这边数据太少,所以没有像CLIP一炮而红。
  • CLIP是OpenAI的第一篇多模态预训练的算法,它延续了GPT系列“大力出奇迹”的传统。模型是一个基于图像和文本并行的多模态模型,然后通过两个分支的特征向量的相似度计算来构建训练目标。从本质上来讲,CLIP其实并没有太大的创新,它只是将ConVIRT方法进行简化,并采用更大规模的文本-图像对数据集来训练。
  • PLIP模型是CLIP在医学应用上的微调,在各种医学任务上的表现更好。

下面会对这三篇文章进行分析,从模型设计,数据集及训练,应用及表现三个方向上进行介绍。

参考资料,侵权必删:

  1. ConVIRT论文详解(医疗图片)
  2. CLIP论文详解
  3. [论文笔记]ConVIRT: Contrastive Learning of Medical Visual Representations from Paired Images and Text
  4. 神器CLIP:连接文本和图像,打造可迁移的视觉模型
  5. Nat Med | 斯坦福医学院利用医疗 Twitter 进行病理图像大模型分析

2. ConVIRT

作者提出了一种无监督的方法ConVIRT,用于从自然配对的图像和文本中学习医学视觉表示。其方法依赖于通过两种模态之间的双向目标,将图像表示与配对的文本表示进行对比。ConVIRT在4个医学图像分类任务和2个图像检索任务上的性能优于其他方法,并且得到了更高质量的表示。与有监督的ImageNet预训练模型相比,ConVIRT能够在标记数据少一个数量级的情况下达到相同水平的分类精度。

2.1 模型设计

图片alt

ConVIRT框架的概述。蓝色和绿色分别表示图像和文本编码流程。我们的方法依赖于最大化具有双向损失的图像-文本表示对之间的一致性。
  • 一张图片先做随机裁剪,再接一个数据增强,然后进入Image Encoder(ResNet50),最后接一个MLP得到512维的特征表示;
  • 与这张图片配对的一段话,随机采样其中一部分(几句话,或者不完整的几句),然后进入text Encoder(Bert),最后接一个MLP得到512维的特征表示;
  • 训练目标是让两路的representation尽可能得一致(对偶地最大化表征的agreement),其中gv和gu函数是一个non-linear得projection head,负责分别将图像和文本表征投影到一个shared的空间,从而计算距离。
  • 因为一个batch中有N个图片文本对,所以可以理解为有N-1个负例,只有一个正例,然后分别对图片和文本计算infoNCE loss;

在这里插入图片描述

2.2 数据集及训练

  • 公共 MIMIC-CXR 数据库的第 2 版,这是一组胸部 X 光片图像与其文本报告配对,并且由于它的发布已成为研究医学图像多模态建模的标准资源。预处理后,该数据集共包含约 217k 图像-文本对,每对平均包含 1.7 张图片和 6.0 个句子;
  • 骨骼图像:从罗德岛医院系统获得一组肌肉骨骼图像-文本对。 继胸部图像之后,肌肉骨骼图像构成典型医院中第二常见的放射线图像类型。 该数据集总共包含 48k 图像-文本对,每对平均包含 2.5 个图像和 8.0 个句子。

2.3 应用及表现

作者进行了分类任务Zero-shot任务的测试。

2.3.1 分类任务

作者了四个下游分类任务场景,并使用不同比例(1%,10%,all)的任务数据集对模型进行调整(两种方式: linear probe只训练最后的分类层,fine-tuning)。

  1. RSNA Pneumonia Detection: 是否肺炎的二分类任务;
  2. CheXpert image classification: 对肺部的多标签分类任务;
  3. COVIDx image classificatio: 是否新冠肺炎,普通肺炎,正常的三分类任务;
  4. MURA bony abnormality detection: 判断骨骼肌肉是否正常的二分类任务;

从上到下依次是:

  • 随机初始化;
  • ResNet50在ImageNet上预训练的;
  • Caption-LSTM是看图说话的一个网络;
  • Caption-Transformer与上一个一样,但是用Transformer取代了LSTM(是COCO image captioning -benchmar);
  • Contrastive-Binary也是对比学习的一个网络,就是将一组配对输入,判断其是否属于一对,来当作预训练任务;
    在这里插入图片描述

2.3.2 Zero-shot任务

像CLIP一样,多模态最强的还是Zero-shot,不需要微调,通过图片的提示进行分类. 作者测试了两种Zero-shot任务.

  • Image-Image: 将所有图片传入Image-Encoder,与所有求相似,聚为一堆;(一张图片做query去与其他所有图片求相似度,就是对比学习特征空间的相似度问题) 还是CheXpert数据集,但这个数据集不是一个多标签分类任务嘛,作者将只有一个标签的那些图片抽出来当作query(经过专家处理筛选之后,每个类别留了10张);用这些query去与其他求相似度,得到结果,如果那个图片也有query这个标签就是正例,否则就是负例;
  • Text-image: 叫专家写了CheXpert中每个标签的症状(写了5份),然后进入text Encoder,与所有进入Image-Encoder的特征求相似(当然这些特征都要过MLP层);判别正负例的方法与上面的一样;

在这里插入图片描述

3. CLIP

CLIP的英文全称是Contrastive Language-Image Pre-training,即一种基于对比文本-图像对的预训练方法或者模型。CLIP是一种基于对比学习的多模态模型,与CV中的一些对比学习方法如moco和simclr不同的是,CLIP的训练数据是文本-图像对:一张图像和它对应的文本描述,这里希望通过对比学习,模型能够学习到文本-图像对的匹配关系。为了训练这个模型,OpenAI采集了超过4亿的图像-文本对。CLIP在诸多多模态任务上取得了非常好的效果,例如图像检索,地理定位,视频动作识别等等,而且在很多任务上仅仅通过无监督学习就可以得到和主流的有监督算法接近的效果。CLIP的思想非常简单,但它仅仅通过如此简单的算法也达到了非常好的效果,这也证明了多模态模型强大的发展潜力。

3.1 模型设计

CLIP的核心思想是将图像和文本映射到同一个特征空间。这个特征空间是一个抽象的概念,例如当我们看到一条狗的图片的时候,我们心中想的是狗,当我们读到狗的时候我们想的也是狗,那么我们心中想象的狗,便是“特征空间”。

所以CLIP也是由两个编码器组成,如图所示:

  • 图像编码器Image Encoder:用于将图像映射到特征空间,可以采用常用CNN模型或者vision transformer。
  • 文本编码器Text Encoder:用于将文本映射到相同的特征空间,可以采用NLP中常用的text transformer模型。
    在这里插入图片描述
    在模型训练过程中,我们取到的每个batch由 N   N\, N (文中 N   N\, N =32768)个图像-文本对组成。这 N   N\, N个图像送入到图像编码器中会得到 N   N\, N个图像特征向量 ( I 1 ,   I 2 , ⋅ ⋅ ⋅ , I N ) ({I}_{1},\, {I}_{2},\cdot \cdot \cdot ,{I}_{N}) (I1,I2,,IN),同理将这 N   N\, N个文本送入到文本编码器中我们可以得到 N   N\, N个文本特征向量 ( T 1 ,   T 2 , ⋅ ⋅ ⋅ , T N ) ({T}_{1},\, {T}_{2},\cdot \cdot \cdot ,{T}_{N}) (T1,T2,,TN) 。因为只有在对角线上的图像和文本是一对,所以CLIP的训练目标是让是一个图像-文本对(比如 ( I 1 , T 1 ) ({I}_{1},{T}_{1}) (I1,T1))的特征向量相似度尽可能高,这里相似度的计算使用的是向量内积。通过这个方式,CLIP构建了一个由 N   N\, N个正样本和 N 2 − N {N}^{2}-N N2N个负样本组成的损失函数。另外,因为不同编码器的输出的特征向量长度不一样,CLIP使用了一个线性映射将两个编码器生成的特征向量映射到统一长度,CLIP的计算过程伪代码如下。
# image_encoder - 残差网络 或者 ViT
# text_encoder - CBOW 或者 文本Transformer
# I[n, h, w, c] - 训练图像
# T[n, l] - 训练文本
# W_i[d_i, d_e] - 训练图像生成的特征向量
# W_t[d_t, d_e]  - 训练文本生成的特征向量
# t - softmax的温度(temperature)参数

# 提取多模态的特征
I_f = image_encoder(I) #[n, d_i]
T_f = text_encoder(T) #[n, d_t]

# 多模态特征向特征空间的映射
I_e = l2_normalize(np.dot(I_f, W_i), axis=1)
T_e = l2_normalize(np.dot(T_f, W_t), axis=1)

# 计算余弦相似度
logits = np.dot(I_e, T_e.T) * np.exp(t)

# 构建损失函数
labels = np.arange(n)
loss_i = cross_entropy_loss(logits, labels, axis=0)
loss_t  = cross_entropy_loss(logits, labels, axis=1)
loss = (loss_i + loss_t)/2
  • 一个图片经过Image_encoder得到特征 I f {I}_{f} If,一个文本经过text_encoder得到特征 T f {T}_{f} Tf
  • 两个特征分别经过不同的FC层(目的是将单模态的特征转化为多模态,因为图片的特征可能本身就与文本的不一致,需要转换,但是这里没接激活函数,因为作者发现在多模态下接不接都一样);
  • 再做一次L2归一化;
  • 计算余弦相似度,得到logits;
  • logits与GT计算交叉熵目标函数;
  • 而这里的GT就是一个单位阵(因为目标是配对样本之间相似性最强为1,而其他为0);
  • 最后将图片的loss与文本的loss加起来求平均即可;

下面将ConVIRT和CLIP做一个比较,从模型上来看CLIP是ConVIRT的简化版(参考鱼子酱):

  • ConVIRT中的image encoder的参数是ImageNet初始化的,而CLIP直接用random初始化;
  • ConVIRT的projection head是non-linear的,而CLIP采用linear的projection;(ConVIRT在后面的实验中也提到将non-linear换做linear,模型效果会下降;但CLIP中则说二者没有区别。)
  • CLIP去掉了ConVIRT中text transformation(指均匀从text中采样句子);
  • CLIP的image transformation只用了resize和squared crop;
  • CLIP loss中的temperature参数τ是可学的。
  • 另外,二者的loss在形式上有些区别,ConVIRT的loss直接通过最大化 < u i , v i > <{u}_{i},{v}_{i}> <ui,vi>或者 < v i , u i > <{v}_{i},{u}_{i}> <vi,ui>;而CLIP加入了标签,用 < u i , v i > <{u}_{i},{v}_{i}> <ui,vi> 的结果和标签去做交叉熵。(具体见修仙:[论文笔记] CLIP4.3 小节);

3.2 数据集及训练

对比开放的计算机视觉应用,目前的所有的视觉公开数据集(例如ImageNet等)的应用场景都是非常有限的,为了学习到通用的图像-文本多模态通用特征,我们首先要做的便是采集足够覆盖开放计算机视觉领域的数据集。这里OpenAI采集了一个总量超过4亿图像-文本对的数据集WIT(WebImage Text)。为了尽可能的提高数据集在不同场景下的覆盖度,WIT的首先使用在英文维基百科中出现了超过100次的单词构建了50万个查询,并且使用WordNet进行了近义词的替换。为了实现数据集的平衡,每个查询最多取2万个查询结果。

3.2.1 图像编码器

CLIP的图像编码器选择了5个不同尺寸的残差网络以及3个不同尺寸的ViT,并对模型细节做了调整,具体介绍如下。

  1. 残差网络
    CLIP采用了ResNet-50作为基础模型,并在其基础上做了若干个调整。主要调整如下:

    • 引入了模糊池化[4]:模糊池化的核心点是在降采样之前加一个高斯低通滤波;
    • 将全局平均池化(Global Average Pooling)替换为注意力池化,这里的注意力是使用的Transformer中介绍的自注意力(Self-Attention)。

    CLIP采用的Transformer共有5组,它们依次是ResNet-50,ResNet-100以及按照EfficientNet的思想对ResNet-50分别作4倍,16倍和64倍的缩放得到的模型,表示为ResNet-50x4,ResNet-50x16,ResNet-50x64。

  2. Vision Transformer
    CLIP的图像编码器的另一个选择是ViT,这里的改进主要有两点:

    • 在patch embedding和position embedding后添加一个LN;
    • 换了初始化方法。
      ViT共训练了ViT-B/32,ViT-B/16以及ViT-L/14三个模型。

3.2.2 文本编码器

CLIP的文本编码器使用的是Transformer,它共有12层,512的隐层节点数以及8个头。

3.3 应用及表现

3.3.1 Zero-shot任务

3.3.1.1 推理过程

与CV中常用的先预训练然后微调不同,CLIP可以直接实现zero-shot的图像分类,即不需要任何训练数据,就能在某个具体下游任务上实现分类,这也是CLIP亮点和强大之处。用CLIP实现zero-shot分类很简单,如图所示:
在这里插入图片描述
步骤可以整理成下面这样:

  • Sample所有N个class,得到N个input text,都经过text encoder编码得到对应的N个class text embedding(我这里之所叫embedding而不叫representation是想说明这个特征是经过encoding和projection得到的);
  • Sample一个要预测的image,得到其image embedding;
  • 以N个text embedding为key,以当前image embedding为query,算cosine相似度,相似度最高的即为Top-1的prediction class。

这里我们给出了一个基于CLIP的一个实例(参考官方notebook),这里任务共有6个类别:“dog”, “cat”, “bird”, “person”, “mushroom”, “cup”,首先我们创建文本描述,然后提取文本特征。然后我们读取要预测的图像,输入Image Encoder提取图像特征,并计算与文本特征的余弦相似度。预测过程的代码如下:

# 首先生成每个类别的文本描述
labels = ["dog", "cat", "bird", "person", "mushroom", "cup"]
text_descriptions = [f"A photo of a {label}" for label in labels]
text_tokens = clip.tokenize(text_descriptions).cuda()

# 提取文本特征
with torch.no_grad():
    text_features = model.encode_text(text_tokens).float()
    text_features /= text_features.norm(dim=-1, keepdim=True)
# 读取图像
original_images = []
images = []
texts = []

for label in labels:
    image_file = os.path.join("images", label+".jpg")
    name = os.path.basename(image_file).split('.')[0]

    image = Image.open(image_file).convert("RGB")
    original_images.append(image)
    images.append(preprocess(image))
    texts.append(name)

image_input = torch.tensor(np.stack(images)).cuda()

# 提取图像特征  
with torch.no_grad():
    image_features = model.encode_image(image_input).float()
    image_features /= image_features.norm(dim=-1, keepdim=True)

# 计算余弦相似度(未缩放)
similarity = text_features.cpu().numpy() @ image_features.cpu().numpy().T

相似度如下所示,可以看到对于要预测的6个图像,按照最大相似度,其均能匹配到正确的文本标签:
在这里插入图片描述
进一步地,我们也可以对得到的余弦相似度计算softmax,得到每个预测类别的概率值,注意这里要对相似度进行缩放:

logit_scale = np.exp(model.logit_scale.data.item())
text_probs = (logit_scale * image_features @ text_features.T).softmax(dim=-1)
top_probs, top_labels = text_probs.cpu().topk(5, dim=-1)

得到的预测概率如下所示,可以看到6个图像,CLIP模型均能够以绝对的置信度给出正确的分类结果:
在这里插入图片描述

3.3.1.2 Prompt engineering and prompt ensembling

prompt在这里起到的是“提示”作用.

那么为什么要去做prompt呢?作者给出了两个理由:1. Polysemy多义性;例如remote这个词,名词的时候是“遥控器”,形容词的时候是“遥远”;再例如ImageNet中的cranes(鹤) 和construction cranes(起重机),属于名词的歧义性 2.就是上面说的训练的时候用的句子,如果推理不做prompt,直接用单词,会出现distribution gap。

因此作者做了一个简单的prompt:将类别标签扩展为‘A photo of a {object}’这么一个句子,然后将这个句子和图片输入到预训练模型中去做配对,最终输出匹配度最高的标签。除了这种方法,还有其他很多prompt的方法,运用我们知道的一些先验知识去进行prompt。例如,我们对Oxford-IIIT Pets这样一种全都包含的动物的数据集来说,可以写成“A photo of a {label},a type pf pet”,这样可以大大提高分类的准确率。

简单来说,prompt learning的核心是通过构建合适prompt(提示)来使预训练模型能够直接应用到下游任务,这和之前的预训练+微调属于不同的范式。论文也说了,如果我们直接采用类别标签作为文本描述,那么很多文本就是一个单词,缺少具体的上下文,而且也和CLIP的训练数据不太一致,效果上会不如采用A photo of {label}(ImageNet数据集上可以提升1.3%)。论文也实验了采用80个不同的prompt来进行集成,发现在ImageNet数据集上能带来3.5%的提升,具体见CLIP公开的notebook

3.3.1.3 表现

首先是CLIP和17年的一篇工作Learning Visual N-Grams from Web Data的在3个分类数据集上zero-shot效果对比,如下表所示,可以看到CLIP模型在效果上远远超过之前的模型,其中在ImageNet数据集可以达到76.2,这和全监督的ResNet50效果相当,不用任何训练数据就能达到这个效果是相当惊艳的
在这里插入图片描述
更进一步地,论文还对比了zero-shot CLIP和ResNet50 linear probing(ImageNet数据上预训练,在加上线性分类层进行finetune)在27个数据集上表现,如下图所示,其中在16个数据集上CLIP可以超过ResNet50。但是在一些特别的,复杂的或者抽象的数据集上CLIP表现较差,比如卫星图像分类,淋巴结转移检测,在合成场景中计数等,CLIP的效果不如全监督的ResNet50,这说明CLIP并不是万能的,还是有改进的空间。如果认真看下图的话,CLIP表现较差的竟然还有MNIST数据集,分类准确度只有88%,这是不可思议的,因为这个任务太简单了,通过对CLIP训练数据进行分析,作者发现4亿的训练数据中基本上没有和MNIST比较相似的数据,所以这对CLIP来说就属于域外数据了,表现较差就比较容易理解了。这也表明:CLIP依然无法解决域外泛化这个深度学习难题

在这里插入图片描述

3.3.2 Zero-shot任务

作者认为对于上述那些难得数据集,Few-shot会比Zero-shot的衡量更合理, 即只用少量的样本来微调模型;因此作者就做了Few-shot的实验(横坐标代表每个类里面用了几个训练样本). 横坐标是指在每个类别中选出了几个训练样本,纵坐标就是模型的准确率了(在20个数据集上的平均结果,因为有7个数据集中有些训练样本不足16个);
这里对比了3个模型:在ImageNet21K上训练的BiT-M ResNet-152x2,基于SimCLRv2训练的ResNet50,以及有监督训练的ResNet50。可以看到CLIP的zero-shot和最好的模型(BiT-M)在16-shot下的性能相当,而CLIP在16-shot下效果有进一步的提升。另外一个比较有意思的结果是:虽然CLIP在few-shot实验中随着样本量增加性能有提升,但是1-shot和2-shot性能比zero-shot还差,这个作者认为主要是CLIP的训练和常规的有监督训练存在一定的差异造成的。
在这里插入图片描述

3.3.3 表征学习(representation Learning)

除此之外,论文还进行了表征学习(representation Learning)实验,即自监督学习中常用的linear probe:用训练好的模型先提取特征,然后用一个线性分类器来有监督训练。下图为不同模型在27个数据集上的average linear probe score对比,可以看到CLIP模型在性能上超过其它模型,而且计算更高效:
在这里插入图片描述

4. PLIP

在研究中首先对收集的 OpenPath 数据集进行了完整的描述,并提出了 PLIP(病理语言-图像预训练)模型,该模型通过对比学习对来自OpenPath的成对图像和文本进行训练。接下来,作者团队对提出的模型进行了全面评估,主要评估其通过零样本学习适应新文本的能力。此外,PLIP可以作为一种通用的图像编码器来捕获更好的病理图像表示,从而可以通过线性探测来训练和分类新数据集,进而提高不同组织类型和学习任务的性能。这种通用图像编码器对于注释数据有限的临床任务特别有帮助。最后,PLIP 为病理图像提供了灵活的搜索引擎,可以作为临床医生和病理学实习生的强大教育和信息共享工具。

4.1 模型设计

与其他仅在分类标签上训练的监督学习和分割病理模型不同,自然语言文本丰富了语义和相关知识,这可以进一步增强对图像的理解,并促进多种下游应用。在这项研究中,作者团队在OpenPath上使用对比学习对预训练的对比语言-图像预训练(CLIP)模型进行了微调。为了完成对比学习,本研究集成了病理图像预处理流程,包括图像降采样,随机裁剪和数据增强(方法)。在之后的训练阶段,PLIP模型从文本和图像编码器中生成两个嵌入向量,然后通过对比学习优化这些向量,使其对每个配对的图像和文本向量相似,对非配对的图像和文本不相似。

在这里插入图片描述
建立的 PLIP 模型,其架构与CLIP描述的架构相同。该架构基于视觉变压器作为图像编码器(ViT-B/32,可以接收大小 = 224 × 224 像素的输入图像)和文本变压器作为文本编码器(最大序列长度 = 76 tokens) . 图像最初调整为最大尺寸 512 像素;然后,它们在输入图像编码器之前被随机裁剪为 224 × 224 像素。图像和文本编码器都输出 512 维向量,并通过最小化给定批次的对比损失进行优化。对比学习在成对的图像和文本中施加了更高的余弦相似度,迫使模型学习图像和文本之间的正确关系。

4.2 数据集及训练

美国和加拿大病理学会和病理学主题标签本体项目推荐了32 个 Twitter 病理学亚专业的特定主题标签。作者团队使用这 32 个标签来检索从2006年3月21日(第一个Twitter帖子的日期)到2022年11月15日的相关推文,以建立迄今为止最大的公共病理学数据集,其中每个图像都有自然语言描述。

在检索数据时,作者遵循了Twitter和其他实体的使用政策和指南。为了确保数据质量,OpenPath遵循严格的队列纳入和排除协议,包括删除转发、敏感推文和非病理图像,以及额外的文本清理。最终的 OpenPath 数据集包括:(1)推文:来自 Twitter 帖子(推文)的 116,504 个图像-文本对,跨 32 个病理学亚专业的特定主题标签;(2) 回复:59,869对图片-文本对,这些图片-文本对来自推文中获得最多赞的相关回复,如果适用的话;(3) PathLAION:从互联网和 LAION 数据集中抓取的 32,041 个附加图像-文本对。OpenPath中的标题使用了17个单词的中位数来描述相应图像中的医疗状况。

4.3 应用及表现

4.3.1 Zero-shot任务

在本研究中,作者团队对PLIP 的零样本能力进行了系统评估,该能力能够在不需要再培训的情况下大规模学习新课程。评估是在四个外部验证数据集上进行的:(1) 9种不同组织类型的Kather结肠数据集;(2) PanNuke数据集(良性和恶性);(3) DigestPath数据集 (良性和恶性);(4) WSSS4LUAD 数据集(肿瘤和正常)。对数据集的评估通过将标签转换为句子(例如,将“肿瘤”转换为“肿瘤的 H&E 图像”)来进行。作为自然比较,作者团队还将 PLIP 与原始 CLIP 模型进行了比较。

在这里插入图片描述

PLIP 通过零样本迁移学习预测新类别。a,零样本分类的图示。通过选择与输入图像余弦相似度最高的候选文本来确定分类输出。b,四个外部验证数据集:具有九种组织类型的 Kather 结肠数据集;PanNuke数据集(良性和恶性组织);DigestPath 数据集(良性和恶性组织);和 WSSS4LUAD 数据集(肿瘤和正常组织)。c,四个数据集的加权 F1 分数的零样本性能。请注意,Kather colon 数据集中的性能基于九类零样本学习评估,而其他数据集的性能基于二进制零样本学习评估。在每个箱线图中,中心线表示平均值,误差条表示 95% CI (置信区间)。每个数据集的测试样本数量:Kather colon ( n  = 7,180);泛核(n  = 1,888);摘要路径(n  = 18,814);和 WSSS4LUAD(n  = 3,028)。d,Kather 冒号数据集的混淆矩阵。实际标签和预测标签分别显示在行和列中。e,每种器官类型内 PanNuke 数据集的零样本评估。

比较结果通过评估加权 F1 分数(考虑类别不平衡时精确度和召回率的综合衡量标准)考量,而通过作者方面的分析表明,PLIP 始终优于基线 CLIP 模型以及预测多数类别(或多数)的结果。例如,PLIP 在 Kather 结肠数据集(九个类别)上实现了 F1 = 0.565(95% 置信区间 (CI) = 0.559–0.572)。在 PanNuke 数据集(良性与恶性)中,PLIP 达到 F1 = 0.656(95% CI = 0.639–0.667)。在 DigestPath 数据集中(良性与恶性),PLIP 达到 F1 = 0.832 (95% CI = 0.829–0.834)。在 WSSS4LUAD(肿瘤与正常)中,PLIP 达到 F1 = 0.734(95% CI = 0.723–0.745)。

因此可以说,本研究证明了,在预测大多数类别时,PLIP的所有这些性能都大大高于CLIP。研究还计算了Matthews相关系数(MCC),结果表明 PLIP 是所有数据集中的最佳模型。

4.3.2 图像嵌入分析及Linear probing

为了更深入地了解 PLIP 图像编码器的功能,作者团队使用了四个不同的测试数据集(Kather colon、PanNuke、DigestPath和WSSS4LUAD)来评估图像表示的能力。首先用PLIP图像编码器计算图像嵌入,然后通过均匀流形近似和投影进行降维。在没有对这些数据集进行训练的情况下,作者团队发现 PLIP 仍然可以有效地区分 Kather 结肠数据集中的各种组织亚型。与其他基线模型的性能相比(例如扩展数据中的 CLIP 模型),PLIP 有效区分了正常结肠粘膜 (NORM) 和结直肠腺癌上皮 (TUM),尽管两者具有相似的形态和纹理模式,而且无法被其他基线模型所区分识别。

在PanNuke数据集中,PLIP揭示了有趣的器官特异性分离,特别突出了乳房和结肠亚群。事实上,结肠集合形成了两个相对干净的亚簇,其中一个富集了恶性组织图像。此外,PLIP模型分别从DigestPath和WSSS4LUAD数据集中分离了正常、良性、肿瘤和恶性图像斑块。对于DigestPath,我们也注意到不同图像下采样率和染色变化之间的明显分离。

受这些发现的鼓舞,作者团队再次提出假设——假设PLIP 图像编码器可以作为多种病理图像分类任务的首选预训练主干。为此,他们在四个不同数据集(Kather colon、PanNuke、DigestPath 和 WSSS4LUAD)的训练分割的图像嵌入向量之上训练了一个简单的线性分类器,并将四个数据集的测试分割与两个基线模型(原始CLIP模型的图像编码器和深度神经网络的多任务预训练(MuDiPath))的分类性能进行了比较。

在这里插入图片描述

图像嵌入分析和Linear probing结果。a,从 Kather 数据集中的 PLIP 模型生成的图像嵌入。b,从 PanNuke 数据集中的 PLIP 模型生成的图像嵌入。c,从 DigestPath 数据集中的 PLIP 模型生成的图像嵌入。d,从 WSSS4LUAD 数据集中的 PLIP 模型生成的图像嵌入。e,Linear probing迁移学习的图示。“冻结”意味着线性分类器的损失将不会用于更新图像编码器的参数。f,测试集中的 F1 分数,其平均值(±标准差)来自使用不同随机种子的五次重复实验。“平均”列显示四个数据集的平均性能。P值是使用双面学生t检验计算的,并显示在底部两行中。

结果表明,与仅使用分类标签训练的传统深度学习模型相比,PLIP 可以实现相当或更高的性能。这可能是由于文本注释的丰富内容,这可能使模型能够利用更高级别的语义视觉语言关系,并提供对图像更全面的理解,包括视觉和亚视觉细胞间模式。

4.3.3 与监督模型的fine-tuning比较

为了进一步了解 PLIP 的优势,作者团队通过在四个外部验证数据集上进行微调,将 PLIP 与端到端深度学习模型 ViT-B/32 进行了比较。ViT-B/32 是一种最先进的模型,具有与 PLIP 图像编码器相同的架构,因此有助于直接比较 PLIP 对比学习的优势。他们通过使用不同比例的训练数据(1%、5%、10%、50%和100%)来评估数据效率方面的微调性能。从图中可以看出,PLIP具有更好的性能;并且,当训练集规模较小时,相对于端到端监督学习的改进尤其明显。

在这里插入图片描述

与监督深度学习模型的比较。通过将 PLIP 图像编码器与 ViT-B/32(在 ImageNet 上预训练)进行比较,对a、Kather 结肠数据集训练分割、b、PanNuke 数据集、c、DigestPath 数据集和d 、WSSS4LUAD 数据集进行微调。在线图中,通过使用 10 个不同的随机种子对数据进行子集化并运行模型来呈现平均值和 95% 置信区间。对于较小的数据集,PLIP 的改进尤其大。

4.3.4 图像检索

与零样本学习类似,零样本学习可以从给定图像的候选池中识别最接近的文本。而图像检索是一种可以从给定文本或图像的候选池中识别最接近的图像的技术。这是通过直接计算同一嵌入空间下每对图像-文本或图像-图像的余弦相似度来完成的。

  1. PLIP可以基于给定的文本输入来识别和检索最具有相关性相关的图像,也称为文本到图像检索。为了评估这种能力,作者团队收集了四组带有说明文字的图像:(1)Twitter 验证数据集(Twitter);(2)PathPedia图像(PathPedia);(3) PubMed病理图像34张(PubMed);(4)病理学书籍(书籍)。Twitter 验证数据集包含了 2022 年 11 月 16 日至 2023 年 1 月 15 日期间的 2023 对图像-文本配对,并且预计具有与 PLIP 模型训练相似的图像-文本分布。相比之下,PathPedia(图像检索候选数量 = 210)、PubMed(1,419 个图像文本对)和 Books(558 个图像文本对)则由相对简洁的文本组成。

在这里插入图片描述

病理图像的文本到图像检索。a,从文本输入检索病理图像的图示。b,四个验证数据集中每个句子的单词数的密度图。c,Twitter 验证数据集的描述和示例文本标题。d,PathPedia、PubMed 和 Books 数据集的描述以及示例文本标题。e,验证数据集的图像检索性能。f,每个病理亚专业特定主题标签内 Recall@10 的文本到图像检索性能。g,分别将 PLIP 模型与 CLIP 和随机模型进行比较时,Recall@10 的候选数量和倍数变化之间的 Spearman 相关性。回归估计值以灰色或紫色显示,95% CI。

在评估检索性能方面,作者团队使用了 Twitter 验证数据集上的 Recall@10 和 Recall@50 指标来评估图像检索性能。评估过程中,研究者发现,找到与给定文本相关的确切图像十分具有挑战性,因为可能会出现许多相似的图像只与一个描述相匹配的情况。尽管如此,PLIP的图像检索性能相较CLIP来说还是提高了不少,比如Recall@10 = 0.271(比CLIP高4.5倍),Recall@50 = 0.527(比CLIP高4.1倍)。这表明,在前50张图像中检索目标图像,有52.7%的机会检索成功,因此这是一项具有挑战性但可以实现的任务。

此外,与基线CLIP和不同数据集的随机性能相比,PLIP表现出了显著的性能改善。PLIP 在 Twitter 验证数据集上展示了相对于基线方法的最大优势(与随机检索相比,Recall@10 和 Recall@50 的倍数变化 = 55.3 和 21.4)。

  1. 作者团队通过计算目标图像的图像嵌入和候选图像的图像嵌入之间的相似度来执行图像到图像检索,评估最初是根据 Twitter 验证数据集进行的。之后,研究者们通过Recall@10和Recall@50将每个目标图像与所有其他图像进行比较,这样可以测量检索到的前10名和前50名中来自同一Twitter帖子的图像数量。接着,作者团队通过将 PLIP 与三个基线模型进行比较来进行基准比较:CLIP,MuDiPath和SISH5。结果表明,四种模型都能够检索相关图像,其中PLIP模型的性能最好,Recall@10 = 0.646。同样,PLIP在Recall@50 = 0.814时获得了最佳性能。

在这里插入图片描述

病理图像的图像到图像检索。a,图像到图像检索的图示。b,Twitter 验证数据集上的图像到图像检索分析的图示。c,Twitter 验证数据集上的图像到图像检索性能。框中的值代表 Recall@10 和 Recall@50 分数以及与随机性能相比的倍数变化。d,Kather 结肠数据集上的图像到图像检索性能。e,PanNuke 数据集上的图像到图像检索性能。f,KIMIA Path24C 数据集上的图像到图像检索性能。g,文本到图像检索的示例。h,图像到图像检索的示例(以有丝分裂图为特征)。

最后,文本到图像和图像到图像检索系统可以充当图像搜索引擎,使用户能够匹配多个查询中的图像,并根据句子描述或输入图像检索最相关的图像。这个通用系统可以理解语义和相关知识,例如“被脂肪包围的乳腺肿瘤”。此功能为探索和检索大型病理数据集提供了强大的工具,使用户能够高效、准确地识别满足特定标准的相关图像。此外,图像到图像检索可用于检索与目标图像输入相似的相关病理图像,例如包含有丝分裂图的图像,这证明了其从输入图像理解关键概念的能力。

4.3.5 研究的局限性

  • Twitter 数据嘈杂性
  • 放大倍率与染色方案的识别、解释问题
    尽管预先将几种图像预处理和转换算法应用于图像编码器,但识别和解释病理图像块的各种放大倍数和不同的染色风格仍然是一个具有挑战性的问题。通过对不同数据进行训练,PLIP 展示了识别和适应各种放大倍率和染色方案的图像的潜力。
  • 尚待优化的零样本学习
    值得注意的是,使用提示的零样本来进行分类可能不稳定,因为提示的变化可能会改变结。但根据研究团队的预计,持续努力优化提示将会带来零样本性能的进一步提高。图像检索任务需要更大的图像和标题数据集,以更好地理解模型的有效性。
  • PLIP的通用模型局限
    最后,虽然 PLIP 在多个任务和数据集上展示了其强大的性能,但重要的是要承认,针对单个任务优化的专用模型可以在这些特定领域胜过 PLIP 等通用模型。例如,专门训练用于预测 Kather 结肠数据集上的9种组织类型的 VGG19 模型达到了 0.943 的准确度,高于PLIP的线性探测精度0.913。
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐