返回列表

44th place solution

489. BirdCLEF 2022 | birdclef-2022

开始: 2022-02-15 结束: 2022-05-24 基因组学与生物信息 数据算法赛
第44名解决方案

第44名解决方案

作者: Kinosuke (Master) | 比赛排名: 第43名

感谢主办方组织了如此有趣的比赛。对我来说,这是一次很棒的学习经历。

简短总结

我的解决方案是 SED(声音事件检测),基于 @hidehisaarai1213 在 BirdCLEF2021 中发布的代码。
这次排名的取得没有修改模型结构,而是通过设计新的数据集和更改主干网络来实现的。
非常感谢 hidehisaarai1213 发布了这个精彩的 Notebook!

预处理

众所周知,这次的数据标签是不平衡的,所以我采用了一种策略:如果声源长度较短,则多次获取该声源。
我将标签数量分为以下三个级别:
对于 "FEW" 类别,数据增加了三倍;对于 "VERY FEW" 类别,数据增加了四倍,然后进行训练。
正如我稍后会解释的,用于训练的数据是声源的一个片段(20秒),所以我假设可以通过改变起始点来多次利用这些数据。

数据分布图

MANY : 'skylar', 'houfin', 'jabwar', 'warwhe1', 'yefcan', 'apapan','iiwi', 'hawcre'
FEW : 'hawama', 'omao', 'barpet', 'akiapo', 'elepai', 'aniani'
VERY FEW : 'hawgoo', 'ercfra', 'hawhaw', 'hawpet1', 'puaioh', 'crehon','maupar'

数据增强

对 "MANY" 类别使用弱增强,对 "FEW" 类别使用强增强。这里的“强”意味着以高概率进行变换。

augment_strong = Compose([
    AddGaussianNoise(min_amplitude=0.001, max_amplitude=0.015, p=0.5),
    AddGaussianSNR(p=0.5),
    Gain(min_gain_in_db=-12, max_gain_in_db=12, p=0.5),
    TimeStretch(min_rate=0.8, max_rate=1.25, p=0.5),
    AddBackgroundNoise(sounds_path=noise_dir, min_snr_in_db=3, max_snr_in_db=30, p=0.5),
    AddShortNoises(noise_dir, p=0.5),
    PitchShift(min_semitones=-4, max_semitones=4, p=0.5),
    Shift(min_fraction=-0.5, max_fraction=0.5, p=0.5),
])

augment_weak = Compose([
    AddGaussianNoise(min_amplitude=0.001, max_amplitude=0.015, p=0.2),
    AddGaussianSNR(p=0.2),
    Gain(min_gain_in_db=-12, max_gain_in_db=12, p=0.2),
    TimeStretch(min_rate=0.8, max_rate=1.25, p=0.2),
    AddBackgroundNoise(sounds_path=noise_dir, min_snr_in_db=3, max_snr_in_db=30, p=0.2),
    AddShortNoises(noise_dir, p=0.2),
    PitchShift(min_semitones=-4, max_semit
同比赛其他方案