探索用于小占用关键词检测的TinyML框架:一个简明概述

news2024/11/16 12:50:01

目录

摘要

第一部分:引言

第二部分:部署TinyML的常见挑战

第三部分:SF-KWS的不同方法

A. 网络架构(Network Architecture)

B. 学习技术(Learning Techniques)

C. 模型压缩(Model Compression)

D. 注意力感知架构(Attention Awareness Architecture)

E. 特征优化(Feature Optimization)

F. 神经架构搜索(Neural Architecture Search, NAS)

第四部分:实验研究

第五部分:结论

实验方法

实验结果

模型量化

模型部署

实验结论

代码和模型

参考文献


 

 

这篇论文的标题是《Exploring TinyML Frameworks for Small-Footprint Keyword Spotting: A Concise Overview》,作者是Soumen Garai和Suman Samui,来自印度国立技术学院杜尔加布尔分校电子与通信工程系。论文主要探讨了在智能语音激活设备、智能手机和物联网(IoT)应用中,实现小占用(Small Footprint, SF)关键词检测(Keyword Spotting, KWS)的TinyML框架。以下是对论文主要内容的整理:

摘要

  • 论文讨论了在低功耗和有限内存的边缘设备上实现SF-KWS模型的重要性。
  • 通过深度学习的进步,可以在连续的词汇流中识别预定义的单词或关键词。
  • 论文研究了六种不同的技术类别,包括网络架构、学习技术、模型压缩、注意力感知架构、特征优化和神经网络搜索,这些技术适用于开发SF-KWS系统。
  • 实验表明,Tensorflow Lite框架可以压缩模型约69%,同时保持可接受的准确度。

第一部分:引言

  • 论文介绍了语音助手在日常生活中的重要性,以及它们如何通过云基语音识别实现自然通信。
  • 讨论了将连续的音频流发送到云端进行语音识别的能源效率和网络负载问题。
  • 介绍了关键词检测(KWS)的概念,以及它在唤醒设备并触发云端语音识别中的作用。

f7ec83c8c119458dab2e94a73b2f0382.png

第二部分:部署TinyML的常见挑战

 

  • TinyML旨在在低功耗设备上实现优化和紧凑的机器学习模型。
  • 论文讨论了TinyML解决方案的局限性,包括无法在设备上进行模型训练,以及模型大小和推理延迟的优化问题。
  • 介绍了各种TinyML框架,包括Google的TensorFlow Lite、Microsoft的Embedded Learning Library、ARM的CMSIS-NN等。

373bf10b8ab240099983504400f60e2a.png

第三部分:SF-KWS的不同方法

  • 论文根据文献调查,探讨了多种方法和技术来优化KWS系统,包括网络架构、学习技术、模型压缩、注意力感知、特征优化和神经架构搜索。
  • 每种方法都旨在在准确性和资源效率之间取得平衡。

4df8df7baad5446db01e0f41b7a7c74b.png

A. 网络架构(Network Architecture)

  • 深度神经网络(DNN):使用深度学习技术,如深度残差学习技术和扩张卷积,来提高小占用模型的性能。
  • 卷积循环神经网络(CRNN):结合卷积神经网络和循环神经网络,以捕获时间序列数据的特征。
  • 多分支时间卷积模块(MT-Conv):通过不同尺度的时间模式捕获,以最小的内存和计算开销提高效率。
  • Matchbox架构:使用1D时间通道可分离卷积来减少与常规1D卷积相比的模型大小。

B. 学习技术(Learning Techniques)

  • 残差学习:在深层网络中使用快捷连接来增强训练和模型性能。
  • 知识蒸馏(Knowledge Distillation):将大型模型的知识传递给小型模型,以在减少模型大小和计算需求的同时保持性能。
  • 奇异值分解(Singular Value Decomposition):压缩权重矩阵,保留关键信息,减少参数,适用于SF-KWS。
  • 少样本学习(Few-shot Learning, FSL):解决关键词数据有限的挑战,采用原型网络(ProtoNet)概念,在10次样本情况下实现76%的准确度。

