音频竞赛核心方法

音频竞赛核心方法


一、音频特征提取

1.1 Google Perch v2

维度 说明
模型架构 Google 预训练音频分类器,基于 AudioSet 数据集
输出维度 1536 维嵌入向量 + 原始 logits
类别覆盖 14,795 个科学名类别
推理方式 CPU 友好,支持 ONNX Runtime 加速
窗口策略 60s 音频切分为 12 个 5s 非重叠窗口
缓存机制 预计算输出保存为 parquet + npz,避免重复推理
适用场景 鸟类识别、通用音频分类

1.2 BEATs 编码器

维度 说明
模型架构 BEATs iter3+ AS2M(AudioSet 2M 预训练)
输出维度 768 维帧嵌入(frame-level)
优势 对昆虫、两栖类声音特征提取能力强
降维策略 PCA 768→256 维,减少计算量和过拟合
处理量 支持全量音频预计算(CPU only)
输出文件 embeddings.npz(约 900MB)
适用场景 多物种音频识别、昆虫/两栖类检测

1.3 梅尔频谱图

维度 说明
参数配置 sr=32000,n_fft=2048,hop_length=512
梅尔通道 n_mels=128(NFNet)或 256(SED CNN)
频率范围 fmin=0,fmax=16000
动态范围 top_db=80.0
图像尺寸 224×224(NFNet)或 256×256(SED CNN)
归一化 归一化后复制为 3 通道输入 CNN
适用场景 直接输入 CNN 骨干网络(NFNet、EfficientNet)

二、时序建模方法

2.1 Selective State Space Model(SSM)

维度 说明
核心思想 状态空间模型捕获时序动态,比 RNN 更高效
ProtoSSM 配置 d_model=320,d_state=32,4 层 SSM
原型数量 每类 2 个原型,用于原型余弦分类
交叉注意力 SSM 层间 8 头时序交叉注意力
ResidualSSM 第二遍校正,d_model=128,d_state=16,2 层
优势 比 Transformer 更轻量,适合长序列
适用场景 音频帧序列建模、时序分类

2.2 Attention Pooling

维度 说明
核心思想 自动学习鸣叫帧的权重,替代简单平均
实现方式 注意力机制对帧嵌入加权求和
优势 自动聚焦有声片段,忽略静音帧
适用场景 BEATs 帧嵌入聚合、SED 任务

2.3 GEM 频率池化(GeM Pooling)

维度 说明
核心思想 广义平均池化,平衡全局平均和最大池化
公式 f_i = (1/N * sum(x_j^p))^(1/p),p 可学习
优势 保留频率维度的关键特征
适用场景 梅尔频谱图 CNN 骨干后池化

三、音频数据增强

3.1 SpecAugment

维度 说明
频率掩码 随机遮蔽连续频率通道
时间掩码 随机遮蔽连续时间帧
参数设置 频率掩码数=2,时间掩码数=2
优势 提升模型对频率/时间变化的鲁棒性
适用场景 梅尔频谱图输入、帧嵌入增强

3.2 Mixup / CutMix(时序序列)

维度 说明
Mixup 时序嵌入序列线性插值,alpha=0.3~0.5
CutMix 时序序列片段替换混合
嵌入增强 mixup + dropout + noise 组合
优势 提升泛化能力,缓解过拟合
适用场景 ProtoSSM 时序嵌入、BEATs 嵌入训练

四、元数据融合

4.1 贝叶斯先验表

维度 说明
站点流行度 各观测站点的物种出现频率
小时流行度 一天中各小时的物种活动频率
联合流行度 站点×小时的联合分布
融合权重 类类型特定的 lambda 权重(Texture/Event)
收缩策略 向全局均值收缩,避免稀疏类别过拟合
适用场景 Perch v2 后处理、先验知识融合

4.2 元数据注入

维度 说明
注入特征 hour of day、站点信息
注入方式 作为额外特征输入分类头
嵌入表示 站点/小时嵌入向量
优势 利用时间/空间先验提升预测准确性
适用场景 BEATs SED Head、时序分类

五、音频后处理技术

5.1 时序平滑(Delta Shift Smoothing)

维度 说明
核心思想 利用相邻时间窗口的预测结果平滑当前预测
参数设置 alpha=0.20,12 窗口序列
公式 p_t = alpha * p_{t-1} + (1-alpha) * p_t
优势 减少时序预测抖动,提升稳定性
来源 2025 Rank 1 技术
适用场景 多窗口音频序列后处理

5.2 TTA(时间平移测试时增强)

维度 说明
平移偏移 5 个偏移:[0, 1, -1, 2, -2]
实现方式 循环移位时间窗口,多次推理取平均
优势 提升预测鲁棒性,对时间偏移不敏感
适用场景 ProtoSSM、Perch v2 推理

5.3 温度缩放(Temperature Scaling)

维度 说明
每类群温度 Aves: 1.10,Texture taxa(两栖类、昆虫): 0.95
核心思想 不同类群使用不同温度参数校准概率
优势 针对类群特性优化概率分布
适用场景 ProtoSSM 输出校准

5.4 排名感知缩放(Rank-Aware Scaling)

维度 说明
核心思想 按文件最大值预测进行 power transform
参数设置 power=0.4
优势 提升高置信度预测的区分度
来源 2025 Rank 3 技术
适用场景 多物种分类后处理

5.5 文件级置信度缩放

维度 说明
核心思想 top-2 窗口均值缩放
实现方式 使用 top-K 窗口的平均置信度调整预测
优势 利用文件内多窗口一致性提升置信度
来源 2025 竞赛技术
适用场景 多窗口音频文件后处理

