关键词检测任务调研(Keyword Spotting)(2)

2023-10-28 20:50

本文主要是介绍关键词检测任务调研(Keyword Spotting)(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

Convolutional neural networks for small-footprint keyword spotting

Abstract

Introduction

Keyword Spotting Task

CNN Architectures

Experimental Details


Convolutional neural networks for small-footprint keyword spotting

Sainath, T. and Carolina Parada. “Convolutional neural networks for small-footprint keyword spotting.” INTERSPEECH (2015). 

大家若参考该文章,请记得添加引用说明

Abstract

(1) cnn比起DNN参数少,性能好,

(2) 我们在工作中考虑两个不同的应用场景中要考虑的问题:

  • 一个我们限制KWS系统的乘法数,
  • 另一个我们限制参数的数量。

(3) 我们发现,与DNN相比,CNN架构的错误拒绝率( false reject rate)相对提高了27-44%,同时符合每个应用程序的约束条件。

Introduction

(1) 引入KS,其应用场景,目前的难点:它不断地监听特定的关键字来启动语音输入。此关键字定位(KWS)系统运行在移动设备上,因此必须具有较小的内存占用和较低的计算能力。目前谷歌[2]的KWS系统使用深度神经网络(DNN),它被训练来预测子关键字目标。

(2) 说明DNN比起传统方法的优势:

  • DNN已被证明优于关键字/填充隐马尔可夫模型系统(Keyword/Filler HMM),这是一种常用的关键字定位技术。
  • 此外,DNN在设备上运行具有吸引力,因为可以通过改变网络中的参数的数量来很容易地调整模型的大小。

 (3) 说明CNN比起DNN的优势:而卷积神经网络(CNNs)[3]在过去几年已经在声学建模中流行,在各种小词汇任务[4,5,6]中比dnn有所改进(提升性能且减小模型尺寸)。

  • 第一点:DNN网络忽略输入的拓扑性,即,输入可以以任何(固定的)的顺序呈现,而不影响网络[3]的性能。然而,语音的光谱表示在时间和频率上具有很强的相关性,CNN通过在输入空间局部区域共享的权值,使得cnns可以modeling局部相关性,在其他领域[7]被证明是有益的。
  • 第二点:dnn并没有明确设计来模拟语音信号内的translational方差,这可能是由于不同的说话风格[3]而存在的。更具体地说,不同的说话风格会导致共振峰在频域中被移动。足够大小的DNN其实也可以捕获这种特性,但是需要足够大的训练样本与模型结构。cnn通过平均不同局部时间和频率区域的hidden units的输出来捕获参数少得多的平移不变性。

 (4) 本文解决 parameters and multiplies问题的方式:

  • 考虑到参数数量以及乘法运算数量,在[8]中应用较好的那种CNNs在这里就不能用了。因此,我们引入了一种新的CNN架构,它不进行pool,而是strides the filter in frequency,以适应计算约束问题。
  • 其次,我们考虑限制KWS系统的参数总数:通过 pooling in time and frequency。([5][9]第一次证明在不使用多个卷积块的情况下该方式对语音是有效的。)

 (5) 性能评估

  • 在由14个不同短语组成的KWS任务上评估
  • 通过查看每小时1个假报警(FA)的操作下的假拒绝(FR)率来衡量性能。
  • 乘法次数方面 :a CNN which strides filters in frequency,FR性能比DNN提高27%。
  • 参数数量方面: a CNN which pools in time and frequency比DNNFR性能提升41%,比传统CNN(pools in frequency only),FR性能提升6%

Keyword Spotting Task

(1)  DNN KS [2]三个模块:

  • 特侦提取:40维log梅尔普系数,25ms的窗大小,10msde 移窗,接下来,在每一帧中,我们向左侧堆叠23帧,向右堆叠8帧,并将其输入到DNN中。
  • DNN模块softmax输出层包含要检测的关键字短语中的每个单词的一个输出目标,再加上一个额外的输出目标,它表示不属于关键字中的任何一个单词的所有帧(在图1中表示为“填充物”)。
  • 利用分布式异步梯度下降[10],训练网络权值来优化交叉熵准则
  • 在后验处理模块中,将DNN的单个帧级后验得分组合成一个与关键字对应的单一分数。

CNN Architectures

 (1) 特征提取和后验处理阶段与第2节保持相同。

(2) CNNs结构介绍:

  • 权重矩阵W,与输入V卷积,局部权重共享,W有n个隐藏单元(即特征图)。
  • The filter can stride by a non-zero amount s in time and p in frequency.                                 因此n个特征图的大小均为:
  • 在执行卷积后,一个最大池化层有助于消除由于说话风格、信道失真等而存在的时频空间中的可变性.(池化执行子采样操作,以减少时频空间)我们的池化时无重叠的,[8]证明了有重叠池化的对语音没有什么作用。这样可以减少参数数量。                                                           所以n个特征图的大小变为 

 (3) 典型的卷积结构(两个卷积层):

  • 输入t*f = 32*40.,,m=20,r=9
  • 卷积乘法是通过s=1和v=1  striding the滤波器跨越时间和频率
  • 传统CNN仅在频率上进行池化:q=3
  • 第二个卷积滤波器的频率滤波器大小为r=4,不执行最大池化。

 为了参数数量在250k以内:

  • 我们称该结构为cnn-trad-fpool3(我们的基本模型,下文在他的基础上进行改进)
  • 然而,这种架构的一个主要问题是卷积层中的乘法大量倍增,这在第二层由于三维输入跨越时间频率特征映射导致的。
  • 这种类型的体系结构对于功率有限的小足迹KWS任务是不可行的

 (4) 将乘法次数限制在500K以内,不限制参数数量:

  • 限制乘数的一个解决方案是有一个卷积层而不是两个层,并且始终有时间滤波器
  • cnn-one-fpool3
  • 相比上一个结构,这个在第一层卷积后,乘法次数减少十倍。
  • 以上都是s=1,v=1

 在上述的基础上改变v值:

  • v=4:cnn-one-fstride4   ,50%重叠,
  • v=8:cnn-one-fstride8   ,  无重叠
  • 表3显示,如果我们通过v>1来处理滤波器,我们将减少乘数,并且也可以将隐藏单元n的数量增加到比表2中的cnn-one-fpool3架构大3-4倍。

 (5) 将参数数量限制在250K以内,不限制乘法次数:

      1)

  • 在4中的操作,固定乘法次数不变时,参数数量远小于250k,但由于我们都知道,参数越多,性能越好[6],
  • 提高CNN性能的方法是增加特征图。如果我们想增加特征图,但保持参数固定,我们必须探索在时间和频率上的采样。考虑到我们已经在cnn-trad-fpool3中pool了频率,在本节中,我们将探索 sub-sampling in time
  • 被人也用过时间pooling,但是效果不好,因为他们要提取的信息发生在很短的时间内,时间信息很重要,因此, pooling in time is harmful。
  • 然而在KWS中,关键字单元出现的时间要长得多(即50-100ms)。所以为了减少参数数量,我们可以在时间维度做文章。 sub-sampling、 striding or pooling。

     2) Striding in Time 

  • 让cnn-trad-fpool3中s>1,     cnn-tstride2,cnn-tstride4 and cnn-tstride8.
  • V = 1,p =1
  • 增加时间滤波的步幅,我们可以增加特征映射的数量n,以保持参数的总数不变。希望时间的子采样不会降低性能,增加特征图可以提高性能。

     3) Pooling in Time 

  • 通过pooling in time,我们可以增加特征映射的数量n,以保持参数的总数不变。
  • S=1,v=1

