美文网首页
2019.12.16-2019.12.30

2019.12.16-2019.12.30

作者: 早上起来闹钟又丢了 | 来源:发表于2019-12-31 10:19 被阅读0次

    总结:

    1. 近期的工作一直围绕《AutoAugment:Learning Augmentation Strategies from Data》和《SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition》两篇谷歌大脑的文章来开展,希望通过对音频文件的数据进行变换操作来提高模型鲁棒性,进而提高识别率。
    2. 我相信上述方法会是有效的,在实验中没有调整参数,只是随机对音频数据进行时域掩蔽、频域掩蔽、添加噪声等变换,也取得了和不变换相近的正确率。但近期的实验结果并没有突破性的进展,计划将模型进行调参,将设备B的正确率提高到60%左右。
    3. 有一个潜在的问题,就是对音频数据的变换并不是在提完特征的基础上进行操作的,因此程序的效率并不高,每次都是进行变换后再提取mel特征,这将是之后要解决的问题。
    4. 半个月以来的工作量有点小,接下来的半个月要在调好实验的基础上继续多看论文。

    2019.12.16

    1. 修改了裁剪语谱图的机制,随机挑选0-127一个位置作为裁剪中心,再随机一个裁剪幅度,进行裁剪操作,运行查看结果。预测正确率最高能到70%,还是不理想。
    2. 精读《AutoAugment:Learning Augmentation Strategies from Data》
    3. 查到了《Fast-AutoAugment》和《Randaugment》的代码。

    2019.12.17

    与老师汇报,发现自己最近方向有些跑偏,整理下思路:
    ① 出发点:A设备数据量太大,B、C设备数据量太小,想提高B、C的识别率,而不是整体训练得到一个整体的识别率。
    ② 方法:
    (1)可以用数据生成的方式,提高B、C设备的数据量。
    (2)能不能从A中借鉴到有用的信息,来应用到B、C的识别过程中,以提高识别率。
    ③ 明确的要点:
    (1)使用开发集的数据作为测试数据,而不使用官方的测试集,因为测试集不公布标签
    (2)使用官方的baseline作为系统级别基线,再使用一个框架,生成框架的基线,最后再填入自己的方法,提升B、C的识别率。

    2019.12.18

    1. 继续使用McDonnell的框架,单独跑设备B,正确率最高55.74%。单独跑设备C,正确率59.04%。
    2. 在矩阵上做AutoAugment的方法,正确率达到72.88%,并不是十分理想。

    2019.12.19

    1. 使用McDonnell框架,将设备B、C的数据一齐跑,正确率在56.85%
    2. 使用McDonnell框架,将设备B、C的数据一齐跑,并加入mixup,正确率在58.33%

    2019.12.20

    如何使用 Google 的 AutoAugment 改进图像分类器
    精读《AutoAugment:Learning Augmentation Strategies from Data》

    2019.12.21

    有一个猜想,如果设备B、C是因为音量音素而跟设备A的数据不同,那么如果我们提高设备A的声音,会不会对B的识别有帮助?因此想做一个对比试验,只训练A的数据,再训练增大音量的A的数据。A数据的模型命名为:trainingA_normal,A数据音量增大的模型命名为:trainingA_powerUp。

    2019.12.22

    今天发现,只用设备A数据作为训练集,设备B数据作为验证集,正确率不超过30%,看来用的模型还是记录数据,而没做到分析数据。
    想知道,读入音频,用python库会得到一个矩阵,那这些数据代表什么意义。
    音频文件是如何记录信息的?

    2019.12.24

    发现GitHub一个做语音数据增强的代码。https://github.com/iver56/audiomentations
    跑一个实验,用Audio增强的方法生成设备B的数据,选5种增强的方法,每种生成2个,因此每个音频共生成10个文件。
    之前只用训练集B作为训练集,正确率在55.74%
    还是对比mixup,同时跑两个实验。

    2019.12.26

    使用Audio增强,设备B的正确率可达到57.41%,如果添加mixup,正确率可达到57.78%。相比于不添加AudioAugment,有大约2%的增强。

    2019.12.28

    阅读《SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition》

    2019.12.29

    尝试跑一下SpecAugment,做一个对比试验,是否添加deltas。
    SpecAugment的策略:
    ① 时间扭曲:
    ② 频率掩蔽:[f_{0}, f_0 + f)被掩盖,f0-F均匀分布中的取的参数,f_0是从[0, v-f)中去的数,v是梅尔频率通道数。
    ③ 时间掩蔽:[t_0, t_0 + t)连续时间的掩盖,t是取自0-TT是时间掩盖参数,t_0取自[0, \tau -t)

    测试了一下发现,SpecAugment的效果并不好,只有10%。
    分析了一下原因,将所有的训练集都进行了SpecAugment操作,这样没有原始的训练集,训练出来的结果肯定不好,因此设置对SpecAugment的操作设置概率。
    现在设置时间扭曲的概率为0.5, 频率掩蔽的概率为0.3,时间掩蔽的概率为0.3,训练集为train_B,验证集为val_B,没有添加deltas,没有进行Mixup,没有将时间维度从431随机取到400,模型命名为SpecAugment。如果正确率能到60%左右,则说明该方法很有作用。
    对比试验,添加Mixup,模型命名为SpecAugment_Mixup。

    2019.12.30

    昨天的测试,效果很差,而且发现训练时间会随着epoch的增加而增加,该方案暂时停止。


    近期还是打算围绕这个工作开展https://github.com/iver56/audiomentations
    之前尝试过,发现有一定的效果,争取能将这个效果最大化。
    这个增强是在音频sample上进行的,而不是在提完的特征上进行的,因此效率是一个问题。
    ①AddImpulseResponse:添加随机脉冲响应卷积音频。
    ②FrequencyMask:频域遮蔽
    ③TimeMask:时域遮蔽
    ④AddGaussianSNR:使用随机信噪比(SNR)将高斯噪声添加到Sample
    ⑤AddGaussianNoise:添加高斯噪声
    ⑥TimeStretch:快慢放
    ⑦Shift:前移或者后移音频。
    ⑧Normalize:峰值归一化。
    ⑨Trim:修剪音频信号的前导和尾随静音
    ⑩Resample:重采样
    ⑾ClippingDistortion:通过剪切随机百分比的点使信号失真

    在做FrequencyMask时,用librosa提取音频报错:“ Audio buffer is not finite everywhere”
    解决参考http://www.cocoachina.com/articles/93923

    2019.12.31

    直至今早,程序跑了30个epoch但报错了,问题出在频域遮蔽的库上,因此先取消频域遮蔽操作,再跑一次。

    相关文章

      网友评论

          本文标题:2019.12.16-2019.12.30

          本文链接:https://www.haomeiwen.com/subject/mhudnctx.html