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

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

[复制链接]
STMCU-管管 发布时间:2025-2-6 09:24
01
. h- U: ?; B5 R# a5 U6 y9 F简介
4 E, j& ?% e4 R. q6 D5 c0 o
$ l+ S3 P. V& D0 {0 n9 q9 iSTM32 Model Zoo是指ST在github上开源的AI相关模型仓库,其包含的应用包括:手势识别,人体活动姿态识别,图片分类,目标检测等相关应用代码,用户可以使用其中的代码进行简单的配置并进行训练,然后使用STM32Cube.AI工具或STM32CubeAI Developer Cloud 得到模型的Flash,Ram等情况,并进行模型的测试验证,然后部署到开发板中。/ t0 \, {- U. f( F
本文将以手势识别为例,介绍Model Zoo的使用。
0 W6 w# u4 g3 L  H; J* p7 Q! V6 j4 u  I7 p) e; P: d0 G
02
" V3 n6 p6 o# }- R. P; U环境安装 0 M7 Y* B0 n1 V: Y+ [# |9 z" s

( n$ s5 @0 b) p5 o2 s5 Y详细的安装步骤可以参考ST的wiki页面。
- y( C$ x6 z7 ~: I/ C' |# h" t7 K, Z/ h8 L2 P1 Q( N
2.1. 设置代理等环境变量
$ G, X- |- c) E

7 _1 x# f# Q: y为了后续使用pip进行python包的安装过程顺利进行,需要设置好代理。需要设置的环境变量包括:
  h* W6 f  r% T1 |- S
12.png
注意特殊字符需要编码成utf-8格式,比如@要替换为%40,其他的特殊字符包括%、@、&、!等。stmai_username 和stmai_password 可以不设置,如果不设置,每次访问 stm32CubeAI Devleloper cloud 都需要手动重新输入用户名和密码。; \: s4 p4 n& e* r% u  A
1 Q1 K- @. ?  ?/ M1 S6 V
2.2. 安装 STM32Cube.AI
- h9 S+ a& C- z5 R

; ^) w& p$ j# w3 c4 `可以使用云端的STM32Cube.AI Developer Cloud, 也可以在本地安装STM32Cube.AI。
3 S1 F/ `, u6 ]5 Z" p9 w

% {6 s) K2 g0 l1 }% Z9 B2 j如果使用云端,需要保证网络连接,并且注册 myST 账号,确保自己可以正常访问 STM32Cube.AI Developer Cloud 网站。
5 \4 }$ s* J' u) X4 z
. ^0 _9 ~' f, D& p* u7 i: C
如果使用本地,可以通过CubeMX进行安装。
" ]! T7 P4 M' }* t  ~4 g8 d' f, S8 y4 A. u' b( J) y" W
2.3. 安装STM32 model zoo
. }5 a2 t% k0 h6 x+ O. F% `, f# O* [6 e" d
可以使用git或使用zip包获取STM32 model zoo相关的代码。github仓库位于:https://github.com/STMicroelectronics/stm32ai-modelzoo
7 l" ]. ~1 b6 A& N" P. u1. 使用Git:git clone https://github.com/STMicroelectronics/stm32ai-modelzoo.git
. t2 c0 P; Q/ T) a  M) b+ g2. 使用zip:从git仓库中下载zip压缩包,解压即可。9 E/ A0 f# e1 _$ k* f- U

