2019 Kaggle Freesound 音频标注挑战赛结果出炉,这是一份排名前 2 %的解决方案! .txt2020年06月26日22时31分59秒

作者: 发表时间:2020-06-26 19:37:52 浏览人数:142

雷锋网(官方账号:雷锋网)人工智能技术点评:据介绍:2019年卡格尔自由音响挑战赛揭晓,比赛结果最终公布。竞争对手之一的埃里克布泰隆(Eric bouteillon)是全球无缝支付解决方案提供商Ingenico集团的产品总监。他提交的解决方案在本次比赛中进入前2%的排名,并获得第八名。最近,他在GitHub上分享了解决方案,并详细介绍了解决方案的递归步骤。

这个开源库为创建高效的音频注释系统提供了一个半监督的预热管道,并为多标签音频注释提供了一种新的数据增强技术specmix。

在提交给2019年kaggle freesound音频注释挑战的音频注释系统中,我们应用了这些新技术。该挑战是声学场景和事件检测与分类挑战(DCASE2019)的第二个任务挑战。目标是在具有大规模词汇设置的多标签音频标注任务中,使用机器学习技术,对少量可靠的、人工标注的数据和大量噪声网络音频数据进行训练,以预测每个测试帧的音频标签。

在公开的挑战排行榜中,该解决方案通过jupyter笔记本电脑运行,lwlrap值为0.738,这意味着它在竞争中排名第八。

您还可以在公共kaggle数据集中找到cnn-model-1和vgg-16训练的权重结果。应该注意的是,由于配额原因,作者没有使用git-LFS来存储这些权重结果。

这个挑战要求参与者在不改变配置的情况下在kaggle内核中执行推理。因此,竞争对手在比赛中使用与kaggle内核相同版本的pytorch和fastai加载本地生成的CNN权重是非常重要的。因此,竞争对手选择使用Pythorc1.0.1和Fastai1.0.51非常重要。

要获得与本地系统相同的配置,请在GNU Linux Ubuntu18.04.2 lts上测试以下步骤:

注意:CUDA 10已安装在我的配置中,因此您可能必须在规范-文件.txt中的配置可调整pytorch和cudatoolkit的版本。

conda安装numpy pandas scipy scikit learn matplotlib TQM seaborn Pythorch==1.0.1 torchvision cudatoolkit=10.0 fastai==1.0.51-c Pythorch-c fastai

CC=CC-mavx2 pip install--没有缓存目录-U--强制重新安装--没有二进制文件:all:--编译枕头simd

CUDA 10安装在我的配置中,因此您可能需要根据自己的配置调整pytorch和CUDA工具包的版本

除了需求.txt和规格-文件.txt你可以从那里得到康达。

在CNN模型训练中,您将创建一个工作文件夹和一个准备好的文件夹,并且您可能希望更改它们的位置:这和更新工作和准备好的变量一样简单。

如果要在本地设置中使用给定(或您自己的)权重和推理笔记,只需更新列表指向的模型/文件夹路径。我保留了Kaggle内核在这个挑战中使用的路径。

首先用前端和端部静音(阈值为60db)对音频剪辑进行剪辑,然后将音频剪辑转换为128波段Mel频谱,采样率为44.1khz,连续帧之间采样347跳长,2560fft分量,频率在20hz-22050hz范围内。最后,预处理,包括对图像进行正则化(均值=0,方差=1),并将其复制到三个通道。

版本1包括表1中定制的cnn-model-1和批量规格化的vgg-16。两者的训练方式都是一样的。

表1:cnn-model-1。BN为批量规范化,relu为校正线性单元

使用小训练集的一个重要技术是利用数据增强来扩展训练集。为此,我们开发了一种新的数据增强方法specmix。它是specaugust的扩展(见参考文献1),灵感来自mixup(见参考文献2)。

Specmix的灵感来源于specaugust的两个最有效的转换,并对它们进行了扩展以创建虚拟多注释训练示例:

一。使用频率替换方法,将f连续Mel频率通道[F0,F0+f]替换为另一个训练样本,其中f首先从频率掩码参数f的最小值到更大值的均匀分布中选择,F0从[0,νf]中选择,V表示Mel频率通道的数量。

2。采用时间替换的方法,用另一个训练样本替换T连续时间步[T0,T0+T]。在后期,t首先从0到时间掩模参数t的均匀分布中选取,t0从[0,τt]中选取。τ表示时间样本数。

三。计算新训练样本的目标作为每个原始样本的加权平均权重。每个原始样本的权重与样本中的像素数成比例。我们在频率替换和时间替换中使用的替换样本是相同的,这给了我们一个新的计算目标如下:

Specmix之前使用mixup作为数据增强方法,并得到了一个小的改进(lwlrap增加了+0.001)。首先,mixup应用于当前批处理以生成新样本,然后specmix应用于这些新创建的样本。最后,将mix-up和specmix应用于四个样本以生成单个样本。

在训练中,我们提供128个增强段,从随机选择样本的Mel谱到网络批处理,并使用10倍交叉验证设置和fastai库(见参考4)。

非常重要的是,外部数据或预先训练的模型在这场比赛中是不允许的。因此,我们将展示本次比赛中使用的的策展和噪声集:

在阶段,只使用噪声集对模型1进行零训练,然后在噪声集上计算交叉验证的lwlrap(lwlrap1)。

第二阶段:仅在馆长集合上训练模型(模型2),但使用模型1作为训练前模型。然后在噪声集(lwlrap2)上计算交叉验证的lwlrap。

第三阶段:开始半监督学习:我们的算法从噪声集中选择样本,模型1和模型2对噪声集进行正确分类(基本上)。该算法避免了噪声的干扰,使几何平均值(lwlrap1,lwlrap2)大于或等于0.5。每个文件和每个维度最多选择5个样本。然后在选定的噪声样本上对模型(模型3)进行训练,并将模型2作为预训练模型。然后在噪声集(lwlrap3)上计算交叉验证的lwlrap。

阶段4:让我们继续半监督学习:我们的算法再次从噪声集中严格选择样本,并根据模型3正确分类。该算法避免了噪声的干扰,使lwlrap3=1。然后在选定的噪声样本上对模型(模型4)进行训练,并将模型3作为预训练模型。

为了说明原因,我们将测试音频片段分割为128个时间采样(2秒)窗口,其中窗口重叠。然后将这些样本输入到我们的模型中,以获得预测结果。平均所有链接到音频剪辑的预测结果,以获得最终预测结果。

这种竞赛对测试预测推理有很大的限制:它必须通过kaggle核提交,并且有时间限制。因为我们的解决方案需要GPU,所以对从未完全看到的测试集的推断需要在一个小时内完成。

组织者提供的测试集是开放测试集的三倍以上,因此我们应该确保在1000秒内推断出开放测试集,这样内核应该在3000秒内推断出未显示的测试集,并且确保时间波动范围在20%以上。

为了评估系统的性能,我们将结果显示在表2中。结果包括系统在经过10倍交叉验证的噪声集和校正集上的性能评估,以及在公共排行榜上公布的测试集预测的评估值。使用的测量标准是lwlrap(注释权重和注释排序的平均精度)

在试验过程中,在预热管道的各个阶段都生成了一个具有良好预测性能的模型。如图3所示,每个型号在公共排行榜上排名第25位,使我们能够赢得银牌。此外,这些热身模型本身也带来了足够的多样性,因为它们的简单平均预测值(lwlrap 0.733)在公共排名中排名第16位。

git开源库为创建高效的音频注释系统提供了半监督的预热管道,并为多标签音频注释提供了一种新的数据增强技术specmix。这些技术同时使用了干净和有噪声的数据集,并显示出良好的效果。

这些结果是可重复的,其需求描述、步骤和源代码可以在github1上获得。源代码是在开源许可证(MIT)下发布的。

感谢我5岁的儿子,他的大力支持使这些成就成为可能。当我看排行榜时,他说:“爸爸,你是更好的,你会是更好的。“”

我也感谢整个kaggle社区分享知识、想法和代码。特别感谢大辅的核心节目,mhiro2的简单CNN模式,以及所有的比赛组织者。

[1]Daniel S.Park,William Chan,Yu Zhang,Chung Cheng Chiu,Barret Zoph,Ekin D.Cubuk,Quoc V.Le,SpecAugment:一种简单的自动语音识别数据增强方法,第十四章:1904.087792019年

[2]张弘毅,西塞,多芬,帕兹。失误:经验风险最小化。arXiv预印本arXiv:1710.09412号,2017年

[3]爱德华多·丰塞卡,马诺伊·普拉卡尔,弗雷德里克·方特,丹尼尔·p·W·埃利斯和泽维尔·塞拉。带噪音标签的音频标签和更低限度的监督。提交至2019年DCASE2019研讨会。网址:https://arxiv.org/abs/1906.02975

[4]fastai,Howard,Jeremy等人,2018年,网址:https://github.com/fastai/fastai

统计 字数: 17236 汗字: 14460 数字:176 大写字母:170 小写字母:896 符号:1534 总字节数:31696 共:88行2020年06月26日22时31分59秒

Top
RELATEED CONSULTING相关咨询
选择下列产品马上在线沟通
服务时间:9:00-19:00
你可能遇到了下面的问题