[第12名] 解决方案概述
[第12名] 解决方案概述
作者:Ian Pan, FelipeKitamura
比赛排名:第12名
恭喜所有的获奖者和参与者。感谢主办方带来这场有趣的比赛!
哇,@felipekitamura 和我非常惊讶我们竟然进入了金牌区!我们的解决方案其实并没有太多新颖之处,但简而言之,它是这样的:
4模型集成:
- EfficientNet-B8 (0.930 -> 0.920)
- EfficientNet-B5,将初始步幅 2 改为步幅 1 (0.926 -> 0.920)
- EfficientNet-B4,将初始步幅 2 改为步幅 1 (0.928 -> 0.920)
- EfficientNet-B0,将前两个步幅 2 改为步幅 1 (0.930 -> 0.921)
所有模型均在原始 512x512 RGB 输入上训练,使用了翻转增强。
- 初始化:ImageNet
- 类别:4类
- 多重采样Dropout:Dropout率 0.2
- 拼接池化:连接全局最大池化和全局平均池化
- 损失函数:原始交叉熵损失
- 优化器:AdamW,余弦衰减,初始学习率 5.0e-4,50个Epoch。B4 的训练略有不同,使用 OneCycleLR(30% 预热,峰值 LR 3.0e-4,30个Epoch)配合原始步幅,然后以初始步幅 1 微调 30个Epoch。
- 数据划分:单一 90/10 划分
- 硬件资源:模型在 4x Quadro RTX 6000 24GB 上训练,Batch Size 约为 32-40。B8/B5 模型在 8x V100 32GB 上训练。我们在最后两周才开始认真参加这场比赛,如果没有这些硬件资源,很难取得好成绩。这可能是我消耗 GPU 算力最多的一场比赛,因为我通常甚至不费心去进行多 GPU 训练。
获得本地 CV(交叉验证)分数很困难,因为我在计算 wAUC 时总是遇到错误……为了修复它,所有模型的 wAUC 都落在了 0.34-0.35 的范围内。仍然不确定发生了什么!
最佳单模型 公共LB 0.930(私有 0.921) -> 简单集成 LB 0.936(私有 0.928)。
我们尝试过的其他方法:
- TTA(测试时增强):许多其他团队通过 TTA 取得了进步,但我们没有。例如,B0 模型在公共 LB 上通过 TTA 从 0.930 降到了 0.926。然而,这将私有 LB 的性能从 0.920 提高到了 0.924!
- Mixup:我们尝试了一种 mixup 策略,将同一来源的封面图像和隐写图像混合在一起。不过训练时间要长得多,所以我们放弃了这个想法。
- ResNet/ResNeSt:效果不如 EfficientNet。移除最大池化层有帮助,但 EfficientNet 更好。MixNet 表现也不错,但总体而言 EfficientNet 是最好的。