h1_key

当前位置:首页 >新闻资讯 > 产品资讯>意法半导体>STM32 MCU优化的STM32Cube.AI库
STM32 MCU优化的STM32Cube.AI库
2022-11-14 2657次

STM32Cube.AI是意法半导体AI生态系统的一部分,是STM32Cube的一个扩展包,它可以自动转换和优化预先训练的神经网络模型并将生成的优化库集成到用户项目中,从而扩展了STM32CubeMX的功能。它还提供几种在桌面PC和STM32上验证神经网络模型以及测量模型性能的方法,而无需用户手工编写专门的C语言代码。

  本文将更深入地介绍它的一些高级特性。将涉及以下主题:

  ●运行时环境支持:Cube.AI vs TensorFlow Lite

  ●量化支持

  ●图形流与存储布局优化

  ●可重定位的二进制模型支持

  运行时环境支持:Cube.AI vs TensorFlow Lite

  STM32Cube.AI支持两种针对不同应用需求的运行时环境:Cube.AI和TensorFlow Lite。作为默认的运行时环境,Cube.AI是专为STM32高度优化的机器学习库。而TensorFlow Lite for Microcontroller是由谷歌设计,用于在各种微控制器或其他只有几KB存储空间的设备上运行机器学习模型的。其被广泛应用于基于MCU的应用场景。STM32Cube.AI集成了一个特定的流程,可以生成一个即时可用的STM32 IDE项目,该项目内嵌TensorFlow Lite for Microcontrollers运行时环境(TFLm)以及相关的TFLite模型。这可以被看作是Cube.AI运行时环境的一个替代方案,让那些希望拥有一个跨多个项目的通用框架的开发人员也有了选择。

  

 

  虽然这两种运行时环境都是为资源有限的MCU而设计,但Cube.AI在此基础上针对STM32的独特架构进行了进一步优化。因此,TensorFlow Lite更适合有跨平台可移植性需求的应用,而Cube.AI则更适合对计算速度和内存消耗有更高要求的应用。

  下表展示了两个运行时环境之间的性能比较(基于一个预训练的神经网络参考模型)。评价指标是在STM32上的推断时间和内存消耗。

  

 

  如表中所示,对于同一模型,Cube.AI运行时环境比TFLite运行时环境节约了大概20%的flash存储和约8%的RAM存储。此外,它的运行速度几乎比TFLite运行时环境快了2倍。

  对于TFLite模型,用户可以在STM32Cube.AI的网络配置菜单中对2个运行时环境进行选择。

  

 

  量化支持

  量化是一种被广泛使用的优化技术,它将32位浮点模型压缩为位数更少的整数模型,在精度只略微下降的情况下,减少了存储大小和运行时的内存峰值占用,也减少了CPU/MCU的推断时间和功耗。量化模型对整数张量而不是浮点张量执行部分或全部操作。它是面向拓扑、特征映射缩减、剪枝、权重压缩等各种优化技术的重要组成部分,可应用在像MCU一样资源受限的运行时环境。

  通常有两种典型的量化方法:训练后量化(PTQ)和量化训练(QAT)。PTQ相对容易实现,它可以用有限的具有代表性的数据集来量化预先训练好的模型。而QAT是在训练过程中完成的,通常具有更高的准确度。

  STM32Cube.AI通过两种不同的方式直接或间接地支持这两种量化方法:

  ●首先,它可以用来部署一个由PTQ或QAT过程生成的TensorFlow Lite量化模型。在这种情况下,量化是由TensorFlow Lite框架完成的,主要是通过“TFLite converter” utility导出TensorFlow Lite文件。

  ●其次,其命令行接口(CLI)还集成了一个内部的训练后量化(PTQ)的过程,支持使用不同的量化方案对预训练好的Keras模型进行量化。与使用TFLite Converter工具相比,该内部量化过程提供了更多的量化方案,并在执行时间和精确度方面有更好的表现。

  

 

  下表显示了在STM32上部署量化模型(与原有浮点模型相比)的好处。此表使用FD-MobileNet作为基准模型,共有12层,参数大小145k,MACC操作数24M,输入尺寸为224x224x3。

  

 

