当前位置: CompoTech China > 业界资讯 >
 

MathWorks专访:如何用STM32设计出超越AI的智能应用

本文作者:意法半导体博客       点击: 2024-05-07 10:32
前言:
 
 
业界应如何看待边缘人工智能?ST授权合作伙伴  MathWorks 公司的合作伙伴团队与ST 共同讨论了对边缘机器学习的看法,并与 STM32 社区分享了他们的设计经验。

MathWorks的 MATLAB® 和 Simulink® 软件闻名业界。MATLAB®软件工具可让科学家分析数据,开发算法,创建模型;Simulink®软件可以创建模型化设计,仿真测试动态系统,支持 STM32 MCU,开发、部署和优化在 STM32 MCU上运行的应用。MathWorks 为开发者提供MCU AI开发部署工具,业务范围涵盖许多领域,包括控制设计、信号处理和嵌入式系统设计,以及许多专用附加产品。公司不仅在学术界享有盛誉,在航空航天、汽车和工业市场也具有很大的影响力。

正是因为 MathWorks 拥有如此强大且常用的工具包,我们才决定与他们深入讨论边缘机器学习。 虽然这个话题已经讨论了很多年,但我们认为,像 MathWorks 这样的合作伙伴提出的建议有助于业界换个角度看待边缘机器学习,并解决业界面临的一些挑战。因此,我们采访了 MathWorks 嵌入式合作伙伴经理 John Kluza 和战略合作伙伴专家 Reed Axman。

有关边缘机器学习的思考……
…现状
我们是否已经大规模采用边缘机器学习?
 
“在边缘机器学习被广泛应用和部署之前仍有很多工作要做”
 
MathWorks合作伙伴团队:还没有,在边缘机器学习被广泛应用和部署之前还有很多工作要做。业界仍在追赶STM32微控制器等边缘设备的能力,但它也在努力应对一些基本挑战,如能效和安全标准。

我们是否已达到能效临界点?
还没有。虽然在过去五年里,业界已经显著提高了神经网络算法在微控制器上的运行能效,但在边缘机器学习得到大规模应用前,仍然需要设法提高系统能效,降低模型的部署难度。边缘AI技术已经进入许多细分市场,但在进入主流市场之前还有很长的路要走。
 
…展望
如何做才能提高边缘人工智能的能效?
能够在嵌入式系统运行系统代码以及多个神经网络,是在机器学习发展道路上取得的一个重要的里程碑。目前,微控制器能够顺畅地运行一个神经网络,但是,运行两个或更多网络以及系统代码,同时保持功耗在预算范围内,仍然是一个不小的挑战。同时,确保适合的安全机制到位也很重要。
 
人工智能中的安全性是什么意思? (笑问)机器人会攻击人类吗?
(笑) 不会,没有那样的事情,在科幻小说中经常会出现这样的情节。人工智能的安全性是指工作可靠性,这意味着避免算法发生意外行为,确保AI有容错、故障安全操作和数据保护功能。

开发人员如何创建更安全的AI应用?
这个问题不好回答,这也是 MathWorks 提供神经网络测试验证工具的初衷。简而言之,设计团队可以用MathWorks工具验证机器学习算法的行为,并在现场部署前创建冗余机制。用户还可以模拟传感器数据的中断或变化,以更好地预测现实世界的情况。
 
创建边缘机器学习
 
高效的数据学分析方法
 
对于一家致力于边缘机器学习的初创公司,你有哪些忠告?
 
首先,弄清楚用例的具体要求,实时处理是否是首要需求?数据隐私是否是大家都很关心的问题?算力和功率有哪些限制? 一旦确定了硬件规格,团队就可以专注开发推理速度、存储器占用和预测准确性均衡的人工智能模型。在这个方面,利用现有工具和模型库可以最大限度地提高开发效率,缩短产品上市时间。我还建议创建一个数据安全处理计划,预测连接问题(如果有联网组件),并确定系统扩展计划。 一旦想清楚了这几点,设计人员就可以更好地决定是否聘请数据科学家来开发机器学习算法。
 
那么聘请数据科学家并不是第一步,甚至不是必须的?
 
在某些情况下,第一步要做的是聘请数据科学家。但是,用 MATLAB 创建高准确度模型,不一定非是数据科学家或 AI 专家不可。工程师深刻理解他们的数据,深知他们要解决的问题,而数据科学家在某种程度上通常不具备这些知识。例如,团队可以先构思一个人工智能的系统设计,甚至尝试从模型库导入神经网络,然后,再聘请昂贵且稀有的数据科学人才。这样做将有助于更好地确定要解决的问题。此外,MathWorks的现有工具让系统工程师能够在独立解决人工智能问题上取得重大进展。
 
