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

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

[复制链接]
STMCU-管管 发布时间:2025-2-6 09:24
01; p4 M" K& F% D( M) ]
简介 0 a* j5 `( w- Y
) v8 Q4 ?0 b8 f$ I( @4 S1 W
STM32 Model Zoo是指ST在github上开源的AI相关模型仓库,其包含的应用包括:手势识别,人体活动姿态识别,图片分类,目标检测等相关应用代码,用户可以使用其中的代码进行简单的配置并进行训练,然后使用STM32Cube.AI工具或STM32CubeAI Developer Cloud 得到模型的Flash,Ram等情况,并进行模型的测试验证,然后部署到开发板中。! v, i0 h" u# c7 [2 V
本文将以手势识别为例,介绍Model Zoo的使用。- z9 b6 H3 T4 W9 `" Q' B

9 b/ c0 D$ @( g& [  a02
. ]" ?; v, b) m7 b环境安装
2 Z) n1 _$ T; H5 R$ Y1 I
, M& q) v. K, J7 f3 w% a4 Z详细的安装步骤可以参考ST的wiki页面。0 U7 k; f, V& \2 [
7 a% t- b( q3 R4 U
2.1. 设置代理等环境变量
9 b0 \% W+ c- f, o  U
0 F4 K: i" i9 y0 h9 g
为了后续使用pip进行python包的安装过程顺利进行,需要设置好代理。需要设置的环境变量包括:5 r( ]; M  ?; Q) G$ `3 r
12.png
注意特殊字符需要编码成utf-8格式,比如@要替换为%40,其他的特殊字符包括%、@、&、!等。stmai_username 和stmai_password 可以不设置,如果不设置,每次访问 stm32CubeAI Devleloper cloud 都需要手动重新输入用户名和密码。6 n5 i. P* |' k% w  K5 M
. R) W8 n* s8 M0 W$ a
2.2. 安装 STM32Cube.AI8 p7 ~' p6 P8 g& k
3 Q, T! s* E2 G
可以使用云端的STM32Cube.AI Developer Cloud, 也可以在本地安装STM32Cube.AI。' Q. P, J& R" b

) g( t7 q1 K1 z8 e如果使用云端,需要保证网络连接,并且注册 myST 账号,确保自己可以正常访问 STM32Cube.AI Developer Cloud 网站。
: _, f2 X: c2 y1 a8 r$ S$ v- H5 h
3 J- N7 K7 T0 g+ o5 r; |
如果使用本地,可以通过CubeMX进行安装。! r! b7 G6 F+ U( a2 a' c

+ ]4 _5 E% x) u+ n2.3. 安装STM32 model zoo
  \& [4 p5 U* S. x  `9 c+ c$ H! S- i' O& t5 q" T0 M4 B, N( d9 y
可以使用git或使用zip包获取STM32 model zoo相关的代码。github仓库位于:https://github.com/STMicroelectronics/stm32ai-modelzoo" V% b# ~3 x; I# h
1. 使用Git:git clone https://github.com/STMicroelectronics/stm32ai-modelzoo.git2 ]( e; S6 S- G2 C0 ^/ m: m
2. 使用zip:从git仓库中下载zip压缩包,解压即可。" ]% f; @/ q5 ]- b: Y  f2 [

" r# i) [! \& c+ V2.4. 安装Python环境
. M0 x  v7 d* K! z+ A5 |- R' N5 a- D$ U9 D9 N: P, g0 s( g5 v
如果没有本地Python,需要安装好Python,推荐Python v3.10.x。可以使用 Python 或miniconda来管理python环境,推荐使用miniconda。具体安装步骤请参考上文提到的ST WIKI页面。
& e, ~% R. T& I* u$ S4 c) I, v! ]4 u/ l
% v' Z- `* M/ B. k2.5. 安装STM32CubeIDE
- Y% b0 \" Z9 d  @% q  K; Z- ^: w# i" E
需要安装STM32CubeIDE 来重新编译生成的固件,安装包可以通过ST官方网站下载。注意:STM32CubeIDE 和 STM32Cube.AI 的安装路径不要有空格,否则可能会出错。  ~& l: Z1 ?2 q7 w7 N( W2 A: Z7 o

: u1 L: h4 J( O2.6. 更新yaml文件/ y0 C& X- R! o4 |; H* M7 x

& G$ Q& u# a& ~Model zoo 中的所有yaml中的path_to_stm32ai 和path_to_cubeIDE,需要和本地的安装目录保持一致。
3 a. @. ^3 a. g9 A注意:Model zoo使用mlflow管理生成的模型,Windows的最大路径长度限制为 256,可能会导致问题,建议通过注册表修改LogPathsEnabled为1避免该问题。该键位 Computer/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/FileSystem/  J& Z; C$ I. Z3 J. `" p3 R7 v! ]4 `
1 G9 j" I8 V, f5 n
03% w" a' z. x; \( K" O" N$ t2 a
手势识别应用
" G* E+ @+ N( z) _
' }, _5 O7 x: U2 G/ |. D手势识别应用位于stm32ai-modelzoo的hand_posture目录下,使用ST的TOF传感器VL53L5CX或VL53L8CX采集数据。用于识别静态的手势,比如like, dislike, love 等手势。其demo应用部署在NUCLEO-F401RE和X-NUCLEO-53LxA1扩展板组合的开发板上。
  x3 k: x/ n7 d. U& Q
13.png
▲ 图1. 部署环境和开发板
3.1. 数据集 . E/ }$ O' m! R2 ]5 D

4 f4 W# K/ C) Y( ~  I9 `手势识别应用的数据集可以直接使用hand_posture/datasets/目录下的数据集文件:ST_VL53L8CX_handposture_dataset.zip,解压后的数据集如下图所示:7 [- A! g' D) x$ q8 w" g  S. i2 S
14.png
▲ 图2. 手势数据集
也可以使用ST提供的数据采集和标记工具STSW-IMG035_EVK,进行数据采集和标记。点击进入工具的下载地址。
8 _4 d: x, v6 _: N( t: j
15.png
▲ 图3. 手势数据采集和标记工具
/ I/ s* z0 G" p" Q$ i/ N) G4 D1 ^% N6 Z
3.2. 配置
. {! f- x4 C8 [5 s+ v' \
1 Z4 g4 S: \2 a4 n1 p8 A在stm32ai-modelzoo\hand_posture\src目录下,有user_config.yaml配置文件,里面可以对各种参数进行配置。
% R. a4 i) O1 f8 K, a& C) p

. N( y0 w! Z/ B& V/ g, c3.2.1. 训练
9 N: Y+ O8 U+ w* |/ A操作模式operation_mode的配置
- H' {. H" w7 I( L操作模式选择training可以进行模型训练,其他可选择的操作模式包括evaluation, deployment, benchmarking。8 t" Q, v" {) [" C6 e
16.png
▲ 图4. 选择模式
数据集的配置:
% B2 X3 U- \$ O9 Q$ U% |# R, E2 v
17.png
▲ 图5. 数据集配置
7 l  G! N, c, T9 k
数据集可以来源于仓库的数据集,也可以来源自自己采集的数据,其内容需要和文 件stm32ai-modelzoo\hand_posture\src\utils\handposture_dictionnary.py的数据一致。验证集可以不指定,默认将使用数据集内的20%作为验证。
2 w% b  r4 u6 d3 i0 @) N& e预处理和数据增强的配置:% A3 }0 Y. R! H9 v9 v
18.png
▲ 图6. 预处理和数据增强
preprocessing:7 s" A( v) i& q9 y' k  l& W
- Max_distance:单位为mm,代表传感器的最远距离,如果超过这个距离,就 从数据集中丢弃该帧。# X; `& `  F# _" y  d8 c' {2 l
- Min_distance:单位为mm,代表传感器的最远距离,如果小于该距离,则从 数据集中丢弃该帧。
' @9 w# }% E+ z. ^( R- Background_distance:单位为mm,手势背景的最大间隔,超过这个间隔的 区域将会被忽略掉。
' m  n6 f3 i3 v7 z3 T4 z
* G1 a- b, I* o# \/ D7 m2 ]% Odata_augmetation:
% W" w6 x' I. j, K: s4 B使用数据增强可以在一定程度上提升模型的泛化能力,并且当数据比较少的时候可以补充数据集,目前支持的增强模式包括:水平翻转,垂直翻转,水平+垂直翻转。2 B8 B: Q, t" x& ~/ t2 K% b
训练参数的配置:训练参数的配置如下图7所示,具体内容不再赘述。3 T4 O; `  C* G$ a5 `( u% t  g
19.png
▲ 图7. 训练参数的配置
3.2.2. 评估
6 S( I, H# V5 O" e操作模式operation_mode选择评估(evaluation)可以进行模型评估,评估的内容主要包括模型flash,ram的占用量,模型的执行时间等。tools的配置如下:* m# R% X0 @, m
20.png
▲ 图8. Tools的配置

. ]' W) b% z! a9 l: non_cloud:是否需要使用STM32Cube.AI开发者云对模型进行评估,如果不使用云,选择False,则可以使用本地的Cube.AI工具。3 d, m5 \' C$ D3 u
5 Y2 j/ E% @" a; H' Z0 l
path_to_stm32ai和path_to_cubeIDE需要配置成自己本地STM32Cube.AI和 STM32CubeIDE的路径。4 b( J& w3 n. X! G1 I

/ N0 X+ O0 t8 J* D: A0 b$ B3.2.3. 部署
7 n/ D2 C1 W" @. t( T
( K3 m3 ]3 v1 l( v1 v; k
操作模式operation_mode选择部署(deployment)可以进行模型部署。当需要部署到ST开发板进行测试时,需要确保以下配置都正确:
8 |) O2 H9 j/ l+ i2 o/ |3 j% H
21.png
▲ 图9. 部署相关的配置

( a7 }3 c( y7 m+ s9 b" ^3.3. 运行脚本 ; d# s$ k2 O" P- [6 w
. _1 L+ d( v0 i: A7 D5 b
在安装好python环境,并且配置好配置文件之后,就可以运行脚本进行训练,部署或评估流程了。
' @4 f: c- l' U1 p7 o, f. }' h6 w( O- ^* E& O. ?
3.3.1. 模型训练 4 n) q* d" d! A0 @
直接运行脚本:! Z) i' p  m& q
➢ python stm32ai_main.py . W( l. l1 H, Z6 S  a- J  E" Q
或者指定模式运行脚本:; c# U2 h# J2 h. C
➢ python stm32ai_main.py operation_mode=”training”
* q5 @3 u. w6 ^  B7 ]5 I0 x8 B训练过程中的输出结果:5 i/ P* T& z" ?6 i0 b
22.png
▲ 图10. 训练中的输出结果
23.png
▲ 图11. 混淆矩阵
训练完成的结果保存在:experiments_outputs/<时间戳>目录下,包含了训练的log,训练曲线,混淆矩阵,模型等信息。
) N$ T) ?' i7 p/ P( b- ?. A8 Q. M: D8 z* J6 [) D; h
3.3.2. 可视化训练结果 2 y! `! [  h; p; x) `( w
进入logs所在目录(位于experiments_outputs/<时间戳>目录下),然后运行 tensorboard: ( H7 _( m1 G1 C9 S) U/ B4 L7 c
➢ tensorboard --logdir logs / U9 \$ k, }) z
打开网页后,可以看到整个训练过程中的曲线,比如loss曲线,学习率曲线,epoch 曲线等等。
! ^3 M* Z- G4 c9 `, S/ D! N- I
24.png
▲ 图12. 准确率曲线
也可以通过mlflow查看实验过程中保存的参数信息,模型实验对比信息等等。进入experiments_outputs目录,然后执行以下命令:
+ L* i7 m2 ~7 N; h! Z' z  J➢ mlflow ui% H3 n- f) ^* Y9 d, l+ _: Q& m
25.png
▲ 图13. Mlflow界面
3.3.3. 模型评估
1 |4 D* W9 m- v$ p0 T3 K将上一步生成的模型路径,填写到user_config.yaml的model_path目录中,然后运行以下命令,可以查看运行模型评估脚本,并查看结果:
* M( W' F% x& w/ x! L➢ python stm32ai_main.py operation_mode=”evaluation”
) ~' V* F# {. m& M6 a. S3 r1 A  X
26.png
▲ 图14. 配置文件和模型评估结果
3.3.4. 基准测试 : e) \( A# G$ U0 u
在上一步完成后,可以运行以下命令,进行模型的基准测试,可以获取模型的flash, ram,macc等信息:; `, w, t' S  P. V, O
➢ python stm32ai_main.py operation_mode=”benchmarking” & D) p7 X# k& W8 c% D
如果不使用开发者云,使用本地的STM32CubeAI,需要将on_cloud改为False,如下图:
$ G0 D* u3 h0 K; K! Z
27.png
▲ 图15. 配置文件和基准测试

