账号:
密码:
智动化 / 文章 /

STM32 MCU最隹化的 STM32Cube.AI library
[作者 意法半導體提供]   2022年03月25日 星期五 浏览人次: [1673]

STM32Cube.AI是意法半导体人工智慧生态系统的STM32Cube扩充套件,可以自动转换预训练之神经网路及将产生的最隹化函式库整合到开发者专案中,以进一步扩充STM32CubeMX的能力。更提供多种方法在PC及 STM32 开发板验证神经网路模型,并测量 STM32装置上的效能,无需使用者手动撰写 C code。


本文介绍STM32Cube.AI进阶功能,涵盖以下主题:


- Runtime支援:Cube.AI与TensorFlow Lite


- 量化支援


- Graph flow及记忆体设定最隹化


- Relocatable二进位模型支援


Runtime支援:Cube.AI与TensorFlow Lite

STM32Cube.AI支援2种针对不同应用需求的runtimeCube.AI和TensorFlow Lite。Cube.AI 为预设执行阶段,是针对STM32高度最隹化的机器学习函式库。TensorFlow Lite for Microcontroller由Google设计,用於微控制器及其他装置上执行机器学习模型,只占用几千位元组的记忆体空间。它被广泛用在基於MCU的应用。STM32Cube.AI整合了一条特别路径供STM32 IDE专案所用,并嵌入TensorFlow Lite for Microcontrollers执行阶段 (TFLm)及其相关的TFLite模型。对於希??拥有一个跨专案通用框架的开发人员,这可视为预设的 Cube.AI runtime替代方案。



图一
图一

虽然两种runtime均为资源有限的MCU专案而设计,但Cube.AI更针对STM32的独特架构进一步最隹化。因此,TensorFlow Lite更注重跨平台移植的需求,而Cube.AI 则注重运算速度及记忆体占用要求更高的应用。


以下图表显示相同的预训练神经网路模型中,两种runtime之间的效能比较。



图二
图二

如表格所示,对於同一个模型,Cube.AI runtime相较TFLite runtime节省了大约20%的Flash,和约8%的RAM,执行速度几??是TFLite runtime的2倍。


对於TFLite模型,使用者可在STM32Cube.AI的网路设定中选择 2 种runtime。



图三
图三

量化支援

量化是一种广泛使用的最隹化技术,可将32位元的浮点数模型压缩成更少位元的整数模型,进而?少储存大小及runtime的记忆体占用峰值,并改善CPU/MCU的推论时间及功耗,而精度只会略降一些。量化後的模型可利用整数(而非浮点值)来执行部分或是全部的tensor。它是各种最隹化技术的重要组成部分,如:拓扑导向、feature map reduction、剪枝、weights compression等,可应用於像是MCU这类runtime资源有限的环境。


另外两种经典的量化方法:post-training quantization(PTQ)以及quantization aware training(QAT)。PTQ相对容易进行,它容许使用有限的代表性资料集对预训练模型进行量化。而QAT则是在训练过程中完成,模型精度通常更好。


STM32Cube.AI以 2种方式直接或间接支援这2种量化方法:


- 首先,可部署经由PTQ或是QAT量化的TensorFlow Lite模型。在此情况下,量化由 TensorFlow Lite框架执行,主要是通过「TFLite converter」程式汇出TensorFlow Lite档案。


- 其次,命令行介面(CLI)亦整合了一个内部PTQ程序,针对预训练的Keras模型提供不同的量化计划。与采用「TFLite converter」程式的训练後量化相比,此内部程序提供更多量化计划,在执行时间及精度方面提供不同的选择。



图四
图四

下图表显示在 STM32 上部署量化模型相较原有浮点模型的优势。FD-MobileNet用作基准测试模型,12 层、145k 叁数、24M MACC运算及输入维度224x224x3。



图五
图五

从表中可见,量化模型可节省约4倍的Flash和RAM,执行速度快约3倍,而精度仅降低 0.7%。


如果已安装X-Cube-AI软体套件,使用者可以在此路径找到使用Cube.AI CLI进行量化的教学:C:\Users\username\STM32Cube\Repository\Packs\STMicroelectronics\X-CUBE-AI\7.1.0\Documentation\quantization.html. 文末亦附有「Quantize a MNIST model」范例。