5.6 逐类阈值优化

维度 说明
优化方法 OOF 优化网格搜索 [0.25 … 0.70]
核心思想 每个物种使用不同的决策阈值
优势 针对物种特性优化召回/精确率平衡
适用场景 多物种分类提交

5.7 属级代理(Genus-Level Proxy)

维度 说明
问题背景 部分竞赛物种未映射到 Perch 类别
解决方案 使用同属任何 Perch 类别的最大 logit 近似
优势 利用分类学关系处理未映射物种
适用场景 Perch v2 标签映射后处理

六、音频特有模型架构

6.1 SED CNN 架构

维度 说明
Backbone tf_efficientnet_b0.ns_jft_in1k
池化 GEM 频率池化(GeM pooling)
Attention SED Head 注意力池化 + 分类卷积
输出 clipwise 概率 + segmentwise logits
输入 256×256 梅尔频谱图(3 通道)
适用场景 声音事件检测(SED)

6.2 NFNet 架构

维度 说明
Backbone eca_nfnet_l0(24M 参数)
特点 Normalizer-Free Networks,与 Perch v2 特征互补
ECA 注意力 Efficient Channel Attention,轻量级通道注意力
输入 224×224 梅尔频谱图
优势 确保模型多样性,与其他方案互补
适用场景 梅尔频谱直接分类

6.3 ProtoSSM 分类头

维度 说明
原型余弦头 基于原型向量的余弦相似度分类
门控蒸馏 ProtoSSM 分类头结合 Perch logits 蒸馏
蒸馏权重 distill_weight: 0.1
多任务 物种 BCE + 原型对比 + 蒸馏 + 分类学辅助
适用场景 Perch 嵌入时序分类

七、音频竞赛工程实践

7.1 内存安全设计

维度 说明
渐进式降级 commit 失败时按顺序关闭组件
降级顺序 batch_files: 8→4 → USE_MLP_PROBES=False → USE_BIRDNET_FORCE_OFF=True
batch_files 调节 Perch batch_files 默认 8,比 24 更安全
ResidualSSM 默认关闭,最大内存风险分支
适用场景 Kaggle 90 分钟时间限制、CPU 推理

7.2 ONNX 推理优化

维度 说明
核心思想 使用 ONNX 格式推理 Perch 模型
优势 提升 CPU 推理速度
适用场景 Kaggle CPU 推理加速

7.3 外部数据集成

维度 说明
数据来源 Xeno-canto(XC)音频数据
筛选条件 Aves,Q A
处理流程 下载→重采样 32kHz 单声道→Perch v2 提取嵌入
输出 xc_perch_embeddings.{npz,parquet}
规模 11,563 条 XC 录音,159 种
适用场景 扩充训练数据、提升稀有物种表现

八、音频竞赛典型流水线

8.1 Perch + ProtoSSM 流水线

音频 (.ogg, 60s)
  → 12 × 5s 非重叠窗口
    → Perch v2 提取 logits + 1536 维嵌入
      → ProtoSSM_v5(第一遍) + MLP
        → 集成 → ResidualSSM(第二遍)
          → TTA → 每类群温度
            → 文件级缩放 → 排名感知
              → Delta 平滑 → 逐类阈值
                → 最终输出

8.2 BEATs + SED 流水线

音频
  → BEATs 帧嵌入提取 [N, 8, 768]
    → StandardScaler + PCA(768→256)
      → 5x AttentionSEDHead 集成
        → 预测平均 → sigmoid
          → 最终输出

8.3 NFNet 流水线

音频
  → 梅尔频谱 (sr=32000, n_mels=128, 5s→224×224)
    → eca_nfnet_l0 前向传播
      → sigmoid
        → 最终输出

8.4 Perch v2 流水线

音频 (.ogg, 60s)
  → 12 × 5s 非重叠窗口
    → Perch v2 提取 logits + 1536 维嵌入
      → 贝叶斯先验融合
        → PCA 降维 (64 维)
          → 逻辑回归探针
            → 混合输出

九、音频竞赛关键参数配置

9.1 ProtoSSM 训练配置

参数
d_model 320
d_state 32
SSM 层数 4
原型数量 每类 2 个
交叉注意力头数 8
训练轮数 80
余弦重启周期 20
SWA 起始轮 52
SWA 学习率 4e-4
蒸馏权重 0.1

9.2 MLP 探针配置

参数
隐藏层 (256, 128)
Focal loss gamma 2.5
标签平滑 0.03
交叉验证 5 折 OOF

9.3 ResidualSSM 配置

参数
d_model 128
d_state 16
SSM 层数 2
校正权重 0.35

9.4 NFNet 训练配置

参数
Backbone eca_nfnet_l0
采样率 32000
n_mels 128
片段长度 5s → 224×224
Focal loss gamma 2.0
交叉验证 StratifiedGroupKFold
数据增强 Mixup(alpha=0.5) + SpecAugment

十、音频竞赛 LB 分数参考

方案 特征提取器 分类头 时序建模 LB 分数
ProtoSSM v5 Perch v2 (1536d) ProtoSSM + MLP BiSSM (4 层) 0.929
BEATs SED BEATs (768d) AttentionSEDHead 帧序列 0.912
Perch v2 Perch v2 (1536d) LR Probes 时序平滑 0.908
LB 0.948 Perch v2 + ProtoSSM 多模型集成 BiSSM + TTA 0.948