654. BirdCLEF+ 2025 | birdclef-2025
首先,我要感谢竞赛组织者举办这次充满挑战和教育意义的比赛,并祝贺所有参赛者的杰出工作!特别感谢我的队友 @ziyi777 在整个比赛过程中的协作努力!
我们的最终解决方案采用了 声音事件检测 (SED) 模型,使用了 5 种不同的骨干网络,通过几乎相同的流程进行训练,并通过两轮渐进式伪标签融合训练和复杂的集成技术进行了增强。
| 骨干网络 (Backbone) | 公共榜 (Public) | 私有榜 (Private) | 集成权重 |
|---|---|---|---|
| efficientnetv2_b3 | 0.878 | 0.893 | 0.2 |
| efficientnet_b0 | 0.868 | 0.896 | 0.1 |
| efficientnetv2_s | 0.875 | 0.899 | 0.2 |
| seresnext26t_32x4d | 0.885 | 0.898 | 0.4 |
| eca_nfnet_l0 | 0.866 | 0.886 | 0.1 |
| 加权集成 (Weighted Ensemble) | 0.893 | 0.909 | - |
特别令人鼓舞的是,我们的 SED 单模型在公共榜和私有榜之间表现出惊人的一致性,我们认为这反映了我们数据处理和模型训练流程的强大泛化能力。
人声处理(尤其是 CSA 文件)是本次竞赛的一个挑战性方面。通过广泛的实验,我们开发了一种方法,该方法在提高单模型公共榜性能的同时增强了稳定性。
该算法的设计基于一个关键洞察:音频文件是人工拼接的,由多个片段(鸟鸣片段 + 人声解说片段)组成,片段之间以静默间隔作为过渡。该算法利用预先计算的人声检测结果(感谢你的出色工作!@kdmitrie)来识别音频文件中的人声区域。
基于静默的分割
人声检测
片段选择策略
生成干净音频
通过这种预处理,我们可以自信地移除多余的人声解说,同时保留作为背景增强的环境人声。
在人声移除过程生成干净音频后,该算法确保我们提取最高质量的 5 秒片段用于训练。我们从清理后的音频中随机采样 3 个 5 秒片段,计算每个片段的 RMS(均方根)能量,并选择能量最高的片段。
这种方法在保持音频选择随机性的同时,增加了鸟鸣出现在随机 5 秒片段中的概率,这对于评估中使用的 5 秒推理窗口至关重要。
由于截止日期临近,我们将精力集中在完善 5 秒窗口方法上,而不是探索 10 秒训练窗口,这需要在未来进行更多实验。
我们采用并显著改进了去年第 2 名解决方案的伪标签策略:从未标记的测试集中随机选择的 5 秒音频片段以动态概率添加到训练样本中。在混合两个音频信号之前,两个波形的振幅都乘以随机因子。训练样本的目标向量(主要和次要物种位置为 1.0,其他位置为零)与伪标签(具有预测概率的向量)通过取两者的最大值进行组合,形成新的目标向量。
最初,我们发现使用固定概率(35%, 45%)并没有提高新模型的性能,反而使其更加不稳定。我们假设固定概率的伪标签混合可能会阻碍模型对声景领域的泛化。
我们的直觉:在训练的早期阶段,模型需要“更硬”的 ground truth 来学习基础知识,而在后期阶段,“更软”的指导可以帮助模型逐渐泛化到声景空间。
基于这种直觉,我们选择随着 epoch 线性增加混合概率,最终发现 0.2-0.5 是一个最佳范围。这种渐进式方法允许模型:
我们使用精心调整的权重对 1 分钟声景预测进行时间平滑:
# 对于中间片段 (i ∈ [1, N-2]) - 我们优化的 0.2-0.6-0.2 窗口:
new_pred[i] = 0.6 * pred[i] + 0.2 * pred[i-1] + 0.2 * pred[i+1]
# 对于边界片段:
new_pred[0] = 0.8 * pred[0] + 0.2 * pred[1]
new_pred[-1] = 0.8 * pred[-1] + 0.2 * pred[-2]
这个 0.2-0.6-0.2 的加权方案是经过广泛实验后选择的,它在时间一致性和片段独立性之间提供了最佳平衡。
我们的解决方案表明,渐进式伪标签结合复杂的音频预处理和集成技术可以在基于声景的鸟类物种识别中实现强大的性能。关键见解包括人声移除预处理的重要性、基于 RMS 的采样策略以及对伪标签训练的仔细超参数优化。
由于我们在比赛早期在 CNN 模型和许多无关细节上挣扎,直到最后一个月才找到迭代改进的正确方向,我们相信如果有更多时间,我们可以取得更好的结果。
我们希望我们的见解能对社区有所帮助。再次感谢所有参与者和组织者,让这次经历如此有益!
```