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

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

[复制链接]
STMCU-管管 发布时间:2025-2-6 09:24
01
2 m* c% K2 q  s4 P7 y简介
. F- [. H/ D- }1 s# T- m
2 e4 p- M3 ^) ?! VSTM32 Model Zoo是指ST在github上开源的AI相关模型仓库,其包含的应用包括:手势识别,人体活动姿态识别,图片分类,目标检测等相关应用代码,用户可以使用其中的代码进行简单的配置并进行训练,然后使用STM32Cube.AI工具或STM32CubeAI Developer Cloud 得到模型的Flash,Ram等情况,并进行模型的测试验证,然后部署到开发板中。2 C' l8 f( z9 d) @% u+ `6 Q8 H2 p
本文将以手势识别为例,介绍Model Zoo的使用。
$ c* X! _: a2 R& o6 f1 y0 h" Z' Z9 \& {, j
02. E* o- b) L8 |5 r% l7 J
环境安装 8 i) Y: _9 w# s3 z5 j6 b

9 Z8 }+ h3 N: |4 G4 ]详细的安装步骤可以参考ST的wiki页面。
" }! }! l4 Q" A- p
5 A) D* j1 |- a! X, U3 u1 L' F; t2.1. 设置代理等环境变量6 w6 h" j- Y4 [; p- [

& t; Q8 T3 R* a/ B1 P为了后续使用pip进行python包的安装过程顺利进行,需要设置好代理。需要设置的环境变量包括:
, z' H' T' f6 d! `7 B1 g( _; O& I
12.png
注意特殊字符需要编码成utf-8格式,比如@要替换为%40,其他的特殊字符包括%、@、&、!等。stmai_username 和stmai_password 可以不设置,如果不设置,每次访问 stm32CubeAI Devleloper cloud 都需要手动重新输入用户名和密码。) j# t* Q2 A' S9 K

" K+ I# y' v. W# p2.2. 安装 STM32Cube.AI: Y- J, P$ D+ E

