历史上的今天

今天是:2024年11月18日(星期一)

2020年11月18日 | MIT开发出轻量级MCU神经网络系统MCUNet

发布者:EEWorld资讯 来源: EEWORLD关键字:MCU  机器学习  神经网络 手机看文章 扫描二维码
随时随地手机看文章

根据MIT报道:


深度学习无处不在。人工智能的这一分支可以管理你的社交媒体并为谷歌搜索结果提供最准确的服务。很快,深度学习还可以检查你的生命体征或设置你的恒温器。麻省理工学院的研究人员开发了一种系统,可以将深度学习的神经网络带到新的、小得多的地方,比如可穿戴医疗设备、家用电器中的微型计算机芯片,以及构成“物联网”(IoT)的2500亿个物体。


这个名为MCUNet的系统设计了紧凑的神经网络,尽管内存和处理能力有限,但它为物联网设备上的深度学习提供了前所未有的速度和精度。这项技术可以促进物联网领域的扩展,同时节约能源和提高数据安全性。


这项研究将在下个月的神经信息处理系统会议(Conference on Neural Information Processing Systems)上发表。本文的主要作者是Lin Ji,他是麻省理工学院电子工程和计算机科学系韩松实验室的博士生。合著者包括麻省理工学院的韩松和Lin Yu Jun,麻省理工学院和台湾国立大学的Chen Wei Ming,以及麻省理工-IBM沃森人工智能实验室的John Cohn和Gan Chuang 。


物联网的发展


物联网诞生于20世纪80年代初,卡内基梅隆大学的研究生,Mike Kazar将一台可乐机连接到互联网上。这个小组的动机很简单:懒惰。他们想先用电脑确认机器是否有存货,然后再从办公室前去购买——它是世界上第一台联网的物联网设备。现在是微软工程师的Kazar说:“这在很大程度上被看作是一个笑话的笑料,没人料到如今互联网上会有几十亿台设备。”


自从那台可乐机以来,日常用品已经越来越多地进入物联网市场。这包括从可穿戴的心脏监护仪到智能冰箱——可以告诉你何时牛奶需要补充。物联网设备通常运行在微控制器上,微控制器是一种简单的计算机芯片,没有操作系统,最小的处理能力,内存不到普通智能手机的千分之一。因此,像深度学习这样的模式识别任务很难在物联网设备上进行本地运行。对于复杂的分析,物联网收集的数据通常被发送到云端,使其容易受到黑客攻击,并且容易受到网络延迟及速率的影响。


“我们如何将神经网络直接部署在这些微小的设备上?这是一个非常热门的新研究领域。”韩松说,“像谷歌和ARM这样的公司都在朝这个方向努力。”


围绕MCUNet一起,韩松团队共同设计了“微小深度学习”所需的两个组件——微控制器上神经网络的操作。其中一个组件是TinyEngine,它是一个类似于操作系统的、指导资源管理的推理引擎。TinyEngine被优化为运行特定的神经网络结构,它是由MCUNet的另一个组件TinyNAS选择的,TinyNAS是一种神经结构搜索算法。


系统算法协同设计


为微控制器设计一个深层网络并不容易。现有的神经网络结构搜索技术首先从一个预先定义的模板中提取大量可能的网络结构,然后逐步找到一个精度高、成本低的网络结构。虽然这个方法有效,但不是最有效的。Lin Ji说道:“它可以很好地工作在GPU或智能手机上,但是很难将这些技术直接应用到微型微控制器上,因为它们太小了。”


因此,开发了TinyNAS,一种神经结构搜索方法,可以创建自定义大小的网络。“我们有很多微控制器,它们具有不同的功率容量和不同的内存大小。”Lin Ji说“所以我们开发了算法TinyNAS来优化不同微控制器的搜索空间。”TinyNAS的定制特性意味着它可以生成紧凑的神经网络,在排除不必要的参数的情况下,为给定的微控制器提供最佳性能。“然后我们将最终、高效的模型交付给微控制器。”Lin Ji说。


