返回列表

1st Place Solution

420. Cassava Leaf Disease Classification | cassava-leaf-disease-classification

开始: 2020-11-19 结束: 2021-02-18 作物智能识别 数据算法赛
第一名解决方案

第一名解决方案

作者:Jannis, Sebastian, Matthias
发布时间:2021-02-24

我们的总体策略是尽可能多地测试模型,而花较少的时间进行微调。目标是为集成准备许多多样化的模型,而不是一些高度调优的模型。

最终,我们尝试了各种不同的架构(例如,所有 EfficientNet 架构、Resnet、ResNext、Xception、ViT、DeiT、Inception 和 MobileNet),同时使用了不同的预训练权重(例如在 Imagenet、NoisyStudent、Plantvillage、iNaturalist 上训练的权重……),其中一些可在 Tensorflow Hub 上找到。

我们获胜的提交是由四个不同模型组成的集成。

Final Model

公共排行榜上的最终得分为 91.36%,私有排行榜上的得分为 91.32%。我们选择提交这个组合,因为它比其他组合获得了更高的交叉验证(CV)分数(其他组合有时在公共排行榜上得分稍高)。我们在排行榜上单独测试了一些模型(公共/私有):B4: 89.4%/89.5% , MobileNet: 89.5%/89.4%, ViT:~89.0%/88.8%

其他模型仅使用交叉验证进行评估。

总的来说,我们可以得出结论,获胜的关键是使用 Tensorflow Hub 的 CropNet,因为它为我们的集成带来了很多多样性。虽然作为独立模型,它在排行榜上的表现并没有优于其他模型,但使用该模型的集成在排行榜上带来了显著的提升。

在此,我要感谢 hengck23,他的讨论帖让我们注意到了这个模型(以及 Tensorflow Hub 上提供的其他用于图像分类的预训练模型)。

此外,我们要感谢所有参与者,他们通过在此板块的贡献和发布的笔记本帮助我们在这次比赛中学到了很多。最后,我们还要感谢竞赛主办方,通过发布数据使这场激动人心的比赛成为可能。

模型配置与微调详情

ResNeXt

我们使用了结构为 “resnext50_32x4d” 的 ResNeXt 模型,配置如下:

  • 图像大小为 (512,512)
  • 使用默认参数的 CrossEntropyLoss
  • 学习率为 1e-4,使用基于平均验证损失的 “ReduceLROnPlateau” 调度器(mode=’min’, factor=0.2, patience=5, eps=1e-6)
  • 训练增强(来自 Albumentations Python 库):RandomResizedCrop, Transpose, HorizontalFlip, VerticalFlip, ShiftScaleRotate, Normalize
  • 验证增强(来自 Albumentations Python 库):Resize, Normalize
  • 5折交叉验证(5-fold-CV),共 15 个 epoch(在 15 个训练 epoch 之后,我们总是选择具有最佳验证准确率的模型)(与其他训练模型的数据分区相同)
  • 对于推理,我们使用了与验证相同的增强(即 Resize, Normalize)

Vision Transformer (ViT)

我们使用了带有 ImageNet 权重 (ViT-B/16) 的 Vision Transformer 架构

  • 带有线性层的自定义顶层;图像大小为 (384,384)
  • Bit Tempered Logistic Loss (t1 = 0.8, t2 = 1.4) 和 0.06 的标签平滑因子
  • 我们选择了带有余弦退火热重启调度器的学习率(LR = 1e-4 / 7 [7: 预热因子], T0=
同比赛其他方案