返回列表

8th place solution

612. BirdCLEF 2024 | birdclef-2024

开始: 2024-04-03 结束: 2024-06-10 生命科学 数据算法赛
第8名方案

第8名方案

作者: kapenon | 比赛排名: 第8名

感谢组织本次大赛的所有人员和每一位辛勤参赛的选手!!

频谱图

MelSpectrogram(
    sample_rate=32_000,
    n_fft=1_095,
    hop_length=500,
    f_min=40,
    f_max=15_000,
    n_mels=128,
)

模型

我使用了三个模型的集成。

  • SED
    • eca_nfnet_l0
    • tf_efficientnet_b0.ns_jft_in1k
  • Simple 2D CNN
    • eca_nfnet_l0

logits 集成略优于 rank 集成。

推理

训练

损失

  • FocalLossBCE
    • 与一个很好的基线几乎相同(感谢 @salmanahmedtamu
    • 将次级标签设为 1.0

步骤 0:预训练

  • 数据
    • 2021、2022、2023 年的数据,但仅使用主标签不在 2024 年 182 个标签范围内的样本。
    • 前 5 秒
  • 细节
    • 信号增强
      • 噪声注入 (NoiseInjection)
      • 高斯噪声 (GaussianNoise)
      • 粉红噪声 (PinkNoise)
      • 随机音量 (RandomVolume)
    • 频谱图增强
      • 频率遮蔽 (2 条) (FrequencyMasking)
      • 时间遮蔽 (2 条) (TimeMasking)
      • 随机翻转 (RandomFlip)

步骤 1:伪标签微调

如前所述,异种数据(xeno)与测试数据之间存在明显的分布差异,这体现在模型的预测受昆虫噪声、鸟鸣音量、障碍物回声等多种因素影响。为弥补这一差距,我采用了伪标签方法。

  • 数据
    • 仅使用 2024 年数据
    • 使用 Google 鸟鸣分类器的预测进行过滤
    • 5 秒
  • 细节
    • 使用与预训练相同的增强
    • 简单的 mixup

使用预训练模型训练 15 个 epoch,并选取 CV 分数最高的模型对无标签数据进行推断。

步骤 2:提交微调

  • 数据
    • 2024 年、ff1010bird(仅 nocall)以及使用步骤 1 预测的无标记 soundscapes(unlabeled_soundscapes)
    • 使用 Google 鸟鸣分类器的预测分数提取除 nocall 外的鸟鸣前景
    • 5 秒
    • 全量数据
  • 细节

其他尝试但未充分验证的想法

  • SED 变体(频率轴注意力、混合模型等)
  • 1D 模型
  • 各类 mixup 方法(sumix 效果最佳)
  • 更长片段(作为弱标签数据的对策)
  • 背景噪声、强增强
  • 多轮伪标签
  • 测试时增强(轻微时间平移)
  • 知识蒸馏 (KD)

我尝试了许多想法,但大多数似乎并未取得显著效果。然而,由于无法建立可靠的交叉验证方案,我对这些想法的效果无法进行准确评估,因此只能依赖排行榜来评估效果。这使得 BirdCLEF 2024 对我来说是一场格外艰难的竞赛。最后,伪标签是我唯一用来弥补领域差距的方法,但在可视化伪标签后,我发现它们并不准确。我仍然不完全了解关键所在,但隐约感受到构建一个简单的 pipeline 是有帮助的。

致谢

向 Rist Inc. 表示衷心的感谢,感谢他们的宝贵支持。

同比赛其他方案