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

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

[复制链接]
STMCU-管管 发布时间:2025-2-6 09:24
01
% V5 ?$ ?- H$ Z: ?9 K8 c6 L简介 ( X' N, \& \) D& g. S3 y2 T) j7 W" n

% ?9 r& ?) r  Q' l& N' KSTM32 Model Zoo是指ST在github上开源的AI相关模型仓库,其包含的应用包括:手势识别,人体活动姿态识别,图片分类,目标检测等相关应用代码,用户可以使用其中的代码进行简单的配置并进行训练,然后使用STM32Cube.AI工具或STM32CubeAI Developer Cloud 得到模型的Flash,Ram等情况,并进行模型的测试验证,然后部署到开发板中。
, `3 ~, B# |, A2 O8 T  T" @9 }本文将以手势识别为例,介绍Model Zoo的使用。
+ u- ~) W4 c  m4 [$ d- p7 u( D6 R5 [; A* k) }, C
026 ?' o" ~) T1 b# t% L1 V  {
环境安装
2 t0 M1 y8 W# J
* H( H) x. \6 K. G( j  j! t详细的安装步骤可以参考ST的wiki页面。4 Q& y( `4 o: ]/ y6 g- S' K8 {1 z

0 y( m6 O" Y6 p4 |& w% K2.1. 设置代理等环境变量
2 J) h, @* A4 F% W* y# B

; C* V9 n" y+ k- E5 q为了后续使用pip进行python包的安装过程顺利进行,需要设置好代理。需要设置的环境变量包括:
$ h+ r7 m, b  T9 A
12.png
注意特殊字符需要编码成utf-8格式,比如@要替换为%40,其他的特殊字符包括%、@、&、!等。stmai_username 和stmai_password 可以不设置,如果不设置,每次访问 stm32CubeAI Devleloper cloud 都需要手动重新输入用户名和密码。
1 J9 q  m9 \3 J. X0 ~  Q. {' p$ b4 F; X- B1 ^
2.2. 安装 STM32Cube.AI
* W. z! e6 E$ b' c0 w

9 c3 k& ~  U* e8 R6 ~! E' d! d1 f+ d可以使用云端的STM32Cube.AI Developer Cloud, 也可以在本地安装STM32Cube.AI。
$ U' H, w, F, f7 I
, w. S1 U) c6 ?3 a' T: K
如果使用云端,需要保证网络连接,并且注册 myST 账号,确保自己可以正常访问 STM32Cube.AI Developer Cloud 网站。* A; Z' k" x/ x& @

* U/ b4 `" E+ Z4 |/ }3 c  |; Z如果使用本地,可以通过CubeMX进行安装。  x1 n4 T( h" |2 t5 P' c) }
4 F; ~4 \7 D* z- z  H  P2 I9 u
2.3. 安装STM32 model zoo
/ o5 b9 s( u4 m: P4 ?1 @- x! |. ~- z7 I
可以使用git或使用zip包获取STM32 model zoo相关的代码。github仓库位于:https://github.com/STMicroelectronics/stm32ai-modelzoo
# w4 A& K& g' C$ l2 v, w7 b: m1. 使用Git:git clone https://github.com/STMicroelectronics/stm32ai-modelzoo.git+ z4 a# O+ L! R
2. 使用zip:从git仓库中下载zip压缩包,解压即可。4 p( [3 `/ `& l5 ^2 H/ q8 D- U
4 ?: R& G- T' J
2.4. 安装Python环境
' H" e* G6 R3 F0 v! [, b3 m
+ ^1 G9 B8 N$ ]& n$ C; i如果没有本地Python,需要安装好Python,推荐Python v3.10.x。可以使用 Python 或miniconda来管理python环境,推荐使用miniconda。具体安装步骤请参考上文提到的ST WIKI页面。/ p; U: v! _( v/ J( M

1 k! Q# T& s: m4 G/ G9 `2.5. 安装STM32CubeIDE
6 F% t$ r% C8 J; ~9 d* W$ `$ K( E% u- v  U+ V$ I9 O# |4 y
需要安装STM32CubeIDE 来重新编译生成的固件,安装包可以通过ST官方网站下载。注意:STM32CubeIDE 和 STM32Cube.AI 的安装路径不要有空格,否则可能会出错。2 Z! r) k% f+ c, `0 r

