489. BirdCLEF 2022 | birdclef-2022
正如我所承诺的,我将在比赛结束后立即发布我的解决方案。这将是一个很长的话题,因为这两个解决方案完全不同。因为 Kaggle 提示“您分享此链接的频率过高。我们阻止冗余帖子以减少垃圾邮件”,所以我将一些链接放在了代码块中。
在介绍解决方案之前,感谢我的队友 @jionie,这是我们获得的第二枚金牌,也是第一次进入奖金区!!!!!!干杯!!!!!!
我将首先从我们的 [Private #7/8 (潜在)] 解决方案开始,因为我保证你在看到另一个解决方案后会说出那个“F”开头的词。
训练:
我们的第一个解决方案是基于 @kaerunantoka 的 公共 Notebook 和去年的第二名解决方案。训练代码基本上是上述两个流程的混合体。
需要提及的一些关键点:
数据增强:
OneOf([
Gain(min_gain_in_db=-15, max_gain_in_db=15, p=0.8),
GainTransition(min_gain_in_db=-15, max_gain_in_db=15, p=0.8),
]),
OneOf(
[
NoiseInjection(p=1, max_noise_level=0.04),
GaussianNoise(p=1, min_snr=5, max_snr=20),
PinkNoise(p=1, min_snr=5, max_snr=20),
AddGaussianNoise(min_amplitude=0.0001, max_amplitude=0.03, p=0.5),
AddGaussianSNR(min_snr_in_db=5, max_snr_in_db=15, p=0.5),
],
p=0.3,
),
AddBackgroundNoise(
sounds_path=self.config.BACKGROUND_PATH, min_snr_in_db=0, max_snr_in_db=2, p=0.5
),
Normalize(p=1),
CutMix + MixUp
损失函数: BCEWithLogits + BCEFocal2WayLoss
超参数设置 (n_fft, n_mels, hop_length) 请参考我们的推理 Notebook。
我们的推理内核和所有训练好的模型均公开可用。
只有一个关键点需要提及:如果在之前或之后的 5 秒内检测到鸟类,我们将对概率进行排序,并将前 5 名的鸟类物种添加到当前检测到的鸟类中。
由于该解决方案未被选为我们的最终提交,我们不知道实际排名,但由于其在 Private LB 上得分为 0.79,排名应该在 7-8 位。
实际上,我很好奇没有人发现这一点,该解决方案是由主办方提供的,并且最终被主办方允许。