返回列表

Few words about 14th place solution

489. BirdCLEF 2022 | birdclef-2022

开始: 2022-02-15 结束: 2022-05-24 基因组学与生物信息 数据算法赛
关于第14名方案的简述

关于第14名方案的简述

感谢所有组织这次比赛的人。祝贺所有获得奖牌的选手。
似乎这次比赛的结果没有太大意义,因为主办方的解决方案是最好的。

简单说一下我的尝试,希望你们觉得有趣甚至有用。

评估指标 (Metrics)

我首先使用了宏观 Fb-score,这似乎适用于标签有噪声的情况。我选择了相当大的 beta 值 - 16 来提升召回率。
在阅读了主办方关于指标的一些评论后,我切换到了:
M = (1/N) * (1/21) * ∑∑( (TP/(TP+FN) + TN/(TN+FP))/2 )

对于任意数量的训练类别,指标仅基于评分类别计算:
y_true = tf.gather(y_true, indices=self.mask, axis=1)
y_pred = tf.gather(y_pred, indices=self.mask, axis=1)

外部数据 (External data)

  • 来自 Xeno-Canto 的 2 段夏威夷最新录音。
  • ff1010bird 数据集中没有鸟叫声的记录,用于混合。

输入 (Input)

输入主要使用预计算的 mel 频谱图,少数情况使用 PCEN。两者均由 Librosa 使用默认参数计算,nmels=128。因此对于 5 秒的音频,形状为 128x313。
对于 mel 频谱图,使用了原始去噪策略来减少整个文件中的平稳噪声。在推理时,同样的去噪方法被应用,但是针对 5 秒的片段级别而不是整个文件。

对于 mel-spec,在增强之后和 mixup 之前,进行了对数缩放并归一化到 0 到 1 之间。
对于 PCEN,在微小的增强之后和 mixup 之前,将其归一化到 0 到 1 之间。

稍微克服噪声标签的想法(在少数训练尝试中实现):
丢弃标准差低的时间箱(可用于 PCEN 或 log-melspectrogram):

std_over_f = pcen.std(axis=0)
pcen_f = pcen[:, std_over_f > std_over_f.mean()]

在通过 scipy.ndimage.convolve 重采样之前,可以应用一些掩码平滑。

方法 (Approaches)

实现了两种不同的方法:

  1. 所有(152个)物种的多分类器。 使用了 label_smoothing=0.1 的 CategoricalCrossentropy 损失。输出层使用 Sigmoid 作为激活函数(而不是 softmax)。在推理时,预测值被归一化到 0 到 1(除以最大值)。
  2. 选定物种的多标签分类器。 除了评分标签外,还选择了与评分标签(在次要标签中)有高度重叠的物种,或者录音数量巨大的物种。未选中物种的记录用于与初始输入进行随机混合。
    使用了带有标签平滑的 tf.nn.weighted_cross_entropy_with_logits(weight=4.0, label_smoothing=0.1)。

ff1010bird 数据集也被尝试作为初始输入:在第一种方法中作为 nocall(无叫声)类别,在第二种方法中作为所有类别的缺失,而不是用于混合。

主要使用带有 noisy-student 权重的 EfficientNets(B0, B2, B3),同时也针对 mel-spec 多分类器训练了 seresnet101。
在大多数尝试中,没有使用简单的全局池化,而是使用在一个轴上的 AutoPool,随后是平均池化。

数据增强 (Augmentations)

  1. 在整个文件内部随机裁剪 5 秒窗口(或者在过采样情况下裁剪受限部分)。
  2. 通过在时间轴上调整大小进行时间拉伸和压缩。
  3. 如果文件短于 5 秒,进行随机填充。
  4. 随机低通滤波,大约直接在 mel-spec 上完成。
  5. 与 ff1010bird 中的无鸟记录混合。
  6. 时间上的混合:最多可以取五个连续的 5 秒部分,并以随机增益进行混合。
  7. Mixup:beta=2, alpha=3*beta。在混合评分标签与非评分标签的情况下,强制混合 lambda >=0.5。

阈值 (Thresholds)

在验证集的整个文件上评估训练好的模型,并估计最佳阈值。不同方法获得的阈值进行了平均,并根据对数据集中每种鸟类数据量的了解进行了调整。
对于 7 个稀有类别,使用了最小值 0.25,只有两个物种(skylar 和 houfin)的阈值超过 0.5。

模型集成 (Ensemble)

首先估算每种方法的平均预测值(mel-spec 多分类、pcen 多分类、mel-spec mixin 多标签),然后根据 LB 结果选择的系数进行最终的加权平均。

后处理 (Post-processing)

为了减少 FP(假阳性)并找出 nocall

同比赛其他方案