【官方原创】STM32 AI Model Zoo的安装及实例介绍 LAT1431
关键字:AI, ModelZoo
1. 简介
STM32 Model Zoo是指ST在github上开源的AI相关模型仓库,其包含的应用包括:手
势识别,人体活动姿态识别,图片分类,目标检测等相关应用代码,用户可以使用其中的代码进
行简单的配置并进行训练,然后使用STM32Cube.AI工具或STM32CubeAI Developer Cloud
得到模型的Flash,Ram等情况,并进行模型的测试验证,然后部署到开发板中。
本文将以手势识别为例,介绍Model Zoo的使用。
2. 环境安装
详细的安装步骤可以参考ST的wiki页面:
https://wiki.stmicroelectronics.cn/stm32mcu/index.php?title=AI:How_to_install_ST
M32_model_zoo
2.1. 设置代理等环境变量
为了后续使用pip进行python包的安装过程顺利进行,需要设置好代理。
需要设置的环境变量包括:


注意特殊字符需要编码成utf-8格式,比如@要替换为%40,其他的特殊字符包
括%,@,&,!等。stmai_username 和stmai_password 可以不设置,如果不设置,那每次访问
stm32CubeAI Devleloper cloud 每次都需要手动重新输入用户名和密码。
2.2. 安装 STM32Cube.AI
可以使用云端的STM32Cube.AI Developer Cloud, 也可以在本地安装STM32Cube.AI.
• 如果使用云端,需要保证网络连接,并且注册 myST 账号,确保自己可以正常访问
STM32Cube.AI Developer Cloud 网站.
• 如果使用本地,可以通过CubeMX进行安装。
2.3. 安装STM32 model zoo
可以使用git或使用zip包获取STM32 model zoo相关的代码。github仓库位于:
https://github.com/STMicroelectronics/stm32ai-modelzoo
1. 使用Git: git clone https://github.com/STMicroelectronics/stm32ai-modelzoo.git
2. 使用zip:从git仓库中下载zip压缩包,解压即可。
2.4. 安装Python环境
如果没有本地Python,需要安装好Python,推荐Python v3.10.x。可以使用
Python 或miniconda来管理python环境,推荐使用miniconda。具体安装步骤请参考
上文提到的ST WIKI页面。
2.5. 安装STM32CubeIDE
需要安装STM32CubeIDE 来重新编译生成的固件,安装包可以通过ST官方网站下载。
注意:STM32CubeIDE 和 STM32Cube.AI 的安装路径不要有空格,否则可能会出错。
2.6. 更新yaml文件
Model zoo 中的所有yaml中的path_to_stm32ai 和path_to_cubeIDE,需要和本地
的安装目录保持一致。
注意:Model zoo使用mlflow管理生成的模型,Windows的最大路径长度限制为
256,可能会导致问题,建议通过注册表修改LogPathsEnabled为1避免该问题。该键位
Computer/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/FileSyste
m/
3. 手势识别应用
手势识别应用位于stm32ai-modelzoo的hand_posture目录下,使用ST的TOF传
感器VL53L5CX或VL53L8CX采集数据。用于识别静态的手势,比如like, dislike, love
等手势。其demo应用部署在NUCLEO-F401RE和X-NUCLEO-53LxA1扩展板组合的开
发板上。

图1. 部署环境和开发板
3.1. 数据集
手势识别应用的数据集可以直接使用hand_posture/datasets/目录下的数据集文件:
ST_VL53L8CX_handposture_dataset.zip,解压后的数据集如下图所示:

图2. 手势数据集
也可以使用ST提供的数据采集和标记工具STSW-IMG035_EVK,进行数据采集和标
记。工具的下载地址:https://www.st.com/en/embedded-software/stsw
img035.html

图3. 手势数据采集和标记工具
3.2. 配置
在stm32ai-modelzoo\hand_posture\src目录下,有user_config.yaml配置文件,
里面可以对各种参数进行配置。
3.2.1. 训练
操作模式operation_mode的配置
操作模式选择training可以进行模型训练,其他可选择的操作模式包括evaluation,
deployment, benchmarking。

图4. 选择模式
数据集的配置:

图5. 数据集配置
数据集可以来源于仓库的数据集,也可以来源自自己采集的数据集,其内容需要和文
件stm32ai-modelzoo\hand_posture\src\utils\handposture_dictionnary.py内的数据
一致。验证集可以不指定 ,默认将使用数据集内的20%作为验证。
预处理和数据增强的配置:

