机器学习:开发人员必须弥合的知识和技能差距

2022年04月24日 10:49    发布者:eechina
来源:富昌电子

计算机科学界在机器学习和更广泛的人工智能(AI)领域取得了最重大的突破。从自动驾驶到击败国际象棋大师的计算机,人工智能领域最著名的成就取决于大规模计算资源的部署:例如,运行数百万行代码的超高速、大功率图形处理单元(GPU)阵列。

嵌入式设备设计人员也开始将AI的优势带给边缘设备,他们比计算机科学家面临的约束要严格得多:与运行大规模AI应用程序的数据中心相比,嵌入式设备提供的处理器带宽和存储器要少几个数量级。

尽管他们可以使用的硬件资源有所不同,但当今的嵌入式工程师仍然普遍使用起源于计算机科学领域的开发过程、工具和框架。这意味着,对于以前使用针对嵌入式硬件组件(例如微控制器或FPGA)的集成开发环境(IDE)的电子工程师来说,AI开发过程可能会令他们不知所措。AI项目还需要技能和知识的部署,例如训练数据集的获取、选择和管理,而这些在传统电子系统开发中是前所未有的。

但是正如本文所述,半导体制造商正在开始扩展其产品的功能和工具链,以支持嵌入式AI项目的需求。

有趣的是,机器学习的原生的嵌入式方法也正在兴起,这消除了AI软件的许多复杂性,从而消除了对计算机科学知识的需求。

神经网络引入了新的开发流程

如图1所示,机器学习的基本过程仅包括两个阶段:训练神经网络模型,即“训练阶段”;将此神经网络部署到目标设备上,即“推理阶段”。在嵌入式环境中,此目标设备通常是基于微控制器、应用处理器或FPGA的本地或“边缘”设备。


图1:每个机器学习开发项目的两个阶段(图片由恩智浦半导体提供)

到目前为止看起来都很简单。但是每个阶段都有许多开发任务,这对于以前没有机器学习经验的嵌入式开发人员来说是陌生的。恩智浦的图表(图2)概述了工作流程的各部分中的任务。


图2:嵌入式机器学习开发中的基本工作流程(图片由恩智浦半导体提供)

不仅过程本身对嵌入式工程师来说是新的,技术、术语和行话也是如此。例如,在训练神经网络之前,开发人员需要确定哪种网络最适合该应用。卷积神经网络(CNN)模型广泛用于图像识别应用,而有限状态机(FSM)可能适用于识别时间序列数据中的模式。wardingdatascience.com托管的神经网络基本目录列出了25种以上的类型。

对于每种神经网络类型,通常都有数百种针对特定功能进行了优化的算法。这些软件元素往往具有自己的行话,这对于初次使用的用户可能很难理解。恩智浦的由eIQ工具支持的神经网络模型列表(如下图)提供了神经网络算法的示例。



除了最大型的嵌入式开发团队以外,其他人可能都没有时间和资源在开始其首个AI项目之前就机器学习的所有关键方面进行自学。

对于较小的开发团队,还有另一种选择:诸如恩智浦和莱迪思半导体等元器件制造商已经为诸如人员检测、人员计数和语音识别之类的应用开发了可立即投入生产的参考设计硬件和软件。QuickLogic还提供了在其QuickAI™平台上运行的低功耗声音检测器解决方案和语音识别解决方案。它们提供了最简单、最快的机器学习入门。莱迪思甚至提供其训练数据集,使OEM能够修改每个参考设计中包含的神经网络模型。

训练阶段:富昌电子提供专家帮助

如果现成的参考设计不支持预期的应用,则OEM将需要实施训练和推断过程。对于这两个阶段,嵌入式开发人员对于推理阶段更为熟悉:本质上,这涉及采用经过训练的模型并针对特定的硬件目标对其进行编译,例如恩智浦的i.MX RT跨界微控制器、意法半导体的STM32F7 MCU,或QuickLogic的QuickAI平台。

这些硬件设备的供应商或多或少地提供了开发工具,使将经过训练的模型编译到目标硬件的过程相当直观和直接。例如,恩智浦为其MCU和应用处理器提供了eIQ工具。eIQ工具支持TensorFlow Lite、Arm® NN、OpenCV和其他推理引擎。同样,ST提供了STM32Cube.AI工具,用于将神经网络转换为针对特定STM32 MCU的优化代码。