为了运行这个微小的神经网络,微控制器还需要一个精简的推理机制。一个典型的推理机会为它很少运行的任务携带一些死板的指令。这些额外的代码对笔记本电脑或智能手机来说没有问题,但它很容易压倒微控制器。“它没有片外存储器,也没有磁盘,”韩说。“所有的东西放在一起只是一兆字节的闪存,所以我们必须非常小心地管理这么小的资源。”Cue TinyEngine。


研究人员与TinyNAS一起开发了他们的推理机。TinyEngine生成运行TinyNAS定制神经网络所需的基本代码。任何不用的代码都会被丢弃,这会减少编译时间。“我们只保留我们需要的,”韩松说。“自从我们开始设计神经网络,我们就知道我们需要什么。这就是系统算法协同设计的优势。”在小组对TinyEngine的测试中,编译后的二进制代码的大小相对Google和ARM的可比微控制器推理引擎缩小1.9到5倍。TinyEngine还包含减少运行时的创新,包括深度卷积,它将峰值内存使用量减少了近一半。在开发了TinyNAS和TinyEngine之后,韩松的团队对MCUNet进行了测试。


MCUNet的第一个挑战是图像分类。研究人员使用ImageNet数据库对带有标签的图像进行训练,然后测试其对新图像进行分类的能力。在他们测试的一个商业微控制器上,MCUNet成功地对70.7%的新颖图像进行了分类——之前最先进的神经网络和推理机组合的准确率仅为54%。“即使是1%的改进也被认为是显著的,所以这是微控制器人工智能的一个巨大飞跃。”Lin Ji说道。


研究小组在另外三个微控制器的ImageNet测试中发现了类似的结果。在速度和准确性上,MCUNet击败了竞争对手,即用户通过唤醒音(例如“Hey,Siri”)或简单地进入一个房间就可以与计算机进行交互。这些实验突出了MCUNet对多种应用的适应性。


“潜力巨大”


令人期待的测试结果给了韩松希望,它将成为微控制器的新行业标准。“它有巨大的潜力,”他说。


加州大学伯克利分校的计算机科学家Kurt Keutzer表示,这一进展“将深度神经网络设计的前沿领域进一步扩展到小型节能微控制器的计算领域。MCUNet可以为最简单的厨房设备带来智能计算机视觉功能,或者启用更智能的运动传感器。”


MCUNet还可以使物联网设备更加安全。“一个关键的优势是保护隐私,您不需要将数据传输到云端。”韩松说道。


本地分析数据可降低个人信息(包括个人健康数据)被盗的风险。韩松设想使用MCUNet的智能手表不仅可以感知用户的心跳、血压和氧气水平,还可以分析和帮助他们理解这些信息。MCUNet还可以为互联网接入受限的车辆和农村地区的物联网设备带来深度学习。


另外,MCUNet的计算能力很小,需求的功耗很小。“我们的最终目标是用更少的计算资源、更少的人力资源和更少的数据来实现高效、微型的人工智能,”韩松说。


附:


极术社区发布并分析了韩松等人的详细论文,如下所述:


640.jpg

标题&作者团队

【Happy导语】MIT韩松团队提出了一种适用于IoT设备的模型设计方案,它将NAS与Engine进行了协同设计,从而确保了模型可以更好的在微型处理器上运行,同时具有更高的精度。该文的研究成果将进一步加速IoT设备端的AI应用,这个方向具有非常大的市场前景,期待各位同学能在该领域取得更多的成果。

Paper: https://arxiv.org/abs/2007.10319

Abstract

基于单片机(Microcontroller Units, MCU)的微型IoT设备上的机器学习应用是非常有价值的,但同时也极具挑战:单片机的内存要比手机内存小的多(比如ARM Cortex-M7 MCU仅有320kb SRAM与1MB Flash存储)。

