TinyML:应用、限制及其在物联网和边缘设备中的使用

TinyML:应用与限制及在物联网和边缘设备中的使用

在过去几年中,人工智能(AI)和机器学习(ML)在行业和学术界都经历了爆炸式增长,不仅在应用领域受到了广泛应用,而且在学术界也备受关注。然而,如今的ML和AI模型存在一个主要限制:为了实现所需的结果和准确度,它们需要大量的计算和处理能力。这常常限制了它们只能在具备强大计算能力的高性能设备上使用。

但是,随着嵌入式系统技术的进步和物联网行业的大量发展,将ML技术和概念应用于资源有限的嵌入式系统以实现普适智能成为了可行的选择。将ML概念应用于嵌入式和物联网系统的愿望是TinyML发展的主要动力,它是一种嵌入式ML技术,允许在多个资源受限、功耗受限和廉价设备上运行ML模型和应用。

然而,在资源受限设备上实现ML并不简单,因为在低计算能力设备上实现ML模型存在优化、处理能力、模型的可靠性和维护等方面的挑战。

在本文中,我们将深入探讨TinyML模型,了解其背景、支持TinyML的工具以及使用先进技术的TinyML应用。让我们开始吧。

对TinyML的介绍:为什么世界需要TinyML

物联网(IoT)设备旨在利用边缘计算,这是一种指一系列靠近用户的设备和网络,可以实现与数百万传感器和设备之间的数据无缝和实时处理的计算范式。 IoT设备的一个主要优势是它们需要较低的计算和处理能力,因为它们可以部署在网络边缘,因此它们具有较低的内存占用。

此外,IoT设备在收集和传输数据时严重依赖边缘平台,因为这些边缘设备收集感知数据,然后将其传输到附近位置或云平台进行处理。边缘计算技术存储和处理数据,并提供必要的基础设施来支持分布式计算。

在物联网设备中实施边缘计算为终端用户提供了以下优势:

  1. 有效的安全性、隐私性和可靠性。
  2. 较低的延迟。
  3. 更高的可用性和吞吐量响应应用和服务。

此外,由于边缘设备可以在传感器和云之间采用协作技术,因此数据处理可以在网络边缘进行,而不是在云平台上进行。这可以实现有效的数据管理、数据持久化、有效的传递和内容缓存。此外,对于涉及H2M(人机交互)和现代医疗保健的应用,实施边缘计算可以显著改进网络服务。

物联网边缘计算领域的最新研究已经证明了在几个物联网用例中实施机器学习技术的潜力。然而,主要问题是传统机器学习模型通常需要强大的计算和处理能力以及高内存容量,这限制了在物联网设备和应用中实施ML模型的可能性。

此外,当今的边缘计算技术在传输容量和有效节能方面存在不足,这导致了异构系统,这是需要和谐和全面的基础设施的主要原因,主要用于更新、训练和部署ML模型。嵌入式设备的设计架构提出了另一个挑战,因为这些架构依赖于各种设备的硬件和软件要求。这是为物联网网络构建标准ML架构的难点所在。

此外,在当前情况下,由于网络实现的计算密集性,不同设备生成的数据被发送到云平台进行处理。此外,ML模型通常依赖于深度学习、深度神经网络、应用特定集成电路(ASIC)和图形处理单元(GPU)来处理数据,并且它们通常具有更高的功耗和内存需求。在物联网设备上部署完整的ML模型并不是一个可行的解决方案,因为明显缺乏计算和处理能力,并且存储解决方案有限。

对低功耗嵌入式设备进行微型化以及优化ML模型以使其更具功耗和内存效率的需求为TinyML铺平了道路,它旨在在边缘IoT设备和框架上实施ML模型和实践。TinyML在IoT设备上实现信号处理并提供嵌入式智能,从而消除了将数据传输到云平台进行处理的需要。在IoT设备上成功实施TinyML最终可以提高隐私和效率,同时降低运营成本。此外,TinyML更具吸引力的另一个原因是,在连接不足的情况下,它可以提供本地分析。

