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

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

[复制链接]
STMCU-管管 发布时间:2025-2-6 09:24
01
+ s9 G3 e2 u. b& c! T6 u) O9 z: P  C简介 5 p, P6 g9 l: s6 b/ c# k/ b
0 t2 w! h" k! a& h# ?# l
STM32 Model Zoo是指ST在github上开源的AI相关模型仓库,其包含的应用包括:手势识别,人体活动姿态识别,图片分类,目标检测等相关应用代码,用户可以使用其中的代码进行简单的配置并进行训练,然后使用STM32Cube.AI工具或STM32CubeAI Developer Cloud 得到模型的Flash,Ram等情况,并进行模型的测试验证,然后部署到开发板中。
5 n1 B8 \% _# d8 p本文将以手势识别为例,介绍Model Zoo的使用。( a% X4 Z, j- V9 M

" D& i  F; f3 X+ o- `; V& u024 C8 L$ P9 G, z3 x, f
环境安装
5 l5 \0 T1 X2 x0 |# f: X- S3 A& K( J) K! G% G, o4 d
详细的安装步骤可以参考ST的wiki页面。: ~9 ^- U0 |) A. W6 x

0 L0 i* C  {1 h" w3 D/ [2.1. 设置代理等环境变量, i; ]1 I3 t4 D0 v7 ]

! E9 u! M- x& E4 P( M' f6 c为了后续使用pip进行python包的安装过程顺利进行,需要设置好代理。需要设置的环境变量包括:
7 ^" j+ S$ s3 x2 A6 ~- l# ?
12.png
注意特殊字符需要编码成utf-8格式,比如@要替换为%40,其他的特殊字符包括%、@、&、!等。stmai_username 和stmai_password 可以不设置,如果不设置,每次访问 stm32CubeAI Devleloper cloud 都需要手动重新输入用户名和密码。" t3 I5 ^( ^8 X
7 S! J! Z9 c4 }# p( O5 y
2.2. 安装 STM32Cube.AI
9 P6 Y7 v3 l. ^) `% F* T+ Z
3 `+ f+ C% Y( P' C( c
可以使用云端的STM32Cube.AI Developer Cloud, 也可以在本地安装STM32Cube.AI。% S- j& P& Y+ a, F' h- P: Q
1 k. h: H- F$ O5 H6 T, z5 |3 N) B7 p
如果使用云端,需要保证网络连接,并且注册 myST 账号,确保自己可以正常访问 STM32Cube.AI Developer Cloud 网站。9 a" {9 h. Z3 S/ x) K
+ }! O, w* \. Q9 Q) p
如果使用本地,可以通过CubeMX进行安装。( B. Q. k7 R9 n5 X: @8 d4 S0 }

