返回列表

Simple 17th Place Solution [0.81 Public, 0.77 Private]

489. BirdCLEF 2022 | birdclef-2022

开始: 2022-02-15 结束: 2022-05-24 基因组学与生物信息 数据算法赛
简单的第17名方案 [Public 0.81, Private 0.77]

简单的第17名方案 [Public 0.81, Private 0.77]

作者:Ari (vexxingbanana), Enzo (neomaoro) | 排名:第17名

感谢 Kaggle、竞赛主办方以及各位参赛者带来了这场非常有趣的比赛。我们在最后一个月才加入这场比赛,由于我和 @neomaoro 之前都没有接触过音频方面的内容,不得不付出巨大的努力来理解这场竞赛。我和 @neomaoro 在这场比赛中都付出了同样的辛勤努力。

太长不看版 (TLDR)

我们的解决方案很大程度上基于去年 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名方案的训练策略为起点,然后添加了一些细微的修改。修改如下:

  • 轮次:20 -> 25
  • 优化器:Adam -> AdamW,学习率为 1e-3,权重衰减为 1e-6
  • 调整大小:制作语谱图后,使用 torchvision 将语谱图调整为 256 x 512。
  • 移除了背景噪声和标签平滑。

验证

我们找不到基于 soundscape(声景)构建良好验证流程的方法,因为本次比赛没有提供带有标签的 soundscape 数据。因此,我们仅使用验证损失和公共排行榜作为验证依据。

模型集成

我们的模型集成非常直接。我们对每种主干网络训练了 5 折模型,然后将所有模型的预测结果取平均值。我们尝试了其他几种集成方法,例如纯投票法以及投票与平均相结合的方法,但发现对所有模型取平均的表现最好。

无效尝试

在整个比赛过程中,我们经历了起起落落,有许多成功之处,也有一些效果不佳的尝试。以下是一些对我们无效的实验:

  • 应用 PCEN(每通道能量归一化)
  • 使用 2021 年的数据
  • 注意力机制头
  • 添加增强,如粉红噪声、高斯噪声等
  • SED(声音事件检测)模型
  • 调整梅尔语谱图参数以增加其尺寸(window_size 1024, hop_size 320)
  • 使用评级为 0 或评级 >= 2 的录音,以及 0.01 的标签平滑
  • 更多的训练轮次
同比赛其他方案