0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用高级 MCU 实现加速机器学习应用

张涛 来源:ROSE1017 作者:ROSE1017 2022-07-19 11:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

How developers can use an advanced wireless microcontroller with an embedded matrix vector processor to speed performance and reduce power consumption in machine-learning inference for the IoT.

从历史上看,人工智能 (AI) 是一种 GPU / CPU 甚至 DSP 依赖的技术。然而,最近人工智能正在通过集成到运行在较小微控制器(也称为 MCU)上的受限应用程序中来进入数据采集系统。这一趋势主要由物联网 (IoT) 市场推动,Silicon Labs 是其中的主要参与者。

为了应对这一新的物联网趋势,Silicon Labs 宣布推出一款可以执行硬件加速 AI 操作的无线 MCU。为了实现这一点,该 MCU 设计为嵌入矩阵矢量处理器 (MVP),即 EFR32xG24。

在本文中,我将首先介绍一些 AI 基础知识,重点介绍 MVP 的用例。最重要的是,如何使用 EFR32xG24 设计 AI IoT 应用程序。

人工智能、机器学习和边缘计算

人工智能是一个试图模仿人类行为的系统。更具体地说,它是一种电气和/或机械实体,可以模拟对输入的响应,类似于人类会做的事情。尽管术语 AI 和机器学习 (ML) 经常互换使用,但它们代表了两种不同的方法。AI 是一个更广泛的概念,而 ML 是 AI 的一个子集。

使用机器学习,系统可以在重复使用所谓的模型后做出预测并改进(或训练)自身。模型是使用经过训练的算法,最终将用于模拟决策。可以通过收集数据或使用现有数据集来训练该模型。当该系统将其“训练过的”模型应用于新获取的数据以做出决策时,我们将其称为机器学习推理。

如前所述,推理需要通常由高端计算机处理的计算能力。但是,我们现在能够在不需要连接到此类高端计算机的更多受限设备上运行推理;这称为边缘计算。

通过在 MCU 上运行推理,可以考虑执行边缘计算。边缘计算涉及在距离获取数据的最近点运行数据处理算法。边缘设备的示例通常是简单且受限的设备,例如传感器或基本执行器(灯泡、恒温器、门传感器、电表等)。这些设备通常在低功耗 ARM Cortex-M 类 MCU 上运行:

点击查看完整大小的图片
poYBAGLVd7KAfaCkAAFFRVuWsi8018.pngpoYBAGLVd7KAfaCkAAFFRVuWsi8018.png

执行边缘计算有很多好处。可以说,最有价值的好处是使用边缘计算的系统不依赖于外部实体。设备可以在本地“做出自己的决定”。

在本地进行决策具有以下实际好处:

  • 提供更低的延迟
    原始数据不需要传输到云端进行处理,这意味着决策可以实时出现在设备上。
  • 减少所需的互联网带宽
    传感器会产生大量实时数据,这反过来又会产生对带宽的大量需求,即使没有什么可“报告”,从而使无线频谱饱和并增加运行成本。
  • 降低功耗
    与传输数据相比,本地分析数据(使用 AI)所需的功率要少得多
  • 符合隐私和安全要求
    通过在本地做出决策,无需将详细的原始数据发送到云端,只需将推理结果和元数据发送到云端,从而消除了数据隐私泄露的可能性。
  • 降低成本
    在本地分析传感器数据可以节省使用云基础设施和流量的费用。
  • 提高弹性
    如果与云的连接中断,边缘节点仍可以自主运行。

Silicon Labs 用于边缘计算的 EFR32xG24

EFR32xG24 是一款安全无线 MCU,支持多种 2.4 GHz IoT 协议(蓝牙低功耗、Matter、Zigbee 和 OpenThread 协议)。它还包括 Secure Vault,这是一种改进的安全功能集,适用于所有 Silicon Labs Series 2 平台。

但是,除了改进了该 MCU 独有的安全性和连接性之外,还有一个用于机器学习模型推理的硬件加速器(以及其他加速器),称为矩阵矢量处理器 (MVP)。

与没有硬件加速的 ARM Cortex-M 相比,MVP 提供了更高效地运行机器学习推理的能力,功耗降低了 6 倍,速度提高了 2-4 倍(实际改进取决于模型和应用程序)。

