返回列表

11th place solution

489. BirdCLEF 2022 | birdclef-2022

开始: 2022-02-15 结束: 2022-05-24 基因组学与生物信息 数据算法赛
第11名解决方案
作者: Gilles Vandewiele 及团队成员
比赛排名: 第11名

第11名解决方案

比赛结束时刻到了!看到我们以一名之差无缘金牌,心里非常痛苦,但胜败乃兵家常事。更新: 由于一支队伍被取消资格,我们实际上拿到了最后一个金牌席位!

我们的最终解决方案是由五个不同模型组成的集成模型,这些模型使用了不同的主干网络或声谱图配置进行训练。其中每个模型都深受去年第二名解决方案的启发,该方案由 @julian3833 在这个笔记本中针对本数据集进行了重新实现。

第一阶段:调整阈值

在比赛初期,由于缺乏真正的验证集,我们对于是否全身心投入还有些犹豫。我决定从上面提到的笔记本入手,但应用了去年第二名解决方案中相同的阈值技术,即预测概率最高的前K百分位为True。去年的阈值非常高,约为 0.9987,而今年,0.69(很棒的数字)的阈值让我们在LB(排行榜)上获得了大约0.73-0.75的分数。最终,我们将集成模型的阈值设定为 0.78,结果发现在私有数据集上 0.75 甚至效果稍好一些。

第二阶段:改进流程

为了提升效果,我们决定尝试在流程中添加不同的内容。不幸的是,我们尝试的大部分内容最终都归入了本文的第4部分(无效尝试)。但有一件事效果非常好,那就是在声谱图层面进行的简单增强(SpecAugment)。我们只是对时间频段进行了掩码处理。

第三阶段:模型集成

如前所述,我们使用了两种不同的声谱图配置和不同的主干网络。声谱图配置如下:

配置 A:

cfg.window_size = 1024
cfg.hop_size = 320
cfg.sample_rate = 32000
cfg.fmin = 50
cfg.fmax = 14000
cfg.power = 2
cfg.mel_bins = 64
cfg.top_db = None

以及

配置 B:

cfg.window_size = 1024
cfg.hop_size = 512
cfg.sample_rate = 32000
cfg.fmin = 16
cfg.fmax = 16386
cfg.power = 2
cfg.mel_bins = 128
cfg.top_db = 80.0

我们集成模型中的五个模型分别是:

  • 使用配置 A 和 B 的 seresnext26t_32x4d(公开榜得分均为 0.81)
  • 使用配置 A 和 B 的 eca_nfnet_l0(公开榜得分 0.81)
  • 使用配置 B 的 seresnext50_32x4d(公开榜得分 0.81)

第四阶段:后处理

由 @iafoss 提出的一个后处理技巧在这里效果也相当不错。具体做法是将音频滑动一定的偏移量(我们这里是向前和向后各1.5秒),然后按如下方式聚合:p = 0.5*p0 + 0.25*pr + 0.25*pl。另一个勉强有效的技巧是,如果我们在同一声景中的另一个片段中非常确信(该声景内90百分位)某种鸟类的出现,那么就提高该鸟在所有片段中出现的概率。

无效尝试

  • 波形增强
  • 添加来自 ff1010
同比赛其他方案