第五名解决方案
首先,感谢康奈尔鸟类学实验室和Kaggle团队举办这场比赛。这是一个学习新知识的好机会。
在本文中,我将总结我的解决方案。
数据集
- 2023/2022/2021比赛数据
- 额外的Xeno-Canto数据(包含2023比赛物种作为前景和背景音)
- ESC50噪声数据集
- 2021比赛数据中的无呼叫噪声
模型
我使用了SED架构(与@tattaka在2021年第4名解决方案中使用的相同),采用以下骨干网络:
- tf_efficientnet_b1_ns
- tf_efficientnet_b2_ns
- tf_efficientnet_b3_ns
- tf_efficientnetv2_s_in21k
训练过程
我分两个步骤训练所有模型:
- 使用2022/2021数据进行预训练。此阶段仅使用白噪声(p=0.5)
- 在2023数据上进行微调,采用以下增强方法:
- 波形处理:Mixup(p=1)和多种噪声混合(白噪声、粉红噪声、棕噪声、噪声注入、ESC50噪声、无呼叫噪声)(p=0.5)
- 语谱图处理:两个时间掩码(各p=0.5)和一个频率掩码(p=0.5)
训练细节:
- 所有模型均使用5秒音频片段训练
- 4折分层交叉验证
- 同时使用主要标签和次要标签
- 带样本权重(基于评分)的BCEWithLogitsLoss损失函数
- AdamW优化器:学习率5e-4,权重衰减1e-3(大多数模型)
- 余弦退火学习率调度器(默认参数)
- 训练40个epoch - 最佳分数通常出现在最后一个epoch。因此除了4折验证外,我还使用全部数据训练了第5个模型。该全量训练版本比单折模型在公开和私有排行榜上稳定高出0.002-0.003分
- 部分模型通过软/硬伪标签进行了微调
我的最佳模型结合了比赛数据的真实标签和Xeno-Canto数据的硬伪标签进行训练,在私有/公开排行榜上分别达到0.72714/0.81836分,提交耗时为10分钟。
推理过程
将15个模型(各折)的概率结果进行平均(其中6个模型共享骨干网络的前三层,因此模型数量并不完全均衡)。
我还使用了ONNX Runtime和ThreadPoolExecutor来加速推理,感谢@leonshangguan分享的优化笔记。