作者提出了MCUNet,一种高效网络架构搜索(TinyNAS)与轻量推理引擎(TinyEngine)联合设计的方案,它可以使得ImageNet级别的推理在微处理器上进行运行。TinyNAS采用了两阶段的网络架构索索,在第一阶段优化搜索空间以适配资源约束,在第二阶段进行网络架构搜索。TinyNAS可以在低搜索复杂度下自适应处理不同的约束问题(比如设备、延迟、功耗以及内存等),并与TinyEngine协同设计。TinyEngine是一种内存高效的推理库,它按照整体网络采用了内存机制设计,而非传统的layer模式,它可以降低2.7x的内存占用并加速1.7-3.3x的推理速度(相比TF-Lite Micro与CMSIS-NN)。

MCUNet是首个在现有微处理器产品上达到70%精度的模型(ImageNet数据),相比MobileNetV2与ResNet18,它的更低的SRAM(3.6x)和Flash占用(6.6x)。在视觉&语音唤醒任务上,MCUNet取得了SOTA精度,比MobileNetV2和ProxylessNAS快2.4-3.4x,同时具有更低的SRAM占用(2.2-2.6x)。该研究意味着:永远在线的IoT设备上微型机器学习时代已经到来了

Introduction

在我们的生活中,IoT设备已变得非常常见(据统计已达250B),并用于方方面面(比如智能制造、个性化医疗、农业生产、自助零售等等)。这种低成本、低功耗的微处理器也为微型机器学习的应用带来了新的机会,如能在这类设备上运行AI算法,那么我们可以在端上直接进行数据分析,进而扩大了AI的应用领域。

然而,微处理器具有非常有限的资源负载,尤其是SRAM和Flash,要比手机端或者GPU的资源小的多,这也使得深度学习在IoT设备上的部署具有挑战性。下图对比了GPU、手机端以及微处理器的资源信息,很明显在微处理器上运行ResNet50、MobileNetV2是不可行的。峰值内存占用远远超出微处理的最大内存,两者之间存在巨大的差距。

注:SRAM可以进行读写,约束了feature-map的大小;flash只可以进行读,约束了模型大小。

640-1.jpg

image-20200721135847687

不同于云端或者手机端设备,微处理器是一种“裸设备”,它不具有操作系统。所以需要同时进行网络架构与推理库的设计以更高效的管理有限的资源并是配合内存与存储负载。而现有的NAS或手工网络架构往往聚焦于GPU端或手机端,它们仅仅对FLOPs或者推理延迟进行优化,所得模型并不适合于微处理器。

该文提出了一种系统-模型联合设计的方案MCUNet,它可以在微处理器上处理ImageNet级别的任务。为解决微处理器上稀缺内存问题,作者联合优化TinyNAS与TinyEngine以降低内存占用。TinyNAS的设计基于这样的一个假设:a search space that can accommodate higher FLOPs under memory constraint can produce better model。为处理微处理器上非常紧张的资源约束,还需要设计一种内存高效的推理库以消除不必要的内存占用。TinyEngine的改进为:TinyEngine improves over the existing inference library with code generator-based compilation method to eliminate memory overhead。它可以降低2.7x的内存占用并提升22%推理速度。

Method

下图给出了作者所设计MCUNet联合设计方案与传统方案的对比示意图,相比传统方案,MCUNet可以更好的利用微处理器的资源。

640-2.jpg

image-20200721141427380

TinyNAS

TinyNAS是一种两阶段的NAS方法,它首先优化搜索空间以适配不同的资源约束,然后在优化空间上进行网络架构搜索。经由该优化空间,它可以显著的提升最终模型的精度。在搜索空间方面,作者对输入分辨率和网络宽度方面进行搜索。输入分辨率范围,网络宽度因子为。大概有108个可能的搜索空间配置,每个搜索空间配置包含个子网络。第一阶段的目的是寻找具有最高精度且可以满足资源约束的搜索空间。下图给出了不同配置搜索空间的FLOPs与CDF示意图。
640-3.jpg
image-20200721142019222

在完成搜索空间确认后,第二阶段的目的是进行网络架构的搜索。采用采用one-shotNAS技术进行网路架构搜索。关于one-shot NAS部分建议各位同学去看一下Face++的《Single Path One-Shot Neural Architecture Search with Uniform Sampling》一文。