点击查看完整大小的图片
pYYBAGLVd7qAA67FAAMgba_D15E927.pngpYYBAGLVd7qAA67FAAMgba_D15E927.png

MVP 旨在通过处理密集的浮点运算来卸载 CPU。它专为复杂的矩阵浮点乘法和加法而设计。

MVP 由专用硬件算术逻辑单元 (ALU)、加载/存储单元 (LSU) 和定序器组成。

点击查看完整大小的图片
poYBAGLVd8OAbRdwAAEFmvV8160149.pngpoYBAGLVd8OAbRdwAAEFmvV8160149.png

因此,MVP 有助于加速各种应用程序的处理并节省功耗,例如到达角 (AoA)、MUSIC 算法计算、机器学习(本征或基本线性代数子程序 BLAS)等。

由于该设备是一个简单的 MCU,它无法解决 AI/ML 可以涵盖的所有用例。它旨在解决下面列出的以下四个类别以及实际应用:

  • 传感器信号处理
    • 预测性维护
    • 生物信号分析
    • 冷链监控
    • 加速度计用例
  • 音频模式匹配
    • 玻璃破碎检测
    • 镜头检测
  • 语音命令
    • 智能家电的文字命令集
    • 唤醒词检测
  • 低分辨率视觉
    • 存在检测
    • 数数
    • 指纹

为了帮助解决这些问题,Silicon Labs 提供了基于称为 TensorFlow 的 AI/ML 框架的专用示例应用程序。

TensorFlow 是来自 Google 的用于机器学习的端到端开源平台。它拥有一个由工具、库和社区资源组成的全面、灵活的生态系统,使研究人员能够推动 ML 的最新技术,开发人员可以轻松构建和部署 ML 驱动的应用程序。

Tensor Flow 项目还针对嵌入式硬件变体进行了优化,称为 TensorFlow Lite for Microcontrollers (TFLM)。这是一个开源项目,其中大部分代码由社区工程师贡献,包括 Silicon Labs 和其他芯片供应商。目前,这是与 Silicon Labs Gecko SDK 软件套件一起交付的用于创建 AI/ML 应用程序的唯一框架。

Silicon Labs 提供的 AI/ML 示例有:

  • Zigbee 3.0 带语音激活的电灯开关
  • 张量流魔棒
  • 声控 LED
  • 张量流 Hello world
  • 张量流微演讲

要开始开发基于其中任何一个的应用程序,您可以有很少的经验,或者您可以成为专家。Silicon Labs 提供多种机器学习开发工具供您选择,具体取决于您的机器学习专业水平。

对于第一次 ML 开发人员,您可以从我们的一个示例开始,或者尝试我们的第 3 方合作伙伴之一。我们的第 3 方 ML 合作伙伴通过功能丰富且易于使用的 GUI 界面支持完整的端到端工作流程,以便为我们的芯片构建最佳机器学习模型。

对于希望直接使用 Keras/TensorFlow 平台的 ML 专家,Silicon Labs 提供了一个自助式、自助式的参考包,将模型开发工作流程组织成一个专为为 Silicon Labs 芯片构建 ML 模型而定制的工作流程。

点击查看完整大小的图片
pYYBAGLVd8iAU7tnAAOo0258eqE760.pngpYYBAGLVd8iAU7tnAAOo0258eqE760.png

开发支持 ML 的应用示例:采用 EFR32xG24 的语音控制 Zigbee 开关

要创建支持 ML 的应用程序,需要两个主要步骤。第一步是创建一个无线应用程序,您可以使用 Zigbee、BLE、Matter 或任何基于 2.4 GHz 协议的专有应用程序来完成。它甚至可以是未连接的应用程序。第二步是构建 ML 模型以将其与应用程序集成。

如上所述,Silicon Labs 提供了多种选项来为其 MCU 创建 ML 应用程序。此处选择的方法是使用具有预定义模型的现有示例应用程序。在这个例子中,模型被训练来检测两个语音命令:“on”和“off”。

EFR32xG24 应用程序入门

poYBAGLVd86AG9UtAADZ1ohpNPs709.pngpoYBAGLVd86AG9UtAADZ1ohpNPs709.png

要开始使用,请获取 EFR32MG24 开发人员套件 BRD2601A(左)。

