返回列表

🥇 1st place solution description

488. GeoLifeCLEF 2022 - LifeCLEF 2022 x FGVC9 | geolifeclef-2022-lifeclef-2022-fgvc9

开始: 2022-03-09 结束: 2022-05-24 农业遥感 数据算法赛
🥇 第一名解决方案描述

🥇 第一名解决方案描述

作者:Enric Domingo (Sensio Team)
发布时间:2022年5月25日

我一直在思考如何在不花费太多时间的情况下尽可能清晰地解释我们的方案。稍后我可能会制作整个数据流程、模型和推理的图形化表示,也许还会提供一个包含一些预处理函数和我们整个 PyTorch Lightning 实验流程最佳部分的 notebook。但目前,我将分享我在“参赛者反馈表”中关于我们最佳解决方案以及我们尝试过但效果不佳的内容所写的内容。如果我不够准确或没有详细解释,我很抱歉,这可能有点太密集了,特别是对于那些没有完全参与比赛的人。此外,对于那些会说或懂西班牙语的人,你们可以看看我的队友 @juansensio 的 Youtube 频道,他分享了几次 Twitch 直播,他在直播中开始解决这个挑战,并定义了 pytorch lightning 工作流程,将指标更新到 Weights and Biases:https://www.youtube.com/c/sensio-ia

最佳解决方案描述:

由3个模型组成的集成模型:

  • 第一个模型是一个双模态网络,使用预训练的 ResNet34 处理 Nir+G+B 通道,将其最终层堆叠到一个3层全连接网络(FCN),该网络的输入包括环境向量 + 纬度 + 经度 + 国家 + 平均海拔 + 最大-最小海拔 + 土地覆盖的 "dothot" 编码(这是我称之为某种 softmax-onehot 编码的方式),这两个主干网络连接到最终的17k类别层。
  • 第二个模型与上一个类似,但 CNN 使用的是预训练的 MobileNetV3 100 large 模型,输入为 R+G+B+Nir。全连接网络与上一个相同。在这两个模型的两个堆叠最终层之间,我们添加了一个额外的2048维线性层(带有 dropout 和 ReLu),然后是最终的17k分类层。
  • 第三个模型是一个随机森林,包含32个估计器,深度为12。使用的输入与前一个全连接网络相同:环境向量 + 纬度 + 经度 + 国家 + 平均海拔 + 最大-最小海拔 + 土地覆盖的 dothot 编码(softmax-onehot 编码),此外还加入了 R/G/B/Nir 各层的 25%、50% 和 75% 百分位数,总共81个输入特征,并且还将验证数据加入到了训练中。

此外,前两个模型在 CNN 模型上进行了数据增强,包括随机垂直和水平翻转、旋转以及 5-10% 的亮度和对比度调整。我们还实施了测试时增强(TTA),对每个样本进行5次随机图像变换,然后将这些预测的平均概率合并。我们应用了同样的平均概率策略来合并这3个模型的集成结果。最后,我们尝试将验证数据加入训练数据对模型进行进一步重训练,结果有一点提升,但可能我们还能做得更好。

我们的设备配置是一张 24GB 显存的 RTX 3090,搭配 12代 i7 和 64GB 内存;Juan 那边还有一台配备两张 RTX 3090的重型设备。对于 CNN 来说,这样的显存非常有帮助,但对于处理 17k 个类别的随机森林,我也需要非常多的 CPU 内存。

我们也尝试过但效果较差的方法:

我们尝试聚合相近的标签以进行多标签观察,我们尝试了不同的方法和不同的损失函数,但结果都不如单标签好。但我总觉得应该有办法让它奏效。关于标签聚合,我注意到在某些地点,有多达数百个不同的标签聚集在一起,这意味着存在一个理论上的最小 top30 误差,因为在某些时候,即使有一个完美的模型,你也必须在 50、100 或更多个实际上在该位置正确的标签中赌那 30 个。

我们还在 CNN 模型中尝试了其他主干网络,尝试了不使用迁移学习进行训练,尝试了为 1. RGBNir + 2. Alt tiffs + 3. Landcover tiffs 设置三个不同的主干网络,然后将其加入到 FC 表格数据主干中,这是最主要的尝试。这些都没有给我们带来最好的结果,但其中一些可能还有改进的空间。我也尝试了梯度提升树,但对于 17k 个类别,我猜这可能需要大约 1TB 的内存。

结论:

最后,我对我们参加这次比赛的体验评价非常积极。我个人学习并实践了一些不同的新技术和数据类型,但我想强调两点:一是多模态网络的使用,你可以将结构化和非结构化数据与它们各自的主干网络混合,最后在相同的最终层中合并它们;二是处理“仅存在数据”的问题,这是我以前从未遇到或想过的,但这确实可能存在于其他领域,如医学、金融等,那里可能存在潜在或隐藏变量。

非常感谢组织者和 Kaggle 团队。也要为所有在那里收集这种生态生物数据的人们鼓掌,能将近两百万个具有这种多样性的数据点汇集在一起真是太棒了。最后,感谢所有其他参与并激励我们坚持到最后的团队和成员,希望我们的笔记能给你们带来更多的知识,我也很好奇想看看并学习其他人是尝试了什么方法来取得几乎和我们一样好的结果的!

同比赛其他方案