: ]. y) w1 a2 q# {6 s可以使用云端的STM32Cube.AI Developer Cloud, 也可以在本地安装STM32Cube.AI。2 P8 G/ t$ v. H0 ^
: F, M6 h9 C% Q+ v& M' u
如果使用云端,需要保证网络连接,并且注册 myST 账号,确保自己可以正常访问 STM32Cube.AI Developer Cloud 网站。2 s  a+ I4 }' f9 I+ n
( i8 p4 r% n! l9 T! P* a
如果使用本地,可以通过CubeMX进行安装。
. d! U) ~* A& t" G# {  T
2 ^) i  r# v2 H( L/ y2 `' W/ w2.3. 安装STM32 model zoo
% @4 [; H% O  T  M$ A( A$ i, I
2 g% g/ e! ^' }8 B( F5 f' H可以使用git或使用zip包获取STM32 model zoo相关的代码。github仓库位于:https://github.com/STMicroelectronics/stm32ai-modelzoo5 P% A, y7 `8 ]
1. 使用Git:git clone https://github.com/STMicroelectronics/stm32ai-modelzoo.git
) ^5 C5 S' M0 [3 c2. 使用zip:从git仓库中下载zip压缩包,解压即可。
9 x: v9 B3 \0 Q/ K3 b8 O6 F( r% J" ]# k* J! J$ |1 ?8 e
2.4. 安装Python环境
; w- Z  L( I' C* m" h+ H
$ B7 R/ a! Q' a' Q; k+ _& h如果没有本地Python,需要安装好Python,推荐Python v3.10.x。可以使用 Python 或miniconda来管理python环境,推荐使用miniconda。具体安装步骤请参考上文提到的ST WIKI页面。
& P& t3 G8 Z; J- N/ p, }: T; b: b' a- V; }
2.5. 安装STM32CubeIDE
; S  U8 `. ?' l) K0 l2 `- A
" s1 v% G# l- O8 h+ u2 s需要安装STM32CubeIDE 来重新编译生成的固件,安装包可以通过ST官方网站下载。注意:STM32CubeIDE 和 STM32Cube.AI 的安装路径不要有空格,否则可能会出错。
' a. Z8 \) c* ?/ D) k# V3 U! m; v
1 O$ x( n( k1 M& E: K3 {5 j: V6 J2.6. 更新yaml文件9 m6 k! `9 Y0 g" j- ~! S

6 Y6 l! i- U# k0 g% L+ xModel zoo 中的所有yaml中的path_to_stm32ai 和path_to_cubeIDE,需要和本地的安装目录保持一致。
8 j& P0 G, C  v, x, ~' G注意:Model zoo使用mlflow管理生成的模型,Windows的最大路径长度限制为 256,可能会导致问题,建议通过注册表修改LogPathsEnabled为1避免该问题。该键位 Computer/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/FileSystem/
! _$ q, e$ k1 }- J/ G1 y5 V/ i
+ f( j) f" G3 n03: h$ }- J( E4 C$ J9 i7 R7 {* W
手势识别应用7 ]2 Z( j0 d. [: F* s: q8 A
9 m' u+ j8 |: f+ @0 M
手势识别应用位于stm32ai-modelzoo的hand_posture目录下,使用ST的TOF传感器VL53L5CX或VL53L8CX采集数据。用于识别静态的手势,比如like, dislike, love 等手势。其demo应用部署在NUCLEO-F401RE和X-NUCLEO-53LxA1扩展板组合的开发板上。
" A" h" w- w) G0 x
13.png
▲ 图1. 部署环境和开发板
3.1. 数据集
0 S7 o6 y& G9 E0 e. ^6 d% p! d7 O  }
0 d  }& v" t: h6 T" n$ l手势识别应用的数据集可以直接使用hand_posture/datasets/目录下的数据集文件:ST_VL53L8CX_handposture_dataset.zip,解压后的数据集如下图所示:
, L3 |+ S3 g; {/ g! }/ L0 `7 q# E0 ^& C
14.png
▲ 图2. 手势数据集
也可以使用ST提供的数据采集和标记工具STSW-IMG035_EVK,进行数据采集和标记。点击进入工具的下载地址。4 I6 b+ U8 r2 z9 _& G
15.png
▲ 图3. 手势数据采集和标记工具
& |$ i. @% q3 r, F! {
3.2. 配置 0 ]0 o* D( T9 G7 P. N" R3 m
0 a. L% K$ `5 o2 B- S
在stm32ai-modelzoo\hand_posture\src目录下,有user_config.yaml配置文件,里面可以对各种参数进行配置。
; H1 \* b/ T0 Y9 G( Y

; I. `0 s- f0 ~! s1 D3.2.1. 训练
& Z8 P( R8 q: e7 D& k操作模式operation_mode的配置 9 k$ O/ p" }$ \! M9 {0 }$ S
操作模式选择training可以进行模型训练,其他可选择的操作模式包括evaluation, deployment, benchmarking。
3 g/ Y9 N9 p+ _( o  Z
16.png
▲ 图4. 选择模式
数据集的配置:7 r" O- Q9 ]; V- Y: T- }! i$ |
17.png
▲ 图5. 数据集配置
. v0 y: V! v: T) P$ ]5 d
数据集可以来源于仓库的数据集,也可以来源自自己采集的数据,其内容需要和文 件stm32ai-modelzoo\hand_posture\src\utils\handposture_dictionnary.py的数据一致。验证集可以不指定,默认将使用数据集内的20%作为验证。# Z2 j! u% e1 ^: I* _$ W1 I  T+ v2 C
预处理和数据增强的配置:
% c$ |# z/ H3 F- z  j( y) o! S
18.png
▲ 图6. 预处理和数据增强
preprocessing:. N) W0 l$ F1 [- E* }
- Max_distance:单位为mm,代表传感器的最远距离,如果超过这个距离,就 从数据集中丢弃该帧。- U+ L$ w' T" M) {/ r# C' n- h
- Min_distance:单位为mm,代表传感器的最远距离,如果小于该距离,则从 数据集中丢弃该帧。4 l+ w5 y' ^" r! R+ m' h
- Background_distance:单位为mm,手势背景的最大间隔,超过这个间隔的 区域将会被忽略掉。
5 e# \" j/ S4 T2 O9 n: n
. h% l; {+ L& n% _+ P5 Ndata_augmetation:
& K$ n4 K' z" c) O9 F! ]使用数据增强可以在一定程度上提升模型的泛化能力,并且当数据比较少的时候可以补充数据集,目前支持的增强模式包括:水平翻转,垂直翻转,水平+垂直翻转。
7 x2 x( X: A& ?3 R- U训练参数的配置:训练参数的配置如下图7所示,具体内容不再赘述。  D4 `1 @3 ^. Z3 i# ?+ ~4 g: Q3 r+ m
19.png
▲ 图7. 训练参数的配置
3.2.2. 评估 2 Z; L& p$ g) u* o" s2 P
操作模式operation_mode选择评估(evaluation)可以进行模型评估,评估的内容主要包括模型flash,ram的占用量,模型的执行时间等。tools的配置如下:0 p  T9 W6 e) O; W  {
20.png
▲ 图8. Tools的配置
5 [' S3 ]7 [, y
on_cloud:是否需要使用STM32Cube.AI开发者云对模型进行评估,如果不使用云,选择False,则可以使用本地的Cube.AI工具。( b& O& s: ?' j# H/ ]

3 t& K5 {# f; l
path_to_stm32ai和path_to_cubeIDE需要配置成自己本地STM32Cube.AI和 STM32CubeIDE的路径。
( z$ g3 j0 O' D- L3 f" S
' u" E/ Z3 ?0 S6 Q9 X1 O3.2.3. 部署
, w7 l. Z8 W3 E! l1 R& D

& C4 ]$ P2 M. h0 _6 a操作模式operation_mode选择部署(deployment)可以进行模型部署。当需要部署到ST开发板进行测试时,需要确保以下配置都正确:2 R4 t; x/ O- c' B1 C
21.png
▲ 图9. 部署相关的配置

" ]: J+ N3 k3 R: ~3 a, k( w3.3. 运行脚本
/ {5 J' n% Y6 Y: }& z
( F8 H# }( h8 T在安装好python环境,并且配置好配置文件之后,就可以运行脚本进行训练,部署或评估流程了。
5 w, o9 s7 T6 S$ M/ P& I, y* n. n1 j" r$ r7 C; y- m# A
3.3.1. 模型训练
) T1 C+ X/ b; n5 z$ {5 K! d直接运行脚本:4 n3 C" b" s# D4 R! C) m+ [9 [0 j8 i
➢ python stm32ai_main.py
; ^2 g3 m! L8 d0 g# W1 N7 ?  f或者指定模式运行脚本:
. q/ {( L6 D/ y/ k* b# a➢ python stm32ai_main.py operation_mode=”training” 5 u- a$ y6 r! O: F0 q! g7 D, k
训练过程中的输出结果:+ O' w$ O+ [3 w" h% F
22.png
▲ 图10. 训练中的输出结果
23.png
▲ 图11. 混淆矩阵
训练完成的结果保存在:experiments_outputs/<时间戳>目录下,包含了训练的log,训练曲线,混淆矩阵,模型等信息。, {' z$ S3 V1 l0 Q& ]; p- m
+ S7 V$ j+ {" ]& F8 F% J
3.3.2. 可视化训练结果 ' k  l8 X" S  T  v9 g6 Q
进入logs所在目录(位于experiments_outputs/<时间戳>目录下),然后运行 tensorboard: 9 s, K- y- B6 y- Y6 W
➢ tensorboard --logdir logs 9 @+ G5 H& ^2 c7 b) K# ^
打开网页后,可以看到整个训练过程中的曲线,比如loss曲线,学习率曲线,epoch 曲线等等。
$ I9 k# k+ Y; H$ B
24.png
▲ 图12. 准确率曲线
也可以通过mlflow查看实验过程中保存的参数信息,模型实验对比信息等等。进入experiments_outputs目录,然后执行以下命令:4 v) {6 I4 v' F* ?" T
➢ mlflow ui7 d: n4 l4 o: n! X6 e
25.png
▲ 图13. Mlflow界面
3.3.3. 模型评估
5 M$ f( m% `) `" U, p将上一步生成的模型路径,填写到user_config.yaml的model_path目录中,然后运行以下命令,可以查看运行模型评估脚本,并查看结果:
9 _- R8 z2 P8 n; `, i➢ python stm32ai_main.py operation_mode=”evaluation”# v4 z2 E, j6 O! m! P# _( I
26.png
▲ 图14. 配置文件和模型评估结果
3.3.4. 基准测试 + `, m- C) L* Y) a  ?% U) Z
在上一步完成后,可以运行以下命令,进行模型的基准测试,可以获取模型的flash, ram,macc等信息:
1 z- o8 F  j) V5 o) R( t➢ python stm32ai_main.py operation_mode=”benchmarking”
  p- [, }# L/ F4 q) Q( O% Z) ]如果不使用开发者云,使用本地的STM32CubeAI,需要将on_cloud改为False,如下图:& h, h4 p) U1 h; W
27.png
▲ 图15. 配置文件和基准测试
/ E( N2 d, `7 Z( g3 n6 y" Z) t
3.4. 部署
8 J" h# x1 _4 Y! Q  p5 D
4 \! K% ^# `$ v4 ~: q  P% q连接好开发板,设置好STM32CubeIDE的路径后,运行以下命令可以编译工程并部署到开发板:
* U: u5 p: q2 {. H8 [➢ python stm32ai_main.py operation_mode=”deployment”
" o1 b9 K6 ?8 `6 r; }; K
28.png
▲ 图16. 部署流程
3.5. 总结
, M* A! @, T. G0 Y1 a* i7 d本文介绍了STM32 model-zoo的基本内容,并以手势识别为例,介绍了具体的使用方法,包括模型训练,如何查看模型训练后的结果以及如何部署模型。对于其他model zoo 内的应用案例,感兴趣的话可以去github上下载整个仓库,然后进行阅读并使用。% w" y7 d! D) ]" M; A1 X

; {0 r, g! W  I1 v$ F9 h
▼▼▼
点击按钮下载《STM32 AI Model Zoo的安装及实例介绍》原文档。' v6 I6 e% L7 ?% z
点击下载* G8 [( @$ D) \9 ^+ p. [
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 手机版