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

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

[复制链接]
STMCU-管管 发布时间:2025-2-6 09:24
01  r" ]  i% ^. h1 g8 }# F
简介
  k& ^* S& c$ p. F# M" L
. M3 Q) X) q& sSTM32 Model Zoo是指ST在github上开源的AI相关模型仓库,其包含的应用包括:手势识别,人体活动姿态识别,图片分类,目标检测等相关应用代码,用户可以使用其中的代码进行简单的配置并进行训练,然后使用STM32Cube.AI工具或STM32CubeAI Developer Cloud 得到模型的Flash,Ram等情况,并进行模型的测试验证,然后部署到开发板中。
- L: V0 b1 N7 W$ ~! g" ~: ]: ~本文将以手势识别为例,介绍Model Zoo的使用。
, U- B. S; @: S) E  }
+ b( o; o# S, q& X* d% S02/ {: _) s: c% A" U9 C4 m% a! e. O
环境安装
7 v4 U/ D% t6 r/ @: t4 b3 F# E$ V0 \4 w; U% M
详细的安装步骤可以参考ST的wiki页面。7 j8 E8 F. n9 P& V% b; ?% d+ G1 \) |
4 U4 z# n1 U! Z# w! B0 G
2.1. 设置代理等环境变量
5 U5 }3 v* \8 L6 r2 `. b
4 m, t% M; l) L& j
为了后续使用pip进行python包的安装过程顺利进行,需要设置好代理。需要设置的环境变量包括:
! H. ?; n: R% L# t4 u5 T
12.png
注意特殊字符需要编码成utf-8格式,比如@要替换为%40,其他的特殊字符包括%、@、&、!等。stmai_username 和stmai_password 可以不设置,如果不设置,每次访问 stm32CubeAI Devleloper cloud 都需要手动重新输入用户名和密码。  i$ Z# j, G. N/ o$ z& y, M. T

: a( A) n0 [5 o/ ~( q! J1 a2.2. 安装 STM32Cube.AI
! e! k% |) u  v& x
8 N& u$ e; ?( n
可以使用云端的STM32Cube.AI Developer Cloud, 也可以在本地安装STM32Cube.AI。
' U3 i$ t$ f$ D1 Z

; C; a1 P  k+ ^" q. v/ v7 N  y如果使用云端,需要保证网络连接,并且注册 myST 账号,确保自己可以正常访问 STM32Cube.AI Developer Cloud 网站。
4 c9 |0 g4 m5 }' U6 Q

3 ~% v7 F+ f! e! c0 G3 d/ k7 z如果使用本地,可以通过CubeMX进行安装。7 |6 f* W0 x2 T" Z9 h6 h8 _
4 {1 q) U; s0 G) u9 {1 {( @2 ^
2.3. 安装STM32 model zoo 1 A* M6 d% l8 R0 s/ n
7 E( ~: n; P. a5 E; M+ G
可以使用git或使用zip包获取STM32 model zoo相关的代码。github仓库位于:https://github.com/STMicroelectronics/stm32ai-modelzoo0 O; T& K& ]! \
1. 使用Git:git clone https://github.com/STMicroelectronics/stm32ai-modelzoo.git
) s2 K, o1 k8 j" w2 S) h2. 使用zip:从git仓库中下载zip压缩包,解压即可。6 \; _4 z) a( Y
, [4 ^1 y7 e5 G
2.4. 安装Python环境
, }; I" b5 B( W/ v5 B$ C3 i
0 m8 y7 B  Y0 t& p( d' N如果没有本地Python,需要安装好Python,推荐Python v3.10.x。可以使用 Python 或miniconda来管理python环境,推荐使用miniconda。具体安装步骤请参考上文提到的ST WIKI页面。
' r/ L0 N: s0 k8 U3 z: X9 i+ P; ]
8 i1 [7 K/ _, P& P+ ?+ a+ Y& l2.5. 安装STM32CubeIDE . m$ b! t5 U9 j+ G, ?

% `: O6 F% A; u+ q- j+ L4 Q) N需要安装STM32CubeIDE 来重新编译生成的固件,安装包可以通过ST官方网站下载。注意:STM32CubeIDE 和 STM32Cube.AI 的安装路径不要有空格,否则可能会出错。
) g0 M' V" y# }. `4 S7 h, u6 e) W6 Q' y0 g0 [: F; I& u! u: Q' z6 l
2.6. 更新yaml文件
7 V9 M* E: Z4 j- ?- d) U+ F; Z# {
6 w7 A7 ~/ @$ c- b4 i
Model zoo 中的所有yaml中的path_to_stm32ai 和path_to_cubeIDE,需要和本地的安装目录保持一致。
" X- n0 J+ }- a. _* f: P3 K& a( Q" L注意:Model zoo使用mlflow管理生成的模型,Windows的最大路径长度限制为 256,可能会导致问题,建议通过注册表修改LogPathsEnabled为1避免该问题。该键位 Computer/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/FileSystem/
* W! {/ U, j  [/ O1 T; K
  ?& K. V; I) a+ r* z* ~03; P  n; l6 a9 D" {3 G# {
手势识别应用
6 L$ Z( w% p% N! p8 X
- B  N' D! O8 z( @& ?. S' c( k手势识别应用位于stm32ai-modelzoo的hand_posture目录下,使用ST的TOF传感器VL53L5CX或VL53L8CX采集数据。用于识别静态的手势,比如like, dislike, love 等手势。其demo应用部署在NUCLEO-F401RE和X-NUCLEO-53LxA1扩展板组合的开发板上。$ A' j! w/ T- X6 z8 j7 l$ L+ e4 l
13.png
▲ 图1. 部署环境和开发板
3.1. 数据集
- z! V/ b5 [# \3 d2 h: U. I# k
  f/ K; `1 ~* g7 k0 s- ?手势识别应用的数据集可以直接使用hand_posture/datasets/目录下的数据集文件:ST_VL53L8CX_handposture_dataset.zip,解压后的数据集如下图所示:
# P" g& Q5 b) ^, m% ?" N" U
14.png
▲ 图2. 手势数据集
也可以使用ST提供的数据采集和标记工具STSW-IMG035_EVK,进行数据采集和标记。点击进入工具的下载地址。  }0 a7 h8 ~: w/ X! r
15.png
▲ 图3. 手势数据采集和标记工具
% \7 w6 w& ^  W9 T3 _& _- V
3.2. 配置 1 H5 e& e2 ~3 u: ^6 D
3 L3 H5 K% j* @; C& u
在stm32ai-modelzoo\hand_posture\src目录下,有user_config.yaml配置文件,里面可以对各种参数进行配置。
0 d+ ]8 e# F2 e8 V. E* A$ Z
, n2 Q1 z& J, |+ T- G7 o
3.2.1. 训练
8 C8 [0 @9 A- R) u1 A* }% q9 y" q操作模式operation_mode的配置 * x3 p2 Y! Y% ~5 m
操作模式选择training可以进行模型训练,其他可选择的操作模式包括evaluation, deployment, benchmarking。
" T- Z' i0 |  A6 ?1 m' v/ r
16.png
▲ 图4. 选择模式
数据集的配置:1 s4 s( b1 @$ i" X' b" `* Z
17.png
▲ 图5. 数据集配置
! t  X0 S5 ?# n- N
数据集可以来源于仓库的数据集,也可以来源自自己采集的数据,其内容需要和文 件stm32ai-modelzoo\hand_posture\src\utils\handposture_dictionnary.py的数据一致。验证集可以不指定,默认将使用数据集内的20%作为验证。
) a0 `0 O4 F2 E8 t8 S预处理和数据增强的配置:! F, @/ w" ]* Y) e9 ?3 x$ `! w
18.png
▲ 图6. 预处理和数据增强
preprocessing:
6 C4 i- M# e3 P7 j- Max_distance:单位为mm,代表传感器的最远距离,如果超过这个距离,就 从数据集中丢弃该帧。
1 N. [. o4 R- i$ c- Min_distance:单位为mm,代表传感器的最远距离,如果小于该距离,则从 数据集中丢弃该帧。
* U; [$ I! [- V2 d5 u4 s: C- Background_distance:单位为mm,手势背景的最大间隔,超过这个间隔的 区域将会被忽略掉。- x: Q$ o2 j& y+ D
' [* ?" n3 j2 i) `7 u  S/ X4 s: G
data_augmetation: ' a6 G3 v; H1 L! V4 b7 A  K, i$ [
使用数据增强可以在一定程度上提升模型的泛化能力,并且当数据比较少的时候可以补充数据集,目前支持的增强模式包括:水平翻转,垂直翻转,水平+垂直翻转。
$ D; I) q% A4 M0 A1 E训练参数的配置:训练参数的配置如下图7所示,具体内容不再赘述。
' \! T) L: f5 v, T7 k: p
19.png
▲ 图7. 训练参数的配置
3.2.2. 评估 / V. V4 v7 ^8 E9 p$ x3 w9 r3 R4 q) K0 v
操作模式operation_mode选择评估(evaluation)可以进行模型评估,评估的内容主要包括模型flash,ram的占用量,模型的执行时间等。tools的配置如下:# ]- B% u+ f' a) q
20.png
▲ 图8. Tools的配置
6 L$ b0 _  x) ]( y$ T. E8 P7 M
on_cloud:是否需要使用STM32Cube.AI开发者云对模型进行评估,如果不使用云,选择False,则可以使用本地的Cube.AI工具。
+ U6 |& \# v. {! N5 L; k
0 [5 P7 ^& C1 L
path_to_stm32ai和path_to_cubeIDE需要配置成自己本地STM32Cube.AI和 STM32CubeIDE的路径。
2 b8 ~! v  ~  y
; e; M9 r5 H: O% J7 U9 X3.2.3. 部署8 e4 W+ q) V& S9 i4 @
, O; Q$ r" w9 D5 Y& f1 x
操作模式operation_mode选择部署(deployment)可以进行模型部署。当需要部署到ST开发板进行测试时,需要确保以下配置都正确:
5 C. o  K, Z  t4 X
21.png
▲ 图9. 部署相关的配置

/ D+ _4 l4 q2 g1 b3.3. 运行脚本
$ j$ t5 e& T- \8 C, x5 Y3 p1 K, T) P
在安装好python环境,并且配置好配置文件之后,就可以运行脚本进行训练,部署或评估流程了。
: R8 \% ?- }& w+ z  F: T: w% e. }6 Z, A6 B+ U6 k2 u
3.3.1. 模型训练 ' p& l# r9 B4 d' z& O# x" a
直接运行脚本:. R# R0 \5 C9 m1 E  d
➢ python stm32ai_main.py + @$ k1 x; h( k, e& @
或者指定模式运行脚本:2 s& `! S8 X. O) z3 q- B. E
➢ python stm32ai_main.py operation_mode=”training” 2 b: X' J. K2 M' K
训练过程中的输出结果:
7 f, X0 `& @- p4 {5 W/ t6 B
22.png
▲ 图10. 训练中的输出结果
23.png
▲ 图11. 混淆矩阵
训练完成的结果保存在:experiments_outputs/<时间戳>目录下,包含了训练的log,训练曲线,混淆矩阵,模型等信息。1 V: n7 i5 B% f: V2 B+ Z
& z/ ^9 L7 g( ^3 I# G
3.3.2. 可视化训练结果
6 ~; c0 p7 I: d" ~& x$ Q5 a1 \进入logs所在目录(位于experiments_outputs/<时间戳>目录下),然后运行 tensorboard: 3 [1 w% N# d" y& T( }$ q
➢ tensorboard --logdir logs % A: k/ a( K0 a/ O: ~
打开网页后,可以看到整个训练过程中的曲线,比如loss曲线,学习率曲线,epoch 曲线等等。$ {4 m6 J$ x5 R: k+ }! e% F7 N
24.png
▲ 图12. 准确率曲线
也可以通过mlflow查看实验过程中保存的参数信息,模型实验对比信息等等。进入experiments_outputs目录,然后执行以下命令:
* S8 u$ t4 q# n0 w8 N9 q➢ mlflow ui
' ~$ M, n/ O8 v) o
25.png
▲ 图13. Mlflow界面
3.3.3. 模型评估
* ?6 R, b( `3 d  t$ k7 D. N将上一步生成的模型路径,填写到user_config.yaml的model_path目录中,然后运行以下命令,可以查看运行模型评估脚本,并查看结果:* N5 }4 ^1 w, G
➢ python stm32ai_main.py operation_mode=”evaluation”
) m2 N  E6 ]* l4 L
26.png
▲ 图14. 配置文件和模型评估结果
3.3.4. 基准测试 ' I& h6 h! J% z$ X# |% c
在上一步完成后,可以运行以下命令,进行模型的基准测试,可以获取模型的flash, ram,macc等信息:, ~8 c7 U( U  Q' \' P
➢ python stm32ai_main.py operation_mode=”benchmarking” 2 M$ n0 c  F: V, |4 p6 Z0 m
如果不使用开发者云,使用本地的STM32CubeAI,需要将on_cloud改为False,如下图:4 E/ z/ `2 s9 j5 N6 z- J( e" ]8 {& c
27.png
▲ 图15. 配置文件和基准测试
+ S" J4 B# y# H- L) T
3.4. 部署
- x% L  D& ^  U  v% v  R
6 f* s4 O4 h$ M( M$ T' ^连接好开发板,设置好STM32CubeIDE的路径后,运行以下命令可以编译工程并部署到开发板:  Z, |5 G5 s/ L7 R6 W' j: a
➢ python stm32ai_main.py operation_mode=”deployment”0 K6 _* X8 l9 G" n/ t' I2 g/ Y
28.png
▲ 图16. 部署流程
3.5. 总结
, T' f" P6 O0 N  N本文介绍了STM32 model-zoo的基本内容,并以手势识别为例,介绍了具体的使用方法,包括模型训练,如何查看模型训练后的结果以及如何部署模型。对于其他model zoo 内的应用案例,感兴趣的话可以去github上下载整个仓库,然后进行阅读并使用。
+ c6 Q9 {" a7 }+ T% R! @

9 `. s" s( W& s6 S9 V
▼▼▼
点击按钮下载《STM32 AI Model Zoo的安装及实例介绍》原文档。0 ]" n5 I: ]( n2 E+ E. Q
点击下载
5 N3 H% R2 H& x 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 手机版