AI和ML在嵌入式系统中的实际应用

技术设计 · 2020/07/17
← 返回技术文章

嵌入式开发通常由部署高度优化和高效系统的需求驱动。人工智能的定位是通过启用解决复杂问题的新方法或威胁整个业务部门或工作类型的现状来颠覆企业。无论您是否了解兴奋是什么以及它将如何应用于您的市场,还是您努力了解如何利用该技术,对人工智能及其潜在...

嵌入式开发通常由部署高度优化和高效系统的需求驱动。

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

另请参见。嵌入式分析增强应用体验,提高采用率

尽管炒作,但我们要清醒地记住,人工智能并不是一个可以做任何事情的魔术。它是一个工具,魔术师可以用它来做一些小把戏。一个越来越受到关注的领域是人工智能如何应用于嵌入式系统,重点是如何在这些更受限制的环境中规划部署。

定义和基本原则

为了确保我们都在同一个页面上,让我们从一些关于不同技术及其计算要求的背景开始。

AI是一门计算机科学学科,研究如何利用计算机来模仿人类智能。自20世纪计算机的黎明开始,人工智能就已经存在了,当时,艾伦-图灵等先驱者预见到了计算机以类似人类的方式解决问题的可能性。

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

深度学习(Deep Learning,DL)是ML的一个子集,它使用多层神经网络从大型数据集中反复训练一个模型。一旦训练完成,模型就可以查看新的数据集,对新数据进行推理。这种方法最近获得了很多关注,并已应用于图像处理和语音识别或金融资产建模等各种问题。我们认为这种方法也会对未来的关键基础设施和设备产生重大影响。

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

由于创建精确模型需要大量的数据集,以及训练模型所需的大量计算能力,训练通常在云端或高性能计算环境中进行。相比之下,推理通常应用在靠近数据源的设备中。而分布式或边缘训练是一个非常感兴趣的话题,但这并不是目前大多数ML系统的部署方式。为了简单起见,我们假设训练发生在云端,而推理将发生在边缘或设备中。

正如我们所描述的,ML和DL是以数据为中心的学科。因此,创建和训练模型需要访问大型数据集,以及为数据操作提供丰富环境的工具和环境。使用框架和语言来简化数据的操作,并实现复杂的数学库和统计分析。通常这些都是Python等语言框架,然后在此基础上建立ML框架。这样的框架有很多,但一些常见的框架包括TensorFlow、Caffe或PyTorch。

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

有些模型可以被解释和运行,而不需要完整的ML框架。例如,OpenCV是一个计算机视觉框架,它包括Deep/Convoluted-Neural-Network(DNN/CNN)库,可以从TensorFlow和其他框架中读取模型。OpenCV和DNN库可以在许多紧凑的操作环境上使用,这些环境不支持更复杂或功能更全的ML框架,因此第二个部署方案是使用OpenCV等框架部署一个推理引擎。

ML是高度计算密集型的,早期的部署(如在自主车辆中)依赖于专门的硬件加速器,如GPU、FPGA或专门的神经网络。随着这些加速器在SoC中变得越来越普遍,我们可以预期看到在受限设备中运行DL模型的高效引擎。当这种情况发生时,另一种部署选择将是编译训练好的模型,以便在DNN加速器上进行优化部署。一些这样的工具已经存在,并且需要现代编译器框架(如LLVM)来针对模型前端和硬件加速器后端。

对嵌入式开发的意义

嵌入式开发通常是由部署高度优化和高效系统的需求所驱动的。经典的开发方法是从非常受限制的硬件和软件环境开始,仅根据需要增加功能。这一直是RTOS应用的典型领域。

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

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