快速高效地实施网络边缘机器学习

机器学习正在从云端转移到网络边缘,目的是进行实时处理、降低延迟、提高安全性、更高效地使用可用带宽以及降低整体功耗。而处于这些边缘节点上的物联网 (IoT) 设备只有有限的资源,因此开发人员需要弄清如何有效地添加这一全新的智能水平。
在边缘位置基于微控制器系统使用机器学习,为开发人员提供了几项新机会,可以彻底改变他们设计系统的方式。开发人员可以使用几种不同的架构和技术将智能添加到边缘节点。学习完本文后,我们将更加熟悉这些架构以及一些可用于加快该过程的技术。

边缘机器学习的作用

边缘机器学习对嵌入式系统工程师非常有用,原因有很多。首先,智能系统可以解决开发人员通常难以通过编码解决的问题。以简单的文本识别为例。识别文本是编程的噩梦,但如果使用机器学习,那么几乎就像用 C 语言编写“Hello World”应用程序一样简单。
其次,智能系统可以很轻松地针对新数据和情况进行扩展。例如,如果某个系统接受了识别基本文本的训练,然后突然采用新字体提供文本,这时并不需要推倒重来。相反,只需提供额外的训练图像,使该网络也能学习识别新字体便可。
最后,我们还可以了解到,边缘机器学习可以帮助开发人员降低某些应用类型的成本,例如:
  • 图像识别
  • 语音和音频处理
  • 语言处理
  • 机器人
第一次检查边缘机器学习时,使用应用处理器似乎是个不错的选择。包括 OpenCV 在内的几种开源工具专为计算机视觉而设计,我们可以从使用这些工具开始。不过,许多应用中仅使用应用处理器可能还不够,因为这些处理器不具备确定性的实时行为。

边缘机器学习架构

使用边缘机器学习时,有三种典型方法:
  1. 边缘节点获取数据,然后在云端完成机器学习
  2. 边缘节点获取数据,然后在芯片上完成机器学习
  3. 边缘节点获取数据,然后在边缘进行第一遍机器学习,最后在云端进行更深入的分析
前两个解决方案是目前业界探索最多的解决方案,在本文中,我们将会重点关注这两个解决方案。
使用边缘设备获取数据并使用基于云的机器学习系统来处理数据,这样的架构有几个优点。首先,边缘设备不需要运行机器学习算法所需的强大处理能力和资源。其次,边缘设备可以继续使用资源受限的低成本设备,就像许多嵌入式系统开发人员习惯创建的系统一样。唯一的区别是,边缘设备需要能够通过 HTTPS 连接到基于云的服务提供商,以便分析它们的数据。第三,基于云的机器学习正在以惊人的速度发展,将这些功能转移到片载解决方案将非常困难、耗时且成本高昂。
对于希望从基于云的机器学习开始的开发人员来说,他们可以使用 STMicroelectronics 公司的 STM32F779I-EVAL 板(图 1)这类开发板。该开发板基于 STMicroelectronics 公司的 STM32F769NIH6 微控制器,配备了 Arm® Cortex®-M7 内核、板载摄像头、用于与云进行高速通信的以太网端口,以及板载显示器。该开发板可与诸如 Express Logic 公司的 X-Ware IoT 平台等软件配合使用,轻松连接到任何机器学习云提供商,如 Amazon Web Services (AWS)、Microsoft Azure 和 Google Cloud。
STMicroelectronics 的 STM32F779I-EVAL 板图片
图 1:STM32F779I-EVAL 板基于 Arm Cortex-M7 处理器,包含了进行片载或云端深度学习所需的一切资源。(图片来源:STMicroelectronics)
在云端进行机器学习对于开发团队来说可能意义非常重大,但有几个原因可以解释为什么机器学习开始从云端转向边缘。虽然这些原因具有很强的应用针对性,但确实也包括了一些重要因素,例如:
  • 实时处理需求
  • 带宽限制
  • 延迟
  • 安全要求
如果某个应用存在这方面的问题,那么将神经网络从云端转移到边缘是可以行得通的。这种情况下,开发人员必须对他们希望嵌入式处理器负责处理的内容做到心里有数,以便应用能够尽可能高效地执行。

选择用于机器学习的处理器

在嵌入式处理器上运行机器学习需要考虑几个重要因素。首先,处理器必须能够高效地执行 DSP 指令,因此浮点运算单元 (FPU) 非常有用。其次,需要具备可以在处理器上运行的机器学习库。学习库需要包括卷积、池化和激活。如果没有这些学习库,开发人员基本上需要从头开始编写深度学习算法,不但费时,而且成本高昂。
最后,开发人员需要确保微控制器上具有足够的 CPU 周期,以便可以完成神经网络执行以及分配给处理器的任何其他任务。
Arm Cortex-M 处理器现在配有 CMSIS-NN 扩展,这是一个神经网络库,其设计目的是在资源受限的环境中可以在微控制器上高效地运行机器学习,这一特性使其成为基于边缘的智能系统的绝佳选择。确切的处理器选择将取决于手头的应用,因此详细了解几款不同的开发板及其最适合的应用非常重要。
首先介绍 SparkFun Electronics 公司的 OpenMV 机器视觉开发板(图 2)。该模块采用基于 Cortex-M7 的 STM32F765VI 处理器,运行频率 216 MHz,支持 512 KB RAM 和 2 MB 闪存。
SparkFun 公司的 OpenMV 开发板图片
图 2:SparkFun 的 OpenMV 开发板是一个机器视觉平台,该平台使用 Arm CMSIS-NN 框架在 Cortex-M 上高效运行机器学习算法。(图片来源:SparkFun Electronics)
OpenMV 模块可用于:
  • 通过帧差分检测运动
  • 颜色跟踪
  • 市场跟踪
  • 人脸检测
  • 眼动跟踪
  • 线条和形状检测
  • 模板匹配
