在开始使用TinyML时,可能都有一个令人生畏的经历。随着时间的推移, (ML) 在基于边缘的工业应用中得到了发展和普及。从传统意义上来说,选择合适的神经网络模型、并对其进行训练和调整以进行部署,是一个非常复杂的过程。不过,随着专为TinyML应用而设计的 (AI)/ML资源的不断丰富,可以提供的帮助也越来越多。
图源: NicoElNino/Stock.adobe.com
作者:Mark Patrick,贸泽电子专稿
在本文中,我们将为大家介绍TensorFlow Lite、Edge Impulse和Fraunhofer AIfES在资源有限的上训练和部署AI模型时常用的方法。
部署边缘应用
在工业电机振动监测应用中,开发人员在设计时通常需要使用加速度计,收集数十个不同电机的振动传感器数据。每个电机都应处于不同的潜在故障阶段,这样开发人员才能收集到具有代表性的数据。同样,他们需要记录处于完美工作状态的电机数据,然后选择合适的算法。这些算法本质上是几行代码,可用于发现偏离完美运行状态的振动信号的构成规则。开发团队在不了解各个振动传感器数据之间关系和复杂性的情况下,训练算法根据传感器数据进行预测。因此,所创建的机器学习算法构成了一个系统模型,并可以预测电机运行状况。要强调的是,虽然ML模型是一种有益的资源,但其推理是基于训练数据的预测、估计和近似值,而不是精确的答案。
基于网络边缘的推理越来越受欢迎,原因有很多。首先,无需将数据回传至服务器进行推理, 没有延迟和带宽成本。同时,由于数据不会被传输或存储在云服务器上,因此不存在隐私问题。为这些边缘应用选择的微控制器通常功耗很小,甚至有些还能够长期使用电池工作,从而降低了安装复杂性。要知道,许多用于科学推理应用的高性能GPU需要消耗数百瓦的能量,在某些情况下可能达到500W, 而微控制器的典型功耗曲线则为毫瓦甚至微瓦级。
加速开发和部署的资源
随着在网络边缘推理概念的兴起,也出现了一些专门为低功耗微控制器设计的资源。
适用于微控制器的TensorFlow Lite
TensorFlow是成熟的ML资源之一。它是Google在2015年开发的一个端到端ML开源平台,可提供一个由工具、库和社区资源组成的全面、灵活生态系统。TensorFlow允许开发人员构建和部署各种ML应用,例如科学、医学和各种商业应用等。
适用于微控制器的TensorFlow Lite的开源代码库由Google于2017年推出,旨在满足人们对在只有数十KB内存的低功耗微控制器上进行推理的日益增长的需求。TensorFlow Lite的核心运行时二进制库仅占用18kB的Arm® Cortex®-M3处理器内存,并且可运行多种不同的基本神经网络模型。它不需要操作系统支持、C或C++库甚至是直接内存分配,可以在“裸机”上运行。其代码库用C++ 11编写而成,需要使用32位微控制器。
适用于微控制器的TensorFlow Lite使用的是TensorFlow训练环境中针对微控制器优化的转换模型。适用于微控制器的TensorFlow Lite在Arm Cortex-M系列上得到了很好的支持和广泛测试,并可移植到其他MCU架构,例如基于Tensilica的Espressif ESP32系列和Synopsys ARC处理器内核系列。
除了适用于微控制器的TensorFlow Lite,还有一组可用于Android、iOS和Linux嵌入式单板计算机(如Raspberry Pi和Coral Edge TPU)的TensorFlow Lite优化代码库资源。
下面列出了适用于微控制器的TensorFlow Lite的工作流程(来源:tensorflow.org):
训练模型:
生成适合目标设备并包含支持操作的小型TensorFlow模型。
使用TensorFlow Lite转换器转换为TensorFlow Lite模型。
使用标准工具转换为C语言字节数组,以将其存储在设备上的只读程序内存中。
使用C++库进行推断并处理结果。
Edge Impulse
Edge Impulse为嵌入式微控制器设备提供了一个完整的机器学习培训到部署平台(图1)。Edge Impulse预计将用于全球20,000多个项目,其目标是在最短的时间内让嵌入式ML项目投入到生产,并将部署时间从几年缩短到几周。其重点是使用配备各种传感器的嵌入式设备,包括音频和视觉设备,并进行大规模部署。目标设备包括从资源受限的低功耗微控制器到功能更强大的微处理器和CPU,所支持的模型类型包括TensorFlow和Keras。
图1: Edge Impulse — 用于微控制器机器学习开发的完整综合平台 (图源:Edge Impulse)
Edge Impulse的典型ML应用包括工业、物流和医疗保健应用,例如预测性维护、资产跟踪和监控以及人类和动物感测等。
Edge Impulse遵守Responsible AI Institute的行为准则,要求其用户签署一份许可,证明他们的应用不涉及犯罪、监视或国防用途。
图2说明了Edge Impulse的模型测试功能。此示例将STMicroelectronics MCU与数字麦克风相结合,目的是识别两个单词,即house和zero。模型测试输出显示了这两个单词、背景噪声和其他未分类单词的可能概率百分比。
图2: Edge Impulse的模型测试功能 (图源:Edge Impulse)
Fraunhofer AIfES
德国研究机构Fraunhofer开发了一款用C语言编写的人工智能嵌入式系统 (AIfES) 框架,具有独立于平台的库。AIfES为开源架构,并遵守GNU通用公共许可 (GPL) 协议。它使用标准库GNU GCC,因而可显著简化系统实施,并且几乎可以在任何硬件设备上运行,包括从8位微控制器到功能更强大的智能手机处理器和台式计算机CPU等。 此外,还为基于Arduino平台进行设计的创新人员提供了合适的AIfES库。
AIfES可免费用于个人项目,而对于商业应用则需要许可协议。
图3展示了AIfES库在各种平台类型上的功能和兼容性。Fraunhofer AIfES库与TensorFlow、Keras和PyTorch等流行的Python ML框架兼容,在流程上也类似。
图3:The Fraunhofer嵌入式系统 (AIfES) 库功能 (图源:Fraunhofer Institute for Microelectronic Circuits and Systems)
TinyML实施的后续步骤
在本文中,我们重点介绍了适合快速开发和部署基于网络边缘TinyML应用的三个库和平台。开发用于边缘部署的嵌入式ML IIoT应用可能是一项艰巨的任务。然而,这些资源和工作流程能够极大地简化神经网络的复杂性,也减少了对深入理解数据科学原理的需求。
我们还需要了解文中所述开发资源支持的各种微控制器平台和评估套件。这样,我们就可以借助较少的其他组件、一块简单的低功耗评估板、一个传感器和上述资源,在不到一个小时的时间内制作出一个TinyML演示项目。
作者简介
Mark于2014年7月加入了贸泽电子,此前他曾在RS Components担任高级营销职务。在加入RS之前,Mark在Texas Instruments担任了8年的应用支持和技术销售职位,并获得了考文垂大学的电子工程一级荣誉学位。