图6. 预处理和数据增强
• preprocessing:
o Max_distance: 单位为mm, 代表传感器的最远距离,如果超过这个距离,就
从数据集中丢弃该帧。
o Min_distance: 单位为mm, 代表传感器的最远距离,如果小于该距离,则从
数据集中丢弃该帧。
o Background_distance: 单位为mm, 手势背景的最大间隔,超过这个间隔的
区域将会被忽略掉。
• data_augmetation:
使用数据增强可以在一定程度上提升模型的泛化能力,并且当数据比较少的时候可以
补充数据集,目前支持的增强模式包括:水平翻转,垂直翻转,水平+垂直翻转。
训练参数的配置:
训练参数的配置如下图7所示,具体内容不再赘述。

图7. 训练参数的配置
3.2.2. 评估
操作模式operation_mode选择评估(evaluation)可以进行模型评估,评估的内容
主要包括模型flash,ram的占用量,模型的执行时间等。
tools的配置如下:

图8. Tools的配置
on_cloud:是否需要使用STM32Cube.AI开发者云对模型进行评估,如果不使用云,
选择False,则可以使用本地的Cube.AI工具。
path_to_stm32ai和path_to_cubeIDE需要配置成自己本地STM32Cube.AI和
STM32CubeIDE的路径。
3.2.3. 部署
操作模式operation_mode选择部署(deployment)可以进行模型部署。当需要部
署到ST开发板进行测试时,需要确保以下配置都正确:

图9. 部署相关的配置
3.3. 运行脚本
在安装好python环境,并且配置好配置文件之后,就可以运行脚本进行训练,部署
或评估流程了。
3.3.1.模型训练
直接运行脚本:
➢ python stm32ai_main.py
或者指定模式运行脚本:
➢ python stm32ai_main.py operation_mode=”training”
训练过程中的输出结果:

图10. 训练中的输出结果

图11. 混淆矩阵
训练完成的结果保存在:experiments_outputs/<时间戳>目录下,包含了训练的log,
训练曲线,混淆矩阵,模型等信息。
3.3.2. 可视化训练结果
进入logs所在目录(位于experiments_outputs/<时间戳>目录下),然后运行
tensorboard:
➢ tensorboard --logdir logs
打开网页后,可以看到整个训练过程中的曲线,比如loss曲线,学习率曲线,epoch
曲线等等。

图12. 准确率曲线
也可以通过mlflow查看实验过程中保存的参数信息,模型实验对比信息等等。
进入experiments_outputs目录,然后执行以下命令:
➢ mlflow ui

图13. Mlflow界面
3.3.3. 模型评估
将上一步生成的模型路径,填写到user_config.yaml的model_path目录中,然后运
行以下命令,可以查看运行模型评估脚本,并查看结果:
➢ python stm32ai_main.py operation_mode=”evaluation”

图14. 配置文件和模型评估结果
3.3.4. 基准测试
在上一步完成后,可以运行以下命令,进行模型的基准测试,可以获取模型的flash,
ram,macc等信息:
➢ python stm32ai_main.py operation_mode=”benchmarking”
如果不使用开发者云,使用本地的STM32CubeAI,需要将on_cloud改为False,如
下图:

图15. 配置文件和基准测试
3.4. 部署
连接好开发板,设置好STM32CubeIDE的路径后,运行以下命令可以编译工程并部
署到开发板:
➢ python stm32ai_main.py operation_mode=”deployment”

图16. 部署流程
3.5. 总结
本文介绍了STM32 model-zoo的基本内容,并以手势识别为例,介绍了具体的使用
方法,包括模型训练,如何查看模型训练后的结果以及如何部署模型。对于其他model
zoo 内的应用案例,感兴趣的话可以去github上下载整个仓库,然后进行阅读并使用。
重要通知 - 请仔细阅读 意法半导体公司及其子公司 (“ST”)保留随时对 ST 产品和 / 或本文档进行变更的权利,恕不另行通知。买方在订货之前应获取关于 ST 产 品的最新信息。 ST 产品的销售依照订单确认时的相关 ST 销售条款。 买方自行负责对 ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任。 ST 不对任何知识产权进行任何明示或默示的授权或许可。 转售的 ST 产品如有不同于此处提供的信息的规定,将导致 ST 针对该产品授予的任何保证失效。 ST 和 ST 徽标是 ST 的商标。若需 ST 商标的更多信息,请参考 www.st.com/trademarks。所有其他产品或服务名称均为其 各自所有者的财 产。 本文档是ST中国本地团队的技术性文章,旨在交流与分享,并期望借此给予客户产品应用上足够的帮助或提醒。若文中内容存有局限或与ST 官网资料不一致,请以实际应用验证结果和ST官网最新发布的内容为准。您拥有完全自主权是否采纳本文档(包括代码,电路图等)信息, 我们也不承担因使用或采纳本文档内容而导致的任何风险。 本文档中的信息取代本文档所有早期版本中提供的信息。 © 2020 STMicroelectronics - 保留所有权利
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)