返回列表

2nd place solution - EfficientNetB0+augmentations+smart tiling

510. Mayo Clinic - STRIP AI | mayo-clinic-strip-ai

开始: 2022-07-06 结束: 2022-10-05 医学影像分析 数据算法赛
第二名解决方案 - EfficientNetB0+augmentations+smart tiling

第二名解决方案 - EfficientNetB0+augmentations+smart tiling

作者:Ilia los
发布时间:2022-10-06

感谢 Mayo Clinic 筹备这次比赛,也感谢 Kaggle 主办。我很高兴这是一个代码竞赛,因为在我看来,这极大地缩小了 Kaggle 竞赛与现实生活业务问题之间的差距。同时,我也要祝贺获得第一名的选手,因为他们的解决方案看起来比我的更复杂、更有趣。
与此同时,看到顶尖分数与随机解决方案相比如此之低,我感到很遗憾。恐怕这次比赛可能无法帮助 Mayo Clinic 的人解决这个非常重要的问题,这真的很令人遗憾。
看看私人排行榜,似乎关键在于正确的验证以及完全忽略公共分数(当然还有一点运气)。所以让我快速描述一下我的解决方案。

数据准备

在训练中,我使用了除 5 张过于模糊图像外的所有训练图像。以及所有标记为 'Other' 的其他图像。我将它们与 LAA 图像混合,以增加该类别的样本数量,因为总体上我只想区分 CE 和其他所有类型。
处理步骤如下:

  1. 将图像按系数 24 缩放。我也尝试过 8、16、32、48,但 24 显示了最佳的最终指标;
  2. 使用逐行像素差异来计算每个 28x28 块是否包含血液或背景;
  3. 对于步长为 28 的每个 224x224 块,检查其是否包含血液或背景;
  4. 去重图块:移除所有相交超过一半的血液图块;
  5. 如果图块超过 20 个,则随机获取 20 个;
  6. 没有颜色归一化。我尝试了几种方法,但效果都不如强烈的颜色抖动增强。

验证过程

首先,我在相同数据上快速训练了一个小模型,按 center_id 对图块进行分类。该模型很容易表现出高于随机的性能(抱歉,我丢失了确切指标),这对我来说是一个信号,即模型可能会在相似的诊所上过拟合。此外,比赛主办方提到数据是从 18 个机构收集的,但在训练数据中我们只有 11 个。所以要么测试集有 7 个其他诊所,要么是关于来自其他文件夹的数据。无论如何,我决定使用基于诊所的交叉验证。为了处理“小规模”诊所(小测试规模可能导致指标不稳定和潜在过拟合),我将它们合并成组。所以每组至少有 90 个样本。
(11,), (4,), (7,), (1, 5,), (10, 3), (6, 2, 8, 9,)

模型训练

在我的实验过程中,我遇到了很多过拟合和稳定性问题。所以我尝试选择尽可能简单的方法。
我使用在 ImageNet 上预训练的 EfficientNetB0 作为主干,仅用一个全连接(FC)层作为头部。而且在整个训练过程中主干是冻结的。模型只预测一个概率“是否为 CE 类型”。所以基本上我只训练了 513 个参数。
为了分层训练数据集,我使用了上采样,我还发现再上采样 4 次很有用(可能这仅对较大的批次大小有帮助)。此外,我将测试数据集乘以 20 倍:如果某张图像有 20 个图块,那么所有图块将在测试中使用一次,如果少于 20 个,则该图像的某些图块可能会多次出现。
其他要点:

  • 最终模型为 6 个模型的集成(来自每个 CV 折叠的一个模型);
  • 更大的批次有帮助:64 是我的最终选择;
  • 学习率很重要;
  • 学习过程仍然有点不稳定,所以我为每个 CV 折叠训练了 3 个模型并选出最好的一个;
  • 损失函数为 BCELoss;
  • 权重为 (0.5, 0.5) 的比赛指标作为主要且唯一的指标;
  • 如果图像没有图块(例如,太小或太模糊),则将其最终得分替换为 0.5。

数据增强

对于我的方法,这是最重要的部分,所以我决定在一个单独的板块中写下来。
我在训练期间使用了 3 种类型的增强:

  1. 随机翻转 - 显而易见;
  2. 随机调整锐度 - 出于某种原因帮助很大,但模糊处理同时却无效;
  3. 强烈的颜色抖动(亮度=0.2,饱和度=0.5,色调=0.5)- 最重要的一项,因为有助于解决颜色差异问题。
    在测试期间也使用了 2 和 3。我在各处使用了种子以使过程可重现。

结果

我的 CV 上的比赛目标指标:0.6

同比赛其他方案