+ _; h. g: T, X. C2.6. 更新yaml文件
/ y( T( _7 G$ {' S9 [

  L+ M" R: {7 `6 H' ]; a/ {Model zoo 中的所有yaml中的path_to_stm32ai 和path_to_cubeIDE,需要和本地的安装目录保持一致。: G6 T8 b* n; {$ L* o, x
注意:Model zoo使用mlflow管理生成的模型,Windows的最大路径长度限制为 256,可能会导致问题,建议通过注册表修改LogPathsEnabled为1避免该问题。该键位 Computer/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/FileSystem/0 X3 t+ S: y! }6 B& l8 N! u5 K; k
4 F8 N4 u6 l" W3 L7 X* u8 u
030 g) N- e( t% a& s
手势识别应用
% M! L+ B* m5 b0 g7 R, Y3 p0 V$ p6 U) g2 X" i' X$ V7 c% ^  ]6 _& K7 J
手势识别应用位于stm32ai-modelzoo的hand_posture目录下,使用ST的TOF传感器VL53L5CX或VL53L8CX采集数据。用于识别静态的手势,比如like, dislike, love 等手势。其demo应用部署在NUCLEO-F401RE和X-NUCLEO-53LxA1扩展板组合的开发板上。' l3 g7 _7 c% d/ e% }4 b+ L# _
13.png
▲ 图1. 部署环境和开发板
3.1. 数据集 ) n" i5 x( i, q9 }