TinyML : 介绍与概述

TinyML 是一种机器学习工具,具有在不同感知模式(如音频、视觉和语音)上执行设备内分析的能力。使用 TinyML 工具构建的 ML 模型具有低功耗、低内存和低计算需求,适用于嵌入式网络和依靠电池供电的设备。此外,TinyML 的低要求使其成为在物联网框架上部署 ML 模型的理想选择。

在当前情况下,基于云的 ML 系统面临一些困难,包括安全与隐私问题、高功耗、可靠性和延迟问题,这就是为什么硬件-软件平台上的模型需要预安装的原因。传感器收集模拟物理世界的数据,然后使用 CPU 或 MPU(微处理器单元)进行处理。MPU 提供了边缘感知 ML 网络和架构的 ML 分析支持。边缘 ML 架构与 ML 云进行数据传输,并且 TinyML 的实施可以显著推进技术的发展。

可以说,TinyML 是软件、硬件和算法的融合,它们相互协作以提供所需的性能。为了为不支持硬件加速器的硬件和物联网设备提供更好和更有效的学习体验,可能需要模拟或存储器计算。就软件而言,使用 TinyML 构建的应用程序可以在类似 Linux 或嵌入式 Linux 的平台上部署和实施,并且可以在云端软件上运行。最后,基于 TinyML 算法构建的应用程序和系统必须支持需要低内存大小模型以避免高内存消耗的新算法。

总而言之,使用 TinyML 工具构建的应用程序必须在高质量数据的存在下优化 ML 原则和方法,并且紧凑地设计软件。然后,这些数据必须通过使用在具有更大容量和计算能力的机器上进行训练的模型生成的二进制文件进行刷写。

此外,运行在 TinyML 工具上的系统和应用程序必须在更严格的约束条件下提供高准确性,因为小功耗需要紧凑的软件来支持 TinyML 的应用。此外,TinyML 应用程序或模块可能依赖电池供电,以支持其在边缘嵌入式系统上的操作。

说到这里,TinyML 应用程序有两个基本要求:

  1. 能够扩展数十亿个廉价的嵌入式系统。
  2. 将代码存储在设备 RAM 中,容量在几 KB 以下。

使用先进技术的 TinyML 应用

TinyML 之所以在人工智能和机器学习行业成为热门话题的主要原因之一,是因为它具有潜在的应用领域,包括视觉和语音应用、健康诊断、数据模式压缩和分类、脑控界面、边缘计算、表型学、自动驾驶汽车等。

基于语音的应用

语音通信

通常,基于语音的应用依赖于传统的通信方法,其中所有数据都是重要的,并且被传输。然而,近年来,语义通信已经成为传统通信的一种替代方法,因为在语义通信中,只传输数据的含义或上下文。使用 TinyML 方法,可以在基于语音的应用中实施语义通信。

当今语音通信行业中最受欢迎的应用程序包括语音检测、语音识别、在线学习、在线教学和目标导向通信。这些应用程序通常具有较高的功耗,并且在主机设备上对数据要求较高。为了克服这些要求,引入了一种名为 TinySpeech 的新库,允许开发人员构建低计算架构,使用深度卷积网络构建低存储设施。

为了使用 TinyML 进行语音增强,开发人员首先解决了语音增强模型的大小问题,因为它受到硬件限制和约束。为了解决这个问题,部署了对 RNN(循环神经网络)语音增强模型进行结构修剪和整数量化。结果表明,模型的大小减少了近12倍,而操作减少了近3倍。此外,对于在资源受限的应用程序上执行语音识别应用程序的情况,有效利用资源至关重要。

因此,为了对进程进行分区,提出了一种基于 TinyML 的语音和语音识别应用的共同设计方法。开发人员使用窗口操作来对软件和硬件进行分区,以对原始语音数据进行预处理。该方法似乎有效,因为结果显示了硬件上能量消耗的减少。最后,未来有潜力在软件和硬件共同设计之间实现优化的分区。

此外,最近的研究提出了使用基于手机的传感器进行语音识别系统的方法,并且该提议旨在用Conv1D层取代LSTM预测器,以减少边缘设备上的计算需求。在实施时,该提议取得了积极的结果,因为奇异值分解(SVD)成功地压缩了模型,而基于加权有限状态传感器(WFST)的解码则在模型改进偏差方面具有更高的灵活性。

许多著名的语音识别应用程序,如虚拟助手、实时字幕和语音命令,都使用机器学习技术。目前流行的语音助手,如Siri和Google助手,每次接收到数据时都会连接云平台,这引发了与隐私和数据安全相关的重大担忧。 TinyML是解决这个问题的可行解决方案,因为它旨在在设备上执行语音识别,消除了将数据迁移到云平台的需求。实现设备上的语音识别的一种方法是使用Tiny Transducer,这是一种语音识别模型,它使用DFSMM(Deep Feed-Forward Sequential Memory Block)层与一个Conv1D层,而不是LSTM层,以降低计算需求和网络参数。

听力助听器

听力损失是全球的一大健康问题,随着年龄增长,人类听力能力通常会减弱,这是中国、日本和韩国等人口老龄化国家面临的主要问题。目前,助听器设备的工作原理是放大周围的所有输入声音,这使得人们在嘈杂的环境中难以区分或区分所需的声音。

TinyML可能是解决这个问题的可行解决方案,因为使用一种使用语音识别算法的TinyLSTM模型可以帮助用户区分不同的声音。

基于视觉的应用

TinyML在处理基于计算机视觉的数据集方面具有重要作用,因为为了更快的输出,这些数据集需要在边缘平台上进行处理。为了实现这一目标,TinyML模型在使用OpenMV H7微控制器板训练模型时遇到了实际挑战。开发人员还提出了一种使用ARM Cortex M7微控制器来检测美国手语的架构,该架构仅使用496KB的帧缓冲RAM。

在边缘平台上实现基于计算机视觉的应用需要开发人员克服卷积神经网络(CNN)的主要挑战,即高泛化误差和高训练与测试准确度。然而,该实现在新的用例和带有噪音背景的图像上的泛化效果不佳。当开发人员使用插值增强方法时,模型在测试数据上的准确率达到了98%以上,并且在泛化方面达到了约75%。

此外,还观察到当开发人员使用插值增强方法时,在量化过程中模型的准确率下降,但同时模型的推理速度和分类泛化性能也提高了。开发人员还提出了一种方法,通过使用来自不同来源的数据进一步提高泛化模型的准确性,并测试其在便携智能手表等边缘平台上部署的性能。

此外,对CNN的进一步研究表明,在资源有限的设备上部署和获得理想结果是可能的。最近,开发人员成功地在ARM Cortex M7微控制器上使用TensorFlow Lite在有限资源下开发出了用于检测医用口罩的框架,模型量化后的大小约为138KB,目标板上的推理速度约为30FPS。

TinyML在基于计算机视觉的应用中的另一个应用是实现一种手势识别设备,该设备可以夹在盲杖上,帮助视力受损的人更轻松地在日常生活中导航。为了设计它,开发人员使用手势数据集,并使用该数据集训练了一个使用分类算法的ProtoNN模型。该设置的结果准确,设计成本低廉,并且提供了满意的结果。

TinyML在自动驾驶和无人驾驶车辆行业中也具有重要应用,因为缺乏资源和机载计算能力。为了解决这个问题,开发人员提出了一种基于TinyCNN模型的闭环学习方法,该方法提出了一种在线预测模型,可以在运行时捕捉图像。在实施TinyML用于自动驾驶时,开发人员面临的主要问题是,对于离线数据训练的决策模型在处理在线数据时可能效果不佳。为了充分发挥自动驾驶汽车的应用,该模型理想情况下应能够适应实时数据。

数据模式分类和压缩

当前TinyML框架的最大挑战之一是使其能够适应在线训练数据。为了解决这个问题,开发人员提出了一种称为TinyOL或TinyML在线学习的方法,允许在微控制器单元上进行增量在线学习,从而使模型能够在物联网边缘设备上更新。该实现使用C++编程语言实现,并在TinyOL架构中添加了一个额外的层。

此外,开发人员还对Arduino Nano 33 BLE传感器板进行了自编码,并且训练的模型能够对新的数据模式进行分类。此外,开发工作还包括为神经网络设计高效且更优化的算法,以支持设备在线训练模式。

TinyOL和TinyML的研究表明,激活层的数量是物联网边缘设备面临的主要问题。为了解决这个问题,开发人员引入了新的TinyTL或Tiny Transfer Learning模型,使内存在物联网边缘设备上的利用更加有效,并避免使用中间层进行激活。此外,开发人员还引入了一种全新的偏置模块,称为“lite-residual module”,以最大限度地提高适应能力,并允许特征提取器发现残余特征图。

与完整的网络微调相比,结果对TinyTL架构更有利,结果显示TinyTL减少了约6.5倍的内存开销,但精度损失适中。当最后一层微调时,TinyML的准确性提高了34%,但精度损失适中。

此外,关于数据压缩的研究表明,数据压缩算法必须在便携设备上管理收集到的数据,为此,开发人员提出了Tiny Anomaly Compressor(TAC)。TAC能够胜过Swing Door Trending(SDT)和Discrete Cosine Transform(DCT)算法。此外,TAC算法在三种算法中实现了超过98%的最大压缩率,并具有卓越的峰值信噪比。

健康诊断

新冠疫情全球大流行为TinyML的实施开辟了新的机遇,因为持续检测与咳嗽和感冒相关的呼吸症状现在是一种基本实践。为了确保不间断的监测,开发人员提出了一个名为Tiny RespNet的CNN模型,它在多模型设置下运行,并在Xilinx Artix-7 100t FPGA上部署,使设备能够并行处理信息,具有高效率和低功耗。此外,TinyResp模型还接收患者的语音、音频录音和人口统计信息作为输入进行分类,通过三个不同的数据集来分类患者的咳嗽相关症状。

此外,开发人员还提出了一种能够在边缘设备上运行深度学习计算的模型,名为TinyDL的TinyML模型。TinyDL模型可以部署在智能手表和可穿戴设备上进行健康诊断,并能够进行性能分析以减少带宽、延迟和能源消耗。为了在手持设备上部署TinyDL,设计和训练了一个专门为可穿戴设备设计的LSTM模型,并将收集到的数据作为输入。该模型的准确率约为75%至80%,它还能够处理离线数据。这些在边缘设备上运行的模型显示了解决物联网设备当前面临的挑战的潜力。

最后,开发人员还提出了另一个应用,通过估计和分析老年人的身体姿势来监测他们的健康状况。该模型使用设备上的通用框架,允许模型进行验证和快速培养以进行适应性操作。该模型实现了身体姿势检测算法,结合面部特征点来实时检测时空身体姿势。

边缘计算

TinyML在边缘计算领域的一个主要应用是随着使用物联网设备连接全球各地的增加,设置边缘设备是必要的,它将有助于减轻云架构的负担。这些边缘设备将具有独立的数据中心,使它们能够在设备本身上进行高级计算,而不是依赖云架构。结果将有助于减少对云的依赖,减少延迟,增强用户安全与隐私,并减少带宽。

使用TinyML算法的边缘设备将有助于解决与功耗、计算和内存需求相关的当前限制,如下图所示。

此外,TinyML还可以通过解决这些机器面临的当前限制,增强无人机(Unmanned Aerial Vehicles,UAVs)的使用和应用。使用TinyML可以让开发者实现一种能源高效、低延迟、高计算能力的设备,作为这些UAVs的控制器。