TinyEngine

研究人员往往假设:不同的深度学习框架仅仅影响推理速度而不会影响模型精度。然而,对于TinyML而言,推理库的高效性不仅影响推理速度,同时还会影响搜索到的模型精度。一个好的推理框架可以更充分的利用MUC的有效资源,避免内存占用,从而允许更大的架构设计空间,而更大的架构设计空间也意味着更高精度模型。因此,作者将TinyNAS与TinyEngine进行协同设计,以获得内存高效的推理库。

640-4.jpg

image-20200721143314434

上图给出了TinyEngine与现有推理框架在不同维度的对比。现有的TF-Lite Micro与CMSIS-NN是解释型推理框架,它们易于跨平台部署,但同时需要额外的内存(在MCU上内存是最昂贵的资源)保存架构的元信息(比如网络架构参数);相反TinyEngine仅仅聚焦于MCU设备,采用code generator-based进行编译。它不仅避免了运行时解释耗时,同时释放了额外的内存占用,从而允许更大的模型。相比CMSIS-NN,TinyEngine可以降低2.7x内存占用,提升22%推理速度。

与此同时TinyEngine的库文件非常轻量,这使得其非常适合于MCU。不同于TF-Lite Micro需要准备所有的操作(比如conv、softmax)以支持跨模型推理;而TinyEngine仅仅需要编译必要的操作。下图给出了TF-Lite Micro、CMSIS-NN与TinyEngien的大小对比。

640-5.jpg

TinyEngine为不同层制作特定的核优化方案:loops tiling is based on the kernel size and available memory; inner loop unrolling is also specialized for different kernel size。同时,TinyEngine还进行了操作合并,比如Conv+PAd+BN+ReLU。上述优化方案可以为模型推理带来22%的加速。

Experiments

在实验方面,作者选用了ImageNet、Visual Wake Word以及Speech Command三个数据集。ImageNet代表了大尺度图像分类任务,VWW用于判别是否有人存在,而SC代表了主流的微处理器应用场景:语音唤醒。

在模型部署方面,作者采用int8线性量化后部署。MCU选型为STM32F746,它具有320kb SRAM与1MB Flash。直接上结果咯。Table2的结果很震撼哦,最优模型可达60.1%精度。

640-6.jpg
image-20200721150233522

640-7.jpg

image-20200721150253878

640-8.jpg

image-20200721150308615

640-9.jpg

image-20200721150453393

好了,全文到底结束。上面已经对该文的核心进行了简单的介绍。但美中不足的是:该文尚未开源。

Conclusion

作者提出了一种网络架构搜索与推理库协同设计方案MCUNet,它可以使得深度学习在微型硬件设备(IoT)上运行。所提方案在现有微处理器产品中取得前所未有了70.2%(ImageNet)的精度,同时具有更快的推理速度。该研究意味着:永远在线的IoT设备上微型机器学习时代已经到来了

关键字:MCU  机器学习  神经网络 引用地址:MIT开发出轻量级MCU神经网络系统MCUNet

上一篇:解析瑞萨新款MCU RA6M4三大特点
下一篇:最后一页

推荐阅读

  “警察叔叔,这个机器人好可爱啊,它叫什么名字?”“它叫安安警官,正在协助我们执勤。”广州海珠警方在广州塔景区启用的-2000警用机器人上岗执勤,不少市民群众前来围观。   这位名为“安安警官”的警用机器人高1.6米,重80公斤,白胖圆润,可爱呆萌,身上贴有“警察”“POLICE”等警方标识。   “安安警官”的投入使用,是广州海珠警方坚...
