返回列表

6th place solution : noise robust learning [BarelyBears]

392. Prostate cANcer graDe Assessment (PANDA) Challenge | prostate-cancer-grade-assessment

开始: 2020-04-21 结束: 2020-07-22 医学影像分析 数据算法赛
第6名方案:噪声鲁棒学习 [BarelyBears]

第6名方案:噪声鲁棒学习 [BarelyBears]

作者: RabotniKuma (Grandmaster) | 团队: BarelyBears | 排名: 第6名

首先,我们要感谢主办方提供了这样一个有趣且现实的问题。
代码实现已公开:
https://github.com/analokmaus/kaggle-panda-challenge-public

太长不看版 (TL;DR)

标签噪声是本次比赛最大的挑战。
我们使用了在线不确定性样本挖掘 (OUSM)mixup 来鲁棒地拟合CNN模型,并融合了4个不同设置的模型以稳定结果。

Solution Diagram

基于图块的多实例学习模型

本次比赛的第一个挑战是如何处理那些极大的图像。感谢 @iafoss 的精彩Notebook,我们使用了几乎相同的模型结构,配合了不同的主干网络和图块尺寸。我们将分类器部分修改为序数回归(CORAL loss)。

预处理与数据增强

基于图块的CNN模型的数据增强可以应用于两个层面:切片级别和图块级别。
切片级别的增强是在提取图块之前应用于全切片图像。目的是创建略有不同的图块集,我们使用了平移、缩放、旋转。
图块级别的增强旨在提高特征提取器的性能,我们使用了平移、缩放、旋转、翻转和随机丢弃。随机丢弃的想法是用平均像素值随机填充一个图块,从而对模型进行正则化。

后处理

我们在推理过程中使用了4次TTA(测试时增强),并优化了阈值以最大化QWK值。

验证策略

正如任务描述中所写,训练数据中的标签质量与测试数据差异很大。所以从一开始我们就认为这部分在本次比赛中至关重要。粗略来说:
训练数据:有噪声且量大
公开测试数据:干净但量小
私有测试数据:干净但量小
所以我们的策略是:忽略交叉验证 (CV),关注公开榜单,并信任方法论。
对我们来说,由于测试数据量小,结果确实不稳定,但并非完全靠“运气”。

处理噪声标签

我们阅读了数十篇关于处理噪声标签的论文,并实现了其中的一些方法,例如:

  • 损失函数 (DMI loss, DAC loss, Symmetric loss, OUSM loss 等)
  • 训练过程 (CleanNet, Iterative Self-training, mixup 等)

它们的共同观点是,噪声样本应该具有与正确样本不同的特征,因此噪声样本应该有更大的损失。
OUSM(在线不确定性样本挖掘)是一种在每个小批量中排除高损失样本的方法。根据先前的研究,该方法在存在类似标签噪声的皮肤病变分类问题中有效。在PANDA比赛中,它让我们在公开榜单上的分数从约0.87稳定提升到了0.90。
随后,我们使用不同的随机种子训练模型,并收集了那些经常被判定为噪声(具有大损失)的样本。我们从每个标签中排除了10%“最可能是噪声”的样本,因为由于标签分布不平衡,等级 >= 2 的样本更有可能被判定为噪声。这个新数据集应该比原始数据集噪声更少,在这个新数据集上训练的模型在公开榜单上达到了0.91。
除了OUSM,mixup在公开榜单上也表现良好。这与原始论文一致,该论文报告了在标签损坏情况下的性能提升。

流程概览

我们的流程是以下模型的简单平均:

  • 5折 224x64 基于图块的模型,se-resnext50 (OUSM)
  • 5折 224x64 基于图块的模型,se-resnext50 (OUSM,不同参数)
  • 5折 224x64 基于图块的模型,se-resnext101 (OUSM)
  • 5折 256x36 基于图块的模型,
同比赛其他方案