人工智能
TinyML:应用、局限性及其在IoT和边缘设备中的应用

近年来,人工智能(AI)和机器学习(ML)在行业和学术界的应用和流行度都有了飞速的增长。然而,当前的ML和AI模型有一个主要的局限性:它们需要大量的计算和处理能力来实现所需的结果和准确性。这通常限制了它们的应用范围,只能在具有大量计算能力的设备上运行。
但是,随着嵌入式系统技术的进步和物联网行业的发展,人们希望将ML技术和概念应用于资源受限的嵌入式系统中,以实现无处不在的智能。将ML概念应用于嵌入式和IoT系统的愿望是TinyML的主要动机,TinyML是一种嵌入式ML技术,允许在多个资源受限、功耗受限和廉价的设备上运行ML模型和应用程序。
然而,在资源受限的设备上实现ML并非易事,因为在低计算能力的设备上实现ML模型会带来一系列挑战,包括优化、处理能力、可靠性、模型维护等。
在本文中,我们将更深入地探讨TinyML模型,了解更多关于其背景、支持TinyML的工具以及使用先进技术的TinyML应用。让我们开始吧。
TinyML简介:为什么世界需要TinyML
物联网(IoT)设备旨在利用边缘计算,一种计算范式,指的是一系列设备和网络,位于用户附近,能够实现来自数百万传感器和设备的数据的无缝和实时处理。IoT设备的一个主要优势是它们需要低计算和处理能力,因为它们可以部署在网络边缘,因此具有低内存占用。
此外,IoT设备严重依赖边缘平台来收集和传输数据,因为这些边缘设备收集传感数据,然后将其传输到附近的位置或云平台进行处理。边缘计算技术存储和处理数据,并提供必要的基础设施来支持分布式计算。
在IoT设备中实现边缘计算提供了
- 有效的安全、隐私和可靠性,供最终用户使用。
- 更低的延迟。
- 更高的可用性和吞吐量,响应应用程序和服务。
此外,由于边缘设备可以在传感器和云之间采用协同技术,因此可以在网络边缘而不是云平台上进行数据处理。这可以实现有效的数据管理、数据持久性、有效的交付和内容缓存。另外,为了在涉及人机交互(H2M)和现代医疗保健的应用中实现IoT,边缘计算可以显著提高网络服务。
最近的研究表明,IoT边缘计算有潜力在各种IoT用例中实现机器学习技术。然而,主要问题是传统的机器学习模型通常需要强大的计算和处理能力以及高内存容量,这限制了它们在IoT设备和应用程序中的实现。
此外,当前的边缘计算技术缺乏高传输容量和有效的节能,这导致了异构系统的出现,这是更新、训练和部署ML模型所需的和谐和整体基础设施的主要原因。为嵌入式设备设计的架构带来了另一个挑战,因为这些架构依赖于从设备到设备不同的硬件和软件要求。因此,很难为IoT网络构建一个标准的ML架构。
此外,在当前场景中,由于网络实现的计算密集型性质,来自不同设备的数据被发送到云平台进行处理。另外,ML模型通常依赖深度学习、深度神经网络、应用特定集成电路(ASIC)和图形处理单元(GPU)进行数据处理,并且通常具有更高的功耗和内存要求。在IoT设备上部署完整的ML模型不是一个可行的解决方案,因为计算和处理能力明显不足,存储解决方案有限。
将低功耗嵌入式设备进行微型化的需求,加上优化ML模型以使其更节能,已经为TinyML铺平了道路,TinyML旨在在边缘IoT设备和框架上实现ML模型和实践。 TinyML使IoT设备能够进行信号处理,并提供嵌入式智能,从而消除了将数据传输到云平台进行处理的需要。在IoT设备上成功实现TinyML最终可以带来更高的隐私和效率,同时降低运行成本。另外,TinyML的一个优点是,即使在连接性不足的情况下,它也可以提供本地分析。
TinyML:简介和概述
TinyML是一种机器学习工具,能够为不同感知模态(如音频、视觉和语音)进行设备上的分析。构建在TinyML工具上的ML模型具有低功耗、低内存和低计算要求,使其适合用于运行在电池上的嵌入式网络和设备。另外,TinyML的低要求使其成为在IoT框架上部署ML模型的理想选择。
在当前场景中,基于云的ML系统面临几个困难,包括安全和隐私问题、高功耗、可靠性和延迟问题,这就是为什么模型被预装在硬件-软件平台上的原因。传感器收集数据,模拟物理世界,然后使用CPU或MPU(微处理器)进行处理。MPU满足边缘感知ML网络和架构的ML分析支持需求。边缘ML架构与ML云进行数据传输和TinyML实现的通信,可以显著推进技术的发展。
可以说,TinyML是软件、硬件和算法的融合,它们协同工作以提供所需的性能。对于不支持硬件加速器的硬件和IoT设备,可能需要模拟或内存计算来提供更好和更有效的学习体验。至于软件,使用TinyML构建的应用程序可以部署和实现在Linux或嵌入式Linux以及云启用软件等平台上。最后,基于TinyML算法的应用程序和系统必须支持需要低内存模型的新算法,以避免高内存消耗。
总而言之,使用TinyML工具构建的应用程序必须在高质量数据的存在下优化ML原则和方法,并紧凑地设计软件。然后,使用在大容量和计算能力的机器上训练的模型生成的二进制文件对其进行闪存。
此外,基于TinyML工具运行的系统和应用程序必须在紧密的约束下提供高精度,因为紧凑的软件对于支持TinyML的低功耗至关重要。此外,基于TinyML的应用程序或模块可能依赖电池供电来支持其在边缘嵌入式系统上的操作。
话虽如此,TinyML应用程序有两个基本要求
- 扩展到数十亿廉价的嵌入式系统。
- 将代码存储在设备RAM中,容量在几KB以下。
使用先进技术的TinyML应用
TinyML在AI和ML行业中是一个热门话题,主要是因为它具有潜在的应用,包括基于视觉和语音的应用、健康诊断、数据模式压缩和分类、脑机接口、边缘计算、表型学、自动驾驶汽车等。
基于语音的应用
语音通信
通常,基于语音的应用程序依赖于传统的通信方法,其中所有数据都很重要,并且被传输。然而,近年来,语义通信作为传统通信的替代方案出现,因为在语义通信中,只有数据的含义或上下文被传输。使用TinyML方法可以在基于语音的应用程序中实现语义通信。
当前语音通信行业中最流行的应用程序包括语音检测、语音识别、在线学习、在线教学和目标导向的通信。这些应用程序通常具有更高的功耗,并且对主机设备有更高的数据要求。为了克服这些要求,引入了一种新的TinySpeech库,允许开发人员构建一个低计算架构,使用深度卷积网络构建一个低存储设施。
为了使用TinyML进行语音增强,开发人员首先解决了语音增强模型的尺寸问题,因为它受到硬件限制和约束。为了解决这个问题,针对RNN或循环神经网络语音增强模型部署了结构化剪枝和整数量化。结果表明,模型的大小减少了近12倍,而操作数量减少了近3倍。另外,尤其是在执行语音识别应用程序的资源受限应用程序中,资源的有效利用至关重要。
因此,为了分区过程,开发人员提出了TinyML基于语音和语音识别应用程序的协同设计方法。开发人员使用窗口操作来分区软件和硬件,以预处理原始语音数据。该方法似乎有效,因为结果表明硬件上的能耗有所降低。最后,还有潜力在软件和硬件协同设计中实现优化分区,以提高性能。
此外,最近的研究提出了使用基于电话的传感器用于语音识别系统的方案,该方案旨在用Conv1D层替换LSTM预测器,以减少边缘设备上的计算需求。实施该方案后,结果显示SVD或奇异值分解成功压缩了模型,而WFST或加权有限状态转换器的解码带来了更大的灵活性,以提高模型偏差。
许多著名的语音识别应用程序,例如虚拟或语音助手、实时字幕和语音命令,使用ML技术来工作。当前流行的语音助手,如Siri和Google Assistant,每次收到数据时都会将其发送到云平台,这引发了对隐私和数据安全的重大担忧。TinyML是解决这一问题的可行解决方案,因为它旨在在设备上进行语音识别,并消除了将数据迁移到云平台的需要。实现设备上的语音识别的一种方法是使用Tiny Transducer,一种语音识别模型,使用DFSMN或深度前馈序列记忆块层,结合一个Conv1D层,而不是LSTM层,以降低计算需求和网络参数。
助听器
听力损失是全球的一个主要健康问题,随着年龄的增长,人们的听力通常会减弱,这是像中国、日本和韩国等人口老龄化国家面临的主要问题。当前的助听器设备的工作原理是放大来自周围的所有输入声音,使得人们难以区分或区分所需的声音,尤其是在嘈杂的环境中。
TinyML可能是解决这一问题的可行解决方案,因为在助听器设备中使用TinyLSTM模型,该模型使用语音识别算法,可以帮助用户区分不同的声音。
基于视觉的应用
TinyML有潜力在处理计算机视觉数据集方面发挥重要作用,因为这些数据集需要在边缘平台上进行处理以获得更快的输出。为了实现这一点,TinyML模型遇到了使用OpenMV H7微控制器板训练模型的实际挑战。开发人员还提出了一个使用ARM Cortex M7微控制器的架构,该架构仅使用496KB的帧缓冲区RAM即可检测美国手语。
在边缘平台上实现TinyML用于计算机视觉应用的主要挑战是卷积神经网络(CNN)具有高泛化误差和高训练和测试准确率。然而,实现并没有对新用例中的图像和嘈杂背景进行有效的泛化。当开发人员使用插值增强方法时,模型在测试数据上返回了超过98%的准确率,并且在泛化方面达到了约75%的准确率。