由于该模块的软件基于 Arm CMSIS-NN 库,因此可以在处理器上尽可能高效地运行机器学习网络。
其次介绍 STM32F746ZG Nucleo 开发板,STMicroelectronics 公司基于 Arm Cortex-M7 的 STM32F746 处理器使用的就是这款开发板,运行频率为 216 MHz(图 3)。与 OpenMV 模块上的处理器相比,这款开发板上使用的处理器具有较少的内存和闪存,分别为 320 KB 和 1 MB。Arm 在许多机器学习白皮书中都使用了这款处理器,这些白皮书涵盖了诸如关键字识别之类的主题。
STMicroelectronics 的 STM32F746ZG Nucleo 开发板图片
图 3:STM32F746ZG Nucleo 开发板是一款低成本开发板,适用于那些刚开始使用机器学习,不需要附加各种“花哨”功能的开发人员。(图片来源:STMicroelectronics)
这款开发板更大程度上提供的是一种开放平台,适用于原型开发以及使用大量 I/O 和外设的系统。它包括一个以太网端口、USB OTG、三个 LED、两个用户和重置按钮以及用于 ST Zio(包括 Arduino Uno V3)和 ST Morpho 的扩展板连接器。
最后介绍 NXP Semiconductors 公司的 IMXRT1050-EVKB 开发板,该公司的 i.MX RT 1050 处理器使用的就是这款开发板,运行频率高达 600 MHz(图 4)。该处理器仍然基于 Cortex-M7 架构,但却拥有很强的机器学习算法执行能力。因此,这是一个很棒的通用平台,开发人员可以使用它来试验和调整他们对机器学习的理解。该处理器内含 512 kB 紧耦合内存 (TCM),并且能够使用外部 NOR、NAND 或 eMMC 闪存。
NXP 的 i.MX RT1050 图片
图 4:NXP 的 i.MX RT1050 基于 Arm Cortex-M7 架构,但同时还融合了 NXP 的 Cortex-A i.MX 系列处理器的最佳功能。RT1050 是一款高端处理器,能够提供出色的机器学习体验。(图片来源:NXP Semiconductors)

了解 CMSIS-NN 的作用

即使机器学习从云端转移到网络边缘,在微控制器上运行机器学习框架也不切实际,认识到这一点非常重要。微控制器可以运行框架的输出,即经过训练的网络,但仅此而已。Arm-NN 能够将在高端机器上运行的经过训练的模型转换为可在微控制器上运行的低级代码。为 Arm-NN 提供 API 的低级库即是 CMSIS-NN。
如前所述,CMSIS-NN 包含用于常见机器学习活动的 API 和库函数,例如:
  • 卷积
  • 池化
  • 激活
Arm-NN 转换经过训练的模型示意图
图 5:Arm-NN 利用 CMSIS-NN 库将高端机器上执行的经过训练的模型转换为可在 Cortex-M 处理器上运行的低级代码。(图片来源:Arm)

使用边缘机器学习的技巧和窍门

有很多技术可以帮助改进边缘机器学习。以下是一些技巧和窍门,可以帮助那些有兴趣架设和运行自己的机器学习系统的开发人员:
  • 如果不考虑延迟,可以使用边缘收集数据,并使用云端通过机器学习网络来处理数据
  • 将机器学习分流到云端时,除非您计划未来将机器学习转移到边缘设备,否则请不要过度选择边缘设备所需的处理能力
  • 当实时性能至关重要时,请使用高性能的 Arm Cortex-M7 处理器来执行边缘机器学习网络
  • 阅读 Ian Goodfellow、Yoshua Bengio、Aaron Courville 和 Francis Bach 编写的《深度学习》,了解机器学习背后的理论和数学知识
  • 从云端或 PC 开始,然后按照自己的方式达成嵌入式目标
  • 创建一个可以识别手写数字的“Hello World”应用程序
  • 查看关于关键字识别和语音识别的 Arm 论文
  • 购买开发套件并复制一个示例

结论

智能正在迅速从云端向边缘转移。从将机器学习完全分流到云端,到在边缘上运行经过训练的机器学习算法,目前有三种不同的方法可供开发人员选择。运行边缘机器学习需要具有高性能和 DSP 功能的微控制器。Arm Cortex-M7 处理器非常适合架设和运行边缘机器学习。

