396. SIIM-ISIC Melanoma Classification | siim-isic-melanoma-classification
恭喜所有获奖者!感谢组织者和 Kaggle 举办这次比赛。我们真诚希望获胜的模型能在这个领域发挥作用。感谢 @kazanova 对我们所尝试的所有工作的付出。这很有趣!
我们还要感谢 @cdeotte 在整个比赛过程中所做的出色工作,他提供了非常有用的见解,并准备了格式良好的数据集,使其易于使用。
我们的方法是集成了 30 多个不同的模型,这些模型由各种图像尺寸和网络组合构建而成。我们使用了 5 折交叉验证(5-fold CV),并针对 logloss 进行了优化。我们发现,在评估最佳模型时,logloss 比 AUC 更稳定。我们可以用不同的种子运行相同的模型,(即使有很多 TTA)单折中 AUC 的差异可能达到 +- 0.02,而 logloss 则稳定得多。
对我们最有效的增强方法(除了旋转和翻转等常用方法外)依次是:
在网络方面,我们只使用了 EfficientNet 模型。我们尝试了其他预训练网络,但效果不如 EfficientNet。表现最好的模型和尺寸组合是 EfficientNet b5 配合 512 的尺寸。我们的大部分模型是在 TensorFlow 中使用 TPU 构建的(在 Colab 或 Kaggle 上)。TPU 环境对我们来说意义重大——它使我们能够加速训练和实验,这从根本上帮助我们在这次比赛中找到了好的训练方案。我们也有一些模型是用 PyTorch 构建的。在 CV 方面,两个框架表现接近,但 TensorFlow 的实现在这里稍微好一点(在 CV 和 LB 上都是)。
恒定调度、检查点平均和大量的 TTA(30 种不同的增强组合)效果非常好。每折预测使用了 150 次推理(5 个检查点 x 30 种增强)。这对我们模型的稳定性有很大帮助。除了平均值,对于每个模型,我们还使用了最大值、最小值、标准差和几何平均(所有这 150 次预测的)。让我们相当惊讶的是,标准差在 logloss 和 AUC 上的表现往往优于平均值。这可能意味着,当我们对实际预测越不确定时,它越有可能是恶性的。
对于我们的最终模型,我们使用了 ExtraTreesClassifier 进行堆叠。我们的 CV 是 0.9536(LB 0.9457)。我们表现最好的堆叠模型(版本 38)在私有 LB 上(几乎)是最好的。我们的上一个版本(37)是最好的。我们所有的堆叠模型在 CV 和 LB 之间都有很好的相关性。