DCASE2019_Task3代码复现

DCASE2019_Task3代码复现

参考文献

[1] Cao Y, Kong Q, Iqbal T, et al. Polyphonic sound event detection and localization using a two-stage strategy[J]. arXiv preprint arXiv:1905.00268, 2019.

论文: TWO-STAGE SOUND EVENT LOCALIZATION AND DETECTION USING INTENSITY VECTOR AND GENERALIZED CROSS-CORRELATION(基于强度向量与广义互相关的两步声事件定位与探测)

相关代码: https://github.com/yinkalario/Two-Stage-Polyphonic-Sound-Event-Detection-and-Localization/

论文内容摘要

DCASE2019_Task3代码复现_第1张图片

内容 概述
输入特征 LogMel谱 、广义互相关谱
网络 两个分支
输出 类别预测概率

环境搭建

  • 推荐环境:Python3.6+Pytorth1.0。
  • 下面展示的是 我使用的环境
h5py==3.1.0
ipython==8.4.0
joblib==0.17.0
librosa==0.9.2
matplotlib==3.3.4
numpy==1.19.5
pandas==0.25.3
scikit_learn==1.1.1
scipy==1.5.4
tensorboardX==2.5.1
torch==1.4.0
torchsummary==1.5.1
tqdm==4.64.0

使用

数据集准备

数据集准备具体参见上面给出的代码的github页面,里面有详细教程,另外数据集下载链接也能在github页面中找到。

dataset_root
├── metadata_dev (400 files)
│ ├── split1_ir0_ov1_0.csv
│ └── …
├── foa_dev (400 files)
│ ├── split1_ir0_ov1_0.wav
│ └── …
├── mic_dev (400 files)
│ ├── split1_ir0_ov1_0.wav
│ └── …
└── …

如上所示,数据集中mic_dev主要是用于训练和交叉验证,metadata_dev则是训练数据的标签。
数据集详情见dcase官网: TAU DataSet

代码执行

代码项目结构:
DCASE2019_Task3代码复现_第2张图片

代码执行步骤:
  1. 修改0_directories.sh,设置项目工作目录、数据集目录和提取的特征文件所在的目录,然后通过 source命令运行设置目录。
  2. 修改1_extract_features.sh设置提取特征的相关配置,然后通过 source命令运行提取特征,特征文件包含以 .h5为后缀,根据设置包含了对数梅尔谱、广义互相关谱、声事件类别及位置等参数。
  3. 修改2_train.sh,设置相关参数,然后通过 source命令运行文件进行模型训练。
  4. 修改3_evaluation.sh,设置相关参数,然后通过 source命令运行文件进行模型性能评估。

模型训练方法

需要解决的文件是声分类与角度定位。

  • 模型训练方法为Two_Stage,声分类和角度定位分两步训练。
  • 声分类:使用CRNN10模型训练,损失函数使用二进制交叉熵函数。训练后将8层CNN feature layer迁移至定位的网络模型(文中认为该操作可以使用于定位网络模型利用声分类中先验信息辅助定位)。
  • -定位:使用pretrained_CRNN10,损失函数为最小平方误差函数对声事件的水平角和俯仰角进行回归(区别于数据集中将空间划分为324类)。

模型验证

  • 训练期间使用4折交叉验证,通过4折交叉验证选取模型。
  • K折交叉验证的模型选取问题记录:最后选定的模型是直接从K个模型中效果选择效果最好的模型还是把效果最好的模型训练时的超参数不变重新在全部训练集上重训一次呢?我个人认为重训一次更合理。

模型推理

使用模型对音频推理时,灵活性较高。本文鉴于模型在数据集的训练和推理介绍一种最简单的方案。

  • 利用liborsa导入所要推理的音频文件。
  • 将导入后的数据传如RT_processing函数进行特征提取。
  • 将提取后的特征先送入分类网络分类,再送入定位网络推断水平角和俯仰角。

你可能感兴趣的:(python,机器学习,深度学习)