返回列表

[14th Place Notes] Image Agumentation + Domain Adaptation + ABMIL

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

开始: 2023-10-06 结束: 2024-01-03 医学影像分析 数据算法赛
第14名笔记:图像增强 + 领域自适应 + ABMIL

第14名笔记:图像增强 + 领域自适应 + ABMIL

这是我第一次参加Kaggle竞赛,一段愉快且富有教育意义的旅程。以下是我的一些关键收获:

==================================================

模型基本结构

1个骨干网络(densenet201)用于实例级特征提取 >> 2个ABMIL模型(TMA和WSI分开)用于包级分类

==================================================

训练流程

  • 使用152个WSI掩码提取我确定类型的图块用于骨干网络训练
  • 锁定骨干网络进行特征提取,在513个WSI数据集上应用MIL训练,使用一个带有自己分类器的轻量级注意力模型。包分类器的参数继承自骨干网络,在MIL训练期间使用较低的学习率
  • 使用TMA样本进行无监督领域自适应训练,并在整个训练过程中监控模型在TMA上的性能

==================================================

推理流程

  • 所有图像都被切分为224×224图块:
    WSI缩小0.5倍,TMA缩小0.25倍;
    WSI按224网格切分,TMA按120网格切分;
    一个包的最大图块数设置为512(针对大型WSI)
  • 单个骨干网络共享用于WSI和TMA的特征提取。它还执行实例级预测,只有被分类为癌症类型的图块才会被发送到注意力模型(健康或死亡的图块被剔除)
  • 两个注意力模型分别专门用于WSI和TMA,将图块特征转换为包标签,使用0.4的softmax置信度阈值将低置信度预测重新标记为"Other"

==================================================

探索过程中的突破

图像增强

了解到TMA和WSI在染色、颜色和清晰度上差异显著,我实现了广泛的增强技术。这包括自定义工具,如使用圆形掩码使WSI图块更接近TMA。基于我的LB表现,我认为图像增强是提高模型在TMA上泛化能力的关键步骤。

领域自适应

尽管如此,在WSI图块上训练的模型在TMA上的表现仍不如我的预期。因此我使用了领域对抗训练技术,从经典的DANN启发式领域自适应toAlign。关键思想是利用有限的TMA图像帮助模型提取更多任务相关且更少领域相关的特征,而不泄露它们的标签。这是我LB分数提升的第二关键步骤。

训练期间,我使用TMA准确率积极监控模型在TMA上的迁移能力:

相关资源:
Domain-Adversarial Training of Neural Networks: https://arxiv.org/abs/1505.07818
Heuristic Domain Adaptation: https://arxiv.org/abs/2011.14540
ToAlign: Task-oriented Alignment for Unsupervised Domain Adaptation: https://arxiv.org/abs/2106.10812

AB-MIL(基于注意力的深度多实例学习)

我使用了最基本的注意力MIL模型,带有自注意力核,其影响我不太清楚。基于我的观察,如果特征提取器训练良好,模型在公共LB上使用基本MIL(最大/平均池化)表现足够好。然而,AB-MIL在我的本地验证集上提供了更好的准确率,因此理论上更稳定和优越的性能。

相关资源:
Attention-based Deep Multiple Instance Learning: https://arxiv.org/abs/1802.04712
Kernel Self-Attention in Deep Multiple Instance Learning: https://arxiv.org/abs/2005.12991

==================================================

发现不太有用的方法

  • 特征增强
    在应用各种图像增强方法后,我试图进一步缩小WSI和TMA之间的差距。然而,尝试直接在提取的特征上添加噪声被证明是无效的。
    相关资源:
    A Simple Feature Augmentation for Domain Generalization: https://openaccess.thecvf.com/content/ICCV2021/papers/Li_A_Simple_Feature_Augmentation_for_Domain_Generalization_ICCV_2021_paper.pdf
  • 切换骨干网络
    我尝试了不同类型的骨干网络,从经典的resnet到流行的efficientnet,但都没有我的pipeline中densenet表现更好
  • 用于异常值检测的传统异常检测技术
    我尝试在提取的特征上使用孤立森林、DBSCAN,发现这些方法甚至无法区分现有的癌症类型。我很快意识到这些方法不可能超越我专门训练的分类器。对我来说这是一条绝对错误的道路

==================================================

未来可能的改进

  • 基础训练技术:
    标签平滑
    Mixup和CutMix
    交叉验证寻找最佳骨干网络+ABMIL组合
    基本MIL方法使用中值平均代替最大/平均
    使用BCEWithLogitsLoss。与交叉熵不同,它独立计算每个标签
    使用16位浮点训练以提高速度,通常不会损害性能
  • 更智能的区分异常值的方法:
    使用熵进行阈值处理
    将底部5或10百分位的分数预测为Other
    直接使用外部其他癌症类型进行训练
    使用现有类型合成图像作为"Other"数据进行训练(我怀疑其有效性,但似乎也有效)
  • 我完全没有使用模型集成。有多种集成方式:
    相同结构但在不同尺度上训练的骨干网络集成
    不同结构骨干网络的集成
    不同骨干网络(如ConvNext、HoRNet、EfficientNetV1和EfficientNetV2)预测同一输入的不同标签集,使用sigmoid激活跨模型组合/比较独立概率
    不同结构注意力模型的集成
  • 尽管我对不同骨干网络的测试不成功,但许多LB分数最高的团队都提到了在病理学数据集上专门训练的模型,我认为这应该非常有帮助:
    CTransPath ( https://github.com/Xiyue-Wang/TransPath )
    LunitDINO ( https://github.com/lunit-io/benchmark-ssl-pathology )
    iBOT-ViT ( https://github.com/owkin/HistoSSLscaling )
  • 尝试更复杂的MIL注意力模型:
    DTFD-MIL ( https://arxiv.org/abs/2203.12081 )
    TransMIL ( https://arxiv.org/abs/2106.00908 )
    CLAM ( https://github.com/mahmoodlab/CLAM )
    DSMIL ( https://github.com/binli123/dsmil-wsi )
    Perceiver ( https://github.com/cgtuebingen/DualQueryMIL )

==================================================

我的笔记本链接:
https://www.kaggle.com/code/yannan90/ubc-submit-att

同比赛其他方案