总之就是Striding改变的是s,v,    pooling改变的是p,q

Experimental Details

(1) The lower the FR per FA rate is the better.

(2) Pooling in Frequency:比较了不同的q值,q=1到q=2性能增加不少,q=3性能饱和。比起DNN提升41%

(3) Limiting Multiplies:比较了不同的v值,

  • The best performing system is cnn-one-fstride4, where we stride the frequency filter with 50% overlap but do not pool in frequency.         
  • v=4比v=8好。
  • 如果增加了频率的pooling , 虽然频率上的池化是有用的cnn-trad-fpool3好于cnn-one-fstride4,但它在计算上很昂贵,因此我们必须大幅减少特征图来限制计算。所乘法有限时,用cnn-one-fstride4
  • 比dnn提升29%左右

(4) Limiting Parameters

  • cnn-trad-fpool3的基础上改进,改变s值(stride the filter in time),发现都比cnn-trad-fpool3性能差,
  • 改变p值(pool in time),cnn-tpool2(p =2)最好。
  • To our knowledge, this is the first time pooling in time without sub-networks has shown to be helpful for speech tasks.

 总结:

(1)限制乘法次数时:

  • cnn-one-fstride4:一层卷积层,stride the filter in frequency ,但是不pool频率。参数47.6K,乘428.5K
  • cnn-trad-fpool3:但是性能上,两层卷积既stride the filter in frequency ,也pool频率时更好。参数244.2k,乘9.7M

(2)限制参数数量时: 

  • 再此基础:两层卷积既stride the filter in frequency ,也pool频率时更好。参数244.2k,乘9.7M,
  • cnn-tpool2:对时间进行pool,(p =2),但不stride the filter in time,参数7.5M,乘9.7M。

这篇关于关键词检测任务调研(Keyword Spotting)(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/295870

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2757 标注数量(xml文件个数):2757 标注数量(txt文件个数):2757 标注类别数:4 标注类别名称:["Platelets","RBC","WBC","sickle cell"] 每个类别标注的框数:

FreeRTOS学习笔记(二)任务基础篇

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、 任务的基本内容1.1 任务的基本特点1.2 任务的状态1.3 任务控制块——任务的“身份证” 二、 任务的实现2.1 定义任务函数2.2 创建任务2.3 启动任务调度器2.4 任务的运行与切换2.4.1 利用延时函数2.4.2 利用中断 2.5 任务的通信与同步2.6 任务的删除2.7 任务的通知2

Flink任务重启策略

概述 Flink支持不同的重启策略,以在故障发生时控制作业如何重启集群在启动时会伴随一个默认的重启策略,在没有定义具体重启策略时会使用该默认策略。如果在工作提交时指定了一个重启策略,该策略会覆盖集群的默认策略默认的重启策略可以通过 Flink 的配置文件 flink-conf.yaml 指定。配置参数 restart-strategy 定义了哪个策略被使用。常用的重启策略: 固定间隔 (Fixe

第49课 Scratch入门篇:骇客任务背景特效

骇客任务背景特效 故事背景:   骇客帝国特色背景在黑色中慢慢滚动着! 程序原理:  1 、 角色的设计技巧  2 、克隆体的应用及特效的使用 开始编程   1、使用 黑色的背景: ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7d74c872f06b4d9fbc88aecee634b074.png#pic_center)   2