489. BirdCLEF 2022 | birdclef-2022
感谢 Kaggle、竞赛主办方以及各位参赛者带来了这场非常有趣的比赛。我们在最后一个月才加入这场比赛,由于我和 @neomaoro 之前都没有接触过音频方面的内容,不得不付出巨大的努力来理解这场竞赛。我和 @neomaoro 在这场比赛中都付出了同样的辛勤努力。
我们的解决方案很大程度上基于去年 BirdCLEF 竞赛中 @philippsinger、@christofhenkel 和 @ilu000 的第2名方案。我们对这个流程做了一些修改,其中最显著的是将语谱图的大小调整为 256 * 512,这一改动在公共和私人排行榜上带来了 0.01 的提升。
https://www.kaggle.com/code/vexxingbanana/18th-place-solution-0-77-private-0-81-public
我们的训练和提交笔记本及 Python 文件很大程度上参考了 @julian3833 的训练笔记本和推理笔记本。我们在云端使用 2 张 A40 GPU 进行训练。
我们的模型与去年的第2名方案非常相似,训练方式也相同:将 30 秒的训练音频片段调整为 6 个 5 秒的部分。我们还使用主要标签和次要标签作为目标。在推理时,我们将 6 个 5 秒的片段输入模型。
我们使用了以下主干网络:eca_nfnet_l0、eca_nfnet_l1、tf_efficientnetv2_m_in21k、seresnext50_32x4d 和 resnest50d_4s2x40d。其中,Eca_nfnet_l0 和 eca_nfnet_l1 取得了最好的私人排行榜分数,5折交叉验证分数分别为 0.76 和 0.75。
在训练过程中,我们以第2名方案的训练策略为起点,然后添加了一些细微的修改。修改如下:
我们找不到基于 soundscape(声景)构建良好验证流程的方法,因为本次比赛没有提供带有标签的 soundscape 数据。因此,我们仅使用验证损失和公共排行榜作为验证依据。
我们的模型集成非常直接。我们对每种主干网络训练了 5 折模型,然后将所有模型的预测结果取平均值。我们尝试了其他几种集成方法,例如纯投票法以及投票与平均相结合的方法,但发现对所有模型取平均的表现最好。
在整个比赛过程中,我们经历了起起落落,有许多成功之处,也有一些效果不佳的尝试。以下是一些对我们无效的实验: