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

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

[复制链接]
STMCU-管管 发布时间:2025-2-6 09:24
01; A" X  ~- V  A5 q
简介
! S- c7 {6 W; G3 l4 e/ R5 G, k
. j8 w( b8 s. s# x1 cSTM32 Model Zoo是指ST在github上开源的AI相关模型仓库,其包含的应用包括:手势识别,人体活动姿态识别,图片分类,目标检测等相关应用代码,用户可以使用其中的代码进行简单的配置并进行训练,然后使用STM32Cube.AI工具或STM32CubeAI Developer Cloud 得到模型的Flash,Ram等情况,并进行模型的测试验证,然后部署到开发板中。6 F1 w: s+ a" f( x/ F7 Q
本文将以手势识别为例,介绍Model Zoo的使用。* y5 {" [& @) w- S
( ]+ W6 V$ f6 L. z
02
; P( `( F, a6 P5 z9 L" r环境安装
' a1 o' i6 \4 P1 `, Z. ]+ U! l  F% M
详细的安装步骤可以参考ST的wiki页面。% h- G) r* e7 J" B0 G
( A- x4 V7 ^7 ~9 b/ E8 `$ |5 S
2.1. 设置代理等环境变量# ?; K6 _: E, ~4 {6 V, |* A
/ e8 J$ r: |6 j& \% r0 h" T" A7 T
为了后续使用pip进行python包的安装过程顺利进行,需要设置好代理。需要设置的环境变量包括:
7 S: }5 c5 g4 l- e( Q- A
12.png
注意特殊字符需要编码成utf-8格式,比如@要替换为%40,其他的特殊字符包括%、@、&、!等。stmai_username 和stmai_password 可以不设置,如果不设置,每次访问 stm32CubeAI Devleloper cloud 都需要手动重新输入用户名和密码。& g& n( [3 Y9 C) m# m0 u' r3 L* t) U3 }
9 t& `  c0 f4 A% F
2.2. 安装 STM32Cube.AI
0 k% N/ ~. T) q+ I3 u6 J

3 j% _; x" }* ?1 E5 w5 f可以使用云端的STM32Cube.AI Developer Cloud, 也可以在本地安装STM32Cube.AI。) d% r$ H8 b2 |; C/ D7 m8 r

3 N7 L* G% P, b( b/ v5 f5 W如果使用云端,需要保证网络连接,并且注册 myST 账号,确保自己可以正常访问 STM32Cube.AI Developer Cloud 网站。
# Y. Y! a+ t2 t  d+ V' b2 C

3 {, |6 f6 X% q' l  e# B5 R如果使用本地,可以通过CubeMX进行安装。
# ~' b9 d' C, a$ _, [
! W( i% K$ E1 k2 x. y2.3. 安装STM32 model zoo & S/ ~1 C6 N9 R$ d" [. J- v

( H& I- H. H: A- r! i" Y可以使用git或使用zip包获取STM32 model zoo相关的代码。github仓库位于:https://github.com/STMicroelectronics/stm32ai-modelzoo) |( L. o3 M  `! |+ ~, W4 T
1. 使用Git:git clone https://github.com/STMicroelectronics/stm32ai-modelzoo.git1 l5 g! N  ?6 ?- t9 _# ~4 ], u
2. 使用zip:从git仓库中下载zip压缩包,解压即可。
4 o- f$ N4 C  O7 o  M2 Y  M% m0 T& D9 B0 F7 m
2.4. 安装Python环境
* a. H' F$ l3 V, U1 p' j
( r- f; d8 \  l6 b) w+ k如果没有本地Python,需要安装好Python,推荐Python v3.10.x。可以使用 Python 或miniconda来管理python环境,推荐使用miniconda。具体安装步骤请参考上文提到的ST WIKI页面。
- Q3 o* K' C0 P4 Y
' D, v: @: A9 f0 x) O. u7 }4 W2.5. 安装STM32CubeIDE
8 j4 j' O& x6 C! r" ?* z. q1 F2 r5 n5 G) v
需要安装STM32CubeIDE 来重新编译生成的固件,安装包可以通过ST官方网站下载。注意:STM32CubeIDE 和 STM32Cube.AI 的安装路径不要有空格,否则可能会出错。
. y8 i9 |+ Z# v: G0 G' v# T  }" F3 s
2.6. 更新yaml文件6 D1 K) s2 n" t) Q1 ]

# k1 V' D6 W# x% l1 {Model zoo 中的所有yaml中的path_to_stm32ai 和path_to_cubeIDE,需要和本地的安装目录保持一致。
- Z2 P2 s1 n2 a( k- z3 }注意:Model zoo使用mlflow管理生成的模型,Windows的最大路径长度限制为 256,可能会导致问题,建议通过注册表修改LogPathsEnabled为1避免该问题。该键位 Computer/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/FileSystem/) ]6 m9 x& w- {# y

+ k$ V* [( u- u" V. w, M- l* g; @03
; \! U) Z9 E# u' `( @' }" \手势识别应用
: Y6 f* @: V& m0 T! S9 m  }5 u+ E% x3 a
手势识别应用位于stm32ai-modelzoo的hand_posture目录下,使用ST的TOF传感器VL53L5CX或VL53L8CX采集数据。用于识别静态的手势,比如like, dislike, love 等手势。其demo应用部署在NUCLEO-F401RE和X-NUCLEO-53LxA1扩展板组合的开发板上。3 l5 M1 s7 N/ S  ]# t5 A6 g% O
13.png
▲ 图1. 部署环境和开发板
3.1. 数据集
/ Q4 y2 v* q  \, q6 j+ ~( I! q  a
) @9 t$ q" `4 D; B! L; f手势识别应用的数据集可以直接使用hand_posture/datasets/目录下的数据集文件:ST_VL53L8CX_handposture_dataset.zip,解压后的数据集如下图所示:
& x6 }, O6 }/ B+ [8 Z! q  Q& ]
14.png
▲ 图2. 手势数据集
也可以使用ST提供的数据采集和标记工具STSW-IMG035_EVK,进行数据采集和标记。点击进入工具的下载地址。
/ k  W" _7 d8 u  v
15.png
▲ 图3. 手势数据采集和标记工具
, y' g6 U. d; t) w
3.2. 配置 1 X# f  o5 e$ ]2 R5 j- G- Z
3 [1 `& Q& S1 H) u- ~7 p' A
在stm32ai-modelzoo\hand_posture\src目录下,有user_config.yaml配置文件,里面可以对各种参数进行配置。" ]( f1 Z3 F' L- u5 c2 |2 k

' s& H3 ~$ x" z4 A3.2.1. 训练 ( U& b" ?, n  L1 h8 Q( r2 W& C
操作模式operation_mode的配置 # M( u6 w4 u+ E( c
操作模式选择training可以进行模型训练,其他可选择的操作模式包括evaluation, deployment, benchmarking。/ ]/ c. S. z4 K' `% _
16.png
▲ 图4. 选择模式
数据集的配置:* J7 I) _( p% N9 s. Q4 Y2 d
17.png
▲ 图5. 数据集配置
  ?- @' c2 q4 u( k$ E0 W
数据集可以来源于仓库的数据集,也可以来源自自己采集的数据,其内容需要和文 件stm32ai-modelzoo\hand_posture\src\utils\handposture_dictionnary.py的数据一致。验证集可以不指定,默认将使用数据集内的20%作为验证。7 P, _; q3 \% M
预处理和数据增强的配置:
& [2 D& I5 y9 W) o4 q2 {
18.png
▲ 图6. 预处理和数据增强
preprocessing:+ E9 S/ m% K: n0 @2 q8 J6 U3 i
- Max_distance:单位为mm,代表传感器的最远距离,如果超过这个距离,就 从数据集中丢弃该帧。! w! |  a! p+ t) `) b
- Min_distance:单位为mm,代表传感器的最远距离,如果小于该距离,则从 数据集中丢弃该帧。
, ^* j8 l# j2 r0 k0 c$ u- Background_distance:单位为mm,手势背景的最大间隔,超过这个间隔的 区域将会被忽略掉。
# l3 t# E  J' p
  S9 T8 }( R( w3 G6 v, p" N9 G: Jdata_augmetation: % j0 n+ a5 Y0 Q# L$ P4 J0 p5 U
使用数据增强可以在一定程度上提升模型的泛化能力,并且当数据比较少的时候可以补充数据集,目前支持的增强模式包括:水平翻转,垂直翻转,水平+垂直翻转。; p& c% K) K" \: ~" a" J, }
训练参数的配置:训练参数的配置如下图7所示,具体内容不再赘述。$ J7 c( s5 Q9 u* H& n- E4 r
19.png
▲ 图7. 训练参数的配置
3.2.2. 评估 7 o8 w' S  Z6 g2 U: `' |6 L, B. Y
操作模式operation_mode选择评估(evaluation)可以进行模型评估,评估的内容主要包括模型flash,ram的占用量,模型的执行时间等。tools的配置如下:$ v2 T; {4 s# S) t
20.png
▲ 图8. Tools的配置

2 w0 O5 l- y4 |  ~! B; }on_cloud:是否需要使用STM32Cube.AI开发者云对模型进行评估,如果不使用云,选择False,则可以使用本地的Cube.AI工具。
% h& k* _( q* n5 l
! c" ~: \4 ?3 m6 |7 V
path_to_stm32ai和path_to_cubeIDE需要配置成自己本地STM32Cube.AI和 STM32CubeIDE的路径。; \5 U2 Z8 o+ P6 w% s9 P4 ?
3 j5 u# z. z. j" n! k
3.2.3. 部署4 `2 M5 n7 \* I% W

6 z/ ^' @7 M' `( _2 @操作模式operation_mode选择部署(deployment)可以进行模型部署。当需要部署到ST开发板进行测试时,需要确保以下配置都正确:: n" I" J, u& g! ^% B0 h1 O
21.png
▲ 图9. 部署相关的配置
$ Y( `$ Z( W- d8 k1 y+ `# q( v5 J- U: X
3.3. 运行脚本
" _4 Q7 J0 A) A0 o; k0 {9 A
8 c7 _9 I0 \' a: J在安装好python环境,并且配置好配置文件之后,就可以运行脚本进行训练,部署或评估流程了。
9 j1 g. r. E4 u) ~: f; h& `8 a% s0 j$ c5 l3 c
3.3.1. 模型训练 , {! E. @! w5 {( v* {  d0 b
直接运行脚本:
8 I2 j) ^3 f# c, l/ Z  Y➢ python stm32ai_main.py 1 r$ }# q$ Q0 \) b% H7 k3 I# `% g
或者指定模式运行脚本:* F- X4 Z' h6 o: J+ {+ b8 ^6 T
➢ python stm32ai_main.py operation_mode=”training”
* u, J& e5 o+ u训练过程中的输出结果:
) j5 ?. K3 ^2 c* p
22.png
▲ 图10. 训练中的输出结果
23.png
▲ 图11. 混淆矩阵
训练完成的结果保存在:experiments_outputs/<时间戳>目录下,包含了训练的log,训练曲线,混淆矩阵,模型等信息。7 V3 P2 V7 f& [! D& x# q6 U9 i

) L' U9 Q+ {8 |7 E3.3.2. 可视化训练结果 " N6 x4 T" z& H
进入logs所在目录(位于experiments_outputs/<时间戳>目录下),然后运行 tensorboard:
, C9 c; g6 H  S" {6 f+ }➢ tensorboard --logdir logs : f7 X, ^" Z  T' J# t7 j
打开网页后,可以看到整个训练过程中的曲线,比如loss曲线,学习率曲线,epoch 曲线等等。* E, w! l% |$ f& y+ J9 ]
24.png
▲ 图12. 准确率曲线
也可以通过mlflow查看实验过程中保存的参数信息,模型实验对比信息等等。进入experiments_outputs目录,然后执行以下命令:% e% @9 i" g; J9 p; s9 o" S
➢ mlflow ui$ b7 ]- P6 l; H# {% S2 p3 `
25.png
▲ 图13. Mlflow界面
3.3.3. 模型评估 3 b$ N- I3 r" {9 f9 D5 ^" v4 {4 w& P
将上一步生成的模型路径,填写到user_config.yaml的model_path目录中,然后运行以下命令,可以查看运行模型评估脚本,并查看结果:: q9 k$ @$ p. Z$ i
➢ python stm32ai_main.py operation_mode=”evaluation”% T& O: t6 M- Y7 k
26.png
▲ 图14. 配置文件和模型评估结果
3.3.4. 基准测试
  {0 j$ N* [! l! z. \# y在上一步完成后,可以运行以下命令,进行模型的基准测试,可以获取模型的flash, ram,macc等信息:
! h) f) `% w# V) H5 y2 {➢ python stm32ai_main.py operation_mode=”benchmarking” ! [% w1 q, Y1 Q% w/ {% X; E
如果不使用开发者云,使用本地的STM32CubeAI,需要将on_cloud改为False,如下图:2 \. R, t& ]/ p8 d! ^1 D. b
27.png
▲ 图15. 配置文件和基准测试
  l8 z! J) v6 Z" S8 M
3.4. 部署
; ]6 ~$ N9 `8 x% p! V) B* L0 W
' g8 h" o0 W7 `$ a$ P! E' c连接好开发板,设置好STM32CubeIDE的路径后,运行以下命令可以编译工程并部署到开发板:
6 [7 H$ b2 u, [$ N- L1 ~9 B, Q+ d➢ python stm32ai_main.py operation_mode=”deployment”5 F$ ]/ Y+ q" U5 s
28.png
▲ 图16. 部署流程
3.5. 总结 6 f0 Q5 m7 v+ W- A) Z
本文介绍了STM32 model-zoo的基本内容,并以手势识别为例,介绍了具体的使用方法,包括模型训练,如何查看模型训练后的结果以及如何部署模型。对于其他model zoo 内的应用案例,感兴趣的话可以去github上下载整个仓库,然后进行阅读并使用。* X1 E% w$ ~0 U: u3 @3 k

- k" e: O9 `- |9 M5 c4 O3 d4 T- }
▼▼▼
点击按钮下载《STM32 AI Model Zoo的安装及实例介绍》原文档。
$ P* q/ Z) A2 d/ s9 u, X点击下载
, y4 C, ~9 O3 B7 [: V1 H  x6 ~ LAT6021_在STM32MP13x系列MPU上裸跑应用程序_v1.0.pdf (3.43 MB, 下载次数: 17)
收藏 1 评论0 发布时间:2025-2-6 09:24

举报

0个回答

所属标签

相似分享

官网相关资源

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