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

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

3天内不再提示

恩智浦的 i.MX RT 跨界 MCU使传感器实现真正智能?

lhl545545 来源:NXP技术站 作者:NXP技术站 2020-09-28 10:05 次阅读

就在几年前,人们普遍认为,机器学习(ML)甚至深度学习(DL)只能通过由网关、边缘服务器或数据中心执行的边缘训练和推理,在高端硬件上完成。这种想法在当时不无道理,因为在云端和边缘之间分配计算资源的趋势尚处于早期发展阶段。但如今,得益于业界和学术界的艰苦研发和不懈努力,情况已然发生了翻天覆地的变化。

处理器不必提供每秒数万亿次操作(TOPS),也能执行机器学习(ML)。越来越多的用例证明,只要使用最新微控制器(部分带有嵌入式 ML 加速器),就能在边缘设备上开展机器学习。

只需极低的成本和极低的功耗,这些设备就能出色地完成 ML,仅在绝对必要时才连接到云。简而言之,内置 ML 加速器的微控制器代表着物联网发展的下一阶段:在生产数据的源头,例如麦克风、摄像头和监控其他环境条件的传感器中引入智能计算,并使物联网应用受益。

边缘有多深?

目前普遍认为边缘是物联网网络的最远点,但通常指先进的网关或边缘服务器。不过,这并不是边缘的尽头。真正的尽头是邻近用户的传感器。所以,合乎逻辑的做法是将尽可能多的分析能力安排在邻近用户的位置,而这也正是微处理器所擅长的。

不同宽度乘数下的多个 MobileNet V1 模型。图中可见,宽度乘数对参数的数量、计算结果和精度都有显著影响。但是,如果只是将宽度乘数从 1.0 改为 0.75,TOP-1 精度并无太大变化,参数的数量和算力需求却明显不同。

可以说,单板计算机也能用于边缘处理,因为它们具有出色的性能,其集群可媲美一台小型超级计算机。但问题是尺寸依然过大,而且对于大规模应用所需的成百上千次部署而言,成本过于高昂。它们还需要连接外部直流电源,在某些情况下可能超出可用范围;相比之下,MCU 的功耗只有几毫瓦,并且可以使用纽扣电池或一些太阳能电池来供电

毫无意外,用于在边缘执行 ML 的微控制器成为了十分热门的研发领域。甚至还有专有名称——TinyML。TinyML 的目标就是允许在资源受限的小型低功耗设备(尤其是微控制器),而不是在更大的平台或云端上执行模型推理,甚至最终能实现模型训练。这就需要缩小神经网络模型的尺寸,以容纳这些设备中相对较少的算力、存储空间和带宽资源,同时不会严重降低功能性和精度。

这些方案对资源进行了优化,使设备可以采集充足的传感器数据并发挥恰当作用,同时微调精度并降低资源要求。因此,虽然数据可能仍被发送到云端(或者可能是先发送到边缘网关,然后再发送到云端),但数量少得多,因为相当大一部分的分析已经完成。

现实中,一个十分常见的 TinyML 用例就是基于摄像头的对象检测系统,尽管能够捕获高分辨率图像,但由于存储空间有限,只能降低图像分辨率。可是,如果摄像头内置了数据分析功能,则只会捕获所需的对象而非整个场景,而且因为相关的图像区域更小,能保留高分辨率图像。这种功能通常只见于更大型、性能更强大的设备,但是 TinyML 技术使得微控制器也能实现。

小巧却不简单!

尽管 TinyML 还只是相对较新的一种范式,但已经表现出了不容小觑的推理能力(即便使用的是相对温和的微控制器)和训练(在性能更强大的微控制器上)成效,且精度损耗控制在最低限度。最近的示例包括:语音和面部识别、语音命令和自然语言处理,甚至同时运行多个复杂的视觉算法

实际说来,这意味着一台装载 500MHz Arm Cortex-M7 内核的微控制器,花费不超过 2 美元,内存容量从 28 Kb 到 128 KB 不等,却能提供强大的性能,使传感器实现真正智能。例如,恩智浦的 i.MX RT 跨界 MCU 就使用运行 TensorFlow Lite 运行时引擎的小型 ML 模型实现了此种性能。以基本对象识别为例,通常在 200ms 内即可完成,而且精度接近 95%。

