当前位置:首页 > 嵌入式 > 嵌入式客栈
[导读]译自:https://blogs.windriver.com/wind_river_blog /2020/01/practical-applications-for-ai-and-ml-in-embedded-systems/ 基本背景 嵌入式开发往往是由部署高度优化和高效的系统需求所驱动。 人工智能通过采用解决复杂问题的新方法对现有业务或现有工作类型

译自:https://blogs.windriver.com/wind_river_blog

/2020/01/practical-applications-for-ai-and-ml-in-embedded-systems/

基本背景

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

人工智能通过采用解决复杂问题的新方法对现有业务或现有工作类型的革命而颠覆世界。无论您是否真正了解这种颠覆性革新所带来价值,以及如何将其应用到您的市场中,还是想弄清楚如何利用这项技术,对人工智能及其潜在应用的做一些基本了解已迫在眉睫。了解其潜在的应用必将成为您战略规划过程的关键一环。

尽管已进行了大肆宣传,但令人震惊的是,人们认为人工智能似乎是无所不能的魔术棒。然而魔术师们却仅仅能使用很小的一部分魔术技能以解决现实中的问题。这种反差引起人们强烈关注的一个领域是如何将人工智能应用于嵌入式系统,重点是如何在这些更受限的环境中部署人工智能应用。

定义和基本原理

为确保我们能有基本共识,让我们从不同技术及其对计算要求的基本背景开始介绍。

人工智能是一门计算机科学学科,致力于研究如何使用计算机来模仿人类智能。自20世纪计算机技术问世以来,人工智能就已经存在了,当时诸如Alan Turing之类的先驱者预见了计算机以人类可能以类似的方式解决问题的可能性。

经典的计算机编程通过在代码中显式编码算法来解决问题,指导计算机执行逻辑来处理数据并计算输出。相比之下,机器学习(ML)是一种AI方法,旨在寻找数据模型,并根据数据进行有效学习。有很多方法可以实现,包括预标记数据(或不标记数据),指导算法开发的强化学习,通过统计分析(或其他方法)提取特征,然后根据经过训练的数据集对输入数据进行分类,从而确定具有指定置信度的输出。

深度学习(DL)是ML的子集,它使用多层神经网络从迭代的大型数据集中训练模型。训练后,模型可以查看新数据集以推断出新数据。这种方法最近引起了很多关注,并已应用于各种问题,如图像处理和语音识别或金融资产建模。我们认为这种方法也对未来的关键基础架构和设备产生重大影响。

嵌入式系统中应用ML/DL

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

如前所述,机器学习和深度学习是以数据为中心的学科。因此,创建和训练模型需要访问大型数据集以及为数据操作提供丰富环境的工具和环境。使用了简化数据处理,实现复杂的数学库和统计分析的框架和语言。这些通常是诸如Python之类的语言框架,然后在其上构建ML框架。有很多这样的框架,一些常见的框架包括TensorFlow,Caffe或PyTorch。

机器学习框架可用于模型开发和训练,也可用于在边缘使用经过训练的模型来运行推理引擎。因此,一种简单的部署方案是在设备中部署诸如TensorFlow的框架。由于它们需要丰富的运行时环境(例如Python),因此它们最适合Linux上的通用计算工作负载。由于需要在移动设备上运行机器学习,我们看到许多轻量级的推理引擎(TensorFlow Lite,PyTorch mobile)已经开始开发,需要较少的资源,但是这些引擎相较于其全功能版本仍然尚未广泛使用或还不成熟。

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

机器学习是高度计算密集型的,早期部署(例如在自动驾驶汽车中)依赖于专门的硬件加速器,例如GPU,FPGA或专门的神经网络。随着这些加速器在SoC中变得越来越普遍,我们可以预期看到高效的引擎在受限设备中运行机器学习模型。发生这种情况时,另一个部署选项是编译经过训练的模型,以在DNN加速器上进行优化部署。一些这样的工具已经存在,并且需要现代的编译器框架(例如LLVM)以模型前端和硬件加速器后端为目标。

对嵌入式开发的影响

嵌入式开发通常是由部署高度优化和高效的系统的需求所驱动。经典的开发方法是从非常受限的硬件和软件环境开始,并仅在需要时才添加功能。这是RTOS应用程序的典型应用。

随着技术的日新月异,我们看到开发方法首先要使复杂的系统工作,然后在以后的阶段进行优化以进行部署。与软件的许多重大进步一样,开源社区是机器学习中创新步伐和规模的重要推动引擎。包含在开源中并通常从Linux开发开始的工具和框架正在迅速成为主要的创新途径。因此,同时使用实时操作系统(RTOS)和Linux或将开源从Linux迁移到RTOS是必须得到支持的重要开发旅程。

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

点击留言/查看留言

END

果喜欢右下点个在看,也会让我倍感鼓舞

往期精彩推荐




▲深度解析U-Boot网络实现(长篇好文)
手把手教系列之移动平均滤波器C实现
读U-Boot源码-C语言编程大法总结篇一
读U-Boot源码-C语言编程技巧总结篇二
U-Boot架构浅析
手把手教系列之IIR数字滤波器设计实现

关注置顶:扫描左下二维码关注公众号加星

讨论加群:扫描右下二维码添加,发送“加群”

关注

加群


免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