488. GeoLifeCLEF 2022 - LifeCLEF 2022 x FGVC9 | geolifeclef-2022-lifeclef-2022-fgvc9
我一直在思考如何在不花费太多时间的情况下尽可能清晰地解释我们的方案。稍后我可能会制作整个数据流程、模型和推理的图形化表示,也许还会提供一个包含一些预处理函数和我们整个 PyTorch Lightning 实验流程最佳部分的 notebook。但目前,我将分享我在“参赛者反馈表”中关于我们最佳解决方案以及我们尝试过但效果不佳的内容所写的内容。如果我不够准确或没有详细解释,我很抱歉,这可能有点太密集了,特别是对于那些没有完全参与比赛的人。此外,对于那些会说或懂西班牙语的人,你们可以看看我的队友 @juansensio 的 Youtube 频道,他分享了几次 Twitch 直播,他在直播中开始解决这个挑战,并定义了 pytorch lightning 工作流程,将指标更新到 Weights and Biases:https://www.youtube.com/c/sensio-ia
由3个模型组成的集成模型:
此外,前两个模型在 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 团队。也要为所有在那里收集这种生态生物数据的人们鼓掌,能将近两百万个具有这种多样性的数据点汇集在一起真是太棒了。最后,感谢所有其他参与并激励我们坚持到最后的团队和成员,希望我们的笔记能给你们带来更多的知识,我也很好奇想看看并学习其他人是尝试了什么方法来取得几乎和我们一样好的结果的!