在低功耗MCU上实现人工智能和机器学习

作者: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中的配置去进行前端的初始化来生成功能,并以流模式来初始化和启动麦克风。Audio Feature Generator | API Documentation | Machine Learning | latest | Silicon Labs

MLPerf Tiny BenchmarkMLPerf 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。

TinyMLMCU上的优势:

  • 成本低-MCU价格合理
  • 绿色环保-能耗低
  • 易于集成-可轻松将MCU集成到现有环境中
  • 隐私与安全-在本地处理数据,无需联网传输
  • 快速原型开发-快速开发概念验证解决方案
  • 自主可靠-微型设备在任何环境下都能稳定运行
  • 实时处理-将延迟降至最低

嵌入式开发应用流程

开发具有机器学习功能的应用需要两个不同的工作流程:

  • 使用Simplicity Studio来创建无线应用的嵌入式应用开发工作流程。
  • 创建将添加到嵌入式应用的机器学习功能的机器学习工作流程。
  • 目标应用
  • 运动检测:在商业办公大楼里,许多灯都是由运动探测器控制的,该探测器监测占用情况,以确定灯是否应该打开或关闭。然而,当员工在办公桌前打字时,由于动作仅限于手和手指,因为运动传感器本身无法识别他们的存在,所以可能会出现自动关灯而无法为员工可提供照明。通过将音频传感器与运动探测器连接起来,额外的音频数据(如打字的声音)可以通过机器学习算法进行处理,从而使照明系统能够更明智地决定灯是应该打开还是关闭。

    预测性维护:可使用芯科科技的EFR32 MCU来开发一个预测性维护系统。这需要使用连接的传感器来收集机器的振动和温度数据,同时训练一个模型来根据这些数据预测潜在的故障,然后将该模型部署在MCU上,实现对机器的实时监控和维护计划。

    健康监测:使用EFM32 MCU构建可穿戴健康监测设备。使用传感器收集心率和体温等生命体征的数据。训练一个模型来检测数据中的异常。在MCU上部署该模型,帮助用户对健康情况提供实时分析了解。

    智能农业:使用芯科科技的MCU开发智能灌溉系统。使用连接的传感器收集土壤湿度和天气数据。训练一个模型,以便根据这些数据来优化水的使用。将该模型部署在MCU上,控制灌溉系统,提高作物产量。

    结论

    MCU不再局限于简单任务,而是正成为实现AI的强大平台。通过探索面向AI优化的MCU,我们可以为电池供电的智能设备开辟新的潜在应用。无论是智能家居设备还是工业传感器,AI驱动的MCU正在重塑嵌入式系统的未来。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

革新之力:数字科技——重塑未来的超越想象之旅

在21世纪的科技浪潮中,数字科技如同一股不可阻挡的洪流,正以前所未有的速度和广度改变着我们的生活、工作乃至整个社会的结构。它不仅是技术的简单迭代,更是对人类社会认知边界的拓宽,对经济模式、社会治理、文化形态等多方面的深…

elabradio入门第八讲——帧同步技术

一、帧同步的相关知识 数字通信中, 为了使接收到的码元能够被理解,需要知道其如何分组。一般说来,接收端需要利用帧同步码去划分接收码元序列。将标志码组开始位置的帧同步码插入于一个码组的前面,如图所示。 这里的帧同步码是一…

Blender小技巧和注意事项

1.雕刻模式如果没反应,需要将模式转换成编辑模式 2. 鼠标移到大纲 点击 小键盘的. / 大键盘句号 , 在大纲视图快速找到选中物体 3.打包图像等数据进Blender文件中,可以防止丢失

vxe-table 如何实现跟 Excel 一样的数值或金额的负数自动显示红色字体

vxe-table 如何实现跟 Excel 一样的数值或金额的负数自动显示红色字体,当输入的值为负数时,会自动显示红色字体,对于数值或者金额输入时该功能就非常有用了。 查看官网:https://vxetable.cn gitbub:https://github.co…

二叉树的前序、中序、后序遍历(递归和非递归实现)

二叉树,顾名思义,就是一个节点最多有两个子节点的树,要访问二叉树内的所有节点,我们一般有三种方法:前序遍历,中序遍历和后续遍历。 前序遍历:访问顺序为“根-左-右”中序遍历:访问…

Spring Boot(七):Swagger 接口文档

1. Swagger 简介 1.1 Swagger 是什么? Swagger 是一款 RESTful 风格的接口文档在线自动生成 功能测试功能软件。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。目标是使客户端和文件系统作为服务器以同样的…

STM32+Proteus+DS18B20数码管仿真实验

