510. Mayo Clinic - STRIP AI | mayo-clinic-strip-ai
感谢 Mayo Clinic 筹备这次比赛,也感谢 Kaggle 主办。我很高兴这是一个代码竞赛,因为在我看来,这极大地缩小了 Kaggle 竞赛与现实生活业务问题之间的差距。同时,我也要祝贺获得第一名的选手,因为他们的解决方案看起来比我的更复杂、更有趣。
与此同时,看到顶尖分数与随机解决方案相比如此之低,我感到很遗憾。恐怕这次比赛可能无法帮助 Mayo Clinic 的人解决这个非常重要的问题,这真的很令人遗憾。
看看私人排行榜,似乎关键在于正确的验证以及完全忽略公共分数(当然还有一点运气)。所以让我快速描述一下我的解决方案。
在训练中,我使用了除 5 张过于模糊图像外的所有训练图像。以及所有标记为 'Other' 的其他图像。我将它们与 LAA 图像混合,以增加该类别的样本数量,因为总体上我只想区分 CE 和其他所有类型。
处理步骤如下:
首先,我在相同数据上快速训练了一个小模型,按 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 个,则该图像的某些图块可能会多次出现。
其他要点:
对于我的方法,这是最重要的部分,所以我决定在一个单独的板块中写下来。
我在训练期间使用了 3 种类型的增强:
我的 CV 上的比赛目标指标:0.6