返回列表

[Public #1 Private #2] + [Private #7/8 (potential)] solutions. The host wins.

489. BirdCLEF 2022 | birdclef-2022

开始: 2022-02-15 结束: 2022-05-24 基因组学与生物信息 数据算法赛
[Public #1 Private #2] + [Private #7/8 (潜在)] 解决方案。主办方获胜。

[Public #1 Private #2] + [Private #7/8 (潜在)] 解决方案。主办方获胜。

作者: Leon (Grandmaster) | 比赛排名: 第2名

正如我所承诺的,我将在比赛结束后立即发布我的解决方案。这将是一个很长的话题,因为这两个解决方案完全不同。因为 Kaggle 提示“您分享此链接的频率过高。我们阻止冗余帖子以减少垃圾邮件”,所以我将一些链接放在了代码块中。

在介绍解决方案之前,感谢我的队友 @jionie,这是我们获得的第二枚金牌,也是第一次进入奖金区!!!!!!干杯!!!!!!

我将首先从我们的 [Private #7/8 (潜在)] 解决方案开始,因为我保证你在看到另一个解决方案后会说出那个“F”开头的词。

[Private #7/8 (潜在)] 解决方案

训练:
我们的第一个解决方案是基于 @kaerunantoka公共 Notebook 和去年的第二名解决方案。训练代码基本上是上述两个流程的混合体。
需要提及的一些关键点:

  1. 数据增强:

    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),
  2. CutMix + MixUp

  3. 损失函数: BCEWithLogits + BCEFocal2WayLoss

  4. 超参数设置 (n_fft, n_mels, hop_length) 请参考我们的推理 Notebook。

我们的推理内核和所有训练好的模型均公开可用
只有一个关键点需要提及:如果在之前或之后的 5 秒内检测到鸟类,我们将对概率进行排序,并将前 5 名的鸟类物种添加到当前检测到的鸟类中。

由于该解决方案未被选为我们的最终提交,我们不知道实际排名,但由于其在 Private LB 上得分为 0.79,排名应该在 7-8 位。

[#1 Private #2] 解决方案

实际上,我很好奇没有人发现这一点,该解决方案是由主办方提供的,并且最终被主办方允许。

  1. 如果你查看讨论帖 Meet the host,你会发现主办方在帖子中提到了 BirdNet 项目
  2. 点击链接,很容易找到主办方的 GitHub 仓库
  3. 然后,找出主办方模型与评分鸟类之间的重叠类别,21 种评分鸟类中有 20 种是相同的(除了 aniani)。
  4. 相应地修改 example 文件夹下的 species_list.txt,我已将修改后的仓库上传到 Kaggle 这里
  5. 按照我们的
    同比赛其他方案