此外,观察到当开发人员使用插值增强方法时,模型的准确率在量化过程中会下降,但同时模型的推理速度会提高,分类的泛化能力也会提高。开发人员还提出了进一步提高泛化模型训练的方法,方法是使用来自不同来源的数据进行训练,并测试其性能,以探索在边缘平台(如可穿戴智能手表)上部署的可能性。
此外,关于CNN的其他研究表明,使用CNN架构在资源受限的设备上实现期望的结果是可能的。最近,开发人员能够使用TensorFlow Lite在ARM Cortex M7微控制器上开发一个具有最小内存占用的框架,以检测医疗口罩。量化后的模型大小约为138KB,而目标板上的推理速度约为30帧/秒。
TinyML用于计算机视觉应用的另一个应用是实现一个可以夹在手杖上的手势识别设备,以帮助视障人士轻松地度过日常生活。为了设计它,开发人员使用了手势数据集,并使用该数据集训练了ProtoNN模型,该模型使用分类算法。从设置中获得的结果是准确的,设计是低成本的,并且令人满意。
TinyML的另一个重要应用是自动驾驶和自动驾驶汽车行业,因为这些车辆缺乏资源和板载计算能力。为了解决这个问题,开发人员提出了一个基于TinyCNN模型的闭环学习方法,该方法提出了一个在线预测器模型,可以在运行时捕获图像。开发人员在实现TinyML用于自动驾驶时面临的主要问题是,训练在离线数据上工作的决策模型可能无法很好地处理在线数据。为了最大限度地发挥自动驾驶汽车和自动驾驶汽车的应用,模型应该能够适应实时数据。
数据模式分类和压缩
当前TinyML框架面临的最大挑战之一是使其能够适应在线训练数据。为了解决这个问题,开发人员提出了TinyOL或TinyML在线学习方法,允许在微控制器单元上进行增量在线训练,从而允许模型在IoT边缘设备上更新。该实现是使用C++编程语言完成的,并在TinyOL架构中添加了一个额外的层。
此外,开发人员还对Arduino Nano 33 BLE传感器板进行了自动编码,并训练了一个模型,该模型能够对新数据模式进行分类。开发工作还包括为神经网络设计更高效和更优化的算法,以支持设备在线训练模式。
TinyOL和TinyML的研究表明,激活层的数量一直是IoT边缘设备的主要问题,这些设备的资源有限。为了解决这个问题,开发人员提出了新的TinyTL或TinyML迁移学习模型,以使IoT边缘设备上的内存利用更有效,并避免使用中间层进行激活。另外,开发人员还提出了一个新的偏差模块,称为“lite-residual模块”,以最大限度地提高适应能力,并允许特征提取器发现残差特征映射。
与全网络微调相比,结果有利于TinyTL架构,因为结果表明TinyTL将内存开销减少了约6.5倍,精度损失适中。当最后一层进行微调时,TinyML将精度提高了34%,精度损失适中。
此外,关于数据压缩的研究表明,数据压缩算法必须管理便携设备上收集的数据,并且可以通过提出的TAC或Tiny异常压缩器来实现。TAC比SDT或摆动门趋势和DCT或离散余弦变换算法表现更好。另外,TAC算法在实现最大压缩率超过98%和具有三个算法中最好的峰值信噪比方面优于SDT和DCT算法。
健康诊断
COVID-19全球大流行为TinyML的实施开启了新的机会,因为现在连续检测与咳嗽和感冒相关的呼吸道症状是一种必不可少的做法。为了确保不间断的监测,开发人员提出了一个在多模式设置中运行的CNN模型Tiny RespNet,并将该模型部署在Xilinx Artix-7 100t FPGA上,该FPGA允许设备并行处理信息,具有高效率和低功耗。另外,TinyResp模型还将患者的语音、音频录音和人口信息作为输入,以对患者的咳嗽相关症状进行分类,使用三个不同的数据集进行分类。
此外,开发人员还提出了一个可以在边缘设备上运行的深度学习计算的TinyML模型,称为TinyDL,该模型可部署在智能手表和可穿戴设备等边缘设备上,用于健康诊断,并且能够执行性能分析以降低带宽、延迟和能耗。为了在手持设备上部署TinyDL,开发人员专门为可穿戴设备设计并训练了一个LSTM模型,并将收集的数据作为输入。该模型的准确率约为75%至80%,并且能够处理设备外的数据。这些在边缘设备上运行的模型展示了解决当前IoT设备面临的挑战的潜力。
最后,开发人员还提出了一个用于监测老年人健康的应用程序,通过估计和分析他们的身体姿势。该模型使用设备上的不可知框架,允许模型实现验证和快速适应,以执行适应。该模型实现了实时检测身体姿势的算法,结合面部标志来检测时空身体姿势。
边缘计算
TinyML的一个主要应用是边缘计算领域,因为IoT设备的使用增加了,将设备连接到世界各地的需求,因此,设置边缘设备可以帮助减少对云架构的依赖。这些边缘设备将具有单独的数据中心,允许它们在设备本身上执行高级计算,而不是依赖云架构。因此,它将有助于减少对云的依赖,降低延迟,增强用户的安全性和隐私,并降低带宽。
使用TinyML算法的边缘设备将有助于解决当前与功耗、计算和内存要求相关的约束,如下图所示。

