物联网设备越来越多地采用人工智能技术来创建智能“物联网”(AIoT),这使很多应用从中受益。这些智能物联网设备从数据中学习,并在无需人工干预的情况下做出自主决策,从而使产品与其环境之间实现更合乎逻辑、更接近人类的交互。
AI和物联网的结合为MCU(微控制器)开辟了新的市场,赋能越来越多的新应用和新用例,以利用简单的 MCU搭配AI加速来促进智能控制。这些AI加持的MCU融合了DSP计算和机器学习(ML)推理能力,适合关键字识别、传感器融合、振动分析和语音识别等多种应用。更高性能的MCU还可以支持更复杂的视觉和成像应用,例如人脸识别、指纹分析和自主机器人等。
AI技术
以下是为物联网设备带来AI功能的部分使能技术:
机器学习 (ML):机器学习算法根据代表性数据构建模型,使设备能够在无需人工干预的情况下自动识别模式。ML供应商提供算法、API 和工具以构建训练模型,然后将模型植入到嵌入式系统中。输入新的数据后,这些嵌入式系统就可以利用预先训练的模型进行推理或预测,这类应用示例包括传感器融合、关键字识别、预测性维护和分类等。
深度学习(DL):深度学习是机器学习的一种,它使用多层神经网络从复杂的输入数据中逐步提取更高级别的特征和模式,从而训练系统。深度学习可以适应非常庞大、多样化和复杂的输入数据,并让系统不断迭代学习,逐步改善输出结果。其应用示例包括图像处理、客服机器人和人脸识别等。
自然语言处理 (NLP):NLP是人工智能的一个分支,可以实现系统与人类之间用自然语言进行交互。NLP帮助系统理解和解释人类语言(文本或语音),并基于此做出决策。其应用示例包括语音识别系统、机器翻译和预测性打字等。
计算机视觉:机器/计算机视觉是人工智能的一个领域,它训练机器收集、解释并理解图像数据,并根据这些数据采取行动。机器通过摄像头收集数字图像/视频,使用深度学习模型和图像分析工具准确识别和分类对象,并根据它们所“看到”的采取相应的行动。其应用示例包括制造装配线上的故障检测、医疗诊断、零售店的人脸识别和无人驾驶汽车测试等。
通过MCU实现AIoT
过去,AI属于MPU和GPU的应用范畴,它们拥有强大的CPU内核、大内存资源和进行AI分析的云连接。但近年来,随着边缘智能程度的不断提高,我们开始看到MCU被用于嵌入式AIoT应用中。向边缘转移是基于延迟和成本的考虑,同时还可以让计算处理更接近数据源。基于MCU的物联网设备具有AI功能可以实现实时决策和更快的事件响应,而且还有更多其它优势,诸如更低的带宽要求、更低的功耗、更低的延迟、更低的成本和更高的安全性。有了更高计算能力的新型MCU加持,再加上更适合资源受限MCU的瘦神经网络 (NN) 框架,AIoT得以实现。
神经网络是很多节点的集合,这些节点按层排列。每一层都接收来自前一层的输入,并根据输入的权重和偏置总和进行计算,以生成输出。输出沿其所有传出连接传递到下一层。在训练过程中,训练数据被馈入网络的第一层或输入层,每一层的输出再传递到下一层。最后一层或输出层生成模型的预测,将其与已知的预期值进行比较从而评估模型的误差。训练的过程需要在每次迭代中使用称为“反向传播”的过程完善步骤,或调整网络每一层的权重和偏置,直到网络输出与预期值密切相关。换句话说,网络从输入数据集中迭代“学习”,并逐步提高输出预测的准确性。
神经网络的训练需要极高的计算性能和内存,通常在云端进行。训练之后,这个预训练的神经网络(NN)模型被嵌入到MCU中,即可作为推理引擎对新传入数据进行处理。
图1: 神经网络的训练与推理
这种推理生成所需要的计算性能比训练模型要低很多,在MCU上即可实现。这种预训练的神经网络模型权重是固定的,可以保存在闪存中,从而减少所需的SRAM数量,使其适用于更多资源受限的MCU。
如何在MCU上实现AIoT?
MCU上的AIoT实现包含多个步骤。最常见的实现方法是使用现有的神经网络 (NN) 框架模型之一,例如Caffe或Tensorflow Lite,它们适用于基于MCU的终端设备解决方案。用于机器学习的NN模型训练可由AI专业人员使用 AI供应商提供的工具在云端完成。NN模型优化和MCU集成可以使用AI供应商和MCU制造商提供的工具进行。推理则在MCU上采用预训练的NN模型完成。
上述过程的第一步可以完全离线完成,涉及从终端设备或应用捕获大量数据,并用于训练NN模型。模型的拓扑结构由AI开发人员定义,以充分利用现有数据并提供应用要求的输出。NN模型的训练是通过将数据集迭代传递给模型来完成的,目的是不断最小化模型输出的误差。NN框架提供的工具可以帮助完成这个过程。
在第二步中,针对特定功能(如关键字识别或语音识别)进行了优化的预训练模型被转换为适应MCU的格式。在这个过程中,首先利用AI转换器工具将模型转换为flat buffer文件,也可以选择通过量化器来转换,以减小尺寸并针对MCU优化。然后,将该flat buffer文件转换为C代码,并作为运行时可执行文件传输给目标MCU。
配备了预训练嵌入式AI模型的MCU现在就可以部署在终端设备中了。当新数据导入时,它在模型中运行,并根据训练生成推理。当新的数据类别出现时,NN模型可以被发送回云端重新进行训练,然后可以通过OTA(空中更新)固件升级将重新训练后的新模型编入MCU。
构建基于MCU的AI解决方案有两种不同的方式。为便于讨论,本文我们假设目标MCU采用Arm Cortex-M内核。
图2:通过离线预训练模型在MCU上实现AI。
在第一种方法中,转换后的NN模型在Cortex-M CPU内核上执行,并通过CMSIS-NN库加速。这是一种简单的配置,无需任何额外的硬件加速,适用于较简单的AI应用,例如关键字识别、振动分析和传感器集合等。
另一种更复杂和更高性能的选择则需要在MCU上配置NN加速器或微神经处理单元(u-NPU)硬件。这些u-NPU 可在资源受限的IoT终端设备中加速机器学习,并且可能还支持压缩以降低模型的功耗和大小。所支持的运算可以完全执行大多数常见的NN网络,以用于音频处理、语音识别、图像分类和对象检测。u-NPU不支持的网络可以回退到主CPU内核,并由CMSIS-NN库加速。在这种方法中,NN模型是在uNPU上执行的。
在配置了MCU的设备中实现AI不只有这两种方法。随着MCU的性能不断推向更高的水平,逐渐接近MPU的预期水准,我们将会看到完全的AI功能直接构建在MCU上,而且具有轻量级的学习算法和推理功能。
边缘AI才是未来
在资源受限的MCU上实现AI将在未来呈指数级增长。随着MCU性能的不断提升,MCU和MPU之间的界限越来越模糊,同时出行越来越多适用于资源受限设备的“瘦”神经网络模型,新的应用和用例将不断浮现。
未来,随着MCU性能的提高,我们将会看到除推理之外的轻量级学习算法直接在MCU上实现。这将为MCU 制造商开辟新的市场与应用,并将成为其重要的投资领域。
(参考原文:How to implement AI of Things (AIoT) on MCUs)
本文为《电子工程专辑》2021年11月刊杂志文章,版权所有,禁止转载。点击申请免费杂志订阅
责编:Luffy Liu