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

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

[复制链接]
STMCU-管管 发布时间:2025-2-6 09:24
01$ k- e4 P2 u9 a2 H! c; ?& C0 u/ s
简介 ; E6 n) p- n( r7 c8 i: S) ~

* Q0 p" f1 @/ eSTM32 Model Zoo是指ST在github上开源的AI相关模型仓库,其包含的应用包括:手势识别,人体活动姿态识别,图片分类,目标检测等相关应用代码,用户可以使用其中的代码进行简单的配置并进行训练,然后使用STM32Cube.AI工具或STM32CubeAI Developer Cloud 得到模型的Flash,Ram等情况,并进行模型的测试验证,然后部署到开发板中。9 r7 w# R: O* |1 A! T) ~
本文将以手势识别为例,介绍Model Zoo的使用。0 L) K) ^' f: w

$ l5 p( D9 t6 n$ F9 ~02# g; ^7 p, H7 O7 g: d3 B
环境安装 , v7 K. A3 ^9 S  P
, R& i8 e' y- D2 e8 b5 Q# w$ i: O
详细的安装步骤可以参考ST的wiki页面。* p* P% V* S( g1 R, H# c+ t/ G

; O3 O1 I1 n4 v7 c7 C9 N2.1. 设置代理等环境变量
( N! X6 |# Q2 Y

5 L1 H2 s! [* a0 O7 E为了后续使用pip进行python包的安装过程顺利进行,需要设置好代理。需要设置的环境变量包括:
! w* D- W# @6 }  X, ]
12.png
注意特殊字符需要编码成utf-8格式,比如@要替换为%40,其他的特殊字符包括%、@、&、!等。stmai_username 和stmai_password 可以不设置,如果不设置,每次访问 stm32CubeAI Devleloper cloud 都需要手动重新输入用户名和密码。
. g* Y! u( r$ m' s2 E5 G7 \/ w
, f8 z7 Z: L  g2.2. 安装 STM32Cube.AI
/ ]. _3 k6 z$ z9 u! U! {

" j' r' c! p) O3 B4 m+ A; W$ U可以使用云端的STM32Cube.AI Developer Cloud, 也可以在本地安装STM32Cube.AI。+ |, F5 Y2 G( l" a
5 u4 o3 r. d$ P/ C& G* u! u) l
如果使用云端,需要保证网络连接,并且注册 myST 账号,确保自己可以正常访问 STM32Cube.AI Developer Cloud 网站。, ~) D' [  L4 h2 F  l2 ]; R6 k0 ^7 h

: g+ ^6 Y' p4 ]( x如果使用本地,可以通过CubeMX进行安装。
( W9 N! w! Y# F! J  T  ?
+ C$ i; \! I! Q) `" H2 @# I2.3. 安装STM32 model zoo & j5 H9 a! k! v% u& ]; S* Z

* n6 e4 y  b) x2 K% |3 L* R可以使用git或使用zip包获取STM32 model zoo相关的代码。github仓库位于:https://github.com/STMicroelectronics/stm32ai-modelzoo: J) B( }! Z1 ]8 J; u* k) c
1. 使用Git:git clone https://github.com/STMicroelectronics/stm32ai-modelzoo.git" ~4 s  ]4 C7 G9 P' o+ C0 K
2. 使用zip:从git仓库中下载zip压缩包,解压即可。
& r% S, c  m+ I, }! w" U- J; b, d! K8 @7 D. Y/ u) x+ Z4 S- K4 O
2.4. 安装Python环境
% ]- Z$ k/ N) m0 s+ g
' [! O, m5 @& I% }) j如果没有本地Python,需要安装好Python,推荐Python v3.10.x。可以使用 Python 或miniconda来管理python环境,推荐使用miniconda。具体安装步骤请参考上文提到的ST WIKI页面。
% o9 `* z# ]) I. E1 b0 L
; g0 t2 _$ i/ |1 {( T2.5. 安装STM32CubeIDE ; `8 n( K3 \/ e# L2 Q

1 S$ J) @7 u. m" b; m' k4 p2 v需要安装STM32CubeIDE 来重新编译生成的固件,安装包可以通过ST官方网站下载。注意:STM32CubeIDE 和 STM32Cube.AI 的安装路径不要有空格,否则可能会出错。
! B* f5 ?$ D1 p- c2 T. u, [  [8 v1 s* S
2.6. 更新yaml文件
8 o6 l7 H. m# E
3 Y( ]4 e$ x4 H$ g5 V4 T% T
Model zoo 中的所有yaml中的path_to_stm32ai 和path_to_cubeIDE,需要和本地的安装目录保持一致。
3 c4 ]: |9 I* y% d: u4 {* I注意:Model zoo使用mlflow管理生成的模型,Windows的最大路径长度限制为 256,可能会导致问题,建议通过注册表修改LogPathsEnabled为1避免该问题。该键位 Computer/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/FileSystem/
! G) E5 P) b, z' \) ?. o& _/ G9 F0 @+ D2 |% I
034 R: E9 \1 W6 Y" m
手势识别应用
1 E8 \5 P8 e: Q+ W5 I: M
) H3 ~$ |" u1 X) Z1 t' z手势识别应用位于stm32ai-modelzoo的hand_posture目录下,使用ST的TOF传感器VL53L5CX或VL53L8CX采集数据。用于识别静态的手势,比如like, dislike, love 等手势。其demo应用部署在NUCLEO-F401RE和X-NUCLEO-53LxA1扩展板组合的开发板上。) V; b4 e# G  n" I% O) d
13.png
▲ 图1. 部署环境和开发板
3.1. 数据集
- c! b5 }7 h1 I
4 p  ]4 t' S! k, U( g手势识别应用的数据集可以直接使用hand_posture/datasets/目录下的数据集文件:ST_VL53L8CX_handposture_dataset.zip,解压后的数据集如下图所示:
2 R$ ~+ `1 |4 X
14.png
▲ 图2. 手势数据集
也可以使用ST提供的数据采集和标记工具STSW-IMG035_EVK,进行数据采集和标记。点击进入工具的下载地址。
. ?5 N6 m! V# L# e! P- Q3 O& k
15.png
▲ 图3. 手势数据采集和标记工具
8 F! J9 u( o: c; g
3.2. 配置
, F1 E! o. l) {( l" x6 k- }( z9 J0 i! v; X0 f
在stm32ai-modelzoo\hand_posture\src目录下,有user_config.yaml配置文件,里面可以对各种参数进行配置。& \! x" X. ]' X/ T& x7 ^6 y8 W
" j/ [8 \( e0 S9 w
3.2.1. 训练 ' {6 u% y* j. N& H( j/ U1 W
操作模式operation_mode的配置 % Q  a) Q% S) Q$ m* Z$ n
操作模式选择training可以进行模型训练,其他可选择的操作模式包括evaluation, deployment, benchmarking。+ q! D& M: @  V0 _8 q
16.png
▲ 图4. 选择模式
数据集的配置:
6 G- |' d2 u) W9 g
17.png
▲ 图5. 数据集配置

0 O0 Q  d7 A0 g: `3 C数据集可以来源于仓库的数据集,也可以来源自自己采集的数据,其内容需要和文 件stm32ai-modelzoo\hand_posture\src\utils\handposture_dictionnary.py的数据一致。验证集可以不指定,默认将使用数据集内的20%作为验证。' \" I+ ^# `! N
预处理和数据增强的配置:
$ C4 ~% g9 S( m9 N
18.png
▲ 图6. 预处理和数据增强
preprocessing:- {- A3 |& F! t
- Max_distance:单位为mm,代表传感器的最远距离,如果超过这个距离,就 从数据集中丢弃该帧。
4 c3 H7 {0 u$ |' ?3 H- Min_distance:单位为mm,代表传感器的最远距离,如果小于该距离,则从 数据集中丢弃该帧。5 }2 q  J0 E+ R. `, g; o8 V
- Background_distance:单位为mm,手势背景的最大间隔,超过这个间隔的 区域将会被忽略掉。
/ A( y; E, Q, k/ c" Y- l$ J4 Z  i. F
data_augmetation: 2 W8 h9 _% T! H, ]+ `
使用数据增强可以在一定程度上提升模型的泛化能力,并且当数据比较少的时候可以补充数据集,目前支持的增强模式包括:水平翻转,垂直翻转,水平+垂直翻转。
  Z/ N1 l+ _7 A训练参数的配置:训练参数的配置如下图7所示,具体内容不再赘述。, o' Q3 T' g' ]5 Z0 e- a8 [8 p
19.png
▲ 图7. 训练参数的配置
3.2.2. 评估 ) D5 w$ N* a2 ^8 n$ q: G
操作模式operation_mode选择评估(evaluation)可以进行模型评估,评估的内容主要包括模型flash,ram的占用量,模型的执行时间等。tools的配置如下:6 y4 [- P7 A6 @
20.png
▲ 图8. Tools的配置
( [3 }6 ]+ @; J4 b" b$ u. D$ \; T
on_cloud:是否需要使用STM32Cube.AI开发者云对模型进行评估,如果不使用云,选择False,则可以使用本地的Cube.AI工具。8 u1 b/ I$ q8 `- {

& G4 a8 k$ E; {" c: j4 N
path_to_stm32ai和path_to_cubeIDE需要配置成自己本地STM32Cube.AI和 STM32CubeIDE的路径。' u8 Z# v" ?' I; \4 L: J5 O- `4 h
( y6 S  L* b/ J; E& x1 y5 G8 ]
3.2.3. 部署
& b" a1 f4 W7 U' Q- ]) e

4 ~& n  p* u+ Z, Y4 p操作模式operation_mode选择部署(deployment)可以进行模型部署。当需要部署到ST开发板进行测试时,需要确保以下配置都正确:( D2 ]0 W3 X) n2 v9 F. T+ ~
21.png
▲ 图9. 部署相关的配置
+ q' Q9 J. ~7 Z" @2 A4 k
3.3. 运行脚本
4 J) i7 a0 W' W+ a) c
# \3 e4 A) n" ?$ A8 Z) }5 f在安装好python环境,并且配置好配置文件之后,就可以运行脚本进行训练,部署或评估流程了。; B) T  S. n5 {& K+ M0 O

& R( x' ^1 z0 T3.3.1. 模型训练
5 }/ c$ K. O8 d' N  M- C直接运行脚本:
% s/ _. R9 f/ j0 y3 g; t8 P➢ python stm32ai_main.py
+ h2 P0 X2 Y3 q- u: D! Q; v0 M或者指定模式运行脚本:
# w2 E6 \7 _- S, I) O  q4 G➢ python stm32ai_main.py operation_mode=”training”
; H; o% K5 }8 o7 M1 p; V; x: j训练过程中的输出结果:
- }9 J0 m" I& n/ h0 B0 Y; e$ j
22.png
▲ 图10. 训练中的输出结果
23.png
▲ 图11. 混淆矩阵
训练完成的结果保存在:experiments_outputs/<时间戳>目录下,包含了训练的log,训练曲线,混淆矩阵,模型等信息。. e5 R8 f- z; s2 l2 R

0 Z% F0 q& O: _& ]3.3.2. 可视化训练结果
0 a$ o1 X: L/ |3 H+ Z& ?9 s进入logs所在目录(位于experiments_outputs/<时间戳>目录下),然后运行 tensorboard: ! O. w3 t9 \/ {/ o4 m8 z
➢ tensorboard --logdir logs
3 k: A/ ~9 C2 ~& o: X3 Y( y( r1 K打开网页后,可以看到整个训练过程中的曲线,比如loss曲线,学习率曲线,epoch 曲线等等。
  D& r) G# N- R7 [' r! Q8 y$ x
24.png
▲ 图12. 准确率曲线
也可以通过mlflow查看实验过程中保存的参数信息,模型实验对比信息等等。进入experiments_outputs目录,然后执行以下命令:) ~0 t/ I9 r7 G
➢ mlflow ui
* _' |4 [: K# r# L8 d
25.png
▲ 图13. Mlflow界面
3.3.3. 模型评估
: G6 }: E4 @, O9 e( Z将上一步生成的模型路径,填写到user_config.yaml的model_path目录中,然后运行以下命令,可以查看运行模型评估脚本,并查看结果:* `. r& y4 F2 c7 N; N- O
➢ python stm32ai_main.py operation_mode=”evaluation”
+ }  v* {1 ]# \2 |0 J$ A
26.png
▲ 图14. 配置文件和模型评估结果
3.3.4. 基准测试 # n) ]! r0 v; T2 }
在上一步完成后,可以运行以下命令,进行模型的基准测试,可以获取模型的flash, ram,macc等信息:* q4 x7 \; g6 E+ F$ b! |
➢ python stm32ai_main.py operation_mode=”benchmarking” & i- r+ O# c. S6 @0 ]) L
如果不使用开发者云,使用本地的STM32CubeAI,需要将on_cloud改为False,如下图:+ V' U. g7 v9 p) w! C
27.png
▲ 图15. 配置文件和基准测试
9 X; _# C! m9 S# u
3.4. 部署   U/ P8 `+ a* \8 ^7 {( `$ ^

3 K# S( y; u; t; E: i, P4 t连接好开发板,设置好STM32CubeIDE的路径后,运行以下命令可以编译工程并部署到开发板:
  x! @- C) h& q! L➢ python stm32ai_main.py operation_mode=”deployment”( x3 I0 T9 S4 Y
28.png
▲ 图16. 部署流程
3.5. 总结
& p$ E( P! }5 T) v本文介绍了STM32 model-zoo的基本内容,并以手势识别为例,介绍了具体的使用方法,包括模型训练,如何查看模型训练后的结果以及如何部署模型。对于其他model zoo 内的应用案例,感兴趣的话可以去github上下载整个仓库,然后进行阅读并使用。$ |7 u7 L( E/ H4 i$ N
8 }& Q7 v* e; G- O' S+ c+ S8 ~
▼▼▼
点击按钮下载《STM32 AI Model Zoo的安装及实例介绍》原文档。4 S+ [( W7 l* ^
点击下载
/ D: _$ E# |" z( E0 r 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 手机版