C. 模型压缩(Model Compression)

  • 量化(Quantization):降低模型参数的精度,减少内存占用,同时尽量不牺牲性能。
  • 动态量化:使用较低位宽表示神经网络权重和激活,减少内存使用并加速计算。
  • 错误扩散(Error Diffusion):将量化误差分散在语音特征上,允许更高的压缩比率,同时保持关键词检测的准确性。

D. 注意力感知架构(Attention Awareness Architecture)

  • 注意力机制:通过关注输入序列中的关键部分来减少计算负载,并通过自注意力模型、共享权重自注意力和端到端模型提高关键词检测的准确性和效率。

E. 特征优化(Feature Optimization)

  • 特征选择:选择紧凑且相关的语音信号表示,以实现准确有效的关键词识别。
  • 流特征(Streaming Features):使用时间频率表示,最小化维度,并选择能够捕获关键听觉信息的特征。

F. 神经架构搜索(Neural Architecture Search, NAS)

  • NAS:通过创新算法,如NASNet、AmoebaNet、DARTS和MicroNet,自动发现有效的神经网络架构。
  • NASNet:使用强化学习优化各种操作的结构。
  • AmoebaNet:为具有挑战性的场景细化NAS方法。
  • DARTS:使用基于梯度的方法进行架构优化。
  • MicroNet:专注于小型模型的资源效率。

第四部分:实验研究

  • 论文专注于网络架构组,从六个类别中选择不同的架构进行实验。
  • 使用Google Speech Commands数据集对十类不同的类别进行分类。
  • 对比了不同TinyML框架应用到SF-KWS架构上的性能,包括模型大小、推理时间和准确度。

92b6fb1cdd9240eeba34196531db1069.png

第五部分:结论

  • 论文总结了SF-KWS的探索,强调了Tensorflow Lite框架在减少模型大小方面的显著效果,同时保持了较高的准确度。
  • 指出MicroNet-S架构在模型大小和推理时间上适合IoT设备部署。

实验方法

  • 作者选择了多种网络架构,包括深度神经网络(DNN)、卷积神经网络(CNN)、Deathwish-separable Convolution Networks(DS-CNN)和MicroNet模型。
  • 为了更细致地分类和区分这些架构,作者根据它们的尺寸将它们分为小型(S)和大型(L),例如DNN-S、DNN-L、CNN-S、CNN-L等。
  • 实验使用了不同的TinyML框架,如TensorFlow Lite和Edge Impulse,来适配和优化这些架构,使其适合在物联网(IoT)边缘设备上部署。

实验结果

  • 实验结果显示,TensorFlow Lite框架可以将模型大小压缩约69%,同时保持可接受的准确度,并且推理时间显著减少。
  • 特别是TensorFlow Lite的CNN-S和DS-CNN-S模型,它们在目标边缘设备的闪存上易于部署,非常适合IoT边缘设备。
  • Edge Impulse框架显著减少了模型大小,而MicroNet-S模型在低占用设备上在准确度和内存大小之间进行了权衡。

模型量化

  • 作者将Keras软件模型量化为Int8格式,以适应TensorFlow Lite模型,包括MicroNet架构。
  • 量化过程导致了模型大小的显著减少,同时保持了推理的准确性。

模型部署

  • 作者评估了不同框架在Cortex-M板的推理时间、模型大小和最终部署能力。
  • 表IV(Table IV)可视化了不同TinyML框架应用到各种SF-KWS架构的比较评估。

实验结论

  • 实验结果表明,TensorFlow Lite框架在减少模型占用空间方面表现出色,同时MicroNet-S架构在保持高准确度的同时显著减少了推理时间,非常适合部署在IoT设备上。

