返回列表

24th place solution and my way to get it

396. SIIM-ISIC Melanoma Classification | siim-isic-melanoma-classification

开始: 2020-05-27 结束: 2020-08-17 医学影像分析 数据算法赛
第24名解决方案及我的参赛之路

第24名解决方案及我的参赛之路

作者:Ivan Razumov
比赛排名:第24名

大家好,恭喜所有的获奖者,感谢 Kaggle 和 SIIM 举办了这次比赛。

这是我第二次获得奖牌的比赛(终于成为 Expert 了,耶!!!),也是我第二次参加医学图像分析比赛。我的第一次是去年的 APTOS 盲症检测,我在这次比赛中遇到了一些相似的问题:

类别不平衡

许多医学图像分析的一个常见问题是数据分布不平衡(阳性病例的图像很少)。APTOS 比赛有5个类别(或5种疾病程度,因为问题也可以被视为回归问题),其中2个类别占主导地位。在本次比赛中,这是一个二分类问题,第一类的数量要大得多。解决类别不平衡的显而易见的方法是使用外部数据,这就引出了第二个挑战:

外部数据的使用

在这两场比赛中,我们都要处理相当大量的外部数据,你可以用它来平衡类别或者直接使用所有数据。在 APTOS 中,许多人在旧的外部图像上预训练模型,并在当前数据上进行微调(我也这么做了)。不当使用外部数据可能会降低你的分数,旧(外部)数据集和当前数据集差异很大。在 SIIM 比赛中,旧数据和当前数据的差异要小得多,所以我们可以更自由地使用它。

我在整个训练流程中使用了 2018+2019 年的外部数据,仅在 2020 年的数据上进行验证。

我的方法

起初,我使用 PyTorch 尝试了各种轻量级模型(如 EffNet b0-b3,ResNet18,图像大小为 256x256),并对元数据和图像使用了各种增强技术,尝试了 focal loss 和 label smoothing。但我在公共 LB 上达到的最高分是 0.933。但在讨论区,参与者们谈到了像 512x512 这样尺寸的实验,以及像 EffNetB6 这样的大型模型,这类实验对我来说很难,因为我只使用 PyTorch 和 GPU。

在我的深度学习之路上,我一直使用 PyTorch,但与 tensorflow 和 TPU 相关的话题在讨论区和公共笔记本中出现得越来越多,我不能再忽视了。最终我发现,使用 TPU 我可以在更大的图像上训练更重的模型!

构建集成模型

2019年第一名解决方案 是不同版本的 EfficientNet、不同的增强技术和图像尺寸的混合,所以我决定实现类似的东西。

我使用了类似 Triple Stratified KFold 的流程,使用 2018+2019+2020 数据进行训练,仅使用 2020 数据进行验证。

模型 图像尺寸 初始权重 公共分数 私有分数
EfficientNetB5512ImageNet0.95240.9200
EfficientNetB5768ImageNet0.94690.9185
EfficientNetB51024ImageNet0.94790.9285
EfficientNetB6384ImageNet0.94970.9277
EfficientNetB6512ImageNet0.94880.9258
EfficientNetB6768ImageNet0.95020.9277
EfficientNetB61024ImageNet0.94780.9287
EfficientNetB7512ImageNet0.94800.9239
EfficientNetB7768ImageNet0.93790.9083