随着新的工具和功能可供我们开发人员在我们的系统中实施,机器学习让嵌入式系统行业嗡嗡作响。 Arm Cortex-M 类型微控制器上的机器学习仍然相对较新,但有一些非常有趣的工具可供嵌入式开发人员更轻松地将经过训练的模型集成到他们的产品中,一种这样的工具是 ST Microelectronics STM32Cube.AI。
STM32Cube.AI 是 STM32CubeMX 的扩展包,可在 STM32 Arm(r) Cortex(R)-M 处理器上启用 AI。 STM32Cube.AI 不为开发人员执行培训,但允许他们导入经过训练的模型并将其集成到他们的运行时环境中。你可以将 STM32Cube.AI 视为转换工具,它采用神经网络模型并生成可在 STM32 微控制器上运行的优化代码。
最新的 STM32Cube.AI 版本 6.0 允许开发人员从流行工具导入机器学习模型,例如:
Keras
TensorFlow Lite
ONNX
开发人员甚至可以选择是使用 STM32Cube.AI 运行时环境运行模型,还是使用 TensorFlow Lite for Microcontrollers 运行时。
将模型放入嵌入式环境是很容易的部分。 经常困扰嵌入式开发人员的问题是他们的机器学习模型是否能在微控制器上成功运行。 毕竟,诸如此类的问题:
运行机器学习模型需要多少个执行周期?
这个机器学习模型会占用多少闪存空间?
这个机器学习模型将占用多少 RAM 空间?
模型在目标上是否会像在训练和验证期间一样准确?
STM32Cube.AI 有一个很棒的分析工具,可以用来回答很多这样的问题。 例如,我从 TensorFlow Lite for Microcontrollers 网站训练了一个超级简单的示例模型,给定 x 值将预测正弦波的 y 值。 将模型导入 STM32Mx 后,我能够分析模型并生成包含以下摘要的报告:
如你所见,摘要为我提供了用于该模型的内存大小,例如权重和激活以及执行机器学习模型所需的乘法和累加指令的数量。 (这是一个超级简单的模型,所以大小以字节为单位!对于现实世界的例子来说不是很现实)。
该报告还为模型提供了有用的细分,我们可以在其中看到神经网络中的每一层:
这些只是 STM32Cube.AI 为准备进入微控制器机器学习世界的嵌入式系统开发人员提供的几个小例子。 机器学习当然是新事物,而且发展迅速,但 STM32Cube.AI 是一款免费工具,可以帮助嵌入式开发人员轻松地将其机器学习模型转换为在微控制器上运行。
发表评论 取消回复