代码和模型

  • 作者使用了GitHub上的Keras软件模型,并对其进行了训练和评估。
  • EdgeImpulse框架采用了基于Mel-frequency cepstral coefficients (MFCC)和1D卷积的架构,包括float32和int8压缩技术。

参考文献

  • 论文列出了一系列相关的研究文献,涵盖了关键词检测、TinyML框架、模型压缩和神经网络搜索等领域。

论文通过实验和理论分析,为在资源受限的IoT设备上部署SF-KWS模型提供了有价值的见解和框架比较。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2087400.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最新黑名单查询录入系统PHP网站源码

源码介绍: 最新黑名单查询录入系统PHP网站源码 前端html 后端layui 操作部分都采用API接口的方式实线 集结了layui表格的多数据操作,添加,批量删除,分页,单项删除 后台数据修改采用绑定参数的形式来进行修改可以很…

C语言函数递归(含扫雷进阶思路)

文章目录 一、什么是递归二、递归的使用思路和限制条件1.递归的使用思路2.递归的限制条件 三、递归的举例举例1:求n的阶乘2.举例2:顺序打印⼀个整数的每⼀位 四、递归与迭代对比五、递归与迭代对比举例七、扫雷进阶思路 一、什么是递归 递归是学习C语⾔函…

暄桐教室分享“闲人”指南

一种理想的生活状态,叫“做个闲人”,如苏东坡《行香子述怀》那般,“对一张琴,一壶酒,一溪云”,放下纷扰,好自在。然而,闲并不是简单的无事可做,让自己时光充沛、能量聚集…

MacOS使用FileZilla通过ssh密钥文件连接远程服务器(已解决)

需求描述 mac电脑,使用filezilla通过FTP连接远程服务器,使用ssh密钥文件代替密码。 版本信息 MacOS:Sonoma 14.5 M3芯片 FileZilla:3.66.5 在这里插入图片描述 连接 1. 创建站点 打开filezilla工具,右上角选择“文件 -> 站点管理器”,打开站点管理器弹窗。 2.…

vue 动态替换父组件

替换父组件?? 什么鬼??? 这个场景的确很少见!!不过我们要说的的确是要替换父组件!!!!!! 就是子组件内容不变但是父组件变…

【HuggingFace Transformers】LlamaDecoderLayer源码解析

LlamaDecoderLayer源码解析 1. LlamaDecoderLayer 介绍2. LlamaDecoderLayer 类源码解析 1. LlamaDecoderLayer 介绍 LlamaDecoderLayer 是 LLaMA 模型中的一个关键组件,它结合了自注意力机制、全连接层和残差连接,以及对输入数据的归一化。主要流程为&…

SpringCloud之一IDEA导入已有微服务项目并启动服务

一|、导入已有微服务项目 启动idea,file --> open,选择项目根目录;点击屏幕右侧maven projects按钮 -->点那个绿,如果屏幕右侧没有maven projects按钮,点击Help->Find Action,输入maven&#xff…

算法-存在重复元素(219)

