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

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

3天内不再提示

用一颗简单的MCU,让深度学习在网络边缘上跑起来

电子设计 来源:电子设计 作者:电子设计 2020-10-30 05:46 次阅读

就在几年前,人们普遍认为,机器学习(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 要求。相信不久之后,推理和训练就能在这些设备上同时执行,让微控制器的竞争力直追更大、更昂贵的计算解决方案。

审核编辑 黄昊宇

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

    关注

    146

    文章

    16943

    浏览量

    350090
  • 深度学习
    +关注

    关注

    73

    文章

    5485

    浏览量

    120935
收藏 人收藏

    评论

    相关推荐

    一颗射频开关的独白

    转载自——钟林谈芯 一颗射频开关成就卓胜微,便催生出一百个卓胜微梦。时代需要榜样,追梦人在路上。 卓胜微靠着一颗射频开关起死回生,靠着一颗射频开关成功上市。射频开关已经不只是代表射频前端芯片,代表
    的头像 发表于 11-14 16:22 91次阅读
    <b class='flag-5'>一颗</b>射频开关的独白

    TAS5711,一颗作2.0输出,一颗作PBTL输出,共用个I2S_DATA时发现失真增大,为什么?

    你们晚上好,请指导解决个问题: 问题描述: 两TAS5711,一颗设置为2.0输出:16W*2CH,一颗设置为PBTL输出:36W*1CH,共用
    发表于 10-25 15:59

    OPA197如果使用多阶,一颗跟随器提供基准电压是否可行?

    目前使用该芯片做滤波器性能,每阶使用一颗作为跟随,一颗来做滤波器。 Q1、如果使用多阶,一颗跟随器提供基准电压是否可行,自测过,觉得不
    发表于 08-16 15:08

    深度学习模型量化方法

    深度学习模型量化是种重要的模型轻量化技术,旨在通过减少网络参数的比特宽度来减小模型大小和加速推理过程,同时尽量保持模型性能。从而达到把模型部署到
    的头像 发表于 07-15 11:01 448次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b>模型量化方法

    简单认识深度神经网络

    深度神经网络(Deep Neural Networks, DNNs)作为机器学习领域中的种重要技术,特别是在深度
    的头像 发表于 07-10 18:23 912次阅读

    BLE MESH console跑起来,除了开发板、串口线、小灯还需要什么外设吗?

    BLE MESH console跑起来,除了开发板、串口线、小灯还需要什么外设吗?其次是输入命令行的窗口是不是执行idf build的窗口?最后就是能输入的命令行是否在ble_mesh_commands_README.md中,我尝试输入第
    发表于 06-21 15:27

    espidf5.0.0版本的LCD中的rgb_panel例程怎么跑起来

    想请问下 espidf5.0.0版本的LCD中的rgb_panel例程怎么跑起来,之前跑起来过几次,不过现在完全跑不起来了 报错代码中出现的错误均为例程中的源代码,且其头文件都是有包
    发表于 06-12 08:04

    利用深度循环神经网络对心电图降噪

    具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI 我们提出了种利用由长短期记忆 (LSTM) 单元构建的
    发表于 05-15 14:42

    推荐一颗简单易用、高性能的专门用于433/315Mhz的射频ICXL4456

    XL4456是一颗简单易用,高性能的专门用于433&315Mhz的射频IC,使用SOT23-6封装。
    的头像 发表于 05-10 11:45 621次阅读
    推荐<b class='flag-5'>一颗</b><b class='flag-5'>简单</b>易用、高性能的专门用于433/315Mhz的射频ICXL4456

    MotorControl Workbench生成的代码是开环的吗,为什么电机跑起来很容易受到外力导致停机?

    请问各位高手 MotorControl Workbench 生成的代码是开环的吗?为什么我的电机跑起来很容易受到外力导致停机,我想它不停机,请问有什么好的办法吗 ?
    发表于 03-21 07:12

    CYPD5125 TYPE-C作为Consumer的时候,CYPD5125里的程序为什么没有跑起来

    CYPD5125 TYPE-C作为Consumer的时候,外接设备是有5V输出的,当TYPE-C作为Provider的时候,此时VBUS为5V,VDDD也有3.3V左右,CYPD5125里的程序为什么没有跑起来
    发表于 02-28 08:05

    psoc63能否在不开启蓝牙的时候蓝牙不耗电?

    的情况下,功耗大概13mA,M4睡眠,M0唤醒的情况下待机功耗7mA。我在M0跑起来的时候我是没有开启蓝牙广播的。 我记得之前62的时候M0跑起来没有这么大的功耗。 好像也就2~3mA。我现在有个疑问,是不是在M0
    发表于 02-19 07:38

    详解深度学习、神经网络与卷积神经网络的应用

    在如今的网络时代,错综复杂的大数据和网络环境,传统信息处理理论、人工智能与人工神经网络都面临巨大的挑战。近些年,深度
    的头像 发表于 01-11 10:51 1869次阅读
    详解<b class='flag-5'>深度</b><b class='flag-5'>学习</b>、神经<b class='flag-5'>网络</b>与卷积神经<b class='flag-5'>网络</b>的应用

    一颗来自40年前的透明芯片究竟暗藏了哪些奥秘

    通过拆开老式计算机中损坏的接口芯片时发现一颗透明的芯片。虽然看上去十分魔幻,但该芯片并不是该公司的些未来光子超级计算芯片,而是一颗来自1977年的老式芯片。
    的头像 发表于 12-26 17:13 1233次阅读
    <b class='flag-5'>一颗</b>来自40年前的透明芯片究竟暗藏了哪些奥秘

    ADSP-BF706生成的ldr文件烧写进flash后,转到SPI MASTER启动代码没有跑起来是为什么?

    生成的ldr文件,烧写进flash后(确认烧进去了),转到SPI MASTER启动,代码没有跑起来。怀疑是init code的问题,使用的是CCES1.1里面自带的BF707的init code,请问BF706的需要改哪些东西?
    发表于 11-29 06:15