第6名方案 (人机回环)
第6名方案 (人机回环)
作者: shinmura0 | 比赛: BirdCLEF 2022 | 排名: 6/867
首先,我要感谢比赛主办方和Kaggle团队组织了如此有趣的比赛。也要感谢所有的Kagglers。
概述
也许我的SED模型和你的模型是一样的。
清洗数据和后处理是我方案中的重点。
清洗数据 (重要)
在BirdClef2021比赛中,我制作了标注数据,效果很好。但是手工标注非常耗时。
因此,在本次比赛中,我没有采用手工标注,而是使用了人机回环的方法:
- 首先,使用主要标签 (primary label) 训练SED模型
- 其次,在训练数据中提取高置信度的SED预测结果
- 我听取这些预测结果并判断正确与否
- 人工验证(我回答是或否)
通过这种“人机回环”方式,我制作了2000条清洗数据。这些数据仅包含计分鸟类。
训练数据
我使用了3种类型的数据。
- HIL_data (=人机回环数据)
- other_data (不计分鸟类数据,约130种)
- psuedo_data (计分鸟类,且不包含HIL音频)
- 初始3秒音频
- 伪标签 = 0.25*primary_label + 0.25*第一代模型 + 0.5*第二代模型
训练数据的比例如下,这是最佳比例:
HIL_data : other_data : psuedo_data = 1 : 4 : 1
SED 模型
- 主干网络: eca_nfnet_l0, dm_nfnet_f0
- 仅使用 "clipwise_output" (训练和推理)
- 基础增强
- 时间平移
- 添加粉红噪声和棕色噪声
- 混合其他音频数据集 (ESC-50: 青蛙、雨、飞机、劈啪作响的火)
- SpecAugment++ (混合 Mel-spec 使用 ESC-50)
- 标签平滑 (alpha=0.1)
- 优化器: Adam
- lr=0.0001
- CosineAnealing (T=10)
- Epoch: 30 (在 Colaboratory 上约需 14 小时)
- Loss: BCEWithLogitsLoss
- 输入 (训练 & 推理): 5秒
- STFT 分辨率: 250x254
- window_size: 1024
- hop_size: 630
- mel_bins: 250
- fmin: 50
- fmax: 14000