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

基于STM32F767ZI AI 应用工程创建----转载  

[复制链接]
木木&点点 发布时间:2019-1-6 17:29
偶然看到一篇好文章,分享给大家。

& @$ w! l$ H+ O1 M# R4 Q7 N" _7 y9 f: s& k% z
1.jpg
3 y' J, h/ s3 O7 T! [7 \" R
今天介绍下ST官方刚刚推出的CubeMx 自带的X-CUBE-AI(Artificial intelligent)插件功能,可以给现有的STM32 M3-M7高性能的处理器添加基于训练好的ANN 的模型用于不同的数据分析处理。

& U1 x. Z2 f& g6 ^) T0 C! ^# W: V
使用STM32Cube.AI简化了人工神经网络映射
6 [" E! _9 d0 O, `
1.可与流行的深度学习培训工具互操作
2.兼容许多IDE和编译器
3.传感器和RTOS无关
4.允许多个人工神经网络在单个STM32MCU上运行
5.完全支持超低功耗STM32MCU
4 _0 O2 c& \7 K3 K& q
提高您的工作效率

) f# w! k. F: Q
利用DeepLearning的强大功能提高信号处理性能并提高STM32应用程序的生产率。创建人工神经网络并将其映射到STM32(通过CubeMx自动生成优化的代码),而无需手动构建代码。
以上就做个简短的介绍,想了解更多有关STM32Cube.AI可以访问下面的链接:http://www.st.com/content/st_com ... 2_gl_social_dec2018

: N, {7 Y9 u& R" N4 d7 [: q# v
那先前的准备工作就是需要安装最新版本的CubeMx 5.0.1
然后使用CubeMx 去安装X-CUBE-AI插件, 700多M的容量。。慢慢下载吧

/ x' m/ o/ ?7 K
2.jpg
- l3 A; W/ ^# @( ~8 P; E
下载好后,CubeMx里的Artificial intelligent
激活Enable
6 g4 X: x# E( k" I% O/ |0 F
3.jpg

6 G$ u; `$ p( G+ X& {# i2 L! q$ s
这里我们就可以看到里面的选项了
下载下来。。然后选择Keras 的AI API算法

( G+ D7 J- |3 |/ O# r  H, x7 t: |
4.jpg

1 `$ w' M: ?: F& c4 c! V
model.h5就是我们需要导入到工程里的AI Keras的训练好的模型

+ G8 ~' x6 X! Y, X& u: ^; P
5.jpg

6 Q: k5 v( _: b
Human Activity Recognition Using Convolutional Neural Network in Keras
人类活动识别卷积神经网络算法模型
6.jpg

+ f; J) f+ ?3 V; ^. t& z, W
然后我们导入到工程里
7.jpg

: z" V' {& F5 ?! R: p
这里选择压缩参数,不同的压缩参数对MCU的flash容量
要求也不一样。。
8.jpg

! p0 Y) A5 e) s% W
点击Analyze cube就好计算使用这个神经网络算法的ram和flash容量占用

% S/ g9 q/ ]( V6 L. G& h! c; o# _
9.jpg
/ C2 F0 Y) M! w6 O' j4 B
好了结果出来了,
8 g  K- i# p& H" U/ u, x
10.jpg

9 g$ z# m$ m5 C' t# ]4 ~8 {9 B  m
经过分析后Cube会自动列出可以使用的MCU
然后显示在列表里
11.jpg

/ r5 F) q4 O5 b: q( J# O
这里举个例子,我们选择没有压缩优化
分析模型算法后的结果我没有匹配的MCU可以使用
8 O! u& u  |6 I; D( X
12.jpg

" P& a2 S; U* b" U0 r7 S
这是选择压缩比参数8的结果,可以支持很多的MCU使用这个神经网络算法。。

4 `- i1 C) A& ?1 ]+ v* J
13.jpg
  b$ Z. t  U& G( K' ~) `# }& @
好了,这里我们就选择STM32F767ZI Nucleo 板卡作为 这次演示使用的板卡

% T' ^, b; R- p7 x
14.jpg
好了选择好了,板卡,我们还需要给它添加扩展库,也就是AI库
+ m6 r1 m6 O8 z0 s: M
7 Z$ ]2 a; q( A/ V) ?
15.jpg

$ S" T: z$ r3 e' s$ ~
/ n1 p0 ~5 d- t& u
选择好Validation 和打勾 AI core
" j% r/ J+ r( c4 p
16.jpg

% g1 G  Y1 C% U( d6 s' w% O
然后在cube 左下方可以看到下图箭头 提示的插件功能

- a) B) s8 D& H) F! w5 |/ J: Y
17.jpg
0 B# q* J3 Z8 J& A$ I
我们需要打勾以下2个功能
/ B' [( K1 `6 d8 F3 K1 {7 l+ C
18.jpg
. V4 f8 \, Z0 @- V
然后创建我的AI算法名称,这个名称会在后续的里自动创建好。

