你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

实战经验 | STM32 AI Model Zoo 的安装及实例介绍

[复制链接]
STMCU-管管 发布时间:2025-2-6 09:24
01
6 q7 v$ F+ i7 h8 f5 I% U. J+ o简介 - X+ v. p3 a) j
; N/ N8 ]1 }9 L! z6 w7 c
STM32 Model Zoo是指ST在github上开源的AI相关模型仓库,其包含的应用包括:手势识别,人体活动姿态识别,图片分类,目标检测等相关应用代码,用户可以使用其中的代码进行简单的配置并进行训练,然后使用STM32Cube.AI工具或STM32CubeAI Developer Cloud 得到模型的Flash,Ram等情况,并进行模型的测试验证,然后部署到开发板中。
. e' y2 U# ^5 V$ A. s' s+ h本文将以手势识别为例,介绍Model Zoo的使用。- ], ~; O& `% ^! u& _) `' Y

  ^+ B1 W) R$ v1 ?& y9 p028 B: t- y3 i9 m0 G
环境安装 6 A) I4 z* j1 Y$ u

# s2 l' R' Q1 I* K' s2 Y详细的安装步骤可以参考ST的wiki页面。
% v' O, A3 m; H% D$ l1 L/ A8 v
# S! G/ x- A% E2 r# v2 x3 p2.1. 设置代理等环境变量  `) F: _' b( W; @

5 ]4 u) M; `1 i( F为了后续使用pip进行python包的安装过程顺利进行,需要设置好代理。需要设置的环境变量包括:
6 c+ Q( `' D" r
12.png
注意特殊字符需要编码成utf-8格式,比如@要替换为%40,其他的特殊字符包括%、@、&、!等。stmai_username 和stmai_password 可以不设置,如果不设置,每次访问 stm32CubeAI Devleloper cloud 都需要手动重新输入用户名和密码。
, c! c/ c' j- m  b, E9 }/ e9 y7 L) ^+ t# F- T5 O
2.2. 安装 STM32Cube.AI
0 ]/ w; o# c2 L  n7 N+ k! f
' A  [$ ~) c2 T1 z- P- x. }
可以使用云端的STM32Cube.AI Developer Cloud, 也可以在本地安装STM32Cube.AI。2 q6 e# h/ _, f( i. ~" h6 B6 g

