返回列表

1st place solution models (it’s not all BirdNet)

489. BirdCLEF 2022 | birdclef-2022

开始: 2022-02-15 结束: 2022-05-24 基因组学与生物信息 数据算法赛
第一名解决方案模型(不仅仅是 BirdNet)

第一名解决方案模型(不仅仅是 BirdNet)

作者:Volodymyr (Grandmaster) | 比赛排名:第 1 名

首先,感谢 Kaggle 团队、@stefankahl 以及所有参赛者。

正如大家所知,在我们的最终融合模型中,除了 BirdNet 之外,还使用了我、@ivanpan@realsleim@selimsef 提供的其他模型。

在这篇文章中,我将介绍我的模型和方法。

模型架构

我使用了 SED(声音事件检测)架构,该架构由 @tattaka 提出并使用 - 帖子链接

作为主干网络,我使用了:

  • tf_efficientnet_b3_ns
  • eca_nfnet_l0

我将第一个步幅从 (2,2) 改为 (1,1),以便获得更大(在长度和频率数量方面)的 CNN 编码器输出(我从 @ilu000SETI 方法学到了这个技巧)。

模型训练

我在 15 秒的音频块上训练模型,并使用了次要标签。

我使用了以下数据增强方法:

  • 高斯噪声
  • 粉红噪声
  • 波形上的 OR Mixup
  • 背景噪声。训练时使用 - 此数据集。微调时使用 - esc50 + 2021 BirdClef 比赛声音景观中的无叫声片段。

@selimsef 的建议下,我为数据加载器和损失函数使用了权重(通过 primary_label 计算),以应对数据集不平衡的问题(特别是针对 scored_birds)。

至于损失函数,我在 clipwise logits 上使用了简单的 BCE(二元交叉熵)。

我跟踪 LB 指标和验证损失最好的 3 个检查点,然后平均这 3 个模型的权重(类似于朴素的 SWA 随机权重平均)。

训练阶段

我采用了两阶段训练:

  1. 在 2021 年和 2022 年的比赛数据上进行预训练。
  2. 在预训练数据上进行微调,但按以下规则过滤 - 选取 primary_label 或 secondary_labels 中包含 scored_bird 的样本

推理

针对 SED 模型,我尝试了两种推理方案:

  1. @tattaka 提出的方法 - 对 longshort clipwise 预测使用 AND 规则。short 预测 - 5 秒,long - 15 秒。
  2. 输入模型 15 秒块,但仅在居中的 5 秒缩减 CNN 图像上应用头部,并使用 max(framewise, dim=time)。

总体而言,第二种方案对我来说效果更好。

选择阈值

这里我也尝试了两种方案:

  1. 使用普通阈值。最佳值在 0.2 - 0.3 之间变化。
  2. 使用分位数阈值,最初由
    同比赛其他方案