420. Cassava Leaf Disease Classification | cassava-leaf-disease-classification
首先,我要感谢我的队友 @lizzzi1 的出色工作,以及 Kaggle 组织这次比赛。这是一次非常有趣的学习经历。我们投入了大量时间构建了一个全面的 PyTorch GPU/TPU 流水线,并使用 Neptune 来构建我们的实验结构。
我们的最终解决方案是不同 CNN 和 ViT 模型的堆叠集成,请参见下图。由于标签噪声和评估指标的原因,信任 CV(交叉验证)对于在排名波动中生存下来至关重要。下面我将更详细地概述我们解决方案的要点。
- RandomResizedCrop(随机调整大小裁剪)
- RandomGridShuffle(随机网格打乱)
- HorizontalFlip, VerticalFlip, Transpose(水平翻转、垂直翻转、转置)
- ShiftScaleRotate(平移缩放旋转)
- HueSaturationValue(色调饱和度亮度)
- RandomBrightnessContrast(随机亮度对比度)
- CLAHE(对比度受限的自适应直方图均衡化)
- Cutout(遮挡)
- Cutmix
我们在集成中使用了多种架构:
swsl_resnext50_32x4d - x14tf_efficientnet_b4_ns - x8tf_efficientnet_b5_ns- x7vit_base_patch32_384 - x1deit_base_patch16_384 - x1tf_efficientnet_b6_ns - x1tf_efficientnet_b8 - x1ResNext 和 EfficientNet 表现最好,但 Transformer 模型对改进集成效果非常重要。两个 EfficientNet 模型还包含一个自定义注意力模块。一些模型在 PlantVillage 数据集上进行了预训练,其他的则从 ImageNet 权重开始。
大量的实验让我们能够在集成中注入大量的多样性。我们最佳的单模型得分为 0.8995 CV。所有模型的简单多数投票得分为 0.9040 CV,但我们想更进一步并探索了堆叠。
堆叠是通过在相同 CV 折的 OOF 预测结果上