0 p/ @' x: G; }  W4 P- [  E
19.jpg

  Y1 W  O* ]/ s( Q7 A
添加好,我们下载好的AI神经网络算法,然后再Analyze下就好。。打勾表示验证通过
4 w$ y4 r& `, H* N
20.jpg

5 `9 q, I; _% M: z$ l. [& g# W! d
然后我们需要配置我们的mcu的 CPU ICache 和 CPU DCache
* N) r$ h: K6 `: k) x
21.jpg

/ Q7 m, e. P" f# R7 ~
然后配置MCU主频为216Mhz
8 F* I* N0 K( v' P5 L. g% w6 v
22.jpg
0 c+ X. _" `6 l8 ]% i1 H
' e9 u5 f, ]$ ?! h& o) a
然后我们需要配置串口3和CubeMx进行通讯,验证我们工程。。。
5 y# P" N: R2 X- `5 e2 t
23.jpg
4 @$ \. C5 ^% f) ~2 m! G% l
然后在 AI扩展功能里选择通讯端口为串口3
  L' Q9 V. m8 Y+ b/ n0 y
24.jpg
好了,工程差不多创建好了。接下来就是 配置工程的路径好 我们配置使用IAR 编译环境。。 然后Heap 然后要配置到2000 这个很重要,要是设置少了 系统就会奔溃(切记)
# G  e3 L7 [5 K3 o2 l- n: E4 ^( ^
1 Z  E6 T- E3 P, Z7 N
25.jpg
# z# z: J3 }7 f+ f4 [" r
好了工程生成好了,我们就可以 使用IAR 打开工程了 工程如下,工程里自动生成了基于AI的算法的所以文件
; h* R) ?* A. k# u4 P  c. b4 I
26.jpg

# S8 |1 O0 f  v( W! Y& v
这里可以看到,基于AI训练好的模型数据列表。。。
4 [0 }4 E: d6 N8 V) p+ q( W
27.jpg

7 l( E" J, o" Z: u
好了,配置位STLINK,然后编译好就可以直接下载到板子上了

  M6 ?8 M7 Y1 i/ ]1 P$ C
28.jpg

+ L& D2 W3 {. V' S
29.jpg
好了,现在我们需要回到CubeMx里,回到 AI扩展功能里。。 先重启下开发板,然后 点击Validation on target
# \2 s$ d; p8 A! H) {& U7 S* s4 D) E

- O3 w: r  Y3 Z! j
30.jpg

0 r! d/ }6 e) A$ i% Z
选择手动,然后选择对应的串口端口

