返回列表

19th place solution, single CNN model

489. BirdCLEF 2022 | birdclef-2022

开始: 2022-02-15 结束: 2022-05-24 基因组学与生物信息 数据算法赛
第19名解决方案,单一CNN模型

第19名解决方案,单一CNN模型

作者:Nikita Kuzmin | 比赛排名:第19名

首先,感谢Kaggle、组织者团队以及其他参赛者。

这里分享的是我基于单一ResNeSt50d模型训练5折的解决方案。本次比赛中最困难的部分之一是验证。在Cornell Birdcall Identification比赛中,我们的团队深受排名震荡之苦,因此我在本次比赛中不惜一切代价试图避免这种痛苦的经历。

我已经尽可能精简了对解决方案的描述,如果您有任何问题,请随时提问 :)

数据:

  • 预训练:
    • BirdCLEF2021 (train_short_audio) + BirdCLEF2022 (train_audio)
  • 微调数据:
    • BirdCLEF2022 (train_audio)
  • 验证数据:
    • BirdCLEF2021 (Public + Private LB分数):用于在预训练阶段后比较模型,并检查一些后处理技巧;
    • BirdCLEF2022 (验证折):用于基于仅计分鸟类(指标:标签排名平均精度)的袋外分数(OOF)进行模型选择;
    • BirdCLEF2022 (Public LB):用于调整阈值;
    • 人工创建的声景:用于模型选择。

      该数据集是使用BirdCLEF2022 (train_audio)中的计分鸟类与BirdCLEF2021训练声景中未用作训练增强的部分的无叫声片段混合而成(具有不同的信噪比)。含有计分鸟类的片段通过无叫声检测器按0.9百分位进行过滤。我努力使这些数据类似于BirdCLEF2022 (Public LB)数据,以便正确调整阈值并尝试后处理技巧,但所有尝试都与现实相差甚远。不过,我发现这个创建的数据集在模型选择方面略有帮助(除了验证折之外)。

预处理:

模型:

  • 唯一的基于ResNeSt50的CNN,基于StratifiedGroupKFold(按作者分组)的5折模型;
  • 基于Resnet的无叫声检测器(仅用于预训练、训练损失计算以及人工声景的创建)。

损失函数:

  • 鸟类类别分类头上的BCE损失:
  • 物种分类学两个层级(科和目)的分类头上的两个BCE损失(各加权0.15)(来自Mixit论文的想法

数据增强:

后处理:

  • 固定阈值;
  • 6种代表性不足鸟类的概率(基于每种鸟类的总时长和模型输出)乘以2.0(这使我的Public和Private分数都提高了0.03);
  • 如果在5秒片段中发现了鸟类,则该鸟类
同比赛其他方案