从表中很容易看出,量化模型节省了约4倍的flash存储和RAM存储,且运行速度提高了约3倍,而精确度仅仅下降了0.7%。

  在文档的末尾还附上了一个快速实践示例:“量化一个MNIST模型”。

  图形流与存储布局优化

  除了量化技术,STM32Cube.AI还通过使用其C代码生成器的优化引擎,针对推理时间优化内存使用(RAM & ROM)。该引擎基于无数据集的方法,无需验证或测试数据集来应用压缩和优化算法。

  一种方法:权重/偏置项压缩,采用k -均值聚类算法。该压缩算法仅适用于全连接层。其优势是压缩速度快,但是结果并不是无损的,最终的精度可能会受到影响。STM32Cube.AI提供“验证”功能,用于对所生成的C模型中产生的误差进行评估。

  “压缩”选项可以在STM32Cube.AI的网络配置中激活,如下图所示:

  

 

  第二种方法:操作融合,通过合并层来优化数据布局和相关的计算核。转换或优化过程中会删除一些层(如“Dropout”、“Reshape”),而有些层(如非线性层以及卷积层之后的池化层)会被融合到前一层中。其好处是转换后的网络通常比原始网络层数少,降低了存储器中的数据吞吐需求。

  

 

  最后一种方法是优化的激活项存储。其在内存中定义一个读写块来存储临时的隐藏层值(激活函数的输出)。此读写块可以被视为推理函数使用的暂存缓冲区,在不同层之间被重复使用。因此,激活缓冲区的大小由几个连续层的较大存储需求决定。比如,假设有一个3层的神经网络,每一层的激活值分别有5KB, 12KB和3KB,那么优化后的激活缓冲区大小将是12KB,而不是20KB。

  可重定位的二进制模型支持

  非可重定位方法(或“静态”方法)指的是:生成的神经网络C文件被编译并与最终用户应用程序堆栈静态链接在一起。

  如下图所示,所有对象(包括神经网络部分和用户应用程序)根据不同的数据类型被一起链接到不同的部分。在这种情况下,当用户想要对功能进行部分更新时(比如只更新神经网络部分),将需要对整个固件进行更新。

  

 

  相反,可重定位二进制模型指定一个二进制对象,该对象可以安装和执行在STM32内存子系统的任何位置。它是所生成的神经网络C文件的编译后的版本,包括前向核函数以及权重。其主要目的是提供一种灵活的方法来更新AI相关的应用程序,而无需重新生成和刷写整个终端用户固件。

  生成的二进制对象是一个轻量级插件。它可以从任何地址(位置无关的代码)运行,其数据也可放置于内存中的任何地方(位置无关的数据)。

  STM32Cube.AI简单而高效的AI可重定位运行时环境可以将其实例化并使用它。STM32固件中没有内嵌复杂的资源消耗型动态链接器,其生成的对象是一个独立的实体,运行时不需要任何外部变量或函数。

  下图的左侧部分是神经网络的可重定位二进制对象,它是一个自给自足的独立实体,链接时将被放置于终端用户应用程序的一个单独区域中(右侧部分)。它可以通过STM32Cube.AI的可重定位运行时环境被实例化以及动态链接。因此,用户在更新AI模型时只需要更新这部分二进制文件。另外,如果有进一步的灵活性需求,神经网络的权重也可以选择性地被生成为独立的目标文件。

  

 

  可重定位网络可以在STM32Cube.AI的高级设置中激活,如下图所示:

  

 

  最后,作为意法半导体人工智能生态系统的核心工具,STM32Cube.AI提供许多基本和高级功能,以帮助用户轻松创建高度优化和灵活的人工智能应用。

 

  • STM32F767NIH6:搭载Cortex-M7与图形加速器的高性能嵌入式微控制器
  • STM32F767NIH6是意法半导体STM32F7系列中的旗舰级微控制器,基于ARM Cortex-M7内核,运行频率高达216 MHz,提供462 DMIPS的计算性能。该器件集成2 MB Flash和512 KB SRAM,采用TFBGA216封装(13 mm × 13 mm),工作温度范围为-40°C至+85°C,专为需要强大处理能力、丰富图形界面和高带宽通信的嵌入式应用而设计。
    2026-10-14 2次
  • STM32G474RCT6:面向数字电源与精密控制的Cortex-M4高性能微控制器
  • STM32G474RCT6是意法半导体STM32G4系列中的一款高性能微控制器,专为数字电源、电机控制、精密仪器等对实时性和模拟外设集成度有极高要求的应用而设计。该器件基于ARM Cortex-M4F内核,运行频率高达170 MHz,集成256 KB Flash和128 KB SRAM,采用LQFP64封装,工作温度范围覆盖-40°C至+125°C,在紧凑的10 mm × 10 mm封装内实现了计算性能与模拟外设的高度融合。
    2026-10-14 2次
  • STM32G474RET3:集成高分辨率定时器与数学加速器的170 MHz数字电源专用MCU
  • STM32G474RET3是意法半导体STM32G4系列中面向数字电源转换、电机控制和工业自动化应用的高性能微控制器。它基于Arm Cortex-M4内核,集成单精度浮点单元和完整DSP指令集,运行频率高达170 MHz,在Dhrystone 2.1基准测试中提供213 DMIPS的运算性能。 该器件最突出的差异化特性在于其集成的184 ps分辨率高分辨率定时器(HRTIM)和硬件数学加速器(CORDIC与FMAC)。HRTIM为数字电源应用提供了传统通用定时器无法企及的PWM波形生成精度,而CORDIC和FMAC加速器则将三角函数和数字滤波运算的CPU开销降至最低,使开发者能够在单一芯片上实现完整的数字功率转换控制环路。
    2026-10-13 6次
  • STM32H503CBT6:48引脚紧凑封装的高性能Cortex-M33微控制器
  • STM32H503CBT6是STM32H503系列中采用LQFP-48封装的紧凑型微控制器,基于Arm Cortex-M33内核,运行频率250 MHz,配备128 Kbyte闪存和32 Kbyte SRAM。该器件面向空间受限但需要Cortex-M33运算性能的嵌入式应用,在7×7 mm的封装内提供35个通用IO引脚,适合可穿戴设备、便携仪器、小型传感器节点和紧凑型工业控制模块。 与同系列中采用LQFP-64封装的STM32H503RBT6相比,STM32H503CBT6在保持相同内核性能、存储容量和大部分外设资源的前提下,通过减少封装引脚数量实现了更小的占板面积。这一特性使其成为空间敏感型设计的优先选择,尤其适合需要将MCU放置在紧凑PCB区域内的应用。
    2026-10-13 6次
  • STM32H503RBT6:128 Kbyte闪存的入门级250 MHz Cortex-M33微控制器
  • STM32H503RBT6是STM32H5系列中面向成本敏感型应用的入门级微控制器,基于Arm Cortex-M33内核,运行频率250 MHz,配备128 Kbyte闪存和32 Kbyte SRAM,采用LQFP-64封装。该器件在保持Cortex-M33内核高性能运算能力的同时,通过精简存储配置和外设资源实现了更优的成本结构,适合不需要TrustZone安全隔离、但对处理性能有较高要求的嵌入式应用。 与同系列中集成TrustZone的型号不同,STM32H503RBT6不包含Arm TrustZone安全扩展,因此不具备硬件级的安全与非安全域隔离能力-。这一取舍使器件能够以更低的成本提供250 MHz的Cortex-M33运算性能,主要面向工业控制、智能家居和消费类电子等对安全性要求不高的应用场景。
    2026-10-13 5次

    万联芯微信公众号

    元器件现货+BOM配单+PCBA制造平台
    关注公众号,优惠活动早知道!
    10s
    温馨提示:
    订单商品问题请移至我的售后服务提交售后申请,其他需投诉问题可移至我的投诉提交,我们将在第一时间给您答复
    返回顶部