- [' \6 r! U# |0 ~( d手势识别应用的数据集可以直接使用hand_posture/datasets/目录下的数据集文件:ST_VL53L8CX_handposture_dataset.zip,解压后的数据集如下图所示:
& X, t( Y" }! k# A; _- t; L
14.png
▲ 图2. 手势数据集
也可以使用ST提供的数据采集和标记工具STSW-IMG035_EVK,进行数据采集和标记。点击进入工具的下载地址。# ?3 j9 e/ E) ~
15.png
▲ 图3. 手势数据采集和标记工具
* Z2 R6 X9 a# S% x
3.2. 配置
) ]+ L0 \$ y- V6 {0 w9 |2 d- j$ P3 B3 J
在stm32ai-modelzoo\hand_posture\src目录下,有user_config.yaml配置文件,里面可以对各种参数进行配置。
4 P8 C' d* G2 D( c7 K& Q* s* S
7 _1 i# n( P$ y5 w. v
3.2.1. 训练
. l7 K; X+ Q/ W6 L, ^. ~4 l操作模式operation_mode的配置 1 W5 o& X) S) D1 M( p2 p, u  I
操作模式选择training可以进行模型训练,其他可选择的操作模式包括evaluation, deployment, benchmarking。) D7 c1 y7 o( S7 ?1 r
16.png
▲ 图4. 选择模式
数据集的配置:+ _6 j2 H4 |( U6 x, j$ b9 \4 o& C. b
17.png
▲ 图5. 数据集配置

) O' C0 X6 {  b% C数据集可以来源于仓库的数据集,也可以来源自自己采集的数据,其内容需要和文 件stm32ai-modelzoo\hand_posture\src\utils\handposture_dictionnary.py的数据一致。验证集可以不指定,默认将使用数据集内的20%作为验证。: ^! J' k1 C5 H: z6 N
预处理和数据增强的配置:- L, q9 w9 x  H5 U
18.png
▲ 图6. 预处理和数据增强
preprocessing:9 f+ ~" T+ x1 s
- Max_distance:单位为mm,代表传感器的最远距离,如果超过这个距离,就 从数据集中丢弃该帧。" R. _& a( c, D2 T% c. \" [- V6 z
- Min_distance:单位为mm,代表传感器的最远距离,如果小于该距离,则从 数据集中丢弃该帧。
& _5 Y" \' J, r" V* \6 H- Background_distance:单位为mm,手势背景的最大间隔,超过这个间隔的 区域将会被忽略掉。
# ]/ K+ C6 B, d; B) X( J+ r7 [' r' y5 ]
data_augmetation: 3 R7 C5 C: A/ `# e7 D
使用数据增强可以在一定程度上提升模型的泛化能力,并且当数据比较少的时候可以补充数据集,目前支持的增强模式包括:水平翻转,垂直翻转,水平+垂直翻转。" R* G1 x1 U- O3 ^, D5 |; h0 {
训练参数的配置:训练参数的配置如下图7所示,具体内容不再赘述。
  t  C! b8 w: S) w( N
19.png
▲ 图7. 训练参数的配置
3.2.2. 评估 : a6 q; V+ U2 ^
操作模式operation_mode选择评估(evaluation)可以进行模型评估,评估的内容主要包括模型flash,ram的占用量,模型的执行时间等。tools的配置如下:5 v9 V8 H' e# ~: p/ c  Q* x' ?
20.png
▲ 图8. Tools的配置
7 S9 M# N- f- N  _) y
on_cloud:是否需要使用STM32Cube.AI开发者云对模型进行评估,如果不使用云,选择False,则可以使用本地的Cube.AI工具。
, _) y* j# W8 V! r$ X% h1 W7 f5 k- I) X
path_to_stm32ai和path_to_cubeIDE需要配置成自己本地STM32Cube.AI和 STM32CubeIDE的路径。
* ^( P: V9 h& H+ N) M
) T- O( w6 q( a- B7 K2 f3.2.3. 部署
, C" z! D5 r' p& l" x1 v2 M& s

$ _  [3 u6 H- S4 j0 Y5 M操作模式operation_mode选择部署(deployment)可以进行模型部署。当需要部署到ST开发板进行测试时,需要确保以下配置都正确:# ]+ f  ?. t% W
21.png
▲ 图9. 部署相关的配置
1 L  P8 z' U1 D2 D
3.3. 运行脚本
% A; n- P& P# \: v9 k7 N) [0 W! ~; Z$ e
在安装好python环境,并且配置好配置文件之后,就可以运行脚本进行训练,部署或评估流程了。
! `! {& M' [, K* f
4 a7 b7 M$ c6 v/ E3.3.1. 模型训练
3 E, X2 G6 e1 s: `8 U( E2 l/ n5 f( U直接运行脚本:- n, f; d, t. h' f! G: Y0 p
➢ python stm32ai_main.py
+ z- f7 d- J0 x) r; u或者指定模式运行脚本:' y1 J, O* k9 V6 Y
➢ python stm32ai_main.py operation_mode=”training”
3 m5 P9 M' P4 i% g& s7 F' K训练过程中的输出结果:
7 L/ k5 |9 V! M4 ~
22.png
▲ 图10. 训练中的输出结果
23.png
▲ 图11. 混淆矩阵
训练完成的结果保存在:experiments_outputs/<时间戳>目录下,包含了训练的log,训练曲线,混淆矩阵,模型等信息。
% u+ ]! v# y7 [3 P, U6 {" g8 N  M: d2 d2 [; }: e' N" o
3.3.2. 可视化训练结果 $ s$ V; B5 `6 {3 ]) k3 S
进入logs所在目录(位于experiments_outputs/<时间戳>目录下),然后运行 tensorboard: 0 {6 h% u5 G1 F3 @( u
➢ tensorboard --logdir logs
1 Y" X1 v2 ]# h2 R$ E5 M5 z打开网页后,可以看到整个训练过程中的曲线,比如loss曲线,学习率曲线,epoch 曲线等等。
7 r+ N  z! R  t- m
24.png
▲ 图12. 准确率曲线
也可以通过mlflow查看实验过程中保存的参数信息,模型实验对比信息等等。进入experiments_outputs目录,然后执行以下命令:
: o2 v$ h8 Q( t$ p8 k5 g7 s, {➢ mlflow ui
: k$ ^3 E) ]+ g# N: M! d4 v1 r
25.png
▲ 图13. Mlflow界面
3.3.3. 模型评估
: g2 k3 `7 e9 L* D; ?将上一步生成的模型路径,填写到user_config.yaml的model_path目录中,然后运行以下命令,可以查看运行模型评估脚本,并查看结果:9 S; c# I" N# u: r. W
➢ python stm32ai_main.py operation_mode=”evaluation”
: b& h8 L5 X; v, `
26.png
▲ 图14. 配置文件和模型评估结果
3.3.4. 基准测试
% o- _# S0 ~, {! J% x3 k& _" ?6 l' v在上一步完成后,可以运行以下命令,进行模型的基准测试,可以获取模型的flash, ram,macc等信息:
" Q2 L  ]% ^9 s; Z  |➢ python stm32ai_main.py operation_mode=”benchmarking”
' S  I" e. h/ S如果不使用开发者云,使用本地的STM32CubeAI,需要将on_cloud改为False,如下图:( `$ k- A3 t# C5 d9 r( A1 T
27.png
▲ 图15. 配置文件和基准测试

$ y$ r: T3 p. ?7 b9 F. |) ^3.4. 部署
1 x/ w5 k! B4 [6 U: x' @4 \; U$ \7 Z! v2 I1 T
连接好开发板,设置好STM32CubeIDE的路径后,运行以下命令可以编译工程并部署到开发板:; o$ r3 ?3 M- l' A, f0 ?
➢ python stm32ai_main.py operation_mode=”deployment”' f) |  w* P5 H7 I9 w6 e5 f
28.png
▲ 图16. 部署流程
3.5. 总结
8 D7 c. {# `6 C, [& s  D0 X本文介绍了STM32 model-zoo的基本内容,并以手势识别为例,介绍了具体的使用方法,包括模型训练,如何查看模型训练后的结果以及如何部署模型。对于其他model zoo 内的应用案例,感兴趣的话可以去github上下载整个仓库,然后进行阅读并使用。
6 w2 \8 Q& `. i/ E. D

/ J/ i) \2 X$ T9 q, S3 h; ^4 Z
▼▼▼
点击按钮下载《STM32 AI Model Zoo的安装及实例介绍》原文档。
; z8 a8 o! H9 h8 S" _0 Y点击下载
; V8 ~/ S7 n! H+ f9 w; {+ t LAT6021_在STM32MP13x系列MPU上裸跑应用程序_v1.0.pdf (3.43 MB, 下载次数: 16)
收藏 1 评论0 发布时间:2025-2-6 09:24

举报

0个回答

所属标签

相似分享

官网相关资源

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