% @  c, B; B1 n7 W. l5 `8 K/ U
31.jpg

. O; [3 Q0 A6 }8 j
这里可以看到验证已经开始了‘

! S1 f" k  j+ V) F
32.jpg
好了,结果出来了。我们可以在串口输出的信息里看到有关的数据

* h" \* p/ E; L4 R
33.jpg
4 z. h$ k6 P% D$ U% o
34.jpg
35.jpg

" F& X5 H+ K1 R& v
36.jpg

3 ^7 R1 I) F) K- f* u& e; U. ~% @3 w
好了,基于CubeMx+AI扩展库的使用就分享到这了,想了解更多关于 使用STM32 AI的朋友可以关注ST官网的教程。。。
收藏 3 评论33 发布时间:2019-1-6 17:29

举报

33个回答
单片机爱好者 回答时间:2019-5-25 21:12:11
Build target 'STM32F767_AI'
3 f  ~8 E/ u) q6 B7 a) n+ yassembling startup_stm32f767xx.s...! x3 r) d. b; d
compiling main.c...  |5 P% y& K3 b% v; I* I
../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory2 K: e% r) N$ T4 @# I, M5 b
  #include "network.h"& E0 V' D% i/ C, y% ]
../Src/main.c: 0 warnings, 1 error
  a# Y: c# ^. w9 O- A8 C" Ucompiling app_x-cube-ai.c...' y, d2 |8 N! ]6 d# I- A
../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory0 i! b4 n% B# Q. S1 \
  #include "network.h"2 U1 ^9 ^& M, S& A
../Src/app_x-cube-ai.c: 0 warnings, 1 error
3 _( m5 d$ E9 Z9 r2 p/ T5 `3 M( dcompiling stm32f7xx_it.c...8 A( {" @8 a7 E! X2 g, k
compiling stm32f7xx_hal_msp.c...
, {1 m3 k+ {5 y+ mcompiling stm32f7xx_hal_cortex.c...! R! a9 p# d+ u( k. D: A- @9 _
compiling stm32f7xx_hal_crc.c...
4 X$ n' ^: x, w, `: H9 Rcompiling stm32f7xx_hal_crc_ex.c...
  g: a+ c. ^- p/ _8 Y- D9 A; ~3 B1 Kcompiling stm32f7xx_hal_tim.c...
9 J, Z: w& H6 M: w6 y% kcompiling stm32f7xx_hal_tim_ex.c...2 Z- O2 Q0 O* E/ w
compiling stm32f7xx_hal_uart.c...4 J' p; R$ A+ h( H( \
compiling stm32f7xx_hal_uart_ex.c...5 |0 {+ P/ c8 x, ~! ]
compiling stm32f7xx_hal_rcc.c...  v$ T6 A7 u$ c% D& M
compiling stm32f7xx_hal_rcc_ex.c...
- o  W& c4 M  ~9 x( Lcompiling stm32f7xx_hal_flash.c...
7 v; k. s1 D9 L- x; B  \& Mcompiling stm32f7xx_hal_flash_ex.c...$ `+ C  `/ K0 J
compiling stm32f7xx_hal_gpio.c...( G  N# \* R7 t& q7 H
compiling stm32f7xx_hal_dma.c...
! G4 w* N, h: m( v+ c& ~5 g. _compiling stm32f7xx_hal_dma_ex.c...
7 H" l5 r$ e2 O) Ccompiling stm32f7xx_hal_pwr.c...
" b7 c& o0 Z# k- I8 Tcompiling stm32f7xx_hal_pwr_ex.c...* ?5 A( z8 ~/ }, F
compiling stm32f7xx_hal.c...
  s7 Q' e3 W1 h, G$ v: gcompiling stm32f7xx_hal_i2c.c...6 c# z% g1 b7 i( |% V
compiling stm32f7xx_hal_i2c_ex.c...+ W) W7 _) F7 i( i+ i! z* i; U
compiling stm32f7xx_hal_exti.c..." h* F2 I5 s, c& w. D1 q' Y% \
compiling system_stm32f7xx.c...
2 Z$ q9 z6 n& m$ d, m! \4 dcompiling aiPbMgr.c...8 x1 |# c" k1 g$ R" |3 H7 s4 q1 u
../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory
5 J" R. s# N% U1 U8 }  i  #include "network.h") o+ x" D! q# f4 o  E, y
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiPbMgr.c: 0 warnings, 1 error, V8 M! j( I8 i. n# z, u
compiling aiTestUtility.c...4 O6 s6 t; w8 W! t7 A
../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory- h+ ^" T0 A/ w: }" `2 ^2 m2 s
  #include "network.h"+ J1 I" Y( {, P4 q
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiTestUtility.c: 0 warnings, 1 error1 w. H. j& k7 G5 V# h6 X
compiling aiValidation.c...4 R, T" s% `* [9 T
../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory$ M3 E% z/ M, t! y- d. ^( i$ q
  #include "network.h"
0 b# A' f) L5 k1 g$ y' t../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiValidation.c: 0 warnings, 1 error
; [: y: Z) Y, O3 ocompiling pb_common.c...
- P4 D. T$ I. q$ _compiling pb_decode.c...
( R" z4 H7 B% W+ f5 n% jcompiling pb_encode.c...
( @, a- `- ~- [% }) W' |; q$ G+ I4 ncompiling stm32msg.pb.c...
5 C! L: u: M9 b& l"STM32F767_AI\STM32F767_AI.axf" - 5 Error(s), 0 Warning(s).+ s6 ]+ @# g* P
Target not created.
单片机爱好者 回答时间:2019-5-25 21:11:53
Build target 'STM32F767_AI'
; @7 B% a( P9 P2 fassembling startup_stm32f767xx.s...
9 S: Y% O5 a9 i5 T+ |compiling main.c...
5 L& F) k5 I; v../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory' N6 g0 G  T4 F
  #include "network.h"2 n: D0 i$ U. V. w* y+ l. M
../Src/main.c: 0 warnings, 1 error
7 o4 }6 Y. `  o- p: T- Wcompiling app_x-cube-ai.c...
( I4 r% N6 G$ x6 v" u+ C../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory( }9 Y8 L3 h5 S$ q4 g
  #include "network.h"/ O. H' }% V8 N; N3 C
../Src/app_x-cube-ai.c: 0 warnings, 1 error
3 a2 f% i( {- Zcompiling stm32f7xx_it.c...4 p2 t- Y& W: z  }8 _* ^' q. u
compiling stm32f7xx_hal_msp.c...$ w# y  ^1 X; x4 M
compiling stm32f7xx_hal_cortex.c...
9 Z% {% x( z4 u" r! W( B, gcompiling stm32f7xx_hal_crc.c...
1 A  w- @* _( j( j5 Hcompiling stm32f7xx_hal_crc_ex.c...6 k- [7 f: c6 ~5 {
compiling stm32f7xx_hal_tim.c..." w- U" W0 B3 h4 s" ?6 T
compiling stm32f7xx_hal_tim_ex.c...
) R9 T9 v3 P1 D  Z4 \compiling stm32f7xx_hal_uart.c...
+ u2 t0 a- ~! ]compiling stm32f7xx_hal_uart_ex.c...$ m! O4 k* ~8 j/ S+ g
compiling stm32f7xx_hal_rcc.c...
- e' k7 }: O4 q3 L" n7 Ycompiling stm32f7xx_hal_rcc_ex.c.../ r1 U7 G- Q- E* u. e
compiling stm32f7xx_hal_flash.c...
5 t8 c& r  Y$ n5 p8 }compiling stm32f7xx_hal_flash_ex.c...) `6 ]. S% G4 x5 G5 o9 K
compiling stm32f7xx_hal_gpio.c...7 O. L4 ^8 v3 B  D: I
compiling stm32f7xx_hal_dma.c...
/ e4 |% ^  r. ^* O( gcompiling stm32f7xx_hal_dma_ex.c...
) ~$ f3 g4 a' H! C1 |# Q$ `/ _compiling stm32f7xx_hal_pwr.c...( B' t  \% O  r) p
compiling stm32f7xx_hal_pwr_ex.c...
+ \  U, o6 E9 a& H8 D$ q8 R; Mcompiling stm32f7xx_hal.c...) B5 W( h: f2 o3 J" |
compiling stm32f7xx_hal_i2c.c...
# \+ k8 |; Q! k; u  I) Ecompiling stm32f7xx_hal_i2c_ex.c...5 y' t+ C* U- d/ {# w- W' T
compiling stm32f7xx_hal_exti.c...+ N1 \& Y& [. j. S$ |
compiling system_stm32f7xx.c...: C! T! k7 G; d$ ?' |' H; N; y
compiling aiPbMgr.c...
$ _8 V, W$ Z. K5 W2 C6 o# l../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory( Y0 f/ ]- N  {4 Y6 y
  #include "network.h"
8 C  x+ [0 T! d( b9 |../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiPbMgr.c: 0 warnings, 1 error# B4 B2 F! d1 M" m# F! [/ w
compiling aiTestUtility.c...
# D' E8 x" }) A: ?( f$ t../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory% ]0 X  k6 b2 p8 \- |$ r( P2 o
  #include "network.h"' i3 Y3 p# E7 k7 r* {# }3 p4 m
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiTestUtility.c: 0 warnings, 1 error2 D4 T# V3 P. Z' ^2 l# ]
compiling aiValidation.c...9 ]6 e4 S! o/ ^! Y# J2 ?
../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory
- U5 e& q/ Y) J  #include "network.h"5 \0 N5 r7 y+ }: _4 W4 Z
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiValidation.c: 0 warnings, 1 error+ s4 t" P6 m5 E' f0 W; l+ X$ d
compiling pb_common.c...
: t2 T0 X" l9 v( k3 v1 Q* x; S/ ncompiling pb_decode.c...! ~$ w6 E3 X& e, g% q" Z
compiling pb_encode.c...
. E9 F* Z2 K4 Ocompiling stm32msg.pb.c...
( Z. i6 r, l, i# a2 n  p  c' r& N* n"STM32F767_AI\STM32F767_AI.axf" - 5 Error(s), 0 Warning(s).
3 ]3 i, Y4 \8 o! d6 }$ |Target not created.
Beatle 回答时间:2019-7-14 14:55:07
じ太阳当空照 发表于 2019-7-14 09:15) ^( V5 c$ Z3 W/ v
我真的不知道是哪出了问题,求大神指导,我导入以后,选好芯片,然后点击Additional Software进去,里面 ...
3 f7 I8 p5 B# W( n4 R
首先确保已经安装了AI库, l  j' A, ]" u% X- W: I! q9 a' i
4 u" F) t7 p  N3 F6 Y: v
1.png 3 M; y7 M' C% k" ]% g
使能Atificial intelligence后,配置好参数,确保自己使用的单片机是在列表中的。$ B3 }0 L$ r# ]4 w+ g2 v( L

/ E/ O9 {" o5 D  |% Z: ^2 H& ]& _6 K% X
7 _8 c. T+ ^* X# R3 S 2.png
7 U5 I. f' q3 @$ @; z* a, g
! ~* ~( v+ E2 s; q4 ]% s
% L1 K; y' o# `* l: ~
( h3 @* k$ P  g" s% @2 [如果确定上面操作无误,界面还是空的话那就看看这里的配置是否和你真实的路径是一致的。: a5 w; p: {9 d; U
4 q1 s+ V, F2 t* i' s3 G
3.png 9 u0 l8 W  x- U4 D
zero99 回答时间:2019-1-8 13:15:38
看看
wujialing4000 回答时间:2019-1-8 15:24:33
辛苦了,学习了。耐心的看完每句话。
奏奏奏 回答时间:2019-1-8 19:12:17
用DSP部分来算神经网络,感觉是不是后面ST要出专用的神经网络计算单元了吗?
creep 回答时间:2019-1-9 09:44:21
厉害了@Paderboy
Paderboy 回答时间:2019-1-9 09:46:24
多谢分享。。
STMCU-管管 回答时间:2019-1-9 10:05:06
Paderboy 发表于 2019-1-9 09:460 K4 J, P, `6 m5 p% P$ `
多谢分享。。
3 m9 C  R3 z2 Z" u* ]" U' G9 Z- K& P1 H
厉害了大佬
qhq8001 回答时间:2019-1-9 10:51:07
大概了解一下,感谢分享
xujiantj 回答时间:2019-1-10 09:06:19
谢谢楼主!!!
h55 回答时间:2019-1-21 09:14:29
我只看见MODEL.H5没看见STM32F767AI.H5,为什么
木木&点点 回答时间:2019-1-21 16:11:57
hu-jian-li 发表于 2019-1-21 09:14' T, K6 g- Z! j! ?( F9 b
我只看见MODEL.H5没看见STM32F767AI.H5,为什么
, ~5 `: b  }. [
model.h5就是我们需要导入到工程里的AI Keras的训练好的模型
杨满意 回答时间:2019-1-21 16:52:12
解释下输出结果的含义
木木&点点 回答时间:2019-1-23 15:23:29
杨满意 发表于 2019-1-21 16:52) g6 a2 z9 S7 H' M5 f# l
解释下输出结果的含义
+ e3 {) n5 D2 j
输出吗   这是去使用库的AI神经算法
h55 回答时间:2019-1-28 11:02:50
点点&木木 发表于 2019-1-21 16:11
- m4 F1 L, G! i  qmodel.h5就是我们需要导入到工程里的AI Keras的训练好的模型

/ U- [/ l% }$ z# D$ V我导入model.h5就没反应了,没有出现他教程中的STM32F767AI.H5,请问要怎么操作
木木&点点 回答时间:2019-1-31 19:42:28
hu-jian-li 发表于 2019-1-28 11:02
, T6 O% }( I6 g( P7 e& b  q. s6 o我导入model.h5就没反应了,没有出现他教程中的STM32F767AI.H5,请问要怎么操作 ...
* X4 q! ~( k$ I, J" V
导入到工程的时候,没出现STM32F767AI.h5吗4 [8 c) I, q; J" z2 n& U$ }. f! Y
123下一页

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版