即使在这个价格和性能水平上,这些微处理器配备了多个安全功能(包括 AES-128),并支持多个外部存储器类型、以太网USB 和 SPI,同时还包含或支持多种类型的传感器以及蓝牙Wi-Fi、SPDIF 和 I2C 音频接口。价格稍高一些的设备则是通常搭载 1GHz Arm Cortex-M7、400MHz Cortex-M4、2 Mbytes RAM 和图形加速。采用 3.3 VDC 电源供电时,功耗一般远低于单板计算机。

TOPS 有意义吗?

会使用单一指标来评判性能的不仅是消费者;设计者和市场营销部门也一直如此,因为作为一项主要规格,它可以轻松地区分设备。一个经典示例就是 CPU,多年来人们一直通过时钟速率来评判性能;幸运的是,现在的设计者和消费者已不再如此。只用一个指标评定 CPU 性能就像是按照发动机的峰值转速来评估汽车性能。尽管峰值转速有一定参考意义,但几乎无法体现发动机的强劲或汽车的驾驶性能,这些特性取决于许多其他因素。

遗憾的是,同样的尴尬也发生在以每秒数十亿次或上万亿次操作来界定的神经网络加速器(包括高性能 MPU 或微控制器中的加速器),原因一样,简单的数字好记。在实践中,单独的 GOPS 和 TOPS 只是相对无意义的指标,代表的是实验室而非实际操作环境中的一次测量结果(毫无疑问是最好的结果)。例如,TOPS 没有考虑内存带宽的限制、所需要的 CPU 开支、预处理和后处理以及其他因素。如果将所有这些和其他因素都一并考虑在内,例如在实际操作中应用于特定电路板时,系统级别的性能或许只能达到数据表上 TOPS 值的 50%或 60%。

所有这些数字都是硬件中的计算单元乘以对应的时钟速率所得到的数值,而不是需要运行时数据已经就绪的频率。如果数据一直即时可用,也不存在功耗问题和内存限制,并且算法能无缝映射到硬件,则这种统计方式更有参考价值。然而,现实中并没有这样理想的环境。

当应用于微控制器中的 ML 加速器时,该指标更没有价值。这些小型设备的 GOPS 值通常在 1-3 之间,但仍然能够提供许多 ML 应用中所需要的推理功能。这些设备也依赖专为低功耗 ML 应用而设计的 Arm Cortex 处理器。除了支持整数和浮点运算以及微控制器中的许多其他功能之外,TOPS 或其他任何单一指标明显无法充分定义性能,无论是单独使用还是在系统中都是如此。

边缘计算的未来

随着物联网领域进一步发展,在边缘执行尽可能多的处理,逐渐出现一种需求,即在直接位于或附着于传感器上的微控制器上执行推理。也就是说,微处理器中应用处理器和神经网络加速器的发展速度十分迅猛,更完善的解决方案也层出不穷。总体趋势是将更多以人工智能为中心的功能(例如神经网络处理)与应用处理器一起整合到微处理器中,同时避免功耗或尺寸显著增加。

如今,可以先在功能更强大的 CPU 或 GPU 上训练模型,然后在使用推理引擎(例如 TensorFlow Lite)的微控制器上实施,从而减小尺寸以满足微控制器的资源要求。可轻松扩展,以适应更高的 ML 要求。相信不久之后,推理和训练就能在这些设备上同时执行,让微控制器的竞争力直追更大、更昂贵的计算解决方案。
责任编辑:pj

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

    关注

    2526

    文章

    48092

    浏览量

    740016
  • 处理器
    +关注

    关注

    68

    文章

    18275

    浏览量

    222140
  • 加速器
    +关注

    关注

    2

    文章

    743

    浏览量

    36595