用户喜欢...

利用AI、云计算和机器学习保护濒危物种 西澳大利亚大学获微软资助

据zdnet报道,西澳大利亚大学(UWA)DNA动物园计划获得微软公司的资助,该项目旨在帮助保护100多万种濒临灭绝的动植物物种。 DNA动物园是一项全球性倡议,涉及8个国家的55多名合作伙伴。作为该...


人工智能和机器学习将如何为数据中心提供帮助

有些人认为,人工智能(AI)理解和解决问题时近乎具有神秘的力量。而人工智能广泛应用于人们日常生活的许多领域,因此,实现这一目标的硬件开始在数据中心中应用。 数据中心本身存在一系...


9个机器学习成功案例的内部视角

人工智能(AI)和机器学习(ML)曾经被认为是企业的空头支票之类的项目,如今已经成为应用主流。 越来越多的企业正在利用这种模仿人类思维行为的技术来吸引客户,并加强业务运营。 在调研机...


为什么物联网需要人工智能才能成功?为什么机器学习很重要?

物联网将产生海量数据这些数据可以帮助城市预测事故和犯罪;让医生实时了解起搏器或生物芯片的信息;通过对设备和机械进行预测性维护,实现跨行业的最佳生产效率;创建真正智能的家用电...


未来3-5年内哪个方向的机器学习人才紧缺?

基本简介 撇开学术界需求因为大部分人最终不会从事算法研究,而会奋斗在一线应用领域。相较而言,工业界对人才的需求更加保守。这受限于很多客观因素,如硬件运算能力、数据安全、算...


阿里巴巴实验:机器学习如何将生产率提高70%

机器学习和人工智能可以为仓库管理带来什么? 对于真正愿意接受技术新发展的行业,机器学习和人工智能可以是革命性的。它实际上意味着机器人能够承担通常分配给人类的任务。这种技术...


AI 圣经 PRML《模式识别与机器学习》官方开源了!

红色石头相信任何一个搞机器学习、深度学习的人都应该听说过一本经典教材:《Pattern Recognition and Machine Learning》,中文译名《模式识别与机器学习》,简称 PRML。出自微软剑桥研究院实验室...


Python 为基础的机器学习实战编程书籍:《机器学习实战》+ 源代码下载

给大家介绍一本以 Python 为基础的机器学习实战编程书籍:《机器学习实战》。 本书特色: 本书的目录如下: 本书第一部分主要介绍机器学习基础,以及如何利用算法进行分类,并逐步介绍了...


16 张机器学习速查表,值得收藏!

在机器学习、深度学习研究中,优秀的参考资料和手册往往能够助我们事半功倍!今天给大家推荐一个在 GitHub 上非常受欢迎的项目:cheatsheets-ai,涉及 AI 领域完整的速查表。目前,该项目已收...


中文版 火爆 GitHub 的《机器学习 100 天》

给大家介绍一个在 GitHub 上非常火的机器学习实战项目,叫做 100-Days-Of-ML-Code,中文名为《机器学习 100 天》。目前该项目已经收获了 1.7w stars 了。下面是项目地址: https://github.com/Avik-Jain/100-D...


吴恩达在斯坦福开设的机器学习课 CS229

,是很多人最初入门机器学习的课,历史悠久,而且仍然是最经典的机器学习课程之一。当时因为这门课太火爆,吴恩达不得不弄了个超大的网络课程来授课,结果一不小心从斯坦福火遍全球,...


2019 年最佳机器学习和深度学习书籍的名单

想入门深度学习吗?我尽了我最大的努力整理了这份知识清单。希望能够节省你的时间,对你有所帮助。 这里是 2019 年最佳机器学习和深度学习书籍的名单: 《深度学习》by Ian Goodfellow, Yoshu...


推荐一份绝佳的机器学习入门完备资料

机器学习、深度学习如何更好、更有效率地学习?不外乎两点:一是需要一份较完备的入门路线;二是教程与代码相结合提升学习效率。今天给大家推荐一份绝佳的机器学习入门完备资料,内容...


李宏毅上线了 2019 最新版的机器学习课程,授课语言为中文,且全部开放了课程视频

吴恩达、李飞飞、林轩田,他们的机器学习、深度学习公开课都干货满满,惠及很多学者。而另外一位大咖李宏毅,其语言幽默风趣、内容丰富,教授的机器学习公开课更让大家喜爱、受益良多...


IMU:通过机载机器学习让您的主人入睡

惯性测量单元(IMU)广泛用于从加速度计,陀螺仪和其他传感器提供稳定的多轴位置信息流。利用所有生成数据的多自由度(DOF),来自这些设备的合并数据流可以使系统处理器保持恒定的唤醒...


面向机器学习和通信的嵌入式FPGA优化

我回到了Burrous B 5500和IBM 360大型机,所以图表 (图1) 在里面 阿克罗瓦氏 包括vax-11/780的Speedcore第4代演讲吸引了我的眼球。该图突出了90年代业绩的加速增长和世纪之交后的平稳增长。我们现在正...