脑机接口(Brain-Computer Interface或BCI)

TinyML在医疗保健行业有重要应用,可在癌症和肿瘤检测、使用心电图和脑电图信号进行健康预测以及情绪智能等不同领域发挥重要作用。使用TinyML可以使自适应深度脑刺激(Adaptive Deep Brain Stimulation,aDBS)能够成功适应临床需求。使用TinyML还可以使aDBS通过侵入性脑信号记录识别与疾病相关的生物标志物及其症状。

此外,医疗保健行业通常需要收集大量病人数据,然后需要处理这些数据以达到治疗疾病早期患者的特定解决方案。因此,构建一个既高效又高安全性的系统非常重要。当将物联网应用与TinyML模型相结合时,将产生一个名为H-IoT(Healthcare Internet of Things)的新领域,H-IoT的主要应用包括诊断、监测、物流、传播控制和辅助系统。如果我们想开发能够远程检测和分析病人健康状况的设备,就必须开发一个具有全球访问性和低延迟的系统。

自动驾驶汽车

最后,TinyML在自动驾驶汽车行业有广泛的应用,因为这些车辆可以在人员追踪、军事用途和工业应用等多个方面发挥作用。这些车辆在搜索对象时有一个主要要求,即能够高效地识别对象。

目前,自动驾驶车辆和自动驾驶技术是一个相当复杂的任务,特别是在开发微型或小型车辆时。最近的发展显示,使用卷积神经网络(CNN)架构并部署模型到GAP8 MCI可以改善自动驾驶在微型车辆上的应用。

挑战

TinyML是人工智能和机器学习行业中一个相对较新的概念,尽管取得了一些进展,但在边缘和物联网设备的大规模部署方面仍然不够有效。

TinyML设备目前面临的最大挑战是这些设备的功耗。理想情况下,嵌入式边缘和物联网设备的电池寿命应延长至10年以上。例如,在理想条件下,运行在2Ah电池上的物联网设备的电池寿命应为10年以上,假设设备的功耗约为12 ua。然而,在给定状态下,一个包含温度传感器、MCU单元和WiFi模块的物联网架构,电流消耗约为176.4 mA,以这种功耗,电池的寿命仅为约11小时,而不是所需的10年电池寿命。

资源限制

为了保持算法的一致性,保持电源供应是至关重要的,而当前情况下,TinyML设备的电源供应受限是一个关键挑战。此外,内存限制也是一个重要挑战,因为部署模型通常需要大量内存才能有效和准确地工作。

硬件限制

硬件限制使得在各种硬件设备上广泛部署TinyML算法变得困难,因为硬件设备的异构性。存在成千上万的设备,每个设备都有自己的硬件规格和要求,因此TinyML算法目前需要针对每个单独的设备进行调整,这使得大规模部署成为一个重大问题。

数据集约束

TinyML模型的一个主要问题是它们不支持现有数据集。对于所有边缘设备来说,这是一个挑战,因为它们使用外部传感器收集数据,而这些设备通常有功耗和能量限制。因此,现有的数据集无法有效地用于训练TinyML模型。

最后的思考

ML技术的发展在IoT生态系统中引起了一场革命和视角的转变。将ML模型集成到IoT设备中将使这些边缘设备能够在没有任何外部人员输入的情况下做出智能决策。然而,传统上,ML模型通常具有高功耗、内存和计算要求,这使它们不适合部署在通常资源受限的边缘设备上。

因此,AI的一个新分支专门用于将ML用于IoT设备,被称为TinyML。TinyML是一个ML框架,即使是资源受限的设备也能利用AI和ML的力量来确保更高的准确性、智能性和效率。

在本文中,我们谈到了在资源受限的IoT设备上实现TinyML模型的方法,这需要对模型进行训练、在硬件上部署模型,并执行量化技术。然而,鉴于目前的范围,准备部署在IoT和边缘设备上的ML模型存在着多种复杂性和限制,包括硬件和框架的兼容性问题。