收藏 人收藏

    评论

    相关推荐

    I.MX RT1052代码执行在哪里?

    试用的开发板里有了I.MX RT1052 但是看I.MX RT1052有代码与数据的SPI Flash,还有SRAM,还有片上的TCM 代码可以执行在TCM上么?还是在SRAM上运行。
    发表于 11-09 06:49

    基于NXP i.MX RT117H智能人机界面方案

    基于NXP i.MX RT117H智能人机界面方案
    的头像 发表于 10-30 18:22 353次阅读
    基于NXP <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>117H<b class='flag-5'>智能</b>人机界面方案

    i.MX RT中FlexSPI外设不常用的读选通采样时钟源

    i.MX RT中FlexSPI外设不常用的读选通采样时钟源
    的头像 发表于 10-30 17:44 262次阅读
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>中FlexSPI外设不常用的读选通采样时钟源

    浅谈i.MX RT10xx系列MCU外接24MHz晶振的作用

    浅谈i.MX RT10xx系列MCU外接24MHz晶振的作用
    的头像 发表于 10-30 17:22 397次阅读
    浅谈<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>10xx系列<b class='flag-5'>MCU</b>外接24MHz晶振的作用

    i.MX RT1050上如何实现双大容量存储(MSC)设备

    i.MX RT1050上如何实现双大容量存储(MSC)设备
    的头像 发表于 10-30 17:08 332次阅读
    在<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1050上如何<b class='flag-5'>实现</b>双大容量存储(MSC)设备

    i.MX RT的FlexRAM配置问题

    i.MX RT的FlexRAM配置问题
    的头像 发表于 10-24 15:46 285次阅读
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>的FlexRAM配置问题

    基于NXP i.MX RT1021跨界MCU实现一个简单的波形采集

    基于NXP i.MX RT1021跨界MCU实现一个简单的波形采集,使用了RT1021设计了一个简单的核心板,然后使用信号发生器产生波形
    发表于 09-13 17:25 491次阅读
    基于NXP <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1021跨界<b class='flag-5'>MCU</b><b class='flag-5'>实现</b>一个简单的波形采集

    如何配置i.MX RT1064的RTS_B初始状态?

    我将 i.MX RT1064 引脚 B2 配置为 RTS_B,我注意到我无法配置此功能的初始状态。这个管脚在RS-485应用中是可以工作的,但是我发现在MCU复位后这个管脚的初始状态是高电平。在执行
    发表于 06-12 07:17

    i.MX评估板和开发板官方资源大全:一键获取,拿走不谢!

    恩智浦官网精彩导览 i.MX评估板和开发板 好马配好鞍,好的MPU/MCU应用开发,也少不了一块好用的开发板!想驾驭恩智浦的i.MX系列应用处理器以及i.MX
    的头像 发表于 05-19 11:00 490次阅读
    <b class='flag-5'>i.MX</b>评估板和开发板官方资源大全:一键获取,拿走不谢!

    i.MX RT10xx使用FlexIO实现XY2-100振镜控制协议

    本文介绍了如何使用i.MX RT系列芯片上的FlexIO实现XY2-100激光振镜控制协议。FlexIO模块是NXP Kinetis和i.MX RT
    的头像 发表于 05-18 09:21 3995次阅读
    在<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>10xx使用FlexIO<b class='flag-5'>实现</b>XY2-100振镜控制协议

    i.MX RT系列(例如 RT1050/1060)有多少个PWM通道?

    i.MX RT 系列(例如 RT1050/1060)有多少个 PWM 通道? 我可以像在 KV58 MCU(两个 flexPWM 模块)上做同样的事情吗?
    发表于 05-18 07:07

    i.MX RT1170自定义引导加载程序,如何在i.MX RT处理上完成?

    ))vt->reset)(); 跳之前是不是还有更多的步骤要注意? 2)与主应用程序相关,在我以前的引导加载程序中,我必须在跳转后再次设置中断向量表。这是如何在 i.MX RT 处理上完成的?
    发表于 05-17 08:13

    i.MX RT1170评估套件快速入门:这份保姆级教程,请收藏!

    恩智浦官网精彩导览 i.MX RT1170评估套件快速入门 i.MX RT1170 是恩智浦推出的首款主频超过1GHz的跨界MCU,结合了强
    的头像 发表于 05-12 11:55 1613次阅读
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1170评估套件快速入门:这份保姆级教程,请收藏!

    i.MX RT系列上是否有8个PWM通道可用?

    我使用 MKV58 通过 8 个 PWM 通道驱动 3 个 BLDC 和 1 个直流电机。 现在,我正在检查 i.MX RT 系列,只发现有 4 个 PWM 通道可供使用。 谁能告诉我 i.MX
    发表于 05-06 06:33

    如何使用sdphost的ROM引导加载程序中区分i.MX RT1062和i.MX RT 1064?

    有什么方法可以通过读取特定寄存来确定微控制类型,而不是系列或 UID?我想在使用 sdphost 的 ROM 引导加载程序中区分 i.MX RT1062 和
    发表于 04-27 08:37