


人工智能和机器学习在嵌入式系统中的实际应用嵌入式开发通常是由部署高度优化和高效系统的需要驱动的。人工智能的定位是通过启用解决复杂问题的新方法或威胁整个业务部门或工作类型的现状来破坏业务。 定义和基本原则 人工智能是一门计算机科学学科,研究如何使用计算机来模仿人类智能。自20世纪计算诞生之初,人工智能就已经存在,当时艾伦·图灵等先驱预见了计算机以与人类类似的方式解决问题的可能性。 经典计算机编程通过在代码中明确编码算法、引导计算机执行逻辑来处理数据并计算输出来解决问题。相比之下,机器学习(ML)是一种AI方法,旨在寻找数据中的模式,基于数据进行有效学习。有很多方法可以实现这一点,包括预先标记数据(或不标记)、强化学习来指导算法开发、通过统计分析(或其他一些方法)提取特征,然后根据这个经过训练的数据集对输入数据进行分类以规定的置信度确定输出。 深度学习(DL)是ML的一个子集,它使用多层神经网络从大数据集迭代地训练模型。训练完成后,模型可以查看新数据集以对新数据进行推断。这种方法最近获得了很多关注,并已应用于各种问题,如图像处理和语音识别或金融资产建模。我们认为这种方法也会对未来的关键基础设施和设备产生重大影响。 在嵌入式系统中应用 ML/DL 由于创建精确模型需要大量数据集,并且训练模型需要大量计算能力,因此训练通常在云或高性能计算环境中进行。相比之下,推理通常应用于靠近数据源的设备。尽管分布式或边缘训练是一个非常有趣的话题,但这并不是当今大多数ML系统的部署方式。为简单起见,我们假设训练在云端进行,推理将在边缘或设备内进行。 正如我们所描述的,机器学习和深度学习是以数据为中心的学科。因此,创建和训练模型需要访问大型数据集,以及为数据操作提供丰富环境的工具和环境。使用简化数据操作并实现复杂数学库和统计分析的框架和语言。通常这些是语言框架,例如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,是必须支持的重要开发人员旅程。 无论公司是刚刚开始还是准备部署优化的机器学习解决方案,他们都必须构建基础技术和丰富的开发环境来抽象复杂性并支持异构运行时环境。 下一篇工控机在铁路安全的应用
文章分类:
新闻动态
|