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
    +关注

    关注

    146

    文章

    16024

    浏览量

    343791
收藏 人收藏

    评论

    相关推荐

    英飞凌最新的带神经加速的汽车MCU系列 AURIX TC4x微控制器

    英飞凌在2024年嵌入式世界大会上宣布了其最新的带神经加速的汽车MCU系列。随着人工智能和机器学习模型在许多行业获得牵引力,用户开始质疑机器
    的头像 发表于 04-24 11:53 319次阅读
    英飞凌最新的带神经<b class='flag-5'>加速</b>的汽车<b class='flag-5'>MCU</b>系列 AURIX TC4x微控制器

    基于MCX微控制器的机器学习解决方案

    随着人工智能(AI)技术的发展,如何在MCU实现机器学习,创造更多边缘AI的新用例,一直是嵌入式开发社区的热点话题。
    的头像 发表于 01-05 09:18 524次阅读
    基于MCX微控制器的<b class='flag-5'>机器</b><b class='flag-5'>学习</b>解决方案

    EK-RA8D1 RENESAS高级 MCU套件

    电子发烧友网站提供《EK-RA8D1 RENESAS高级 MCU套件.pdf》资料免费下载
    发表于 12-21 10:14 0次下载
    EK-RA8D1 RENESAS<b class='flag-5'>高级</b> <b class='flag-5'>MCU</b>套件

    简单认识高级处理器

    除了传统的处理器 (CPU、MPU/MCU、DSP 和 GPU),面向当代各种应用的高级处理器(Advanced Processors)层出不穷,例如加速处理单元 (Accelerated
    的头像 发表于 12-07 11:31 557次阅读
    简单认识<b class='flag-5'>高级</b>处理器

    想在STM32 MCU上部署机器学习模型?这份入门教程,让你一学就会~

    想在STM32 MCU上部署机器学习模型?这份入门教程,让你一学就会~
    的头像 发表于 10-18 17:45 3273次阅读
    想在STM32 <b class='flag-5'>MCU</b>上部署<b class='flag-5'>机器</b><b class='flag-5'>学习</b>模型?这份入门教程,让你一学就会~

    STM32G0x1基于ARM内核的32位高级MCU

    电子发烧友网站提供《STM32G0x1基于ARM内核的32位高级MCU.pdf》资料免费下载
    发表于 09-20 10:34 0次下载
    STM32G0x1基于ARM内核的32位<b class='flag-5'>高级</b><b class='flag-5'>MCU</b>

    用赛灵思FPGA加速机器学习推断

    电子发烧友网站提供《用赛灵思FPGA加速机器学习推断.pdf》资料免费下载
    发表于 09-15 15:02 1次下载
    用赛灵思FPGA<b class='flag-5'>加速</b><b class='flag-5'>机器</b><b class='flag-5'>学习</b>推断

    Microchip 推出 MPLAB® 机器学习开发工具包,助力开发人员轻松将机器学习集成到 MCU 和 MPU中

    开发工具包,提供一套完整的集成工作流程来简化机器学习模型开发。这款软件工具包可用于Microchip的各类单片机 (MCU) 和微处理器 (MPU) 产品组合,助力开发人员快速高效地添加机器
    的头像 发表于 09-11 15:55 346次阅读

    机器学习发展历程

    机器学习发展历程:机器学习发展现状、机器学习发展前景和机器
    的头像 发表于 08-17 16:30 1228次阅读

    机器学习有哪些算法?机器学习分类算法有哪些?机器学习预判有哪些算法?

    机器学习有哪些算法?机器学习分类算法有哪些?机器学习预判有哪些算法?
    的头像 发表于 08-17 16:30 1417次阅读

    机器学习是什么意思?机器学习属于什么分支?机器学习有什么用处?

    机器学习是什么意思?机器学习属于什么分支?机器学习是什么有什么用处?
    的头像 发表于 08-17 16:30 1288次阅读

    机器学习算法入门 机器学习算法介绍 机器学习算法对比

    机器学习算法入门 机器学习算法介绍 机器学习算法对比 机器
    的头像 发表于 08-17 16:27 637次阅读

    机器学习和深度学习的区别

    机器学习和深度学习的区别 随着人工智能技术的不断发展,机器学习和深度学习已经成为大家熟知的两个术
    的头像 发表于 08-17 16:11 3419次阅读

    MCU机器人中的规范注意事项

    机器人对MCU有独特的需求。经过优化用于机器人的 MCU 通常包含多种功能,包括内置互联网协议 (IP) 连接、信息安全和功能安全保护以及高级
    的头像 发表于 07-24 14:10 321次阅读
    <b class='flag-5'>MCU</b>在<b class='flag-5'>机器</b>人中的规范注意事项

    如今MCU上“跑”机器学习,也很给力

    机器学习(ML)是解决涉及模式识别问题的一个非常好的工具,ML算法能将杂乱的原始数据转化为可用信号。其基本流程是基于数据产生模型,然后利用模型预测输出,从而实现无需人工交互即可完成学习
    的头像 发表于 05-19 09:55 1508次阅读
    如今<b class='flag-5'>MCU</b>上“跑”<b class='flag-5'>机器</b><b class='flag-5'>学习</b>,也很给力