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

2023-10-28 20:50

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

目录

说明

Small-Footprint Keyword Spotting with Multi-Scale Temporal Convolution 

Abstract 

Introduction

Method 

Experiment

Conclusion

笔者发言 


说明

本文是一些论文的简要,想了解具体内容可以下载原文进行阅读,若是读者对下面文章进行参考,请进行规范引用。

Small-Footprint Keyword Spotting with Multi-Scale Temporal Convolution 

Li, Ximin et al. “Small-Footprint Keyword Spotting with Multi-Scale Temporal Convolution.” ArXiv abs/2010.09960 (2020): n. pag. 

Abstract 

(1) the trade-off between small footprint and high accuracy for KWS(关键词定位) task.

(2) 我们提出了一个多分支时间卷积模块(MTConv),训练阶段替换标准的时间卷积层,性能更好。有多个size不同的时间卷积滤波器,丰富了时间特征空间

(3) 模型在时间和深度上的利用,可以在KWS系统成为一个时间高效的神将网络(TENet)。

(4) MTConv在inference阶段,可以等价地转换为基本卷积结构,这样比起base model,我们不会增加额外的参数和训练成本。

(5) 性能在谷歌语音命令数据集上准确率96.8%,且参数只有100K.

Introduction

 (1) 关键字定位(KWS)是一项旨在检测音频流中预先训练好的单词的任务。其中一个应用就是唤醒词检测

(2) 唤醒词检测:用来启动与移动设备的语音助手的交互,设备资源有限,但是要实现持续监听特征词,所有高精度、低延迟以及低占用空间仍然具有挑战性。

(3) DNNs已经被证明能够为KWS提供有效的small-footprint solutions。尤其一些先进的架构,如CNNs,准确性不错under limited memory footprint as well as computational resource scenarios(有限内存占用和有限的计算资源)。

(4) 第一个问题:基于2D-CNN的方法,网络浅时很难捕获低高频之间的依赖性。为解决该问题,在一些工作中,[8,9]利用一维时间卷积来提取高级频率特征。尽管它们取得了成功,但由于固定的核大小(即二维卷积为3×3,9×1为1维卷积),因此没有考虑到聚合短期和长期时间信息特征的能力。事实上,捕获不同尺度的时间信息是很重要的,因为关键字的特征在时间尺度上通常是不同的。

(5) 本文方法

  • 时间特真丰富,
  • MTConv可以等价地转换为具有增强核的原始时间卷积层,使得输出与标准时间卷积的输出一样。
  • 占用内存与准确度之间有个比较好的平衡,我们提出的TENet,由1×1 convolution, 9×1 depthwise convolution and 1 × 1 convolution构成的倒置瓶颈块。

(6) 贡献

  • 我们提出了一种基于深度时间卷积的时间高效神经网络
  • 进一步提出多分支的时间卷积模块MTConv,以获得多尺度时间特征,它在inference阶段可以转化成标准的时间卷积。(训练阶段是MTConv,推理阶段转化为标准时间卷积STConv
  • 我们的base TENet inference获得96.6%的准确性,
  • 换成MTConv训练,inference时的kernel fusion mechanism,使得性能提高到96.8%。

Method 

(1)数据处理:

  •  先带通滤波器去噪,然后40维的MFCC(30ms的window size and 10ms frame shift),最后将MFCC作为输入数据送入神经网络。维度:(T,F)帧数*40

(2) TENet【8】:

   1) 首先将输入的MFCC特征视为时间序列,维度[T,1,F],因此模型中的所有卷积都沿时间维度。

   2) 模型结构受[11]启发,TENet的主要模块IBB(倒置瓶颈块),带残差的瓶颈时间去分离卷积。(顶和底瓶颈,中间膨胀层,两者之间的channel size比值为1:3)

  • Conv1x1:通过扩大信道数,将输入嵌入高维子空间,
  • 深度Conv9x1:将tensor重新转化为低位紧的子空间,用于信道间的信息传输。它是时间卷积的重要模块,每个信道一个卷积滤波器来执行实现轻量级滤波,伴随着非线性变换。
  • Conv1x1:当输入和输出的大小不匹配时,利用1×1卷积来匹配维度。

   3) 通过叠加IBB层,可以很容易地构建时间高效的神经网络。