Graph flow及记忆体配置最隹化

除了量化技术外,STM32Cube.AI更追求使用其C Code产生器之最隹化引擎,针对推论时间最隹化记忆体使用(RAM和ROM)。它基於不需要资料集的方式,意味着压缩及最隹化演算法无需训练、验证或测试资料集。


第一种方法是weigh/bias压缩,当中应用 k-means 聚类演算法。此压缩算法只适用於dense 层(完全连接层)。此方法的优势是获得快速的压缩过程,但结果并非无损,全域精度可能会受影响。为此,STM32Cube.AI提供了Validation process作为改善措施,以评估压缩过程中所造成的误差。



图六
图六

如下图所示,压缩功能可以在STM32Cube.AI网路设定中使用:


第二种方法是运算融合。将各层合并,再以最隹化资料的位置及相关的运算核心。有些层(例如「Dropout」、「Reshape」)在转换或最隹化的过程中被移除,有些层(例如非线性及卷积层後的「Pooling」)则融入前一层。转换後网路的层数通常低於原始网路,更减少记忆体中的资料传输量。



图七
图七

最後一种方法为最隹化activation memory。定义了一个 R/W 区块,用於储存暂时隐藏层的值(activation运算子的输出)。它可被视为推论函数所用的scratch buffer。Activation memory可以在不同层上被重复使用。因此,activation buffer的大小由两个连续层的最大记忆体需求所定义。


Relocatable二进位模型支援

Non-relocatable方法(或所谓的「静态」方法)指定神经网路的 C档被编译後,与终端使用者应用的stack连结在一起。如下图所示,所有物件(包括神经网路及使用者应用)根据不同资料类型连结到不同的区段。在此情况下,当使用者希??更新函数的特定部分,整个韧体都需要更新。



图八
图八

相对地,relocatable二进位模型指定一个二进位物件,该物件可在STM32记忆体子系统内任何地方安装和执行。它包含被编译後的神经网路 C档,亦包括所需的forward kernel函式以及weights。主要目的是提供更灵活的更新 AI应用方式,即无需重新产生和烧录整个韧体。


产生的二进位物件是一个轻量plug-in,可从任何位址执行(与位置无关的程式),其资料可储存在记忆体的任何地方(与位置无关的资料)。利用STM32Cube.AI简单高效的AI relocatable runtime,可将其实体化并加以利用。复杂及消耗资源的ArmR CortexR -M MCU动态连结器不会嵌入STM32韧体,生成的物件是一个独立实体,在runtime不需要外部symbols或函式。


下图左侧是神经网路的relocatable二进位物件,该物件是独立的,并将放置於终端使用者应用的单独区域(右侧部分)。它可由STM32Cube.AI的relocatable runtime实体化及动态连结。因此,使用者在更改AI模型时,只需更新此部分的binary。也可以进一步选择产生神经网路 weights作为一个独立的物件,以增加灵活性。



图九
图九

如下图所示,relocatable network可以在STM32Cube.AI的进阶设定中启用:



图十
图十

最後,作为 意法半导体AI生态系统的核心工具,STM32Cube.AI提供众多基本或进阶功能,帮助使用者轻松建立高度最隹化和灵活的AI应用。


相关文章
用於工业应用中环境监测的感测器
利用Time-of-Flight感测器开发3D手势辨识
STM32低功耗电脑视觉:类比仪表展示
下一个自动化时代的新网宇实体系统影响
运用FP-AI-VISION1的影像分类器
comments powered by Disqus
  相关新闻
» 经部预告增订产创条例10-2 扩大关键产业投抵优惠
» 意法半导体公布目标200+亿美元营收计画
» NextDrive携手顺益 打造首座车业「企业级虚拟电厂」
» ST:全域快门在车用及元宇宙领域具备更大应用优势
» Wacom与意法半导体和CEVA合作 提升数位笔使用体验
  相关产品
» 意法半导体升级机器学习开发工具--NanoEdge AI Studio成效
» 意法半导体推出适用M2M及与GSMA相容的eSIM卡晶片
» ADI新款Nanopower一次电池健康状态监视器整合精密库仑计数器
» 意法半导体8x8区测距飞行时间感测器创新应用
» 意法半导体 LED电视200W数位电源解决方案满足节能设计高标准