该开发套件是一个紧凑型电路板,嵌入了多个传感器(IMU、温度、相对湿度等)、LED 和 Stereo I 2 S 麦克风。

该项目将使用 I 2 S 麦克风。

这些设备可能不像 GPU 那样稀有,但如果您没有机会获得这些套件之一,您还可以使用基于系列 1 的旧开发套件,称为“Thunderboard Sense 2”参考。SLTB004A(右)。

但是,此 MCU 没有 MVP,将使用主内核执行所有推理,无需加速。

poYBAGLVd9OAR50MAACz8CTkmUQ776.pngpoYBAGLVd9OAR50MAACz8CTkmUQ776.png

接下来,您需要 Silicon Labs 的 IDE Simplicity Studio 来创建 ML 项目。它提供了一种下载 Silicon Labs 的 Gecko SDK 软件套件的简单方法,该套件提供了应用程序所需的库和驱动程序,如下所示。

  • 无线网络堆栈(本例中为 Zigbee)
  • 硬件驱动程序(用于 I2S 麦克风以及 MVP)
  • TensorFlow Lite 框架
  • 一个已经训练过的用于检测命令词的模型

点击查看完整大小的图片
pYYBAGLVd9uAO2wYAAO8PCS8nKw902.pngpYYBAGLVd9uAO2wYAAO8PCS8nKw902.png

IDE 还提供工具来进一步分析您的应用程序功耗或网络操作。

创建启用 MVP 的 Zigbee 3.0 Switch 项目

Silicon Labs 提供了一个即用型示例应用程序 Z3SwitchWithVoice,您将创建和构建该应用程序。该应用程序已经附带了一个 ML 模型,因此您无需创建一个。

创建后,请注意 Simplicity Studio 项目由组件带来的源文件组成,这些组件是 GUI 实体,通过简化复杂软件的集成,可以轻松使用 Silicon Labs 的 MCU。在这种情况下,您可以看到默认安装了 MVP 支持和 Zigbee 网络堆栈。

点击查看完整大小的图片
pYYBAGLVd-OAe3YBAAMfnvXQTIw919.pngpYYBAGLVd-OAe3YBAAMfnvXQTIw919.png

主要应用程序代码位于 app.c 源文件中。

在网络方面,应用程序可以通过一个简单的按钮与任何现有的 Zigbee 3.0 网络配对,也称为“网络转向”。联网后,MCU 将寻找兼容且可配对的照明设备,也称为“绑定”。

当应用程序的网络部分启动并运行时,MCU 将定期轮询麦克风数据样本并在其上运行推理。此代码位于keyword_detection.c 中。




  ()
{
 
  found_command_index = 0;
 分数 = 0;
  is_new_command =  ;
  current_time_stamp;

 
 current_time_stamp = sl_sleeptimer_tick_to_ms(sl_sleeptimer_get_tick_count());

 TfLiteStatus process_status = command_recognizer->ProcessLatestResults(
 sl_tflite_micro_get_output_tensor(), current_time_stamp, &found_command_index, &score, &is_new_command);

  (process_status != ) {
  SL_STATUS_FAIL;
 }

  (is_new_command) {
  (found_command_index == 0 || found_command_index == 1) {
 printf(  , kCategoryLabels[found_command_index],
 分数,current_time_stamp);
 检测到的关键字(found_command_index);
 }
 }

 SL_STATUS_OK;
}

检测到关键字后,app.c 中的处理程序将发送相应的 Zigbee 命令:

  
{
 状态;

 (emberAfNetworkState()==){
 emberAfGetCommandApsFrame()->  = SWITCH_ENDPOINT;

  (detected_keyword_index == 0) {
 emberAfFillCommandOnOffClusterOn();
 }   (detected_keyword_index == 1) {
 emberAfFillCommandOnOffClusterOff();
 }

 状态 = emberAfSendCommandUnicastToBindings();
 sl_zigbee_app_debug_print(  ,  , status);
 }
}

此时,您已在无线 MCU 上运行硬件加速推理以进行边缘计算。

自定义 TensorFlow 模型以使用不同的命令词

如前所述,实际模型已经集成到该应用程序中,并且没有进一步修改。但是,如果您自己集成模型,则可以通过以下步骤进行:

  1. 收集和标记数据
  2. 设计和构建模型
  3. 评估和验证模型
  4. 为嵌入式设备转换模型