公司应如何开始研发机器学习算法?
 
借助 MATLAB 和 Simulink 等工具,用户可以简化算法开发和在嵌入式设备上部署模型。我们在 TinyML登录页面讨论了将高效 AI 网络部署到 MCU 的流程,还有相关的方法视频和研讨会活动。

MATLAB 会取代数据科学家吗?
 
显然不会,然而,MATLAB的功能,及其与 PyTorch 和 TensorFlow 等其他深度学习平台的协同操作功能,可以促进团队成员之间的协作,并有助于加快在边缘上实现机器学习。
 
理性看待AI
 
可以向我们展示边缘机器学习解决问题的示例吗?
 
当然! 借助 MathWorks 和 STM32 MCU,边缘人工智能可以提高产品功能,有时还能降低系统成本。我们还提供用户案例库,展示企业如何用 MATLAB 和 Simulink 开发机器学习和 深度学习,包括虚拟温度传感器、压力传感器、激光雷达分类器和心电图分析。

如果想了解计算机视觉和机器学习的示例,请查看 MPCam和MPTherm:在STM32MP1上开发计算机视觉的多合一解决方案

什么情况下最好避免边缘机器学习?
 
如果传统方法能够控制系统,而且计算资源需求比神经网络低,就不必用边缘机器学习。例如,可以用卡尔曼滤波器构建系统,求解大型线性代数问题,在某些情况下可以提供令人满意的效果。
 
如果没有这类专业知识或资源,怎么办?
 
这时候就是就该边缘机器学习登场了。有时,企业缺乏开发准确模型所需的专业知识。同样,如果系统的非线性或时变性非常明显,那么使用传统方法创建运算模型可能无法实现,或者没有优势。在这些情况下,解决相同的问题,边缘机器学习方法就变得更经济划算了,如果团队精简压缩神经网络算法,优化机器学习模型,物料成本可能会变得更低!
 
训练和优化哪个更重要?
 
两者的作用都很重要。然而,如果你有大量的训练数据和强大的神经网络,但在边缘设备上实现模型的能力很弱,那么一切都是枉然。因此,模型优化至关重要。低功耗系统和较小的存储器占用率,以及性能良好的神经网络,可以让团队快速地发布新产品。当团队已经优化了底层代码时,长期改进模型性能就会比较容易。
 
ST 和 MathWorks 生态系统
 
MathWorks 和 ST 的合作会给业界带来哪些影响?
 
MathWorks 为开发人员提供了许多跨硬件平台移植应用的功能,因为开发者可能与多家 MCU 厂商合作。此外,MathWorks 还提供一个完整开发流程,涵盖从数据学分析、神经网络创建,到优化、仿真和部署这些神经网络的整个开发过程。另一方面,STM32Cube.AI 等ST软件支持为STM32 MCU生成C代码,STM32Cube.AI Developer Cloud新增了网络基准测试和模型库。

STM32Cube.AI 和 MathWorks工具是如何相互配合的?
 
MathWorks的 Simulink软件支持 STM32硬件

STM32Cube.AI 和 MathWorks 工具配合使用,为开发者提供了一个完整的开发流程。例如,工程师可以从 ST Model Zoo模型库、TensorFlow、PyTorch 或 MATLAB 开始创建神经网络,然后用 STM32Cube.AI Developer Cloud进行初步基准测试。因此,可以帮助开发人员选择成本、性能和推理时间全面均衡的目标模型。然后,团队可以将模型集成到 Simulink 中,进行系统级的模型测试。STM32硬件支持包和嵌入式编码器可以执行处理器在环(PIL)测试和快速原型设计,使工程师能够评估AI模型和配套的控制逻辑,以及整体性能,看看它是否符合预期。
 
开发者需要注意些什么?
 
除了 STM32Cube.AI 提供的代码生成外,还需要考虑原型设计问题。例如,借助 STM32Cube.AI Developer Cloud,在多个 Nucleo 开发板上做同一个基准测试,可以帮助团队为每个项目快速选定最佳器件。

STM32开发者现在应做些什么?
 
我们建议他们查看在MCU上部署 AI所需的 MathWorks 工具,并详细了解STM32 NUCLEO技术支持 。在开始开发的时候,他们可以在这里观看视频,研究示例,阅读文档。