1. 实验准备 硬件方面: 了解 STM32 单片机的基本原理和使用方法,本实验可选用常见的 STM32F103 系列。熟悉 DS18B20 温度传感器的工作原理和通信协议(单总线协议)。数码管可选用共阴极或共阳极数码管,用于显示温度值。…

【进程与线程】Linux 线程、同步以及互斥

每个用户进程有自己的地址空间。 线程是操作系统与多线程编程的基础知识。 系统为每个用户进程创建一个 task_struct 来描述该进程:该结构体中包含了一个指针指向该进程的虚拟地址空间映射表: 实际上 task_struct 和地址空间映射表一起用来表示一个进程…

day16_推荐系统和总结

文章目录 day16_推荐系统和总结一、推荐实现1、基于流行度推荐(掌握)1.1 近期热门商品推荐1.2 个人热门商品推荐 2、基于隐语义模型的协同过滤推荐(了解)2.1 ALS算法介绍2.2 推荐代码 3、基于物品的协同过滤推荐(了解&…

深度解析应用层协议-----HTTP与MQTT(涵盖Paho库)

HTTP协议概述 1.1 HTTP的基本概念 HTTP是一种应用层协议,使用TCP作为传输层协议,默认端口是80,基于请求和响应的方式,即客户端发起请求,服务器响应请求并返回数据(HTML,JSON)。在H…

redis的应用,缓存,分布式锁

1.应用 1.1可以用作缓存 作用:提交数据的查询效率,减少对数据库的访问频率 什么数据适合放入缓存 1.查询频率高,修改频率低 2.对安全系数比较低 如何实现 Service public class DeptServer {Autowiredprivate DeptMapper deptMapper;Auto…

Ubuntu22.04 - etcd的安装和使用

目录 介绍安装Etcd安装etcd的客户端使用 介绍 Etcd 是一个 golang 编写的分布式、高可用的一致性键值存储系统,用于配置共享和服务发现等。它使用 Raft 一致性算法来保持集群数据的一致性,且客户端通过长连接watch 功能,能够及时收到数据变化…

对学习编程语言的一些理解

目录 一、代码运行的过程 二、跨平台的实现 1)C/C 2)C# 3)Java 三、总结 一、代码运行的过程 开发程序无论使用何种编程语言,至少都需要经历编码、编译、连接和运行这么4个过程,C语言是这样,Java语言…

【知识】深度学习中,应该先zero_grad还是先backward?

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 目录 抛出问题 各大GPT的回答 ChatGPT-4o ChatGPT-o3-mini-high Kimi-长思考 Deepseek-R1 Grok3 Pytorch官方教程中 抛出问题 以下哪种方式是…

kafka消费能力压测:使用官方工具

背景 在之前的业务场景中,我们发现Kafka的实际消费能力远低于预期。尽管我们使用了kafka-go组件并进行了相关测试,测试情况见《kafka-go:性能测试》这篇文章。但并未能准确找出消费能力低下的原因。 我们曾怀疑这可能是由我的电脑网络带宽问题或Kafka部…

蓝桥云客 路径之谜

11.路径之谜 - 蓝桥云课 路径之谜 题目描述 小明冒充X星球的骑士,进入了一个奇怪的城堡。 城堡里边什么都没有,只有方形石头铺成的地面。 假设城堡地面是nn个方格。如下图所示。 按习俗,骑士要从西北角走到东南角。可以横向或纵向移动&…

Oracle 深入理解Lock和Latch ,解析访问数据块全流程

Oracle 锁机制介绍 根据保护对象的不同,单实例Oracle数据库锁可以分为以下几大类: DML lock(data locks,数据锁):用于保护数据的完整性; DDL lock(dictionary locks,字典…

Jenkins 环境搭建---基于 Docker

前期准备 提前安装jdk、maven、nodeJs(如果需要的话) 创建 jenkins 环境目录,用来当做挂载卷 /data/jenkins/ 一:拉取 Jenkins 镜像 docker pull jenkins/jenkins:lts 二:设置 Jenkins挂载目录 mkdir -p ~/jen…

DOS网络安全

ping -t 不间断地ping目标主机,直到用户用ctrlc键强行终止。经常用来排除网络故障 -l 定制ping信息包的容量,最大上限是65500字节 -n 向远程主机发送的数据 包个数,默认是4。 语法: ping 参数 IP地址 netstat -a 显示所有连接…

QML Component 与 Loader 结合动态加载组件

在实际项目中,有时候我们写好一个组件,但不是立即加载出来,而是触发某些条件后才动态的加载显示出来,当处理完某些操作后,再次将其关闭掉; 这样的需求,可以使用 Component 包裹着组件&#xff…