返回列表

13th Place Solution for the UBC-OCEAN Competition

590. UBC Ovarian Cancer Subtype Classification and Outlier Detection (UBC-OCEAN) | UBC-OCEAN

开始: 2023-10-06 结束: 2024-01-03 医学影像分析 数据算法赛

作者:MPWARE 和 Raphaël Bourgade

排名:第13名

首先,我们要感谢Kaggle和赞助商举办这场有趣的研究竞赛。

上下文

方法概述

我们的最终解决方案是结合分离的高分TMA和WSI模型。对于WSI模型,我们使用了一些自监督学习(SSL)预训练的特征提取器,这些提取器在224像素的切片上执行,然后是多个实例学习(MIL)模型。TMA模型也采用了同样的方法,并增加了常规的Transformer和CNN骨干网络。异常值检测在后处理中进行,依赖于嵌入距离和概率分布。

提交的详情

WSI模型:

TMA模型:

后处理:
TMA模型使用ArcFace损失和ArcMarginProduct子中心模块进行训练,以尽可能分离每个类别的嵌入空间。这使得可以基于相似性距离检测异常值。由于我们没有真实的异常值/稀有类别的可靠样本,我们的距离阈值是在公共LB上微调的。使用了Faiss包来寻找最近邻。
我们还基于概率分布进行了另一种阈值处理。当所有概率都足够低时,我们将预测类别切换为异常值。该阈值在CV上校准,以避免超过10%的异常值,并在公共LB上进行了检查。

WSI模型训练

在训练WSI模型之前,我们的医学直觉以及这篇文章1支持我们假设亚型预测的相关信息可能更多位于低级别。因此,训练集中所有513个可用的WSI都被下采样到10倍放大倍数。由于这些WSI都具有黑色单色背景,我们随后进行了大津阈值处理,以丢弃所有背景切片。然后,我们将检测到的组织分割成N个不重叠的224像素切片。由于在提交期间由于时间限制无法推断肿瘤分割,我们决定在训练时保留所有肿瘤和非肿瘤切片。
然后,使用CTransPath和Lunit-DINO对这些N个切片进行编码,这两种特征提取器是在 diverse pathology dataset 上使用自监督学习训练的。根据这篇关于这些模型对染色变化鲁棒性的文章2,我们没有进行任何增强或归一化预处理。
然后,我们在加权集成中训练和评估了几个MIL架构。最佳CV是通过结合其中三个获得的:

MIL训练过程和参数:

  • CV4,分层分组K折
  • 无增强
  • 无归一化
  • 批量大小=1, epochs=32
  • AdamW优化器,CosineAnnealingLR, LR=5e-3
  • 交叉熵损失

TMA模型训练

UBC训练数据集只提供了25个TMA样本,并且根据描述,我们知道测试集中的TMA占多数。我们检测到大约65%到70%的图像边长小于6000像素。我们决定基于训练集中提供的WSI生成一些TMA。我们开发了一个自定义增强,详细记录在这个笔记本中:https://www.kaggle.com/code/mpware/ubc-tma-generator-from-wsi

tma_augmentation(p=1.0):
    return A.Compose([
        SimulateTMA((-1, -1), radius_ratio=(0.6, 1.0), ellipse_ratio=(0.85, 1.15), angle=(-90., 90.), 
                    background_color=(-1, -1, -1), background_color_ratio=(0.80, 1.0), 
                    noise_level=(20./5, 100./5), black_replacement_color=None, p=1.0, always_apply=True),
        A.OneOf([
            Stainer(ref_images=tma_images, method='vahadane', luminosity=True, p=0.34),
            Stainer(ref_images=None, method='macenko', luminosity=False, p=0.33),
            Stainer(ref_images=tma_images, method='reinhard', luminosity=False, p=0.33),
        ], p=0.60),        
    ], p=p)

其思想是识别具有肿瘤组织的切片,并裁剪出椭圆形状,就像操作员选取的真实TMA一样。

然后,根据25个TMA作为参考,对裁剪出的切片进行染色增强。由于WSI的放大倍数主要是x20,生成的TMA也是x20。以下是一些生成的样本:

最后一步是手动审查它们,删除生成不良的TMA(特别是当肿瘤掩码不可用/不完整时)。我们最好的私有LB(0.58)使用了这样的验证TMA。不幸的是,我们没有将其选为最终提交。

MIL训练过程和参数:

  • CV4,分层分组K折
  • 随机批采样器以平衡样本
  • 增强:染色:Vahadane, Macenko, Reinhard
  • 注意力掩码,批量大小=32, epochs=32
  • EMA
  • AdamW优化器,CosineAnnealingLR, LR=1e-3
  • 交叉熵损失

Transformer/CNN训练过程和参数:

  • ImageNet预训练骨干(Timm):
    • tiny_vit_21m_512.dist_in22k_ft_in1k
    • tf_efficientnetv2_s_in21ft1k
  • 增强:
    • H/V翻转,Rot90
    • 染色:Vahadane, Macenko, Reinhard
    • 随机亮度对比度/Gamma,色调饱和度值,颜色抖动,CLAHE
    • 高斯模糊,运动模糊,高斯噪声
    • Cut Mix,DropOut
  • EMA
  • 批量大小=32, Epochs=32
  • AdamW优化器,CosineAnnealingLR, LR=1e-4
  • 交叉熵损失

在检查交叉验证的稳定性后,使用完整数据训练模型。
以下是TinyVit在生成的23k TMA上训练的嵌入的2D t-SNE投影:

其他有用的策略或方法

验证相当困难,MIL模型过拟合很快。使用EMA有助于限制它。

模型推理

大部分推理时间花在图像加载/切片上。我们实现了多进程推理以利用所有CPU,但优化以平衡由于并发加载大图像导致的内存问题。它将所有图像的加载+切片时间减少到约5小时30分钟-6小时。特征提取是最耗时的任务,这就是为什么我们限制自己使用两个最好的特征提取器。我们将切片数量限制为最多350个,最后我们的推理运行约11小时15分钟-30分钟。

什么没有工作或改进?

快速总结没有工作或没有改进的内容:
Resnet50-based特征提取器,如RetCCL和Lunit-BT。
外部数据:

通常,添加更多数据总是更好,但在这里它对CV和LB都没有帮助。然而,许多幻灯片的质量非常差,这可以解释这一点。此外,一些幻灯片的标注并不明显。
基于ImageNet预训练骨干训练WSI模型。它有效,但Ctranspath和LunitDINO outperformed它。
下采样到x5用于WSI模型(而不是x10)
训练肿瘤分割模型以采样肿瘤TMA,但由于亚型具有显著的形态学差异,我们更愿意训练基质分割模型并通过互补性预测癌变掩码。最后,由于固体和粘液质结构之间上皮表面积的较大变化,无法设置TMA选择的唯一阈值。
未尝试伪标签。

来源

我们 solving this kaggle 很有趣。需要处理大量数据,除了ML挑战外,优化推理速度也是一个挑战。

Raphaël Bourgade 和 MPWARE

同比赛其他方案