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

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

[复制链接]
STMCU-管管 发布时间:2025-2-6 09:24
01
4 s& L, c% l5 A2 o: q( u简介 1 f: g, t" R1 }) g7 x$ b

- e: Z& o  Z8 g8 c5 s: }STM32 Model Zoo是指ST在github上开源的AI相关模型仓库,其包含的应用包括:手势识别,人体活动姿态识别,图片分类,目标检测等相关应用代码,用户可以使用其中的代码进行简单的配置并进行训练,然后使用STM32Cube.AI工具或STM32CubeAI Developer Cloud 得到模型的Flash,Ram等情况,并进行模型的测试验证,然后部署到开发板中。
3 f0 m8 N- N$ y; g+ c本文将以手势识别为例,介绍Model Zoo的使用。
4 C2 v" m) ^0 D
. c: ?0 J" ?# `7 j7 ?6 r02: {. E6 p5 R& }3 d5 f, I! `
环境安装
9 }7 K1 e* l+ Y7 J/ [' G4 X: i1 X1 j8 L: f
详细的安装步骤可以参考ST的wiki页面。! R/ h" d( |. K

9 V" {3 ]: G; j2 A1 p+ t3 k2.1. 设置代理等环境变量: i! @5 K  J! Q

+ e+ p+ W3 b' m; c+ ^4 O1 ]为了后续使用pip进行python包的安装过程顺利进行,需要设置好代理。需要设置的环境变量包括:( ?7 K. X* a8 A' X
12.png
注意特殊字符需要编码成utf-8格式,比如@要替换为%40,其他的特殊字符包括%、@、&、!等。stmai_username 和stmai_password 可以不设置,如果不设置,每次访问 stm32CubeAI Devleloper cloud 都需要手动重新输入用户名和密码。( b! S3 o5 `" }, }" F9 b( I

, K" G4 [' [6 S% {2.2. 安装 STM32Cube.AI
  [% g* v+ D# ?( N9 k
: n2 v! G, W& {2 d
可以使用云端的STM32Cube.AI Developer Cloud, 也可以在本地安装STM32Cube.AI。
* L0 O# s0 P* D  D% |

0 o1 L- |* T9 I如果使用云端,需要保证网络连接,并且注册 myST 账号,确保自己可以正常访问 STM32Cube.AI Developer Cloud 网站。* B  [4 {5 W2 d9 I; d: e

+ Z' A. x' ~0 f如果使用本地,可以通过CubeMX进行安装。- R/ S. G9 m- M3 R
) I( r) j1 G1 V/ b# `7 f) c  Y) |
2.3. 安装STM32 model zoo 9 M# ?# b/ W% G2 n& @
3 X2 y% K4 z. a3 `7 \. G) M' _+ A
可以使用git或使用zip包获取STM32 model zoo相关的代码。github仓库位于:https://github.com/STMicroelectronics/stm32ai-modelzoo
# N3 M/ G2 R+ w: ]4 n1. 使用Git:git clone https://github.com/STMicroelectronics/stm32ai-modelzoo.git. J' M# C& ~3 @3 q7 @% D- d  M4 ]
2. 使用zip:从git仓库中下载zip压缩包,解压即可。
5 P  j9 I( o) B# b7 i
; E+ r% I2 r9 _# |7 ?; q5 n' O% A- T2.4. 安装Python环境
: M0 ^& }6 O; W4 I1 c8 b6 j' R. ]: q( i8 K
如果没有本地Python,需要安装好Python,推荐Python v3.10.x。可以使用 Python 或miniconda来管理python环境,推荐使用miniconda。具体安装步骤请参考上文提到的ST WIKI页面。
9 ~3 j3 \/ I% U9 i( E) O( r% V" o/ s7 e' Q5 m' _( m2 A% f) o
2.5. 安装STM32CubeIDE
4 [5 [( _) c- B% z4 {4 K7 ]) M8 U; [& ^. T2 V) ~, r
需要安装STM32CubeIDE 来重新编译生成的固件,安装包可以通过ST官方网站下载。注意:STM32CubeIDE 和 STM32Cube.AI 的安装路径不要有空格,否则可能会出错。
+ t+ {* i! ]# D7 ~, Q* z. U, g) R) x+ i- t0 O
2.6. 更新yaml文件
0 [" R$ m: R- V# ?9 A: ~1 |
( _- Y( \5 g2 [" h. }$ d
Model zoo 中的所有yaml中的path_to_stm32ai 和path_to_cubeIDE,需要和本地的安装目录保持一致。" S1 l4 @* v; ~# r
注意:Model zoo使用mlflow管理生成的模型,Windows的最大路径长度限制为 256,可能会导致问题,建议通过注册表修改LogPathsEnabled为1避免该问题。该键位 Computer/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/FileSystem/
! F# L% Q6 z5 W) }3 A% s2 C3 F! n2 g; y1 n- t7 ?" j
03) {& c2 R7 t6 M
手势识别应用
; U4 z! ]# ]2 Y4 d2 o
4 a, P( j4 Z. R+ I7 P手势识别应用位于stm32ai-modelzoo的hand_posture目录下,使用ST的TOF传感器VL53L5CX或VL53L8CX采集数据。用于识别静态的手势,比如like, dislike, love 等手势。其demo应用部署在NUCLEO-F401RE和X-NUCLEO-53LxA1扩展板组合的开发板上。
) W+ z8 W9 W( }9 d2 S" E: B
13.png
▲ 图1. 部署环境和开发板
3.1. 数据集
, l% a) j9 d3 i8 A2 i$ i
4 u) c' ]7 S& U6 S. w5 K手势识别应用的数据集可以直接使用hand_posture/datasets/目录下的数据集文件:ST_VL53L8CX_handposture_dataset.zip,解压后的数据集如下图所示:
6 }* _2 z+ S7 j/ c! [
14.png
▲ 图2. 手势数据集
也可以使用ST提供的数据采集和标记工具STSW-IMG035_EVK,进行数据采集和标记。点击进入工具的下载地址。" L9 \) z7 J6 M! w  s
15.png
▲ 图3. 手势数据采集和标记工具

/ w" _8 {1 j4 a0 V2 T3.2. 配置
3 p1 t; p9 O  a3 n. w
% q& [! o: @* I8 D8 E& N在stm32ai-modelzoo\hand_posture\src目录下,有user_config.yaml配置文件,里面可以对各种参数进行配置。# O! ~/ h/ M7 V- J; d

) t3 m0 W5 |. H: d" v+ m, c1 A* v6 p3.2.1. 训练 - q2 {4 D6 ]+ r2 a' ?3 i
操作模式operation_mode的配置 1 k: x6 h; F  y+ b6 ]
操作模式选择training可以进行模型训练,其他可选择的操作模式包括evaluation, deployment, benchmarking。/ S$ r' I* W" I8 _5 b& Y1 a
16.png
▲ 图4. 选择模式
数据集的配置:
% R1 l( @) e* I' s, G# Z
17.png
▲ 图5. 数据集配置
* @. f3 e1 C& Q$ I2 |
数据集可以来源于仓库的数据集,也可以来源自自己采集的数据,其内容需要和文 件stm32ai-modelzoo\hand_posture\src\utils\handposture_dictionnary.py的数据一致。验证集可以不指定,默认将使用数据集内的20%作为验证。) K! O4 ~( R' _. p$ u2 m
预处理和数据增强的配置:
- c$ ~! v8 X7 [% V" }
18.png
▲ 图6. 预处理和数据增强
preprocessing:
4 E1 @" Y3 ^- N! R0 v  w- Max_distance:单位为mm,代表传感器的最远距离,如果超过这个距离,就 从数据集中丢弃该帧。' Q& G3 W9 r% Q" V( f/ F
- Min_distance:单位为mm,代表传感器的最远距离,如果小于该距离,则从 数据集中丢弃该帧。
$ p7 p5 S3 a0 f3 g4 H. R% o- Background_distance:单位为mm,手势背景的最大间隔,超过这个间隔的 区域将会被忽略掉。
7 k* H  p6 E) U3 M# b9 |7 M! I# B
data_augmetation:
0 e* V6 B. m( h1 h: y- _  ]- l' O! ]使用数据增强可以在一定程度上提升模型的泛化能力,并且当数据比较少的时候可以补充数据集,目前支持的增强模式包括:水平翻转,垂直翻转,水平+垂直翻转。
" A; |# i; `0 e& N训练参数的配置:训练参数的配置如下图7所示,具体内容不再赘述。4 N, E. T5 M7 m5 |* l
19.png
▲ 图7. 训练参数的配置
3.2.2. 评估 , E% }# U. ]6 Z% _
操作模式operation_mode选择评估(evaluation)可以进行模型评估,评估的内容主要包括模型flash,ram的占用量,模型的执行时间等。tools的配置如下:
) V* C+ @. x9 E3 V/ n
20.png
▲ 图8. Tools的配置