+ q( G+ C. B* u! @2.4. 安装Python环境 1 A5 K# C. M1 w! N( F
* b7 y/ R9 V+ ^+ f1 a
如果没有本地Python,需要安装好Python,推荐Python v3.10.x。可以使用 Python 或miniconda来管理python环境,推荐使用miniconda。具体安装步骤请参考上文提到的ST WIKI页面。
2 B; y% U& p2 }: @( [# d/ x
! s# M0 Y+ S1 t0 F( E7 q, O2.5. 安装STM32CubeIDE
$ K7 a: u& O- d
; c4 {8 m8 K$ Q) j$ E需要安装STM32CubeIDE 来重新编译生成的固件,安装包可以通过ST官方网站下载。注意:STM32CubeIDE 和 STM32Cube.AI 的安装路径不要有空格,否则可能会出错。
. {6 s# z# l2 v0 F4 d4 d: v* d$ h3 @9 S
2.6. 更新yaml文件
' _3 E) l+ C- w

* g2 {( E& \2 W2 D1 ~/ V1 m5 I1 \Model zoo 中的所有yaml中的path_to_stm32ai 和path_to_cubeIDE,需要和本地的安装目录保持一致。- l+ n) V2 L3 }3 c- X" D; Z
注意:Model zoo使用mlflow管理生成的模型,Windows的最大路径长度限制为 256,可能会导致问题,建议通过注册表修改LogPathsEnabled为1避免该问题。该键位 Computer/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/FileSystem/  z8 j+ [# L- R6 S% o" N) x6 L

5 C4 @& {& l* E8 l) A9 \% M03
% v$ x, `. z: }- B0 e手势识别应用% V. X3 W, ^3 ]  H( P! |
0 b* j+ i2 X. D' a; t
手势识别应用位于stm32ai-modelzoo的hand_posture目录下,使用ST的TOF传感器VL53L5CX或VL53L8CX采集数据。用于识别静态的手势,比如like, dislike, love 等手势。其demo应用部署在NUCLEO-F401RE和X-NUCLEO-53LxA1扩展板组合的开发板上。
  r) {, }" w/ K0 m) r; G
13.png
▲ 图1. 部署环境和开发板
3.1. 数据集
( i! o" B/ c5 s5 [+ Y
9 [- H4 D& s/ m+ g+ G手势识别应用的数据集可以直接使用hand_posture/datasets/目录下的数据集文件:ST_VL53L8CX_handposture_dataset.zip,解压后的数据集如下图所示:
/ S3 b) k, `, H, i+ L
14.png
▲ 图2. 手势数据集
也可以使用ST提供的数据采集和标记工具STSW-IMG035_EVK,进行数据采集和标记。点击进入工具的下载地址。1 \% V  ]7 @6 \; Y3 Y1 J
15.png
▲ 图3. 手势数据采集和标记工具
, U  p( G- O. t# |: @
3.2. 配置 6 k! C4 O7 J' z
5 r% P0 d% v, t; p. D" j
在stm32ai-modelzoo\hand_posture\src目录下,有user_config.yaml配置文件,里面可以对各种参数进行配置。
- d7 D7 @+ u' p0 m& y" H; r
1 W! R6 f4 y. G- _' X. @& N
3.2.1. 训练
8 }3 T) M% o0 f3 l, @操作模式operation_mode的配置
& C$ z, Q5 V; X4 Q7 L( s操作模式选择training可以进行模型训练,其他可选择的操作模式包括evaluation, deployment, benchmarking。
  t& p2 t* K! s, m" ~. j( c
16.png
▲ 图4. 选择模式
数据集的配置:
6 c, g+ v, j3 F- \
17.png
▲ 图5. 数据集配置

% `2 A; d8 D' `' v数据集可以来源于仓库的数据集,也可以来源自自己采集的数据,其内容需要和文 件stm32ai-modelzoo\hand_posture\src\utils\handposture_dictionnary.py的数据一致。验证集可以不指定,默认将使用数据集内的20%作为验证。, x% [9 S/ j- }% Z' s5 H
预处理和数据增强的配置:
3 B  g# C. z2 |
18.png
▲ 图6. 预处理和数据增强
preprocessing:
$ z9 K+ z! k9 m' d" }- Max_distance:单位为mm,代表传感器的最远距离,如果超过这个距离,就 从数据集中丢弃该帧。
* L3 u, {+ Q2 N  n, d8 H# M- Min_distance:单位为mm,代表传感器的最远距离,如果小于该距离,则从 数据集中丢弃该帧。
2 a. K) l7 Z) Q: R4 |' I/ A4 [- Background_distance:单位为mm,手势背景的最大间隔,超过这个间隔的 区域将会被忽略掉。
7 w4 R& U0 d) m( j% {6 Y* d' v$ x" n  [. r# B% ~. g' s' ?0 f7 |+ W' @. k
data_augmetation: 0 S' r; ~; ]5 w
使用数据增强可以在一定程度上提升模型的泛化能力,并且当数据比较少的时候可以补充数据集,目前支持的增强模式包括:水平翻转,垂直翻转,水平+垂直翻转。: G: ^% p0 s! G  w
训练参数的配置:训练参数的配置如下图7所示,具体内容不再赘述。
6 P& n- \" I' \" B4 _- i$ {; i
19.png
▲ 图7. 训练参数的配置
3.2.2. 评估 ; H6 n% @9 J) `. E
操作模式operation_mode选择评估(evaluation)可以进行模型评估,评估的内容主要包括模型flash,ram的占用量,模型的执行时间等。tools的配置如下:
- x8 D3 k1 X+ R6 d/ V
20.png
▲ 图8. Tools的配置
7 T+ o  d( ~1 ?6 x; c  i
on_cloud:是否需要使用STM32Cube.AI开发者云对模型进行评估,如果不使用云,选择False,则可以使用本地的Cube.AI工具。- q/ P7 z( D3 F' l( B

9 i' Q/ v0 C0 Q" r1 U
path_to_stm32ai和path_to_cubeIDE需要配置成自己本地STM32Cube.AI和 STM32CubeIDE的路径。+ G4 p: I; _$ y5 C
+ L! {0 \# O3 S2 W' _
3.2.3. 部署
" U1 J6 X0 {8 p, A; u1 R

& L$ P' @. {$ C( M) l) ]4 P操作模式operation_mode选择部署(deployment)可以进行模型部署。当需要部署到ST开发板进行测试时,需要确保以下配置都正确:
( q6 E7 A. }7 ~
21.png
▲ 图9. 部署相关的配置
4 D/ f# }  y' N# @% `$ \5 Z
3.3. 运行脚本
  k% T) @( a& g+ r3 r6 A& i) n3 i0 R: Y8 _
在安装好python环境,并且配置好配置文件之后,就可以运行脚本进行训练,部署或评估流程了。& h1 A! H8 _5 B5 Y/ g5 i4 y$ z
0 B/ \8 F# q3 y+ G1 H
3.3.1. 模型训练
+ D2 U" Q$ |! t+ m" Z直接运行脚本:; T% m$ d$ d5 w; t7 n
➢ python stm32ai_main.py
  S# T, ?5 a) P0 N/ v* F% s或者指定模式运行脚本:
- A% c& k, s/ `# {' t0 N" X! C➢ python stm32ai_main.py operation_mode=”training”
) _. G! V7 ^! o- U训练过程中的输出结果:$ Q7 c' G( _6 L6 Y4 z- T2 D: Z
22.png
▲ 图10. 训练中的输出结果
23.png
▲ 图11. 混淆矩阵
训练完成的结果保存在:experiments_outputs/<时间戳>目录下,包含了训练的log,训练曲线,混淆矩阵,模型等信息。1 t5 \4 ^$ V0 `+ d. v

$ v& o; r8 @! y9 K$ J; p3.3.2. 可视化训练结果 : C( L( G, X2 A7 j$ e
进入logs所在目录(位于experiments_outputs/<时间戳>目录下),然后运行 tensorboard: $ l. F( g, C( H
➢ tensorboard --logdir logs
3 z/ J$ q2 d+ m1 L  T* X打开网页后,可以看到整个训练过程中的曲线,比如loss曲线,学习率曲线,epoch 曲线等等。
) A0 B8 S# {$ h( [
24.png
▲ 图12. 准确率曲线
也可以通过mlflow查看实验过程中保存的参数信息,模型实验对比信息等等。进入experiments_outputs目录,然后执行以下命令:1 K8 M# {/ n! X  d
➢ mlflow ui
! z/ N+ ~+ d) ?$ o% C& [
25.png
▲ 图13. Mlflow界面
3.3.3. 模型评估 1 x0 T( |2 P3 f3 ^  N
将上一步生成的模型路径,填写到user_config.yaml的model_path目录中,然后运行以下命令,可以查看运行模型评估脚本,并查看结果:0 ~5 ]! ~6 X" W! o; `% P: b
➢ python stm32ai_main.py operation_mode=”evaluation”& X1 ]: z1 h2 ^
26.png
▲ 图14. 配置文件和模型评估结果
3.3.4. 基准测试
- W7 O/ ?! Y& _' C! X; k在上一步完成后,可以运行以下命令,进行模型的基准测试,可以获取模型的flash, ram,macc等信息:" x' V: I1 j# T( n+ p) v& V0 P
➢ python stm32ai_main.py operation_mode=”benchmarking” ( G4 e* M+ D& p" K$ Q' z( w. |
如果不使用开发者云,使用本地的STM32CubeAI,需要将on_cloud改为False,如下图:
! U' l7 a! L/ Y8 D- B
27.png
▲ 图15. 配置文件和基准测试
' G- _( u. K( x$ k1 F1 c
3.4. 部署 % a" ^" j  A8 v
3 \3 x* c" w6 a% j# o' [
连接好开发板,设置好STM32CubeIDE的路径后,运行以下命令可以编译工程并部署到开发板:; X9 a0 B) Q5 N4 ^
➢ python stm32ai_main.py operation_mode=”deployment”
5 i5 s. Z6 y0 s
28.png
▲ 图16. 部署流程
3.5. 总结 / ^) Q( Y; E; T
本文介绍了STM32 model-zoo的基本内容,并以手势识别为例,介绍了具体的使用方法,包括模型训练,如何查看模型训练后的结果以及如何部署模型。对于其他model zoo 内的应用案例,感兴趣的话可以去github上下载整个仓库,然后进行阅读并使用。
2 a3 Q/ {, S; O, ^6 X$ f' a, r& S) T

7 V+ `1 W8 d+ y: H# b! ?# R7 B- |# O- w
▼▼▼
点击按钮下载《STM32 AI Model Zoo的安装及实例介绍》原文档。- |4 H8 n. K& E5 C
点击下载
: P  g: s% b& i/ I3 J5 k LAT6021_在STM32MP13x系列MPU上裸跑应用程序_v1.0.pdf (3.43 MB, 下载次数: 15)
收藏 1 评论0 发布时间:2025-2-6 09:24

举报

0个回答

所属标签

相似分享

官网相关资源

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