返回列表

9th place summary

489. BirdCLEF 2022 | birdclef-2022

开始: 2022-02-15 结束: 2022-05-24 基因组学与生物信息 数据算法赛
第9名方案总结

第9名方案总结

作者:nvnn (Grandmaster)
比赛:BirdCLEF 2022
排名:9th Place

感谢康奈尔鸟类学实验室和 Kaggle 主办这场有趣的比赛。我还要感谢我的队友 @truonghoang@gwanghan,感谢他们在比赛期间的出色团队合作。

我们的解决方案是 1 个 SED(声音事件检测)模型和 1 个梅尔频谱图分类模型的集成,它们在私有排行榜上的得分分别为 0.76 和 0.77。集成后我们的得分为 0.79。

SED 模型

  • 主干网络:tf_efficientnet_b5_ns。
  • 训练:仅在前 5 秒进行训练。
  • 推理:推理时长 5 秒。
  • 由于主干网络很强大,我们使用了大量的数据增强,希望能有助于缩小训练数据和测试数据之间的域差距。增强手段包括音频增强、梅尔频谱图增强、mixup 2-3 个样本以及 cutout。

梅尔频谱图分类模型

  • 主干网络:resnest50d_1s4x24d
  • 训练:在 7 秒的随机裁剪上训练。
  • 推理:推理时长 7 秒。
  • 数据增强:我们使用简单的增强方法
    NoiseInjection(max_noise_level=0.04, sr=SAMPLE_RATE),
    PitchShift(max_range=3, sr=SAMPLE_RATE),
    RandomVolume(limit=4),
  • 训练过程:
    • 第一轮:我们训练了几个模型并进行集成,为每个 7 秒裁剪生成 OOF(Out-of-Fold)预测。
    • 第二轮:我们将真实标签和 OOF 预测结合,修改每个 7 秒裁剪的目标值,然后在修改后的目标上进行训练。
  if oof_prob[primary_bird] > 0.5:
      target[primary_bird] = 1.0
  elif prob[primary_bird] > 0.1:
      target[primary_bird] = 0.9975
  elif prob[primary_bird] > 0.01:
      target[primary_bird] = 0.5
  else:
      target[primary_bird] = 0.2

  if oof_prob[secondary_bird] > 0.5:
      target[secondary_bird] = 0.9975
  elif oof_prob[secondary_bird] > 0.1:
      target[secondary_bird] = 0.8
  else:
      target[secondary_bird] = 0.0025

模型集成

我们发现公共排行榜的分数对阈值非常敏感,每个模型的最佳阈值差异很大,因此在集成中进行加权平均并没有带来太大的提升。我们最终将它们的概率相乘,并将测试集中置信度最高的前 33% 设为 True,其余设为 False。

P/S:祝贺我勤奋的队友 @truonghoang 成为 Competition Master。

同比赛其他方案