此外,TinyML还可以通过解决这些机器当前面临的限制来增强无人机(UAV)的使用和应用,例如低延迟、低功耗和高计算能力的能量效率设备,可以用作UAV的控制器。
脑机接口或BCI
TinyML在医疗保健行业具有重要的应用,并且可以在不同领域带来巨大的益处,包括癌症和肿瘤检测、使用ECG和EEG信号进行健康预测以及情商。TinyML的使用可以使自适应深脑刺激(aDBS)成功适应临床适应,并使aDBS能够使用大脑信号的侵入性记录识别与疾病相关的生物标志和症状。
此外,医疗保健行业通常涉及大量患者数据的收集,这些数据然后需要处理以在疾病的早期阶段为患者提供特定的解决方案。因此,构建一个不仅高效而且高度安全的系统至关重要。将IoT应用与TinyML模型相结合,产生了一个新的领域,称为医疗保健IoT(H-IoT),H-IoT的主要应用包括诊断、监测、物流、控制和辅助系统。如果我们希望开发能够远程检测和分析患者健康状况的设备,开发一个具有全球可访问性和低延迟的系统至关重要。

自动驾驶
最后,TinyML可以在自动驾驶汽车行业中得到广泛的应用,因为这些车辆可以以多种方式使用,包括人体追踪、军事用途和工业应用。这些车辆的主要要求是能够高效地识别对象,特别是当对象被搜索时。
目前,自动驾驶和自动驾驶是一个相当复杂的任务,尤其是在开发小型车辆时。最近的发展表明,使用CNN架构并将模型部署在GAP8 MCI上,可以改进小型车辆的自动驾驶应用。
挑战
TinyML是AI和ML行业中一个相对较新的概念,尽管它取得了进展,但它仍然不够完善,无法在边缘和IoT设备上进行大规模部署。
TinyML设备面临的最大挑战是功耗。理想情况下,嵌入式边缘和IoT设备应该具有超过10年的电池寿命。例如,在理想条件下,运行在2Ah电池上的IoT设备,功耗约为12微安,电池寿命应该超过10年。然而,在当前状态下,具有温度传感器、MCU单元和WiFi模块的IoT架构,电流消耗约为176.4毫安,电池寿命仅为11小时,而不是所需的10年。
资源约束
为了保持算法的一致性,必须保持电源的可用性,考虑到当前的场景,TinyML设备的电源可用性有限是一个关键的挑战。此外,内存限制也是一个重大的挑战,因为部署模型通常需要大量内存才能有效和准确地工作。
硬件约束
硬件约束使得在大规模上部署TinyML算法变得困难,因为存在硬件设备的异构性。有成千上万种设备,每种设备都有其自己的硬件规格和要求,因此,TinyML算法目前需要针对每个单独的设备进行调整,这使得大规模部署成为一个重大问题。
数据集约束
TinyML模型的一个主要问题是它们不支持现有的数据集。这是边缘设备的一个挑战,因为它们使用外部传感器收集数据,这些设备通常具有功耗和能量约束。因此,现有的数据集无法有效地用于训练TinyML模型。
最后的思考
ML技术的发展在IoT生态系统中引发了一场革命和观念的转变。将ML模型集成到IoT设备中将使这些边缘设备能够在没有外部人为干预的情况下独立做出智能决策。然而,传统的ML模型通常需要高功耗、内存和计算能力,这使得它们不适合部署在资源受限的边缘设备上。
因此,AI的一个新分支专门用于将ML应用于IoT设备,称为TinyML。TinyML是一种ML框架,允许甚至资源受限的设备也能利用AI和ML的力量,以确保更高的准确性、智能性和效率。
在本文中,我们讨论了在资源受限的IoT设备上实现TinyML模型,这需要训练模型、将模型部署在硬件上以及执行量化技术。然而,考虑到当前的范围,准备在IoT和边缘设备上部署的ML模型具有多个复杂性和限制,包括硬件和框架兼容性问题。