; \3 Q) \' n4 @7 x; F  n2.3. 安装STM32 model zoo 7 t6 u, Z# V  F# X, \- D5 C$ ~
7 @5 {2 ?! _* \# t
可以使用git或使用zip包获取STM32 model zoo相关的代码。github仓库位于:https://github.com/STMicroelectronics/stm32ai-modelzoo
$ R/ Q7 a& y: [/ R# [& g. t1. 使用Git:git clone https://github.com/STMicroelectronics/stm32ai-modelzoo.git
; t! u0 W2 Y2 c7 T& }  o2. 使用zip:从git仓库中下载zip压缩包,解压即可。
) {% y/ o- r% j. B2 y, g0 [0 h; j% ]2 D
2.4. 安装Python环境
6 t( p+ l) l; ^* {' K. i3 `* P6 c; _. {4 M
如果没有本地Python,需要安装好Python,推荐Python v3.10.x。可以使用 Python 或miniconda来管理python环境,推荐使用miniconda。具体安装步骤请参考上文提到的ST WIKI页面。
2 F; G3 R6 g5 B) u3 u0 k8 N' s
, h* F: u: b# J5 P( C2.5. 安装STM32CubeIDE
2 M# U1 Z! e6 n4 t+ K, X/ Y1 t8 f2 i
6 D% h" b- J( E2 Q需要安装STM32CubeIDE 来重新编译生成的固件,安装包可以通过ST官方网站下载。注意:STM32CubeIDE 和 STM32Cube.AI 的安装路径不要有空格,否则可能会出错。7 ?8 X/ @9 U/ N: x* I! v/ v
2 r8 T$ H: P7 |/ m8 F0 Z( `
2.6. 更新yaml文件/ X5 X$ c8 w( ^, V% x# Z

1 ?$ f6 v$ v' |# lModel zoo 中的所有yaml中的path_to_stm32ai 和path_to_cubeIDE,需要和本地的安装目录保持一致。
2 M: B: S9 [4 \+ k注意:Model zoo使用mlflow管理生成的模型,Windows的最大路径长度限制为 256,可能会导致问题,建议通过注册表修改LogPathsEnabled为1避免该问题。该键位 Computer/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/FileSystem/4 N4 g3 @6 T0 D5 T& Q- ?* k

1 `4 J! R+ h  W) g03
) s5 U2 O3 a, P1 Q; e4 j" Y9 G手势识别应用
# b" q# v: o+ \1 b" J$ k$ }7 ]. U$ k; r( r
手势识别应用位于stm32ai-modelzoo的hand_posture目录下,使用ST的TOF传感器VL53L5CX或VL53L8CX采集数据。用于识别静态的手势,比如like, dislike, love 等手势。其demo应用部署在NUCLEO-F401RE和X-NUCLEO-53LxA1扩展板组合的开发板上。
& k7 I; L+ c  [' n$ F, A: P4 r1 }
13.png
▲ 图1. 部署环境和开发板
3.1. 数据集 ( R4 L6 y8 X' a/ @  y
1 c2 S3 |# ^& X* }- Z
手势识别应用的数据集可以直接使用hand_posture/datasets/目录下的数据集文件:ST_VL53L8CX_handposture_dataset.zip,解压后的数据集如下图所示:$ [2 S7 f, l& V6 @/ v
14.png
▲ 图2. 手势数据集
也可以使用ST提供的数据采集和标记工具STSW-IMG035_EVK,进行数据采集和标记。点击进入工具的下载地址。
4 {" X( F5 I* i' C
15.png
▲ 图3. 手势数据采集和标记工具

6 \" {/ R9 K+ y8 M3.2. 配置 9 E; M2 L- F& q8 |6 R8 _
' E1 Q# }5 ^- O; X" Z6 C5 _7 J
在stm32ai-modelzoo\hand_posture\src目录下,有user_config.yaml配置文件,里面可以对各种参数进行配置。
: I7 w3 N' P6 y& \+ @. l8 B

  ~$ k: t1 k2 j5 U) J  P3.2.1. 训练
  k  F: h# C. E; o2 @, g操作模式operation_mode的配置
; s% v; I7 P& K! x$ U操作模式选择training可以进行模型训练,其他可选择的操作模式包括evaluation, deployment, benchmarking。
1 e0 K: E) s* a  s& k( q( S
16.png
▲ 图4. 选择模式
数据集的配置:7 J- \$ C2 E& t2 L) m
17.png
▲ 图5. 数据集配置
  R$ K6 ]: n9 V7 Y  B- }& `6 Q$ J* e
数据集可以来源于仓库的数据集,也可以来源自自己采集的数据,其内容需要和文 件stm32ai-modelzoo\hand_posture\src\utils\handposture_dictionnary.py的数据一致。验证集可以不指定,默认将使用数据集内的20%作为验证。5 P( J' X5 \3 n0 S3 E7 B
预处理和数据增强的配置:9 c: i, N% g; M
18.png
▲ 图6. 预处理和数据增强
preprocessing:$ N) D3 y0 X, g' T6 V- k" {, _
- Max_distance:单位为mm,代表传感器的最远距离,如果超过这个距离,就 从数据集中丢弃该帧。/ |% s3 A0 |  T
- Min_distance:单位为mm,代表传感器的最远距离,如果小于该距离,则从 数据集中丢弃该帧。
7 f9 \- Z; ~( l% M9 C. l- Background_distance:单位为mm,手势背景的最大间隔,超过这个间隔的 区域将会被忽略掉。$ R: V# b5 n: L0 s/ a& Z

( Q( |$ K8 g2 O# C3 Cdata_augmetation:
6 y$ g: x' g3 G# `6 k使用数据增强可以在一定程度上提升模型的泛化能力,并且当数据比较少的时候可以补充数据集,目前支持的增强模式包括:水平翻转,垂直翻转,水平+垂直翻转。# o  p: p: a2 p" p( q& q1 r; o
训练参数的配置:训练参数的配置如下图7所示,具体内容不再赘述。# y7 j& }4 j! O% g# C
19.png
▲ 图7. 训练参数的配置
3.2.2. 评估 ) H1 [) w! |/ h$ q! f: W
操作模式operation_mode选择评估(evaluation)可以进行模型评估,评估的内容主要包括模型flash,ram的占用量,模型的执行时间等。tools的配置如下:# D: {0 `. f3 t# W' j4 q
20.png
▲ 图8. Tools的配置
, ]8 b) o, o  F% I/ Q' \6 H
on_cloud:是否需要使用STM32Cube.AI开发者云对模型进行评估,如果不使用云,选择False,则可以使用本地的Cube.AI工具。
, C. E+ Y0 F+ `, @# w+ V" N( c% f, i! E9 G2 _4 d) j: f8 L
path_to_stm32ai和path_to_cubeIDE需要配置成自己本地STM32Cube.AI和 STM32CubeIDE的路径。% V% j- [8 I" Y; x% |: o8 s( Q& [
6 k) K* N- s" E3 m* [3 ?, G
3.2.3. 部署
8 b3 W) a8 J+ C0 C

  _5 r, E! v' W9 r! Q0 v# g操作模式operation_mode选择部署(deployment)可以进行模型部署。当需要部署到ST开发板进行测试时,需要确保以下配置都正确:; f2 m0 k  ~  y* }5 Y
21.png
▲ 图9. 部署相关的配置

3 v; |; K' w! n( L7 u* M3.3. 运行脚本
1 |$ e5 z1 ~; e( U8 v) f
9 F# u; L4 f$ d( E% F8 |3 M在安装好python环境,并且配置好配置文件之后,就可以运行脚本进行训练,部署或评估流程了。* b/ N; p, D& E7 u

5 o; R% c( A8 _3.3.1. 模型训练
4 V0 Q* H- Q/ _# s直接运行脚本:
8 J  j4 O5 H! c' \3 a  c' a➢ python stm32ai_main.py 0 X( g) n3 [$ |3 k# E9 g
或者指定模式运行脚本:
5 t$ z. p" R- Z  j➢ python stm32ai_main.py operation_mode=”training” , \) w  V8 z9 Z7 G1 O+ e# d: b
训练过程中的输出结果:
# c1 r1 O% S* L& Q, }6 P# }8 ]
22.png
▲ 图10. 训练中的输出结果
23.png
▲ 图11. 混淆矩阵
训练完成的结果保存在:experiments_outputs/<时间戳>目录下,包含了训练的log,训练曲线,混淆矩阵,模型等信息。  U; [3 r6 s" ]; V3 j

3 t' J) [* m' {( G" P. @3.3.2. 可视化训练结果 ) u+ [, R4 _% F* q: f
进入logs所在目录(位于experiments_outputs/<时间戳>目录下),然后运行 tensorboard:
1 B5 ]# u# G0 _1 b. Z➢ tensorboard --logdir logs
$ z7 y' Z( q1 Y& C4 x; Y打开网页后,可以看到整个训练过程中的曲线,比如loss曲线,学习率曲线,epoch 曲线等等。1 m9 k4 r' R) F
24.png
▲ 图12. 准确率曲线
也可以通过mlflow查看实验过程中保存的参数信息,模型实验对比信息等等。进入experiments_outputs目录,然后执行以下命令:6 M4 a$ A& n3 z
➢ mlflow ui
% m* D+ K- H7 n0 l* `& W4 Y/ q
25.png
▲ 图13. Mlflow界面
3.3.3. 模型评估 , b, Q8 C7 ^8 M- m* A" I! B
将上一步生成的模型路径,填写到user_config.yaml的model_path目录中,然后运行以下命令,可以查看运行模型评估脚本,并查看结果:
! J% s; _5 Q1 Q" ]; s" ~2 o$ o➢ python stm32ai_main.py operation_mode=”evaluation”& `9 Y8 D- X1 E" j
26.png
▲ 图14. 配置文件和模型评估结果
3.3.4. 基准测试 % [: u0 _1 i( W& T$ n# N
在上一步完成后,可以运行以下命令,进行模型的基准测试,可以获取模型的flash, ram,macc等信息:9 ?" C% z  N: B
➢ python stm32ai_main.py operation_mode=”benchmarking” 4 f7 j# e) Y4 ~+ D
如果不使用开发者云,使用本地的STM32CubeAI,需要将on_cloud改为False,如下图:
  ?- }( k1 l6 A7 G
27.png
▲ 图15. 配置文件和基准测试
% L. n) d7 _6 \3 k6 c
3.4. 部署
5 x2 v+ R5 B2 O* R, H; c. z0 w+ S9 U+ N+ K
连接好开发板,设置好STM32CubeIDE的路径后,运行以下命令可以编译工程并部署到开发板:; \5 c' }; B- b$ J$ m; O( k' {# d
➢ python stm32ai_main.py operation_mode=”deployment”% k  C, F1 x8 O: V, \2 Q
28.png
▲ 图16. 部署流程
3.5. 总结 ( x, d, B# T6 q; a; l
本文介绍了STM32 model-zoo的基本内容,并以手势识别为例,介绍了具体的使用方法,包括模型训练,如何查看模型训练后的结果以及如何部署模型。对于其他model zoo 内的应用案例,感兴趣的话可以去github上下载整个仓库,然后进行阅读并使用。
* K) o- ^! D8 c& `! }/ M' R5 ?
5 p* h( R9 K0 z7 l7 x  J
▼▼▼
点击按钮下载《STM32 AI Model Zoo的安装及实例介绍》原文档。4 i8 |9 r( M* n4 P# O
点击下载: }/ x5 \" I7 ]. m- K5 j( R
LAT6021_在STM32MP13x系列MPU上裸跑应用程序_v1.0.pdf (3.43 MB, 下载次数: 46)
收藏 1 评论0 发布时间:2025-2-6 09:24

举报

0个回答

所属标签

相似技术帖

官网相关资源

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