1月09,2020 工业

人工智能和ML在嵌入式系统中的实际应用

文章首次发表于Rtinsights.1/7/19

Gareth Noyes.

嵌入式开发通常是由于需要部署高度优化和高效的系统。

通过启用新的方法来解决复杂问题或威胁整个业务部门或作业类型的现状来扰乱业务。无论您是理解兴奋都是什么以及如何将其应用于您的市场,或者您努力了解如何利用该技术,对人工智能的一些基本了解,其潜在的应用必须是您的一部分战略规划过程。

尽管炒作,但要记住人工智能不是一个可以做任何事情的魔法技巧。这是一个工具,魔术师可以做一些技巧。获得兴趣的一个区域是人工智能如何应用于嵌入式系统,专注于如何在这些更受约束的环境中进行部署。

定义和基本原则

为了确定我们全部在同一页面上,让我们从一些关于不同技术的背景和他们的计算要求开始。

AI是一门计算机科学学科,看着计算机如何用于模仿人类智力。自20世纪黎明以来,AI已经存在,当艾伦这样的先驱,例如艾伦的先驱,计算机可以以类似的方式解决这些问题的可能性。

经典的计算机编程通过在代码中明确编码算法来解决问题,引导计算机执行逻辑来处理数据,并计算输出。相比之下,机器学习(ML)是一种人工智能方法,它试图在数据中找到模式,并基于数据进行有效学习。有许多方法可以实现这一点,包括预先标记数据(或不标记数据)、用于指导算法开发的强化学习、通过统计分析(或其他方法)提取特征,然后根据这个训练过的数据集对输入数据进行分类,以确定具有声明的置信度的输出。

深度学习(DL)是ML的子集,它使用多层神经网络来迭代地从大数据集中训练模型。曾经接受过培训,模型可以查看新数据集以对新数据进行推断。这种方法近来,最近的注意力已经应用于与图像处理和语音识别或金融资产建模一样多的问题。我们看到这种方法也对未来的关键基础设施和设备产生了重大影响。

ML/DL在嵌入式系统中的应用

由于创建准确模型所需的大数据集,以及培训模型所需的大量计算能力,通常在云或高性能计算环境中执行培训。相反,推断通常在靠近数据源的设备中应用。虽然分布式或边缘训练是一个非常兴趣的主题,但它不是今天大多数ML系统部署的方式。为了简单起见,让我们假设训练发生在云中,并且推断将在边缘或设备处发生。

正如我们所描述的那样,ML和DL是以数据为中心的学科。因此,创建和培训模型需要访问大数据集,以及为数据操作提供丰富的环境的工具和环境。使用框架和语言,以缓解数据的操纵,并实现复杂的数学库和统计分析。这些通常是Python等语言框架,然后构建了哪些ml框架。有许多这样的框架,但有些常见的框架包括Tensorflow,Caffe或Pytorch。

ML框架可用于模型开发和训练,也可用于使用边缘训练模型运行推理引擎。因此,一个简单的部署场景是在设备中部署一个像TensorFlow这样的框架。因为它们需要丰富的运行时环境(如Python),所以最适合Linux上的通用计算工作负载。由于需要在移动设备上运行ML,我们看到一些更轻量级的推理引擎(TensorFlow Lite, PyTorch mobile)开始开发,它们需要的资源更少,但它们还没有广泛使用,也不像它们的功能齐全的父辈那样成熟。

有些模型可以解释和运行,而不需要完整的ML框架。例如,OpenCV,一个包含深度/卷积神经网络(DNN/CNN)库的计算机视觉框架,可以从TensorFlow和其他框架读取模型。OpenCV和DNN库可以在许多不支持更复杂或功能齐全的ML框架的紧凑运行环境中使用,所以第二个部署选项是使用OpenCV这样的框架部署推理引擎。

ML是高度计算密集的,早期部署(如自主车辆)依赖于专业化的硬件加速器,如GPU,FPGA或专业的神经网络。由于这些加速器在SOC中变得更加普遍,我们可以预测看到高效的发动机来运行受约束设备中的DL模型。发生这种情况时,另一个部署选项将是编译培训的模型,以便在DNN加速器上进行优化部署。有些这样的工具已经存在,并且需要现代编译器框架,例如LLVM来定位模型前端和硬件加速器后端。

对嵌入式发展的影响

嵌入式开发通常是由于需要部署高度优化和高效的系统。经典的开发方法是从非常受限的硬件和软件环境开始,并仅根据需要添加能力。这是典型的RTOS应用领域。

随着技术的快速变化,我们看到开发方法从使复杂的系统工作开始,然后在稍后的阶段优化部署。就像软件领域的许多重大进步一样,开源社区是ML创新速度和规模的巨大驱动力。拥抱源于开源的工具和框架,通常从Linux开发开始,正迅速成为主要的创新路径。因此,同时使用实时操作系统(RTOS)和Linux,或者将开放源代码从Linux迁移到RTOS,都是必须支持的重要开发旅程。

无论一家公司是刚刚开始它的旅程,还是准备好部署优化的机器学习解决方案,他们都必须构建基础技术和丰富的开发环境,以抽象复杂性并启用异构运行时环境。

以前的化工行业的开放式过程自动化PoC
下一个介绍Starlingx 3.0与新的分布式云架构