源代码及注释#define GLOBAL_CLK 1#include <stdlib.h>#include <string.h>#include "def.h"#include "option.h"#include "2440addr.h"#include "2440lib.h"#include "2440slib.h"#include "mmu.h"#include "memtest.h"#include "Mylib.h"#define LED1 (1 << (5 * 2))#define LED2 (1 << (6 * 2))#define LED3 (1 << (7 * 2...
据媒体报道,近日,比尔·盖茨投资的固态电池公司QuantumScape正通过并购肯辛顿资本,以SPAC(特殊目的收购公司)方式进行上市。据了解,QuantumScape将于2020年11月25日召开股东特别会议,以批准业务合并建议。如果业务合并方案获得批准,合并后公司的股票将在纽约证券交易所上市,股票代码为-QS。关于QuantumScapeQuantumScape是斯坦福大学前研究人员于...
据CNBC报道,英伟达近日正式发布了公司最新一季度的财报。财报显示,公司在刚过去的季度收入为71.0 亿美元,同比增长 50%。英伟达表示,预计截至 1 月的本季度财报将达到约 74 亿美元,高于分析师预期的 68.6 亿美元。在谈营收的时候,他们还披露了一些关于Arm收购的进展。正如我们此前报道,英伟达正在收购英国核心移动半导体技术供应商 Arm。针...

史海拾趣

问答坊 | AI 解惑

正弦波输入电流的开关电源

正弦波输入电流的开关电源       开关电源以其效率高,功率密度高而在电源领域中占主导地位,但传统的开关电源存在一个致命的弱点:功率因数低,一般为0.45~0.75,而且其无功分量基本上为高次谐波,其中三次谐波幅度约为 ...…

查看全部问答∨

求助 使用MC34063设计DC-DC变换器 急!!!

使用MC34063设计DC-DC变换器 参数要求如下; 1 交流输入15V 2 直流输出3~12V可调3   效率70%以上 4  输出纹波小于200mV 5 最大输出电流 500mA 且带过流保护。。 请把懂得的发上来,谢谢拉!!…

查看全部问答∨

有关DDS输出正弦信号功放的问题

AD9852的输出为可调的不足1V的电压,输出电流为5-20mA, 有什么办法能使电压升220V,又使正弦波不失真啊。。 高手们给些建议。。…

查看全部问答∨

谁知道有IM字节的EEPROM吗?

谁知道有IM字节的EEPROM吗?…

查看全部问答∨

zibee疑问

#define SET_MAIN_CLOCK_SOURCE(source) \\   do {                                  \\      &n ...…

查看全部问答∨

WinCE6.0下驱动程序中文件操作API有哪些?

大家好,第一次发帖。 最近在编写WinCE6.0下的驱动程序,想要在驱动程序中直接对文件进行操作,而不想在用户程序中读文件再用WriteFile或DeviceIOControl将数据传到驱动程序中,但没找到对应的API,求高手指导。谢谢了…

查看全部问答∨

Wince6.0下这样的窗体风格如何实现?

软件平台:wince6.0 硬件平台:UT-S3C6410开发板 我做了个控制音量的系统托盘程序,但是我向往窗口风格像XP下的那样,有立体的感觉 可是我的风格却只能这样,扁平的窗口 http://i3.6.cn/cvbnm/be/fb/90/8de0ce4c7163006c7feb4f5526a0ffc6.j ...…

查看全部问答∨

2440 camera 问题 急!!

请教2440的camera 驱动中Display_Cam_Image中用memcpy将P模式DMA buffer中拷到LCD 显示buffer中 memcpy((void *)(FRAMEBUF_BASE+ (240*pos_y + pos_x) + y*240*2),(void *)buffer_rgb,(QCIF_XSIZE)*2); 1,2参数都是物理地址--WHY??? 为什么 ...…

查看全部问答∨

tlp521-1的1脚和2脚间一定要加电阻吗?加多大?有什么作用?急!!!

tlp521-1的1脚和2脚间一定要加电阻吗?加多大?有什么作用?急!!!…

查看全部问答∨

终于研发成功

终于研发成功,cpu是s3c2410,64M   SDRAM,网口为cs8900 flash(k9f1208 64m)   实现了只用nand flash 就可以启动引导vxworks. 公司送bsp及全套开发文档 ,另可配公司的开发板 有意着QQ联系641328010 请注明 arm…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved