489. BirdCLEF 2022 | birdclef-2022
感谢主办方组织了如此有趣的比赛。对我来说,这是一次很棒的学习经历。
我的解决方案是 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