6 j0 f. c) I* c6 Uon_cloud:是否需要使用STM32Cube.AI开发者云对模型进行评估,如果不使用云,选择False,则可以使用本地的Cube.AI工具。/ L$ c' S' I  t& [( L9 h

8 c+ R- W' j/ _! Y- g( J2 W
path_to_stm32ai和path_to_cubeIDE需要配置成自己本地STM32Cube.AI和 STM32CubeIDE的路径。
! ]1 x5 }) j4 }$ _# W* y
, j- ]- Q5 Z) |; J. [8 |; s- a3.2.3. 部署
" M% W6 d5 s& g' X: z4 |
+ z5 h5 N, S' b( j* D4 ^- [
操作模式operation_mode选择部署(deployment)可以进行模型部署。当需要部署到ST开发板进行测试时,需要确保以下配置都正确:1 T9 }/ F! ?9 S( H" B5 X
21.png
▲ 图9. 部署相关的配置
/ m8 i+ r% \" {7 Q4 I" ~% C
3.3. 运行脚本 , a4 l$ b% L# j; b; P0 h7 w
9 o( p( j6 }) ~! \
在安装好python环境,并且配置好配置文件之后,就可以运行脚本进行训练,部署或评估流程了。
& m8 b; F9 m2 I5 s. r; K8 |+ p1 A$ Z8 c! z, C. W
3.3.1. 模型训练
$ M; b2 R2 [  Y( f直接运行脚本:
2 Z+ |6 I# }6 f➢ python stm32ai_main.py
$ G- q0 m; N2 ~或者指定模式运行脚本:/ Q; D# z! f8 Y4 ^+ _) W8 L
➢ python stm32ai_main.py operation_mode=”training”
' D, s- R0 o9 U: n2 M/ Q* H训练过程中的输出结果:
/ S3 A2 s! \# o7 D: v, w* H; ?
22.png
▲ 图10. 训练中的输出结果
23.png
▲ 图11. 混淆矩阵
训练完成的结果保存在:experiments_outputs/<时间戳>目录下,包含了训练的log,训练曲线,混淆矩阵,模型等信息。  L& V( h7 {: y$ U
1 o3 I  \! i2 u( y$ D, d! c( q
3.3.2. 可视化训练结果
1 {" V& s! i# o0 g8 s进入logs所在目录(位于experiments_outputs/<时间戳>目录下),然后运行 tensorboard: ' u- G! o+ j/ z6 G
➢ tensorboard --logdir logs , N8 ?4 G! U. \# A9 I8 o. o- n4 M
打开网页后,可以看到整个训练过程中的曲线,比如loss曲线,学习率曲线,epoch 曲线等等。
0 S- C( R$ s' J+ p
24.png
▲ 图12. 准确率曲线
也可以通过mlflow查看实验过程中保存的参数信息,模型实验对比信息等等。进入experiments_outputs目录,然后执行以下命令:
9 e8 K6 S8 n2 U4 c' l( N➢ mlflow ui/ Y8 h7 E$ p" `3 t  ~1 o
25.png
▲ 图13. Mlflow界面
3.3.3. 模型评估 % U8 l+ C: M' Z; ]3 i
将上一步生成的模型路径,填写到user_config.yaml的model_path目录中,然后运行以下命令,可以查看运行模型评估脚本,并查看结果:& [, o" d9 P' L: x5 ^
➢ python stm32ai_main.py operation_mode=”evaluation”
* \5 g+ O! T3 {: c+ Y* {! @9 u
26.png
▲ 图14. 配置文件和模型评估结果
3.3.4. 基准测试
  i* x1 h% Q7 K5 N3 J在上一步完成后,可以运行以下命令,进行模型的基准测试,可以获取模型的flash, ram,macc等信息:8 q3 I8 u( h' n/ p0 `/ i
➢ python stm32ai_main.py operation_mode=”benchmarking”
8 e8 S/ w. @5 ]. `+ |3 }如果不使用开发者云,使用本地的STM32CubeAI,需要将on_cloud改为False,如下图:: O1 j+ q7 }# d6 K9 Z. J
27.png
▲ 图15. 配置文件和基准测试
; M+ [9 R& v9 `' O+ g1 F5 L; l9 T+ f8 N1 G
3.4. 部署 ! f3 k) w7 v5 R# p

( f% e! |( F9 R- ~6 I* U# W连接好开发板,设置好STM32CubeIDE的路径后,运行以下命令可以编译工程并部署到开发板:
* P; k- R! r% V* E$ U➢ python stm32ai_main.py operation_mode=”deployment”6 v* h8 O+ }/ [0 p
28.png
▲ 图16. 部署流程
3.5. 总结
+ R  c- E1 x4 ^' u4 q' g本文介绍了STM32 model-zoo的基本内容,并以手势识别为例,介绍了具体的使用方法,包括模型训练,如何查看模型训练后的结果以及如何部署模型。对于其他model zoo 内的应用案例,感兴趣的话可以去github上下载整个仓库,然后进行阅读并使用。
" X' q8 N$ e4 [: ~, l" \

% z! e+ e0 J+ |5 f
▼▼▼
点击按钮下载《STM32 AI Model Zoo的安装及实例介绍》原文档。
( c, X0 w# k& C点击下载+ W4 o4 }/ F3 F  N! [
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 手机版