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

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

[复制链接]
STMCU-管管 发布时间:2025-2-6 09:24
01" Y' f" ~  h* A  N% }1 m
简介
& U- y, s7 a6 L0 F: e1 O
- f* i; Y* R. h9 V3 l7 w3 D5 q$ sSTM32 Model Zoo是指ST在github上开源的AI相关模型仓库,其包含的应用包括:手势识别,人体活动姿态识别,图片分类,目标检测等相关应用代码,用户可以使用其中的代码进行简单的配置并进行训练,然后使用STM32Cube.AI工具或STM32CubeAI Developer Cloud 得到模型的Flash,Ram等情况,并进行模型的测试验证,然后部署到开发板中。
; K+ F1 ~8 h8 u0 a本文将以手势识别为例,介绍Model Zoo的使用。% v) F1 u0 O2 O* P8 X; X( \6 {5 D
/ Y( h3 W" G1 {$ l# f* {
02& z. M: ^0 _3 L, g; D8 }/ s. m. G
环境安装
9 t& r* C( l& e( q
  z% v5 A: g. {详细的安装步骤可以参考ST的wiki页面。/ ~) k; n! D0 G* a2 z3 F! P9 s
+ m$ F, L' U2 Q7 d+ D* K
2.1. 设置代理等环境变量( r- a1 L5 S2 `; g* W5 w
9 p4 @8 a( G0 K& y" W
为了后续使用pip进行python包的安装过程顺利进行,需要设置好代理。需要设置的环境变量包括:7 x* a. {9 E8 a0 F
12.png
注意特殊字符需要编码成utf-8格式,比如@要替换为%40,其他的特殊字符包括%、@、&、!等。stmai_username 和stmai_password 可以不设置,如果不设置,每次访问 stm32CubeAI Devleloper cloud 都需要手动重新输入用户名和密码。. V6 ?9 t/ N/ c+ G! c
/ Z- ]( |4 I* x# N
2.2. 安装 STM32Cube.AI( E. Q# ?3 S* O7 e- y7 a
3 Y1 |9 }( Q4 ?- Y9 ^
可以使用云端的STM32Cube.AI Developer Cloud, 也可以在本地安装STM32Cube.AI。
. z4 i, e2 x( R# d

4 L& ?7 Q" m  t; _如果使用云端,需要保证网络连接,并且注册 myST 账号,确保自己可以正常访问 STM32Cube.AI Developer Cloud 网站。7 I9 F( \" X  O8 y  e

9 x( r- Q; Q# c: v; T如果使用本地,可以通过CubeMX进行安装。
" @4 F6 p- m7 j6 i
% v3 ^1 L, o* C2.3. 安装STM32 model zoo
" X' C4 |# h$ _2 C3 v% c& p
- u9 s8 Y5 b2 w+ N) i! \/ B可以使用git或使用zip包获取STM32 model zoo相关的代码。github仓库位于:https://github.com/STMicroelectronics/stm32ai-modelzoo
) N1 n8 j; ?7 a- B- c4 [1. 使用Git:git clone https://github.com/STMicroelectronics/stm32ai-modelzoo.git
1 V; p- Q# g' G4 m( l2 L; ]2. 使用zip:从git仓库中下载zip压缩包,解压即可。
2 `- r' N2 F6 u5 |5 X8 ]' ^1 P& w7 s. d5 k
2.4. 安装Python环境 5 m5 Q# y. ]: u/ R/ o
+ f2 T* E2 z5 F- ^+ w, |0 \
如果没有本地Python,需要安装好Python,推荐Python v3.10.x。可以使用 Python 或miniconda来管理python环境,推荐使用miniconda。具体安装步骤请参考上文提到的ST WIKI页面。  k' r% o9 X, K9 F- a

& T: a8 c+ ]- H1 }2.5. 安装STM32CubeIDE
3 X8 m  `, t2 \$ e5 Z  J) h: N, f& H; a
需要安装STM32CubeIDE 来重新编译生成的固件,安装包可以通过ST官方网站下载。注意:STM32CubeIDE 和 STM32Cube.AI 的安装路径不要有空格,否则可能会出错。8 R% R& A# p/ J
) R% N4 ]6 u6 B5 W! u( M/ G
2.6. 更新yaml文件
" b: w3 O. S* c" \! z7 t

8 k, @" s) z9 L" e& VModel zoo 中的所有yaml中的path_to_stm32ai 和path_to_cubeIDE,需要和本地的安装目录保持一致。% b: D& |5 g3 ~- j
注意:Model zoo使用mlflow管理生成的模型,Windows的最大路径长度限制为 256,可能会导致问题,建议通过注册表修改LogPathsEnabled为1避免该问题。该键位 Computer/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/FileSystem/: u8 Q0 t6 @1 ~$ F
5 h& y* C1 \. e
03* w# B% F( v3 ?0 w% m' C7 E8 ~7 o
手势识别应用7 X; y7 R- u: ?# L" r2 S% I
" ]& L; @& N: o; T/ ~
手势识别应用位于stm32ai-modelzoo的hand_posture目录下,使用ST的TOF传感器VL53L5CX或VL53L8CX采集数据。用于识别静态的手势,比如like, dislike, love 等手势。其demo应用部署在NUCLEO-F401RE和X-NUCLEO-53LxA1扩展板组合的开发板上。
+ T( H$ s; `  p7 N
13.png
▲ 图1. 部署环境和开发板
3.1. 数据集 ! T( S+ x; q0 {; ]
7 n/ K% B$ ~2 B
手势识别应用的数据集可以直接使用hand_posture/datasets/目录下的数据集文件:ST_VL53L8CX_handposture_dataset.zip,解压后的数据集如下图所示:
. D; [8 l! m4 X; j  E# s0 z0 X  j* a. u
14.png
▲ 图2. 手势数据集
也可以使用ST提供的数据采集和标记工具STSW-IMG035_EVK,进行数据采集和标记。点击进入工具的下载地址。
' w: ^3 x; g, V( I$ N8 U
15.png
▲ 图3. 手势数据采集和标记工具

1 k' O0 q3 o1 _, P3.2. 配置   ~8 V; |/ M+ }

3 M; E( r( c( i在stm32ai-modelzoo\hand_posture\src目录下,有user_config.yaml配置文件,里面可以对各种参数进行配置。& [4 r' A0 S* p. `7 f
; w- V2 N$ e5 G- Q/ B+ ]
3.2.1. 训练
9 k. y9 P7 n: y4 Y3 |9 I& M操作模式operation_mode的配置
5 g3 `" _  o2 @0 n' k' r7 g5 o操作模式选择training可以进行模型训练,其他可选择的操作模式包括evaluation, deployment, benchmarking。9 u4 ?8 V& E/ X9 F4 O
16.png
▲ 图4. 选择模式
数据集的配置:8 J  U; j7 m0 ?3 A5 f
17.png
▲ 图5. 数据集配置
* |4 V) C% D! h5 K2 l2 B5 u
数据集可以来源于仓库的数据集,也可以来源自自己采集的数据,其内容需要和文 件stm32ai-modelzoo\hand_posture\src\utils\handposture_dictionnary.py的数据一致。验证集可以不指定,默认将使用数据集内的20%作为验证。9 c* c# }3 K! P4 J6 n
预处理和数据增强的配置:8 P) G5 L# G- j, I
18.png
▲ 图6. 预处理和数据增强
preprocessing:( ]& z; Y( b5 e
- Max_distance:单位为mm,代表传感器的最远距离,如果超过这个距离,就 从数据集中丢弃该帧。
! L6 i+ ]; g+ p, J# E, ]3 v- Min_distance:单位为mm,代表传感器的最远距离,如果小于该距离,则从 数据集中丢弃该帧。
3 k4 _1 T5 t: Q: ~' g& l0 N- Background_distance:单位为mm,手势背景的最大间隔,超过这个间隔的 区域将会被忽略掉。. u1 t4 ^/ M7 K7 I
; ~0 A6 S/ p3 @3 D* v9 _- X
data_augmetation:
( K4 s9 ^& a0 f8 N使用数据增强可以在一定程度上提升模型的泛化能力,并且当数据比较少的时候可以补充数据集,目前支持的增强模式包括:水平翻转,垂直翻转,水平+垂直翻转。  r. r) M+ }% Q8 Y" x) S4 M. n
训练参数的配置:训练参数的配置如下图7所示,具体内容不再赘述。2 M& d: a# i' D! _: z
19.png
▲ 图7. 训练参数的配置
3.2.2. 评估
. M( Y% B! l5 e操作模式operation_mode选择评估(evaluation)可以进行模型评估,评估的内容主要包括模型flash,ram的占用量,模型的执行时间等。tools的配置如下:
1 h+ P, c& `+ r. I1 p! t* Z
20.png
▲ 图8. Tools的配置
, X  W/ T8 k9 I$ s+ M
on_cloud:是否需要使用STM32Cube.AI开发者云对模型进行评估,如果不使用云,选择False,则可以使用本地的Cube.AI工具。
. J) m1 a; o, M! x+ W$ }( I1 w1 r3 s7 y
path_to_stm32ai和path_to_cubeIDE需要配置成自己本地STM32Cube.AI和 STM32CubeIDE的路径。
  [4 t3 |! a$ p- g* [9 `8 C# [) l" l4 T  X( b
3.2.3. 部署6 P9 g7 ?- ]. f( p
6 D3 j+ {* \( O4 G! N" l! X
操作模式operation_mode选择部署(deployment)可以进行模型部署。当需要部署到ST开发板进行测试时,需要确保以下配置都正确:! W7 d3 ?9 b$ g
21.png
▲ 图9. 部署相关的配置
# ], K5 q+ X/ d: m, |3 q/ }0 m
3.3. 运行脚本 0 @1 ?  c4 t+ T5 `3 ^0 t) e

: I( \, \/ i, r( k# F在安装好python环境,并且配置好配置文件之后,就可以运行脚本进行训练,部署或评估流程了。1 E0 y7 Y; R$ X2 q# j, L: b
& V4 ?) H, w2 Z, f; {/ L) V
3.3.1. 模型训练 , h/ Q9 ?" k  U5 p
直接运行脚本:' t4 w1 G+ ?: f# M4 p7 v0 W
➢ python stm32ai_main.py
: @+ F" [7 j1 p( Z( m$ _3 E或者指定模式运行脚本:
8 e) M) j$ q' F/ A➢ python stm32ai_main.py operation_mode=”training”
0 D: b, R$ h; t0 n训练过程中的输出结果:2 h/ c  _4 t) j. h
22.png
▲ 图10. 训练中的输出结果
23.png
▲ 图11. 混淆矩阵
训练完成的结果保存在:experiments_outputs/<时间戳>目录下,包含了训练的log,训练曲线,混淆矩阵,模型等信息。
1 k7 V# N& D, d$ D5 Q4 |7 U/ r: u# K- D5 w
3.3.2. 可视化训练结果 ! Z* ?6 H; x2 V, W- d" \' V
进入logs所在目录(位于experiments_outputs/<时间戳>目录下),然后运行 tensorboard:
, t! W0 y. f0 h' A➢ tensorboard --logdir logs
- ^$ m+ w3 m* w! f: y6 d打开网页后,可以看到整个训练过程中的曲线,比如loss曲线,学习率曲线,epoch 曲线等等。  a4 h7 r7 x8 R5 W
24.png
▲ 图12. 准确率曲线
也可以通过mlflow查看实验过程中保存的参数信息,模型实验对比信息等等。进入experiments_outputs目录,然后执行以下命令:+ w2 n8 s+ W5 G4 o& B; H6 `
➢ mlflow ui( k6 o; p" N. G) z: @
25.png
▲ 图13. Mlflow界面
3.3.3. 模型评估 ) Y9 e9 p8 t3 D$ a
将上一步生成的模型路径,填写到user_config.yaml的model_path目录中,然后运行以下命令,可以查看运行模型评估脚本,并查看结果:
+ F& M3 R9 s8 K6 z- {) ?➢ python stm32ai_main.py operation_mode=”evaluation”) d  b+ w1 S1 S& p8 C
26.png
▲ 图14. 配置文件和模型评估结果
3.3.4. 基准测试
9 E% |8 y  P. A+ f' D$ @; B# u在上一步完成后,可以运行以下命令,进行模型的基准测试,可以获取模型的flash, ram,macc等信息:
) ~& f2 |* q, Q+ l➢ python stm32ai_main.py operation_mode=”benchmarking” + E$ {! c) n: B2 R9 X
如果不使用开发者云,使用本地的STM32CubeAI,需要将on_cloud改为False,如下图:
4 E( }) u' P7 r3 Z3 H
27.png
▲ 图15. 配置文件和基准测试
9 ]  l3 e9 v1 Z  s: L
3.4. 部署
( i7 d. W1 v; I/ c8 `. o
" m: c( m/ d3 q( {& j连接好开发板,设置好STM32CubeIDE的路径后,运行以下命令可以编译工程并部署到开发板:& @  I" q& Q. ~; |- S. C
➢ python stm32ai_main.py operation_mode=”deployment”
6 ^0 C5 C" X4 V, B( _/ U' V- Z
28.png
▲ 图16. 部署流程
3.5. 总结
' b9 X$ F9 M' ?本文介绍了STM32 model-zoo的基本内容,并以手势识别为例,介绍了具体的使用方法,包括模型训练,如何查看模型训练后的结果以及如何部署模型。对于其他model zoo 内的应用案例,感兴趣的话可以去github上下载整个仓库,然后进行阅读并使用。4 P: d* c- q6 w6 N% `7 [/ t1 c

% K# U: P4 E. v! V( X4 Y
▼▼▼
点击按钮下载《STM32 AI Model Zoo的安装及实例介绍》原文档。
( U5 @. |3 t0 A: Q: Z2 L点击下载- M. I6 q# i. R$ y3 F, P
LAT6021_在STM32MP13x系列MPU上裸跑应用程序_v1.0.pdf (3.43 MB, 下载次数: 4)
收藏 评论0 发布时间:2025-2-6 09:24

举报

0个回答

所属标签

相似分享

官网相关资源

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