嵌入式工程师如何实现Edge AI应用?

更新时间: 2024-05-23 09:48:48来源: 粤嵌教育浏览量:159

从监控和访问控制到智能工厂和预测性维护,围绕机器学习(ML)模型构建的人工智能(AI)的部署正在工业物联网边缘处理应用中变得无处不在。随着这种无处不在,人工智能解决方案的构建已经变得民主化”——从数据科学家的专业学科转变为嵌入式系统设计师应该理解的学科。

 

这种民主化的挑战是,设计者不一定能够很好地定义要解决的问题,并最恰当地捕捉和组织数据。与消费者解决方案不同,工业人工智能实施的数据集很少,这意味着它们通常必须从用户的数据中从头开始创建。

 

融入主流

人工智能已经成为主流,深度学习和机器学习(分别是DLML)是我们现在认为理所当然的许多应用的背后,例如自然语言处理、计算机视觉、预测性维护和数据挖掘。早期的AI实现是基于云或服务器的,在AI/ML应用和边缘(端点)之间需要巨大的处理能力、存储和高带宽。虽然ChatGPTDALL-EBard等生成式人工智能应用程序仍然需要这种设置,但近年来已经出现了边缘处理人工智能,即在捕捉点实时处理数据。

 

边缘处理极大地减少了对云的依赖,使整个系统/应用更快,需要更少的电力,成本更低。许多人也认为安全性得到了提高,但更准确的说法是,主要的安全焦点从保护云和端点之间的动态通信转移到使边缘设备更加安全。

 

边缘的AI/ML可以在传统的嵌入式系统上实现,设计者可以使用强大的微处理器、图形处理单元和大量的存储设备;类似于个人电脑的资源。然而,对物联网设备(商业和工业)在边缘采用AI/ML的需求越来越多,它们通常具有有限的硬件资源,并且在许多情况下是电池供电的。

AI/ML在资源和功率受限的硬件上运行的潜力产生了术语TinyML。例如,工业(例如,预测性维护)、建筑自动化(环境监控)、建筑(监督人员安全)和安全。

 

数据流

AI(及其子集ML)需要一个从数据捕获/收集到模型部署的工作流(1)。就TinyML而言,由于嵌入式系统内的资源有限,优化整个工作流是必不可少的。

例如,TinyML的资源要求是1400 MHz的处理速度、2512 KBRAM32 KB2 MB的存储空间(闪存)。此外,在150 W23.5 mW的功率下,在如此小的功率预算内运行通常具有挑战性。

 

在将人工智能嵌入资源有限的嵌入式系统时,还有一个更大的考虑因素,或者说是权衡。模型对系统行为至关重要,但设计者经常在模型质量/准确性之间做出妥协,这会影响系统的可靠性/可信性和性能;主要是运行速度和功率消耗。

另一个关键因素是决定采用哪种类型的人工智能/人工智能。一般来说,可以使用三种类型的算法:监督式、非监督式和强化式。

创建可行的解决方案

即使是非常了解AIML的设计师也可能难以优化AI/ML工作流程的每个阶段,并在模型准确性和系统性能之间取得完美平衡。那么,以前没有经验的嵌入式设计师如何应对这些挑战呢?

 

首先,不要忽视这样一个事实:如果模型很小,人工智能任务仅限于解决一个简单的问题,部署在资源有限的物联网设备上的模型将是高效的。

幸运的是,ML(尤其是TinyML)进入嵌入式系统领域带来了新的(或增强的)集成开发环境(ide)、软件工具、架构和模型——其中许多是开源的。例如,用于微控制器的tensor flow LiteTF Lite Micro)是一个用于MLAI的免费开源软件库。它被设计用于在只有几KB内存的设备上实现ML。此外,程序可以用Python编写,Python也是开源和免费的。

 

至于ideMicrochipMPLAB X就是这样一个环境的例子。该IDE可与该公司的MPLAB ML一起使用,MPLAB ML是一种专门为构建优化的AI物联网传感器识别代码而开发的MPLAB X插件。由AutoML提供动力,MPLAB ML完全自动化AI ML工作流程的每个步骤,消除了重复、繁琐和耗时的模型构建需求。特征提取、训练、验证和测试确保优化模型满足微控制器和微处理器的内存限制,允许开发人员在基于Microchip Arm Cortex32MCUMPU上快速创建和部署ML解决方案。

 

优化工作流程

从现成的数据集和模型开始,可以简化工作流优化任务。例如,如果支持ML的物联网设备需要图像识别,那么从已标记的静态图像和视频剪辑的现有数据集开始进行模型训练(测试和评估)是有意义的;注意有监督的ML算法需要标记数据。

 

许多图像数据集已经存在于计算机视觉应用中。然而,由于它们旨在用于基于PC、服务器或云的应用程序,因此它们往往很大。例如,ImageNet包含超过1400万张带注释的图像。

根据ML应用程序,可能只需要几个子集;说许多人的图像,但只有一些无生命的物体。例如,如果在建筑工地上使用支持ML的摄像机,如果没有戴安全帽的人进入其视野,它们可以立即发出警报。ML模型将需要训练,但可能只使用一些戴或不戴安全帽的人的图像。但是,帽子类型可能需要更大的数据集,并且数据集中的范围要足够大,以便考虑各种因素,例如不同的光照条件。

 

有了正确的实时(数据)输入和数据集,准备数据和训练模型说明了图1中的步骤13。模型优化(步骤4)通常是一种压缩,这有助于减少内存需求(处理过程中的RAM和存储的NVM)和处理延迟。

关于处理,许多人工智能算法,如卷积神经网络(CNN),与复杂的模型进行斗争。一种流行的压缩技术是剪枝(见图2),有四种类型:权重剪枝、单元/神经元剪枝和迭代剪枝。

 

量化是另一种流行的压缩技术。此过程将高精度格式(如浮点32(FP32))的数据转换为低精度格式(8位整数(INT8))。量化模型的使用(见图3)可以以两种方式之一纳入机器训练。

训练后量化包括使用FP32格式的模型,当训练完成时,量化部署。例如,标准TensorFlow可用于PC上的初始模型训练和优化。然后,该模型可以量化,并通过TensorFlow Lite嵌入到物联网设备中。

量化感知训练模拟推理时间量化,创建模型下游工具将用于产生量化模型。

 

虽然量化很有用,但不应过度使用,因为它类似于通过用更少的位或使用更少的像素来表示颜色来压缩数字图像。

摘要

人工智能现在已经完全进入了嵌入式系统领域。然而,这种民主化意味着以前不需要理解人工智能和ML的设计工程师面临着在他们的设计中实现基于人工智能的解决方案的挑战。

虽然创建ML应用程序的挑战令人望而生畏,但这并不新鲜,至少对于经验丰富的嵌入式系统设计师来说是这样。好消息是,在工程社区、ide(MPLAB X)、模型构建器(MPLAB ML)以及开源数据集和模型中可以获得大量信息(和培训)。这一生态系统有助于工程师从不同层面理解速度ALML解决方案,这些解决方案现在可以在16位甚至8位微控制器上实施。

免费预约试听课