419. Rainforest Connection Species Audio Detection | rfcx-species-audio-detection
感谢 Kaggle 举办了这场激动人心的比赛。我们的团队( @dathudeptrai @mcggood @akensert @theoviel @ratthachat )祝贺所有的获胜者——我们从这次比赛和所有获胜者的方案中学到了很多!!
从获胜者的方案来看,主要有 4 种方法可以突破 0.95x 的分数:
我们实际上尝试了前三种方法,但不幸的是没能真正有效地发挥作用。在这里,作为一个替代方案,我们非常愿意分享我们自己的解决方案,该方案在 Private 榜上达到了 0.943 分。
我们的基线模型得分略高于 0.8。我们采用了音频标记方法,使用 densenet121 作为骨干网络,并使用 BCE 损失函数。
我们的训练流程包含以下技巧:
由于数据量小,模型很快就会过拟合。为了解决这个问题,有两种选择:使用外部数据和巧妙地预训练模型。与许多竞争对手不同,我们专注于自预训练技术:@dathudeptrai 尝试了自编码器、GAN、SimCLR、Cola 以及 监督对比学习,最终只有后者有效。

我们的采样策略包括随机选择包含标签的裁剪区域。大多数时候,裁剪区域比标签大,这会引入假阳性。为了充分利用我们的窗口,一个想法是调整 cutmix 以连接样本,从而尽可能完整地保留标签。
域偏移在深度学习中总是存在,无论是在实践还是 Kaggle 比赛中,尤其是对于小数据而言。因此,域泛化技术应该有助于提高鲁棒性。我们应用了一种简单而有效的技术,称为 Mixstyle。
物种叫声的持续时间差异很大。例如,类别 3 大约是 0.7 秒,而类别 23 大约是 8 秒。为了利用这些先验信息,我们使用多种窗口大小(而不是使用单一大小)。对于每个类别,我们选择产生最佳 CV 的窗口大小。如果有多个窗口大小达到最大值,我们取最大的窗口。尽管我们的 CV 设置(由以标签为中心的裁剪组成)与 LB 的相关性不是很好,但 2% 的 CV 提升在 LB 上反映得很好。
我们使用以下假设来改进模型的训练:
对于给定的录音,如果一个物种有 FP(假阳性)且没有 TP(真阳性),则它不在叫声中。我们的 BCE 随后被更新,以确保模型对此类物种预测为 0。
我们最好的单模型 densenet121 在 Public 榜得分约为 0.92,在 Private 榜得分约为 0.93。通过对不同骨干网络的模型进行平均,我们达到了 0.937。我们尝试了许多不同的集成、尺度修正和后处理想法,并能够稍微提高我们的分数,但不幸的是我们没能找到真正的魔法。
最后,我们凭经验分析了最佳模型中最不确定的类别预测,并将预测结果与其他(较弱的)模型进行平均。我们依靠多样性来使提交更加稳健。我们的最终集成在 Public 榜得分为 0.942,Private 榜得分为 0.943