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

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

[复制链接]
STMCU-管管 发布时间:2025-2-6 09:24
01
. U- n0 B& W' h! [7 W简介
( K  \0 G- K: @& b6 ]6 }/ S/ T
1 {4 i6 X9 l7 O! r7 E5 @1 M: XSTM32 Model Zoo是指ST在github上开源的AI相关模型仓库,其包含的应用包括:手势识别,人体活动姿态识别,图片分类,目标检测等相关应用代码,用户可以使用其中的代码进行简单的配置并进行训练,然后使用STM32Cube.AI工具或STM32CubeAI Developer Cloud 得到模型的Flash,Ram等情况,并进行模型的测试验证,然后部署到开发板中。9 R3 S, e0 ]. p! q
本文将以手势识别为例,介绍Model Zoo的使用。
# K& w" e. G/ R- Q2 t: t0 Q& S; Z$ k* Y' k* r; E3 I9 x
02
7 M( X" \, X. m# _% G: V4 ]2 p! B环境安装 & V% Q3 p# c, I6 S" l7 q& F, d) v

8 J9 T6 }; f0 A6 D% N1 g7 S1 t0 [$ q9 ^详细的安装步骤可以参考ST的wiki页面。. A/ q: P7 @6 B/ f$ D0 x
! T* ^; r: D( K9 o& ^- m4 U! j# u
2.1. 设置代理等环境变量- ~3 y( a8 m) z7 W. j5 @
. _7 W4 v& L* Y0 Y5 V
为了后续使用pip进行python包的安装过程顺利进行,需要设置好代理。需要设置的环境变量包括:
6 @5 j% |# ?# X3 [
12.png
注意特殊字符需要编码成utf-8格式,比如@要替换为%40,其他的特殊字符包括%、@、&、!等。stmai_username 和stmai_password 可以不设置,如果不设置,每次访问 stm32CubeAI Devleloper cloud 都需要手动重新输入用户名和密码。+ ]% a: @7 {' u% L

' Z2 C1 H) W% w' R5 {3 w2.2. 安装 STM32Cube.AI
& Y# a9 z$ {" o" {
, R. e8 u6 e' C  {% m& J4 w
可以使用云端的STM32Cube.AI Developer Cloud, 也可以在本地安装STM32Cube.AI。
* N2 y1 G# k" l8 E3 n- ^
( @* K6 e4 n: g5 h3 \0 e
如果使用云端,需要保证网络连接,并且注册 myST 账号,确保自己可以正常访问 STM32Cube.AI Developer Cloud 网站。5 j) C' q" h9 K" W6 D

' s6 C% C& `! u7 g8 x3 g' y4 X! l如果使用本地,可以通过CubeMX进行安装。
/ Z) \% f% u" o* t7 I; y" n' ]% D! g# x& [+ ?7 ]2 K
2.3. 安装STM32 model zoo ' i. a0 I) Y9 _9 w& @
5 K0 H9 H2 L9 e) Q3 w0 l
可以使用git或使用zip包获取STM32 model zoo相关的代码。github仓库位于:https://github.com/STMicroelectronics/stm32ai-modelzoo
& B  [9 V; V2 q  \& r; E5 a/ E1. 使用Git:git clone https://github.com/STMicroelectronics/stm32ai-modelzoo.git
1 P. i: m6 m& C0 }2. 使用zip:从git仓库中下载zip压缩包,解压即可。# E5 C- f+ ]- w7 L0 I9 @

7 `" |: L) s4 H- v2.4. 安装Python环境 - K5 D9 D1 G, F8 k. r; e
% W& E! C8 J& r: P- e1 Q/ z
如果没有本地Python,需要安装好Python,推荐Python v3.10.x。可以使用 Python 或miniconda来管理python环境,推荐使用miniconda。具体安装步骤请参考上文提到的ST WIKI页面。
; l2 J* G4 [6 g# X; F3 i& Q' o2 V% ?# p  y
2.5. 安装STM32CubeIDE , ~! U8 H5 {9 p1 J9 `4 n

# u+ \# E. `2 x+ A1 a需要安装STM32CubeIDE 来重新编译生成的固件,安装包可以通过ST官方网站下载。注意:STM32CubeIDE 和 STM32Cube.AI 的安装路径不要有空格,否则可能会出错。
' y5 R$ q) z3 K0 I
- u+ a: u8 E0 D) M3 ^2.6. 更新yaml文件& ]) P8 t) I8 n) A
* [0 t+ }1 s7 D- Z
Model zoo 中的所有yaml中的path_to_stm32ai 和path_to_cubeIDE,需要和本地的安装目录保持一致。3 X, s2 e4 E4 |% A( \
注意:Model zoo使用mlflow管理生成的模型,Windows的最大路径长度限制为 256,可能会导致问题,建议通过注册表修改LogPathsEnabled为1避免该问题。该键位 Computer/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/FileSystem/
+ L  ^  h6 n0 G* {" H$ h. U% u4 S' q. E" n8 {/ B& j4 {  C" E8 B
03
8 f& l4 A6 ^& v; H. r4 p, \手势识别应用
  A( D' x; {+ X7 a$ d4 _8 {# f: V8 a
手势识别应用位于stm32ai-modelzoo的hand_posture目录下,使用ST的TOF传感器VL53L5CX或VL53L8CX采集数据。用于识别静态的手势,比如like, dislike, love 等手势。其demo应用部署在NUCLEO-F401RE和X-NUCLEO-53LxA1扩展板组合的开发板上。
! i7 R5 M1 q6 u+ i' M9 L
13.png
▲ 图1. 部署环境和开发板
3.1. 数据集
( ?1 V  i$ e. d8 ]% e  G7 z0 [# B& P, e* e+ y0 P; g+ n! ~: T
手势识别应用的数据集可以直接使用hand_posture/datasets/目录下的数据集文件:ST_VL53L8CX_handposture_dataset.zip,解压后的数据集如下图所示:
, F6 _" f8 e. C! t
14.png
▲ 图2. 手势数据集
也可以使用ST提供的数据采集和标记工具STSW-IMG035_EVK,进行数据采集和标记。点击进入工具的下载地址。! f* d$ @; k/ ]& ?1 A( T
15.png
▲ 图3. 手势数据采集和标记工具

, @% N3 `* [- a3.2. 配置
  z2 ~2 a2 j5 L& i0 g, x* g( e% Z9 Y3 e: ~0 U( O1 b5 {
在stm32ai-modelzoo\hand_posture\src目录下,有user_config.yaml配置文件,里面可以对各种参数进行配置。
; u% ~$ n* m* [5 ]

* v% k- t0 {9 \9 P  u3 Y3.2.1. 训练 / a# U& H* K- U) C4 R
操作模式operation_mode的配置
% j" V0 I3 Y0 J- R! y4 J) G操作模式选择training可以进行模型训练,其他可选择的操作模式包括evaluation, deployment, benchmarking。
4 k) D. y2 p5 n! R8 b% W
16.png
▲ 图4. 选择模式
数据集的配置:8 G; X7 o4 M: c/ }( \# |5 b9 g- e
17.png
▲ 图5. 数据集配置
2 }7 T' V; J% r
数据集可以来源于仓库的数据集,也可以来源自自己采集的数据,其内容需要和文 件stm32ai-modelzoo\hand_posture\src\utils\handposture_dictionnary.py的数据一致。验证集可以不指定,默认将使用数据集内的20%作为验证。7 a% r% H8 K3 F
预处理和数据增强的配置:! a, O8 H- P% W1 q; O. p
18.png
▲ 图6. 预处理和数据增强
preprocessing:- q: @$ Q+ ~0 Z1 L& z4 x5 k5 G
- Max_distance:单位为mm,代表传感器的最远距离,如果超过这个距离,就 从数据集中丢弃该帧。
; y1 ], w" {' |/ A- Min_distance:单位为mm,代表传感器的最远距离,如果小于该距离,则从 数据集中丢弃该帧。
' ?8 L8 A  N. H' V/ I& G- Background_distance:单位为mm,手势背景的最大间隔,超过这个间隔的 区域将会被忽略掉。5 Q: n$ Y" m5 Y# I7 e2 a

% j+ t! g5 A/ X. Bdata_augmetation: ( Y+ i$ f. i! B/ A3 u5 e
使用数据增强可以在一定程度上提升模型的泛化能力,并且当数据比较少的时候可以补充数据集,目前支持的增强模式包括:水平翻转,垂直翻转,水平+垂直翻转。
7 g* z+ p6 I6 h8 d$ P8 Q训练参数的配置:训练参数的配置如下图7所示,具体内容不再赘述。; e7 \3 u0 g+ ^$ C. F( E
19.png
▲ 图7. 训练参数的配置
3.2.2. 评估 ; Y5 R$ [  F4 t
操作模式operation_mode选择评估(evaluation)可以进行模型评估,评估的内容主要包括模型flash,ram的占用量,模型的执行时间等。tools的配置如下:: ^- p: d" A4 h( U
20.png
▲ 图8. Tools的配置

0 U2 l9 u+ T% y1 `7 T1 u4 E. ~on_cloud:是否需要使用STM32Cube.AI开发者云对模型进行评估,如果不使用云,选择False,则可以使用本地的Cube.AI工具。
# u" S! T0 o- S' p6 g1 Q$ i9 o/ I5 u! C; _! Y7 e# l
path_to_stm32ai和path_to_cubeIDE需要配置成自己本地STM32Cube.AI和 STM32CubeIDE的路径。* Q+ f0 R6 x9 ~! H: E) q; d* l- x
4 B( ~8 G' I/ Z+ W; o
3.2.3. 部署8 J6 D& w9 Z* g! \- b  B0 f

- m' }' Z7 O- m( |# n' W! R- }* _操作模式operation_mode选择部署(deployment)可以进行模型部署。当需要部署到ST开发板进行测试时,需要确保以下配置都正确:
9 a5 X+ B: L, ?) y
21.png
▲ 图9. 部署相关的配置

+ |' ~9 b) k  _* I' K6 F2 R3.3. 运行脚本
1 |4 W' H- z/ S5 j* ^
( L( a  L; }) P2 Q在安装好python环境,并且配置好配置文件之后,就可以运行脚本进行训练,部署或评估流程了。9 e) d8 A! f7 s( o8 H

- Z" Y1 D- T3 R' u+ o1 W3.3.1. 模型训练 5 Z. w" ^6 Y: E
直接运行脚本:
2 K, g' b* q- C3 |4 S1 i➢ python stm32ai_main.py # }; {: F) @8 I) m& a
或者指定模式运行脚本:# {3 c  `  D, H$ b
➢ python stm32ai_main.py operation_mode=”training” 5 p, ]% Y5 h6 ^1 |
训练过程中的输出结果:
9 `/ z8 v9 ?# k( q$ z2 C1 m) Q
22.png
▲ 图10. 训练中的输出结果
23.png
▲ 图11. 混淆矩阵
训练完成的结果保存在:experiments_outputs/<时间戳>目录下,包含了训练的log,训练曲线,混淆矩阵,模型等信息。! C% O2 L$ T& E3 w/ g
2 o4 c: b+ c3 A
3.3.2. 可视化训练结果
# P0 M% W" U. z! |" N; ]  g进入logs所在目录(位于experiments_outputs/<时间戳>目录下),然后运行 tensorboard:
, a4 H" U* p. |3 m# M6 T➢ tensorboard --logdir logs 8 J5 x( J! _: y% V4 _+ w
打开网页后,可以看到整个训练过程中的曲线,比如loss曲线,学习率曲线,epoch 曲线等等。+ H  e& p% `7 m  O# b, h
24.png
▲ 图12. 准确率曲线
也可以通过mlflow查看实验过程中保存的参数信息,模型实验对比信息等等。进入experiments_outputs目录,然后执行以下命令:
( z# p  M8 c! K9 f& X➢ mlflow ui
8 e! F# u' A& C( N' F0 c  |
25.png
▲ 图13. Mlflow界面
3.3.3. 模型评估 5 F% `7 F$ N) W6 x1 c; t
将上一步生成的模型路径,填写到user_config.yaml的model_path目录中,然后运行以下命令,可以查看运行模型评估脚本,并查看结果:' D: x  T8 y1 Z, X; `  s
➢ python stm32ai_main.py operation_mode=”evaluation”
- r0 P* t" U0 }/ G
26.png
▲ 图14. 配置文件和模型评估结果
3.3.4. 基准测试 0 J& ^, Y. C$ T( L) [! Y
在上一步完成后,可以运行以下命令,进行模型的基准测试,可以获取模型的flash, ram,macc等信息:
3 y5 X' j( v  o" D➢ python stm32ai_main.py operation_mode=”benchmarking”
1 r. U2 u: _; t8 r7 {4 u9 {( z如果不使用开发者云,使用本地的STM32CubeAI,需要将on_cloud改为False,如下图:
; X5 L- k$ l/ S. C
27.png
▲ 图15. 配置文件和基准测试
' r0 ]( Y1 c) `% _/ H
3.4. 部署
% g. F3 m4 e+ v$ w) L2 G* e: H) `( c) C  K! z- O: Z
连接好开发板,设置好STM32CubeIDE的路径后,运行以下命令可以编译工程并部署到开发板:0 o0 F7 G3 k1 Z% u) V
➢ python stm32ai_main.py operation_mode=”deployment”
3 @+ d  }) e& l( F* ?, N
28.png
▲ 图16. 部署流程
3.5. 总结 ; w" R3 Z- `. Z, Y# I3 _; n1 D
本文介绍了STM32 model-zoo的基本内容,并以手势识别为例,介绍了具体的使用方法,包括模型训练,如何查看模型训练后的结果以及如何部署模型。对于其他model zoo 内的应用案例,感兴趣的话可以去github上下载整个仓库,然后进行阅读并使用。
- E+ |- Q$ ?  P+ K. P: |& u

7 X8 J8 c/ o$ A7 V1 C
▼▼▼
点击按钮下载《STM32 AI Model Zoo的安装及实例介绍》原文档。, _: X: Y6 S& c8 ^5 s
点击下载5 ?- p5 U3 k) b: B, J
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 手机版