返回列表

4th place solution

382. Plant Pathology 2020 - FGVC7 | plant-pathology-2020-fgvc7

开始: 2020-03-09 结束: 2020-05-26 作物智能识别 数据算法赛
第4名解决方案

第4名解决方案

作者: tangm7 | 比赛排名: 第4名

恭喜大家。我学到了很多,也玩得很开心。非常感谢 Kaggle 和比赛组织者提出了一个非常有趣且相关的问题。我在泰坦尼克号和 MNIST 比赛之后尝试了这次 Kaggle 比赛(尽管我阅读了大量 Flowers TPU 的代码)。

我认为我的解决方案很简单,遗憾的是我尝试的许多有趣的东西都没有奏效。

还要感谢一些 Kagglers 的帮助,我的成功也是他们的成功:@anyexiezouqu 提供了 800 图像尺寸下的 EfficientNet B7 和 IncepResNetV2 集成方案。@ateplyuk 提供了 TPU 上的 EfficientNet B7 方案。@mgornergoogle 撰写了多篇 TPU 教程和 TPU 故障排除帖子,我在调试过程中受益匪浅。

提交结果

  • 提交 1: 私有分数 .978,公有分数 .982(排名第4)
  • 提交 2: 私有分数 .980,公有分数 .978(理论上约第20名)

我在这里主要关注第一次提交。

模型 1 = EfficientNet B7
模型 2 = (EfficientNet B6 + IncepResNetV2) / 2
最终模型 = (模型 1 + 模型 2) / 2

什么有效:

  • 增加图像尺寸(在内存限制之前我使用了 896 或 800)。如果使用 896,需要降低批大小。
  • 使用 Noisy Student 权重而不是 ImageNet 权重。
  • 放弃验证集以在更多数据上训练(相当标准的做法)。
  • 随机左右翻转增强。
  • 随机上下翻转增强。

无变化或略有改善:

  • 使用 B6 代替 B7。使用 (B7 + IncepResNetV2)/2 我得到了 .975 LB,并且还有许多低于此分数的 LB 分数。使用 (B6 + IncepResNetV2)/2 我第一次尝试就得到了 .975 LB。所以这可能需要更多数据,但也可能是一种改进。尽管对我来说 CV 并不能代表 LB,但从模型的置信度来看,我仍然在过拟合。此外,其他人成功在 LB 上使用了 B5 和 B6,这三个因素促使我降级使用 B6。我也想尝试 B5,但没有足够的时间。

无变化或效果稍差:

  • 将 896 尺寸随机裁剪到 800 尺寸。不确定为什么这没有提高分数,可能预训练网络已经具有相当好的平移不变性。
  • 随机旋转。
  • TTA(测试时增强),包括原图、左右翻转、上下翻转、左右上下翻转。
  • 饱和度(我可能做得太过了,但并没有帮助)。

实施失败:

  • 图像上的高斯模糊(太慢),尽管我怀疑如果仔细操作可能会很有用,因为存在模糊/失焦的图像。
  • L2 正则化(似乎使 CV 更好,但 LB 更差)。发现这一点后,我找到一篇论文指出,对于迁移学习,应使权重接近 ImageNet 初始化值,而不是接近 1(L2)或 0(L1)。我还没尝试这个方法。

我认为这次比赛对我来说的主题是尝试了许多我认为会有帮助的技术,少数有效,但很多都无效。所以最终我的模型非常简单。

谢谢大家,希望未来在 Kaggle 见到各位。

同比赛其他方案