与标准嵌入式开发工作流程的最大不同在于训练阶段。在典型的MCU开发项目中,可以在单个IDE(例如IAR Embedded Workbench或Keil MDK)中创建整个应用程序的代码库。

但是,在机器学习项目中,MCU、处理器或FPGA的开发环境不支持训练阶段:嵌入式工程师被带到了新的领域。

参考上面的恩智浦工作流程图,该流程的每个阶段都需要专业知识和技术。在将原始数据提交给TensorFlow Lite、Caffe或Keras等模型训练框架之前,首次准备训练数据集的工程师需要学习很多知识,例如,如何收集原始数据、如何标记和管理原始数据、如何提取特征等。同样,每个框架都有其自己的处理流程、用户界面和数据协议。

线上有大量文档可供嵌入式工程师学习。但是,无论工程师在理论上做了多少准备,都无法替代原型项目。在项目的早期阶段,开发人员可以从机器学习专家的建议和指导中收获很多。

这正是富昌电子可以提供的:我们各办事处的庞大的现场应用工程师团队中具有高需求技术领域的专家,包括机器学习/AI领域。我们的AI领域的区域高级工程师专家致力于这一领域,随时为OEM开发人员提供指导,无论是计划新的开发项目还是在项目期间,我们都能为您解决特定问题。

通过我们的区域卓越中心,OEM甚至可以将部分或全部设计项目外包给富昌电子,从而为机器学习提供完整的交钥匙解决方案。

专为嵌入式世界打造的AI工具包

如前所述,MCU、处理器和FPGA制造商支持的大多数工具和框架都来自计算机科学界:它们庞大、复杂、功能强大且难以在短时间内学习。

因此,可编程片上系统制造商QuickLogic的子公司SensiML采用了不同且有趣的方法。SensiML起源于Intel的一个部门,创建了其SensiML Edge AI软件工具包,以提供一个完整的端对端环境,嵌入式开发人员可以在该环境中立即提高工作效率(见图3)。


图3:SensiML提供的简单机器学习工作流程(图片由QuickLogic提供)

据SensiML,其边缘AI软件工具包“使开发人员无需数据科学或嵌入式固件专业知识就能在几天或几周内构建智能传感设备”。它可以用于开发诸如工业机器的预测性维护、消费者可穿戴设备中的活动监视、智能农业中的牲畜监视以及零售商店的流量分析等应用。

图1中所示的过程将开发分解为训练阶段(步骤1-3)和推理阶段(步骤4)。但是,据SensiML,其不同之处是它是快速、智能和完整的。

· 它不需要手动编码,会自动生成代码
· 它不需要数据预处理方面的专业知识,开发人员要做的就是收集数据样本。该工具包包含支持数据捕获的SensiML数据捕获实验室模块。
· 使从收集训练数据到生成训练算法的整个过程实现自动化。

因为SensiML工具包是为嵌入式工程师设计的,所以它不假定输出必须是复杂的神经网络模型。对于生成时间序列数据的应用程序(例如预测性维护或个人活动监控),较简单的算法类型(例如分类器)通常优于神经网络。这种更简单的算法不仅更易于生成、修改和完善,而且还需要更少的目标硬件资源,使OEM可以围绕低功耗目标(例如基于Arm Cortex®-M内核的MCU或QuickLogic自己的QuickAI可编程平台)构建项目,而更复杂的神经网络模型可能通常需要应用处理器或中等密度FPGA。

新资源出现可提供帮助

由于机器学习是嵌入式世界中的最新现象,不同制造商的产品尚未标准化,目前,不同供应商的工具链为AI项目提供的支持范围存在很大差异。

尽管SensiML提供了最全面的工具包,但各制造商提供的环境和服务,例如,意法半导体和恩智浦为MCU和处理器提供的环境和服务,以及莱迪思和Microchip为FPGA提供的环境和服务,都支持越来越多的流行训练框架,并为自己的产品提供了优化的编译性能。

对于第三方框架与半导体制造商的工具之间必须弥合的差距,富昌电子的专家能够随时为您提供指导、专有技术和现场协助。