(3) Multi-Scale Temporal Convolution:

    1) 在训练阶段,将深度卷积替换为MTConvs进行训练,在推理阶段,MTConv训练的TENet可以等价地转换为基础TENet,这节省了模型参数和计算成本。

   2) MTConvs是具有不同的核大小和批归一化

   3) 具体地说,MTConv中每个分支的内核大小彼此不同,从而帮助该分支从自己的时间粒度中学习独特的模式。膨胀区新增两个分支,增强了捕获短期时间特征的能力。

 

   4) Relu的输入并不是concat每个分支的输出,而是以元素的方式将每个分支的输出相加。  (多尺度核    融合   一个增强核)

   5) 标准卷积训练的核  VS.  增强核:后者包含更丰富的时间信息,从而产生更好的性能。

 (4)  Kernel Fusion of MTConv(核融合)

   1) 输入M:[T,1,C],  C个滤波器的concatenation  F:[D,1,C],(kernel size of D × 1 and C filters)

       输出O:[T,1,C]

                    M                                       F

       所以第j个滤波器输出的第t个元素,再通过batch normalization后为:  

       

       K = (D-1)/2,且D为基数,如9,5,3,则对应k=4,2,1

   2) 再变成多分支,为了方便融合,所以三个F按照最大的k(即4)来补零。

       根据方程(2),我们对小内核做零填充,这样所有的内核都具有相同的大小,

    

         成为多尺度增强核。

      

        这也应证了上文说的MTConv等价于是带有ˆF核βˆ偏差的,且去掉标准化的卷积。 

Experiment

 (1) 谷歌的数据是:上千人关于30中不同的关键词的一秒长的发音文件,总共有65k个文件。80%训练。验证集测试集各10%。

(2) 训练数据中随机80%增加了一些服从非均匀分布(0,0.1)的噪声,作为背景噪声,还增加了随机时移:(-100,100)ms之间的值

(3) 初始30K学习率为0.01,每10k衰减0.1.,batchsize=100,标准权重衰减设置为0.00004.

(4) 我们分别用MTConv和标准卷积来训练TENet的所有四个实现,每个实现都经过20次的平均性能训练。  TENet6,TENet12,TENet6-narrow,TENet12-narrow,四种

(5) 默认的MTConv由四个分支组成,分别包含3×1、5×1、7×1和9×1卷积核。

(6) 性能指标:accuracy模型的参数数量以及multiply操作

(7) 结果:

  • 不加MTConv时的TENet,比起别人的方法[7]、[8],我们的性能不错,且模型参数少,multiply数也少。
  • 加入MTConv:四种配置的TENet都有性能提升了0.15% ~0.32%。
  • 分支越多,性能越好。

Conclusion

(1) 轻量级、高效的、占用内存小的KWS,

(2) 为了同时聚合短期和长期的时间信息特征,我们引入了一个具有不同核大小的多分支时间卷积模块,丰富了时间特征空间,以获得更好的性能。

(3) 我们的基本模型(TENet)性能接近目前最先进的模型,且我们只用了他们1/3的参数量,乘法操作也少。

(4) 引入了MTConv, 但由于核融合机制,没有增加额外的参数或计算成本。

笔者发言 

  • 关于关键词检测任务,读者想了解更多文章可以去 关键词检测任务调研(Keyword Spotting)(1)https://blog.csdn.net/LJJ_12/article/details/120079279  中一览,
  • 然后可以去 https://www.semanticscholar.org/ 根据关键词进行文章搜索,完成自己的探索
  • 我只是分享自己的一点学习成果,这只是KWS任务的冰山一角,还有很多有效的方法等待你去挖掘
  • 相关代码(谷歌的):https://github.com/hyperconnect/TC-ResNet 

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



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

相关文章

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Python Invoke自动化任务库的使用

《PythonInvoke自动化任务库的使用》Invoke是一个强大的Python库,用于编写自动化脚本,本文就来介绍一下PythonInvoke自动化任务库的使用,具有一定的参考价值,感兴趣的可以... 目录什么是 Invoke?如何安装 Invoke?Invoke 基础1. 运行测试2. 构建文档3.

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修