无论您对机器学习多么熟悉,都必须遵循这些步骤。不同之处在于如何构建模型,如下所示:

  1. 如果您是 ML 的初学者,Silicon Labs 建议使用我们易于使用的端到端第三方合作伙伴平台之一:Edge Impulse 或 SensiML 来构建您的模型。
  2. 如果您是 Keras/TensorFlow 方面的专家并且不想使用第三方工具,您可以使用机器学习工具包 (MLTK),它是一个自助式、自助式的 Python 包。Silicon Labs 围绕音频用例创建了这个参考包,可以扩展、修改或以其他方式挑选专家认为有吸引力的部分。该包将在 GitHub 上提供,附带文档。您也可以直接导入一个 .tflite 文件,该文件在 TensorFlow lite 的嵌入式版本上运行,用于为 EFR32 产品线进行微编译。您必须确保数据上的特征提取对于训练模型与在目标芯片上运行推理完全相同。

在 Simplicity Studio 中,后者是最简单的。要在 Simplicity Studio 中更改模型,请将 .tflite 模型文件复制到项目的 config/tflite 文件夹中。项目配置器提供了一个工具,可以自动将 .tflite 文件转换为 sl_ml_model 源文件和头文件。此工具的完整文档可在Flatbuffer Conversion获得。

[注意:所有图片和代码均由 Silicon Labs 提供。]

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    19111

    浏览量

    403380
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    边缘 AI 加速的 Arm® Cortex®‑M0+ MCU 如何为电子产品注入更强智能

    的神经网络模型。 · 在 MCU 上运行机器学习推理可实现唤醒词检测、手势识别和预测性维护等高级功能。 利用
    的头像 发表于 03-25 09:22 264次阅读
    边缘 AI <b class='flag-5'>加速</b>的 Arm® Cortex®‑M0+ <b class='flag-5'>MCU</b> 如何为电子产品注入更强智能

    如何正确配置AG32 MCU实现FLASH或者代码加密?

    的SDK资料:海振远科技为客户提供丰富的开发资料和多款开发板可以选择,方便用户快速上手设计。 2、开发板资源: 二、如何正确配置AG32 MCU实现FLASH或者代码加密 AG32MCU的加密
    发表于 01-22 15:01

    PSoC™ Edge E84 评估套件:开启下一代机器学习边缘设备设计之旅

    PSoC™ Edge E84 评估套件:开启下一代机器学习边缘设备设计之旅 在电子工程师不断追求创新与高效的今天,一款优秀的评估套件能够极大地加速产品的设计与开发进程。英飞凌的 PSoC™ Edge
    的头像 发表于 12-18 14:40 751次阅读

    Solist‑AI™:让 MCU 拥有“现场学习能力”的边缘智能方案

    成本高、延迟大、隐私敏感 传统 MCU 无法自适应,只能靠规则硬编码 ROHM 推出的 Solist‑AI™ MCU 正是为了解决这些工程痛点。 它能在设备本地完成学习、推理、监测,全程无需网络。 二、Solist‑AI™ 的
    的头像 发表于 12-12 14:36 1692次阅读
    Solist‑AI™:让 <b class='flag-5'>MCU</b> 拥有“现场<b class='flag-5'>学习</b>能力”的边缘智能方案

    MCU软件核心库及示例代码速览 !

    加速嵌入式项目开发,本文对MCU软件核心库进行整体速览,涵盖初始化、外设控制与中断处理等关键部分,并结合简洁示例代码,帮助开发者快速理解与应用库功能。 一、MCU核心库函数功能 MCU
    的头像 发表于 12-11 17:19 835次阅读
    <b class='flag-5'>MCU</b>软件核心库及示例代码速览 !

    贸泽开售ROHM Semiconductor ML63Q25x AI MCU 助力实现更高效可靠的自动化、机器人及智能应用

    的ML63Q25x系列AI微控制器 (MCU)。这些先进的MCU专为工业自动化、仪器仪表、机器人、消费电子和智能家居系统而设计,可实现实时、独立于网络的AI监控和预测性维护。 ML63
    的头像 发表于 12-09 14:47 1050次阅读
    贸泽开售ROHM Semiconductor ML63Q25x AI <b class='flag-5'>MCU</b> 助力<b class='flag-5'>实现</b>更高效可靠的自动化、<b class='flag-5'>机器</b>人及智能应用

    工业级-专业液晶图形显示加速器RA8889ML3N简介+显示方案选型参考表

    控制等高级显示功能,通过硬件加速(如Alpha混合)来执行这些操作,避免了由MCU软件处理带来的性能开销。核心特性: 主控端接口:支持8080/6800异步并行接口和IIC、3/4-wire SPI串行
    发表于 11-14 16:03

    RSA加速实现思路

    1 关于RSA算法 RSA为非对称加密算法(也称为公开密钥算法),是当前比较普遍使用的非对称加密算法之一,常用于密钥交换和数字签名。RSA是一种较为高级、可基于硬件和软件实现的加密算法,安全性能高
    发表于 10-28 07:28

    借助高度集成的实时控制MCU实现更平稳、更静音的电机性能

    在统一的处理环境中实现高级电机控制技术,例如无传感器磁场定向控制 (FOC) 或振动补偿,有助于显著减少协调工作量,减少时序变化并实现更可预测的行为。从软件角度来看,TI的 F28E120SC 等高
    的头像 发表于 10-21 08:17 9582次阅读
    借助高度集成的实时控制<b class='flag-5'>MCU</b><b class='flag-5'>实现</b>更平稳、更静音的电机性能

    普迪飞制造业高级洞察解决方案(AIM):以机器学习(ML)重构生产效能,解锁工业 4.0 落地新路径

    据基础设施与机器学习技术,推出制造业高级洞察方案(AIM),为企业量身定制智能化解决方案,助力其在高产量生产环境中实现效率跃升、成本优化与质量升级。图片来源:普迪飞官网数
    的头像 发表于 08-19 13:46 1788次阅读
    普迪飞制造业<b class='flag-5'>高级</b>洞察解决方案(AIM):以<b class='flag-5'>机器</b><b class='flag-5'>学习</b>(ML)重构生产效能,解锁工业 4.0 落地新路径

    FPGA在机器学习中的具体应用

    随着机器学习和人工智能技术的迅猛发展,传统的中央处理单元(CPU)和图形处理单元(GPU)已经无法满足高效处理大规模数据和复杂模型的需求。FPGA(现场可编程门阵列)作为一种灵活且高效的硬件加速平台
    的头像 发表于 07-16 15:34 3079次阅读

    极海半导体G32R501:面向具身机器人的高性能、高安全实时控制MCU/DSP

    要求。     今天,在第十五届松山湖中国IC创新高峰论坛中,珠海极海半导体有限公司实时控制MCU/DSP产品线高级产品经理卢鹏升带来了面向具身机器人的高性能、高安全实时控制MCU/D
    发表于 05-13 12:12 1660次阅读
    极海半导体G32R501:面向具身<b class='flag-5'>机器</b>人的高性能、高安全实时控制<b class='flag-5'>MCU</b>/DSP

    48V电气系统如何实现ADAS的高级功能

    随着对先进、高耗电量的系统的需求日益增长,电气化进程不断加速,汽车行业正处于一个十字路口。现代汽车面临着关键挑战,即满足不断增长的电力需求,特别是高级驾驶辅助系统(ADAS)等关键技术的需求。
    的头像 发表于 05-06 10:08 961次阅读

    【「# ROS 2智能机器人开发实践」阅读体验】视觉实现的基础算法的应用

    视觉巡线,展示了如何从数据采集、模型训练到机器人部署的完整流程。 值得注意的是,深度学习模型的实时性对机器人计算资源提出了较高要求,优化模型(如TensorRT加速)是实际部署的关键。
    发表于 05-03 19:41

    18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现

    本来转自:DeepHubIMBA本文系统讲解从基本强化学习方法到高级技术(如PPO、A3C、PlaNet等)的实现原理与编码过程,旨在通过理论结合代码的方式,构建对强化学习算法的全面理
    的头像 发表于 04-23 13:22 1768次阅读
    18个常用的强化<b class='flag-5'>学习</b>算法整理:从基础方法到<b class='flag-5'>高级</b>模型的理论技术与代码<b class='flag-5'>实现</b>