3 K( G1 D9 W4 k+ Y' l' v) Y( F" U3.4. 部署 % g# F% d6 G. o! [8 }- E
4 H" f; ~0 k" ?
连接好开发板,设置好STM32CubeIDE的路径后,运行以下命令可以编译工程并部署到开发板:$ p: {, C- x5 c9 d
➢ python stm32ai_main.py operation_mode=”deployment”( Q0 T0 ^' g7 _4 P* Z
28.png
▲ 图16. 部署流程
3.5. 总结
7 V3 b: r& N1 o/ m0 G本文介绍了STM32 model-zoo的基本内容,并以手势识别为例,介绍了具体的使用方法,包括模型训练,如何查看模型训练后的结果以及如何部署模型。对于其他model zoo 内的应用案例,感兴趣的话可以去github上下载整个仓库,然后进行阅读并使用。
9 T, K# U/ C5 v7 z9 _! D

/ m; M+ R0 O" X) r$ u7 E; m
▼▼▼
点击按钮下载《STM32 AI Model Zoo的安装及实例介绍》原文档。
, d( n" a6 c. o; H8 L9 K5 S: s点击下载
) |! h0 y" ^+ ^5 j7 u LAT6021_在STM32MP13x系列MPU上裸跑应用程序_v1.0.pdf (3.43 MB, 下载次数: 10)
收藏 1 评论0 发布时间:2025-2-6 09:24

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版