作者:Silicon Labs
人工智能(AI)和机器学习(ML)技术不仅正在快速发展,还逐渐被创新性地应用于低功耗的微控制器(MCU)中,从而实现边缘AI/ML解决方案。这些MCU是许多嵌入式系统不可或缺的一部分,凭借其成本效益、高能效以及可靠的性能,现在能够支持AI/ML应用。这种集成化在可穿戴电子产品、智能家居设备和工业自动化等应用领域中,从AI/ML功能中获得的效益尤为显著。具备AI优化功能的MCU和TinyML的兴起(专注于在小型、低功耗设备上运行ML模型),体现了这一领域的进步。TinyML对于直接在设备上实现智能决策、促进实时处理和减少延迟至关重要,特别是在连接有限或无连接的环境中。
TinyML是指在小型、低功耗设备上应用机器学习模型,尤其是在微控制器(MCU)平台上,这些MCU经过优化,可以在设备有限的资源体系内运行。这使得边缘设备能够实现智能决策,支持实时处理并减少延迟。量化(Quantization)和剪枝(Pruning)等技术用于减小模型大小并提高推理速度。量化通过降低模型权重的精度,显著减少内存使用而几乎不影响准确性;剪枝则通过去除不太重要的神经元,进一步减小模型规模并提升延迟性能。这些方法对于在资源有限的设备上部署ML模型至关重要。
PyTorch和TensorFlow Lite都是实现机器学习模型的主流框架。PyTorch是一个开源机器学习库,被广泛用于人工智能应用的开发,包括可以部署在微控制器上的应用程序。PyTorch提供了用于机器学习的工具和库,包括计算机视觉和自然语言处理,可用于低功耗和小尺寸设备。
TensorFlow Lite for Microcontroller(TFLM)能够在非常受限的MCU类设备上运行具有Flatbuffer转换功能的TF Lite模型。这减少了模型的大小,并优化了它在MCU上的推理。
另一个重要的工具是来自ARM的CMSIS-NN库,它为Cortex-M处理器提供了优化的神经网络内核来运行TFLM模型。CMSIS-NN库提高了性能并减少了内存占用,使其更容易在基于ARM的MCU上运行ML模型。
此外,一些MCU还配备了专用的AI/ML硬件加速器,如Silicon Labs(芯科科技)的EFM32无线SoC和MCU,可以显著提高ML模型的性能,使更复杂的应用程序能够在这些设备上更快、更高效地运行。人工智能加速器擅长并行化任务,如矩阵乘法、卷积和图形处理。通过利用多样化的并行性,它们可以一次执行大量的计算。这使得人工智能工作负载的速度大大提高,同时保持低功耗。这些加速器还增强了内存访问模式,减少了数据传输开销,主CPU—CortexM可以进入低功耗睡眠模式,以节省更多的能量或管理额外的任务。通过使数据更接近计算单元,它们减少了等待时间。其结果是增强了性能、降低了功耗和延迟。
实际应用
TinyML的实际应用是多种多样且有影响力的。一个值得注意的示例是音频和视觉唤醒词,当说出特定的关键字或在图像中检测到某人时,设备会触发动作。这项技术被用于智能扬声器和安全摄像头,支持它们在识别到唤醒词或检测运动时激活。另一种应用是工业环境中的预测性维护。工厂设备上的传感器持续监测振动和温度等参数,可使用TinyML模型检测来异常并在故障发生之前预测维护需求,这有助于减少停机时间和维护成本。
手势和活动识别是TinyML的另一种令人兴奋的应用。配备加速度计和陀螺仪的可穿戴设备可以监测身体活动,如走路、跑步或特定手势。这些设备使用TinyML模型实时分析传感器数据,为健身追踪或医疗诊断提供有价值的见解。在农业领域,TinyML被用于环境监测。智能农业系统分析土壤湿度和天气条件,以优化灌溉,提高作物产量和资源效率。
TinyML还增强了健康监测功能。诸如连续血糖监测仪(CGM)这样需要长时间电池寿命和实时数据处理的设备,都能够极大地受益于这项技术。此外,智能床传感器可以在没有直接接触的情况下评估病人的呼吸模式,为远程观察提供不间断的健康数据。这一创新在管理老年人护理和慢性疾病方面特别有价值,因为持续监测有助于及早发现潜在的健康问题。
启动开发
要开始构建自己的TinyML应用,您需要了解TinyML的基础知识并选择合适的硬件。根据您的应用,您可能需要传感器来收集数据,例如加速度计、麦克风或摄像头。设置开发环境包括安装Simplicity Studio集成开发环境(IDE)、SDK和TinyML所需的资源库。
下一步是收集和准备与应用相关的数据。例如,如果您正在构建一个手势识别系统,您需要收集不同手势的加速度计数据。收集数据后,您需要对其进行预处理,使其适合训练您的模型。训练模型需要在功能强大的机器上使用高级框架,如TensorFlow或PyTorch。一旦训练完毕,模型需要使用量化和剪枝等技术进行优化。
在完成优化后,即可将模型转换为适合MCU的格式,如TensorFlow Lite格式。最后一步是将优化后的模型部署到MCU,将其与应用程序代码集成,并对其进行全面测试,以确保其满足性能和精度要求。基于实际性能的不断迭代和改进对于完善TinyML应用至关重要。
利用芯科科技的解决方案在微控制器上实现人工智能和机器学习
芯科科技提供了一系列解决方案,有助于在MCU上实现AI/ML。EFR32/EFM32(xG24、xG26、xG28)和SiWx917系列微控制器由于其低功耗和强大的性能而非常适合TinyML应用。以下是在芯科科技MCU上实现AI/ML的详细技术指南:
数据采集与预处理
数据采集:使用连接到MCU的传感器采集原始数据,例如加速度计、陀螺仪和温度传感器等传感器都可用于各种应用。
预处理:对数据进行清理和预处理,使其适合训练。这可能包括过滤噪声、对数值进行归一化处理以及将数据分割到窗口中。为此,芯科科技提供了数据采集和预处理工具。
数据采集工具则由合作伙伴SensiML提供:https://github.com/sensiml/sensiml_xG24_dual_audio_imu_capture
模型训练
模型选择:根据应用选择合适的ML模型。常用的模型包括决策树(decision tree)和支持向量机(vector machine)。
训练:在高性能云服务器或带有GPU的本地PC上使用TensorFlow训练模型。这包括将预处理数据输入模型并调整参数以最小化误差。
模型转换:使用TensorFlow Lite转换器将训练模型转换为与TF Lite Micro兼容的格式。TensorFlow Lite for Microcontrollers (TFLM)中的FlatBuffer转换包括将TensorFlow Lite模型转换为FlatBuffer格式,这是一种紧凑的二进制格式,可以高效地存储和快速地访问。这个过程对于在内存和处理能力有限的微控制器上运行机器学习模型至关重要。FlatBuffers支持直接访问模型而无需解压。一旦采用FlatBuffer格式,该模型可以由微控制器执行,使其能够执行推理任务。这种转换减小了模型大小,使其适用于内存非常有限的设备,并且可以快速访问和执行模型,而无需进行大量解析。此外,它还确保该模型可以在运行速率低于1GHz、代码空间有限(通常低于3MB)、SRAM有限(约256KB)的MCU上被无缝集成和执行。
模型部署
与Simplicity SDK集成:使用芯科科技的Simplicity SDK将TF Lite Micro与MCU集成。
闪存模型(Flashing the Model):将转换后的模型移植到MCU的Flash上。这可以使用Simplicity Studio完成,它为芯科科技MCU的编程提供了一个用户友好的界面。
推理和优化:应用量化和剪枝等优化技术,以减小模型大小并提高性能。
运行推理:一旦模型部署完成,它可以在MCU上运行推理。这包括向模型中输入新数据并获得预测结果。
软件工具链:新的软件工具包旨在支持开发人员使用一些最流行的工具套件(如TinyML和TensorFlow)快速构建和部署人工智能和机器学习算法。AI/ML软件帮助设计人员创建新的应用程序。除了原生支持TensorFlow来为高效推理提供优化内核之外,芯科科技还与一些领先的AI/ML工具提供商(如SensiML和Edge Impulse)合作,以确保开发人员拥有端到端的工具链来简化机器学习模型的开发,这些模型针对无线应用的嵌入式部署进行了优化。通过将这一全新的AI/ML工具链与芯科科技的Simplicity Studio开发平台以及xG24、xG28和xG26系列SoC结合使用,开发人员可以创建能够从各种互联设备获取信息的应用,这些设备都可以相互通信,从而做出智能的、由机器学习驱动的决策。
芯科科技提供各种工具和资源来支持ML应用。以下是其中一些例子:
机器学习应用:芯科科技提供集成化的硬件、软件和开发工具,帮助客户快速创建适用于工业和商业应用场景的、安全的智能设备。开发平台支持嵌入式机器学习(TinyML)模型推理,由Tensorflow Lite for Microcontrollers(TFLM)框架支持。该存储库包含一组利用ML的嵌入式应用程序:https://github.com/SiliconLabs/machine_learning_applications
机器学习工具包(MLTK):这是一个带有命令行实用程序和脚本的Python软件包,可支持基于芯科科技的嵌入式平台开发的机器学习模型。它包括从命令行界面或Python脚本执行ML操作的各项功能,并可确定ML模型在嵌入式平台上的执行效率,以及使用谷歌Tensorflow训练ML模型。
参考数据集:MLTK附带参考模型使用的数据集。这些数据集可以在Github上找到:
https://github.com/SiliconLabs/mltk/blob/master/docs/python_api/datasets/index.md
音频特征生成器(Audio Feature Generator):芯科科技提供了与TensorFlow Lite模型一起使用的音频特征生成器。它根据sl_ml_audio_feature_generation_config.h中的配置去进行前端的初始化来生成功能,并以流模式来初始化和启动麦克风。https://docs.silabs.com/machine-learning/latest/machine-learning-tensorflow-lite-api/ml-audio-feature-generation
MLPerf Tiny Benchmark:MLPerf Tiny Benchmark是由一家开放工程联盟MLCommons设计的性能评估套件。它旨在衡量ML系统在推理方面的性能和能效,将训练好的ML模型应用于新数据。该基准是专门为低功耗的最小设备量身定制的,通常用于深度嵌入式应用,如物联网(IoT)或智能传感。
芯科科技参与了MLPerf Tiny基准测试,提交了展示机器学习工具包(MLTK)功能的解决方案。该工具包包括TinyML基准测试使用的几个模型,可在GitHub上获得,涵盖异常检测、图像分类、关键字识别和视觉唤醒词等应用程序。
与以前的版本相比,使用MLPerf Tiny v1.0的结果显示出了推理速度提高,以及代码规模和内存使用量的减少。例如,Plumerai的推理引擎表现出了显著的增强,包括支持时间序列神经网络,如基于LSTM的循环神经网络(RNN),这在运动传感器、健康传感器、语音和音频应用中很常见。
AI/ML合作伙伴
芯科科技与业界领先的供应商合作,包括Edge Impulse、SensiML、NeutonAI和Eta Compute等AutoML工具链和SaaS云伙伴建立了合作关系。此外,诸如Sensory和MicroAI等解决方案提供商,以及包括Capgemini和Jabil在内的设计合作伙伴都是该网络的一部分。这些联盟提供了可简化综合解决方案开发的平台,使初学者更容易接触到边缘的AI/ML。
TinyML在MCU上的优势:
成本低-MCU价格合理
绿色环保-能耗低
易于集成-可轻松将MCU集成到现有环境中
隐私与安全-在本地处理数据,无需联网传输
快速原型开发-快速开发概念验证解决方案
自主可靠-微型设备在任何环境下都能稳定运行
实时处理-将延迟降至最低
嵌入式开发应用流程
开发具有机器学习功能的应用需要两个不同的工作流程:
使用Simplicity Studio来创建无线应用的嵌入式应用开发工作流程。
创建将添加到嵌入式应用的机器学习功能的机器学习工作流程。
目标应用
运动检测:在商业办公大楼里,许多灯都是由运动探测器控制的,该探测器监测占用情况,以确定灯是否应该打开或关闭。然而,当员工在办公桌前打字时,由于动作仅限于手和手指,因为运动传感器本身无法识别他们的存在,所以可能会出现自动关灯而无法为员工可提供照明。通过将音频传感器与运动探测器连接起来,额外的音频数据(如打字的声音)可以通过机器学习算法进行处理,从而使照明系统能够更明智地决定灯是应该打开还是关闭。
预测性维护:可使用芯科科技的EFR32 MCU来开发一个预测性维护系统。这需要使用连接的传感器来收集机器的振动和温度数据,同时训练一个模型来根据这些数据预测潜在的故障,然后将该模型部署在MCU上,实现对机器的实时监控和维护计划。
健康监测:使用EFM32 MCU构建可穿戴健康监测设备。使用传感器收集心率和体温等生命体征的数据。训练一个模型来检测数据中的异常。在MCU上部署该模型,帮助用户对健康情况提供实时分析了解。
智能农业:使用芯科科技的MCU开发智能灌溉系统。使用连接的传感器收集土壤湿度和天气数据。训练一个模型,以便根据这些数据来优化水的使用。将该模型部署在MCU上,控制灌溉系统,提高作物产量。
结论
MCU不再局限于简单任务,而是正成为实现AI的强大平台。通过探索面向AI优化的MCU,我们可以为电池供电的智能设备开辟新的潜在应用。无论是智能家居设备还是工业传感器,AI驱动的MCU正在重塑嵌入式系统的未来。