这道题一眼看过去暴力,两层循环,找到相等的数字,然后判断一下就行,但是这样的话不符合哈希表使用原则。这道题同样利用了hash表键值配对的规则。 class Solution {public boolean containsNearbyDuplicate(int[] nums, int k) {M…

C语言 | Leetcode C语言题解之第382题链表随机节点

题目: 题解: typedef struct {struct ListNode * head; } Solution;Solution* solutionCreate(struct ListNode* head) {Solution * obj (Solution *)malloc(sizeof(Solution));assert(obj ! NULL);obj->head head;return obj; }int solutionGetRa…

keil中内存的存储规律

keil中内存的存储规律 keil中内存的存储规律 文章目录 keil中内存的存储规律keil中内存的存储规律 keil中内存的存储规律 #include <stdlib.h> #include "gd32f30x.h" #include "led_drv.h" #include "delay.h" #include "key_drv.…

GIT 下载安装使用教程

一. GIT下载 git下载地址https://git-scm.com/downloads 二. git安装 1. 许可声明 看完许可声明&#xff0c;点击Next就好了 2. 选择安装路径 默认为C盘&#xff0c;可以修改&#xff0c;这里修改为D盘&#xff0c;点击Next 3. 组件选择 勾选添加在桌面上&#xff0c;就是…

android gradle特别慢

gradle下载慢 修改gradle-wrapper.properties 替换https://services.gradle.org/distributions为https://mirrors.cloud.tencent.com/gradle distributionBaseGRADLE_USER_HOME distributionPathwrapper/dists distributionUrlhttps\://mirrors.cloud.tencent.com/gradle/g…

jenkins发布文件到远程服务器

jenkins安装 安装教程 后台启动脚本 创建脚本&#xff1a;start_jenkins.sh ls for pid in $(ps -ef|grep jenkins.war|grep -v grep|cut -c 10-16); doecho $pid;kill -9 $pid; done;nohup java -Djava.awt.headlesstrue -jar /usr/local/jenkins/jenkins.war --webroot/…

Linux入门攻坚——30、sudo、vsftpd

su&#xff1a;Switch User&#xff0c;即切换用户 su [-l user] -c ‘COMMAND’ 如&#xff1a;su -l root -c ‘COMMAND’ 如果没有指定-l user&#xff0c;则默认是root sudo&#xff1a;可以让某个用户不需要拥有管理员的密码&#xff0c;而可以执行管理员的权限。 需…

RabbitMQ练习(Topics)

1、RabbitMQ教程 《RabbitMQ Tutorials》https://www.rabbitmq.com/tutorials 2、环境准备 参考&#xff1a;《RabbitMQ练习&#xff08;Hello World&#xff09;》和《RabbitMQ练习&#xff08;Work Queues&#xff09;》。 确保RabbitMQ、Sender、Receiver、Receiver2容器…

云原生向量数据库 PieCloudVector 助力多模态大模型 AI 应用

全球 AGI&#xff08;人工通用智能&#xff09;市场快速增长的背景下&#xff0c;企业应用成为推动这一领域发展的主要力量&#xff0c;企业如何选择合适的技术来支撑其智能化转型显得尤为重要。在墨天轮《数据库技术如何增强 AI 大模型&#xff1f;》数据库沙龙活动中&#xf…

C语言典型例题55

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 题目&#xff1a; 例题4.7 兔子的繁殖。这是一个有趣的古典问题&#xff1a;有一对兔子&#xff0c;从出生后的第3个月开始起每个月都生一对兔子。小兔子长到第3个月又生一对兔子。假设所有兔子都不死&#xff0c;…

深度解读SGM41511电源管理芯片I2C通讯协议REG08寄存器解释

REG08 是 SGM41511 的第九个寄存器&#xff0c;地址为 0x08。这是一个只读&#xff08;R&#xff09;寄存器&#xff0c;用于报告各种状态信息。上电复位值&#xff08;PORV&#xff09;为 xxxxxxxx&#xff0c;表示上电时的初始状态是不确定的。这个寄存器提供了充电器当前状态…

HarmonyOS--合理使用页面间转场

一、概述 页面间转场是用户从一个页面切换到另一个页面时的过程&#xff0c;一个无缝流畅的转场动效可以提升用户的交互体验。从主页到详情页、从列表页到结果页都需要去设置一些转场动效使得用户体验更加流畅。基于用户行为和应用设计模式&#xff0c;我们总结出了一些常见的转…

C#/.net core “hello”.IndexOf(“\0”,2)中的坑

先想想看&#xff0c;你认为下面代码返回值是多少&#xff1f; "hello".IndexOf("", 2); "hello".IndexOf("\0", 2); "hello".IndexOf(\0, 2); 今天和大家分享关于.net core中与字符相关的一些奇怪问题。 首先我们先以.N…