7 o  ^/ d, U& _. e如果使用云端,需要保证网络连接,并且注册 myST 账号,确保自己可以正常访问 STM32Cube.AI Developer Cloud 网站。
) n( w' q6 x- ^3 m
! w9 g$ T& G7 N- a7 }* H0 t8 B
如果使用本地,可以通过CubeMX进行安装。
* i; K. I) H* d9 h9 I$ M- e! u8 {2 G8 c3 [' U/ m
2.3. 安装STM32 model zoo
0 @& h  p7 m9 v3 i+ S3 }! C- p- d0 F7 J
可以使用git或使用zip包获取STM32 model zoo相关的代码。github仓库位于:https://github.com/STMicroelectronics/stm32ai-modelzoo
9 g* P. y3 p% _, F: ?! H& e1. 使用Git:git clone https://github.com/STMicroelectronics/stm32ai-modelzoo.git
0 `% T& e/ r4 }0 V# y2. 使用zip:从git仓库中下载zip压缩包,解压即可。
. y$ b# s. ]2 @& {& ^
8 c$ W# z$ p$ n1 o. Z2.4. 安装Python环境 ' ^- k/ A" c& s- n
$ ^" f/ U  k* W; e
如果没有本地Python,需要安装好Python,推荐Python v3.10.x。可以使用 Python 或miniconda来管理python环境,推荐使用miniconda。具体安装步骤请参考上文提到的ST WIKI页面。
8 v$ r3 W+ @  s5 Q7 D' C7 C7 ]9 Z" Q) q  T+ R3 O
2.5. 安装STM32CubeIDE 3 r( z. y, A9 K9 U

4 j/ ~1 `1 U9 g8 T需要安装STM32CubeIDE 来重新编译生成的固件,安装包可以通过ST官方网站下载。注意:STM32CubeIDE 和 STM32Cube.AI 的安装路径不要有空格,否则可能会出错。% @2 l# N9 M  A( x% y! S7 N
5 g3 a1 K+ G  }# R. q# G! S
2.6. 更新yaml文件
0 A, W. q/ U: F

) @7 \  ?& L9 N+ c$ D. O. F# rModel zoo 中的所有yaml中的path_to_stm32ai 和path_to_cubeIDE,需要和本地的安装目录保持一致。' K$ ]5 d5 ^( w2 i+ R, S
注意:Model zoo使用mlflow管理生成的模型,Windows的最大路径长度限制为 256,可能会导致问题,建议通过注册表修改LogPathsEnabled为1避免该问题。该键位 Computer/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/FileSystem/4 [% B" T& L$ O7 Y( j8 W- n

$ X$ I: b  A. ~9 A) o03& \4 T; r; r- y( \1 v% `
手势识别应用; a1 o9 }9 ?6 {, P2 D; ?- w+ i/ u- a

2 W3 D5 q" Q% y$ u9 I. q' J( C手势识别应用位于stm32ai-modelzoo的hand_posture目录下,使用ST的TOF传感器VL53L5CX或VL53L8CX采集数据。用于识别静态的手势,比如like, dislike, love 等手势。其demo应用部署在NUCLEO-F401RE和X-NUCLEO-53LxA1扩展板组合的开发板上。
( Z! o- f$ p( A9 t8 ]
13.png
▲ 图1. 部署环境和开发板
3.1. 数据集 * D# W) U( \; y
; c7 w) Z% W5 N" }( k
手势识别应用的数据集可以直接使用hand_posture/datasets/目录下的数据集文件:ST_VL53L8CX_handposture_dataset.zip,解压后的数据集如下图所示:
) J1 j7 w+ E8 B
14.png
▲ 图2. 手势数据集
也可以使用ST提供的数据采集和标记工具STSW-IMG035_EVK,进行数据采集和标记。点击进入工具的下载地址。# s* w( l$ M1 i$ W
15.png
▲ 图3. 手势数据采集和标记工具
) c0 x' R) E9 X& E9 f9 |! R5 g
3.2. 配置 2 W7 t5 P. X. o% U, g9 L# q8 X4 R

+ ?2 q7 c1 g' _! N+ W# \" y/ b在stm32ai-modelzoo\hand_posture\src目录下,有user_config.yaml配置文件,里面可以对各种参数进行配置。
) q+ J( m0 ]- @2 J. ~- s! V

) e7 H/ i6 @; x" h: J3.2.1. 训练 0 v3 Z1 a; @- P( t) |) u$ c4 \) R
操作模式operation_mode的配置 - I9 E) w, p/ O( H
操作模式选择training可以进行模型训练,其他可选择的操作模式包括evaluation, deployment, benchmarking。
) w$ r! H% e3 f+ o
16.png
▲ 图4. 选择模式
数据集的配置:
! O7 V) m- ?8 g1 W- H
17.png
▲ 图5. 数据集配置
/ E/ G, X# J: _# G8 h) r# Z9 G
数据集可以来源于仓库的数据集,也可以来源自自己采集的数据,其内容需要和文 件stm32ai-modelzoo\hand_posture\src\utils\handposture_dictionnary.py的数据一致。验证集可以不指定,默认将使用数据集内的20%作为验证。
4 |/ Y; {# g3 x) ^* [预处理和数据增强的配置:. H# }& a1 {* w* N7 ~
18.png
▲ 图6. 预处理和数据增强
preprocessing:! w7 u+ `" U" e5 I! p
- Max_distance:单位为mm,代表传感器的最远距离,如果超过这个距离,就 从数据集中丢弃该帧。
. v4 _5 o, H/ M# t  B7 E- Min_distance:单位为mm,代表传感器的最远距离,如果小于该距离,则从 数据集中丢弃该帧。5 N- C! S3 Z4 k
- Background_distance:单位为mm,手势背景的最大间隔,超过这个间隔的 区域将会被忽略掉。
: A# q9 k+ l, `3 y% K
/ a8 e+ _+ q$ c6 p" gdata_augmetation:
; Y+ j% a% A# d8 Z& q使用数据增强可以在一定程度上提升模型的泛化能力,并且当数据比较少的时候可以补充数据集,目前支持的增强模式包括:水平翻转,垂直翻转,水平+垂直翻转。
5 J- W! J( s  T0 Z  e# F, `8 S训练参数的配置:训练参数的配置如下图7所示,具体内容不再赘述。) `. K  g0 `, ?& W5 ?) d4 I  J
19.png
▲ 图7. 训练参数的配置
3.2.2. 评估 # J; X0 O0 T) {, I
操作模式operation_mode选择评估(evaluation)可以进行模型评估,评估的内容主要包括模型flash,ram的占用量,模型的执行时间等。tools的配置如下:
7 [4 z7 C# a5 p" X5 {* @
20.png
▲ 图8. Tools的配置
* J& |8 I1 b( n/ a
on_cloud:是否需要使用STM32Cube.AI开发者云对模型进行评估,如果不使用云,选择False,则可以使用本地的Cube.AI工具。
8 O' B) ~: u* A6 V
5 Q" ~; h! _9 }% A3 ]* a
path_to_stm32ai和path_to_cubeIDE需要配置成自己本地STM32Cube.AI和 STM32CubeIDE的路径。5 v/ t( N' B5 z
6 l+ J" g# a* G4 c; b# m8 F
3.2.3. 部署) X, D. k5 N  L4 `) Z0 ?

% w# K4 w* W. k; c$ ~操作模式operation_mode选择部署(deployment)可以进行模型部署。当需要部署到ST开发板进行测试时,需要确保以下配置都正确:
5 ^7 E+ p6 U& e1 R, W" f) t2 U
21.png
▲ 图9. 部署相关的配置

: j5 J: w1 t6 V9 f; q# g! o3.3. 运行脚本
9 z- N' Z& v& E% G+ O+ w5 x( R4 [
( l" H9 ~4 ?, `在安装好python环境,并且配置好配置文件之后,就可以运行脚本进行训练,部署或评估流程了。
$ T9 w8 V( Q# K8 O9 Q% a* y2 _# I/ \5 x/ l1 X/ l2 c8 f4 F, P5 M
3.3.1. 模型训练
. `8 t# F6 e/ t直接运行脚本:
# w7 z1 Z) c9 c6 d3 Z➢ python stm32ai_main.py
' Y3 }: T1 K* i- ?5 ]或者指定模式运行脚本:
7 r* c$ Z0 ?2 u. f➢ python stm32ai_main.py operation_mode=”training” ; H) _( \2 J5 {+ f2 I% |( c/ g
训练过程中的输出结果:
5 z! C) G: J- A' ?+ Q4 m
22.png
▲ 图10. 训练中的输出结果
23.png
▲ 图11. 混淆矩阵
训练完成的结果保存在:experiments_outputs/<时间戳>目录下,包含了训练的log,训练曲线,混淆矩阵,模型等信息。4 a, N. E$ ~( q: T  f7 i1 F2 c& ?
9 P1 x( l' ^& h8 G/ v6 L; D
3.3.2. 可视化训练结果
( z; O0 \  E8 {进入logs所在目录(位于experiments_outputs/<时间戳>目录下),然后运行 tensorboard:
" \- M; D' U" v# ^1 z) m➢ tensorboard --logdir logs
+ k; u7 G/ K: @7 z7 {+ N打开网页后,可以看到整个训练过程中的曲线,比如loss曲线,学习率曲线,epoch 曲线等等。
1 j- o  ^0 }7 L! J5 n
24.png
▲ 图12. 准确率曲线
也可以通过mlflow查看实验过程中保存的参数信息,模型实验对比信息等等。进入experiments_outputs目录,然后执行以下命令:
( H$ Z4 h0 g( I/ Y➢ mlflow ui8 m+ Y7 B% y" z1 b! z  H1 ]
25.png
▲ 图13. Mlflow界面
3.3.3. 模型评估
$ i8 H6 J3 y& E) F0 u. ?9 Y4 s0 \将上一步生成的模型路径,填写到user_config.yaml的model_path目录中,然后运行以下命令,可以查看运行模型评估脚本,并查看结果:1 I5 y* O$ C! ~  q" F2 W* E
➢ python stm32ai_main.py operation_mode=”evaluation”  j7 w0 E: A- G' Q
26.png
▲ 图14. 配置文件和模型评估结果
3.3.4. 基准测试
- A! L& \+ W$ T6 p在上一步完成后,可以运行以下命令,进行模型的基准测试,可以获取模型的flash, ram,macc等信息:
. a" q, c5 n+ G$ Q: i➢ python stm32ai_main.py operation_mode=”benchmarking” 7 w1 w& g/ H" Z% p7 B5 A
如果不使用开发者云,使用本地的STM32CubeAI,需要将on_cloud改为False,如下图:* J/ S; K& |  e0 U$ B
27.png
▲ 图15. 配置文件和基准测试
& v6 E' H) \6 b( n9 `0 d5 \- H
3.4. 部署
& t0 M' K7 x9 h7 ~6 r0 v1 S
. Z2 @1 f: J  C% l连接好开发板,设置好STM32CubeIDE的路径后,运行以下命令可以编译工程并部署到开发板:
5 N. _; U+ m4 p5 y  J1 R2 R& v➢ python stm32ai_main.py operation_mode=”deployment”; U4 X2 U8 _8 ~7 B. l( Q$ D- f7 P
28.png
▲ 图16. 部署流程
3.5. 总结 * W1 I/ D8 K- M" y! V- J
本文介绍了STM32 model-zoo的基本内容,并以手势识别为例,介绍了具体的使用方法,包括模型训练,如何查看模型训练后的结果以及如何部署模型。对于其他model zoo 内的应用案例,感兴趣的话可以去github上下载整个仓库,然后进行阅读并使用。
7 e0 g3 T5 F8 I
8 Z; h$ W$ ~) k/ @+ p
▼▼▼
点击按钮下载《STM32 AI Model Zoo的安装及实例介绍》原文档。! j; D3 _) P& z( q) U
点击下载( i) B4 X' n0 {* U, W8 S/ L- c- J
LAT6021_在STM32MP13x系列MPU上裸跑应用程序_v1.0.pdf (3.43 MB, 下载次数: 46)
赞 收藏 1 评论0 发布时间:2025-2-6 09:24

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版