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

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

[复制链接]
木木&点点 发布时间:2019-1-6 17:29
偶然看到一篇好文章,分享给大家。
! U0 o+ y6 _: f/ C& }8 d+ k% ]

2 V, I5 Q( Y7 H" u. U( u
1.jpg

4 O. V0 Q1 \5 O) E. C* ^3 e
今天介绍下ST官方刚刚推出的CubeMx 自带的X-CUBE-AI(Artificial intelligent)插件功能,可以给现有的STM32 M3-M7高性能的处理器添加基于训练好的ANN 的模型用于不同的数据分析处理。
& v) d1 j. r- n9 V, u, ~& c
使用STM32Cube.AI简化了人工神经网络映射
/ g9 c, `- ?" Q/ o
1.可与流行的深度学习培训工具互操作
2.兼容许多IDE和编译器
3.传感器和RTOS无关
4.允许多个人工神经网络在单个STM32MCU上运行
5.完全支持超低功耗STM32MCU

: `  B8 i$ n* J. J" ^/ I, {4 |6 t
提高您的工作效率

& s& ~& w/ ]# v; D) L
利用DeepLearning的强大功能提高信号处理性能并提高STM32应用程序的生产率。创建人工神经网络并将其映射到STM32(通过CubeMx自动生成优化的代码),而无需手动构建代码。
以上就做个简短的介绍,想了解更多有关STM32Cube.AI可以访问下面的链接:http://www.st.com/content/st_com ... 2_gl_social_dec2018
$ D& r& N0 x# a/ o/ D
那先前的准备工作就是需要安装最新版本的CubeMx 5.0.1
然后使用CubeMx 去安装X-CUBE-AI插件, 700多M的容量。。慢慢下载吧
# U" N$ d! O+ C3 \
2.jpg

9 s. Z4 @5 H& _; w1 |/ T) {* v' V
下载好后,CubeMx里的Artificial intelligent
激活Enable
' h. C* ?7 b' r0 n+ U! q& t! x
3.jpg

" \$ e' }# B& H( ^* P9 w1 _0 B' T3 U
这里我们就可以看到里面的选项了
下载下来。。然后选择Keras 的AI API算法
3 M* [- @/ ]7 v  \+ g
4.jpg

/ l, n2 Y3 z: a$ z5 x; v( t
model.h5就是我们需要导入到工程里的AI Keras的训练好的模型

9 g# I1 k5 }) ^$ _& i
5.jpg

  e' i: Q3 o% ~' `/ F6 @
Human Activity Recognition Using Convolutional Neural Network in Keras
人类活动识别卷积神经网络算法模型
6.jpg
$ u% ^: E8 w+ c3 U$ s
然后我们导入到工程里
7.jpg

" @! B0 x4 k4 e% U% ]5 \+ ?
这里选择压缩参数,不同的压缩参数对MCU的flash容量
要求也不一样。。
8.jpg
+ U6 X1 R: N6 N* @! O! X7 M
点击Analyze cube就好计算使用这个神经网络算法的ram和flash容量占用

  w1 ?4 g6 V' G) p$ I9 u1 Q/ V
9.jpg

/ j* Q% U; ^6 w8 o
好了结果出来了,
' X* N6 W' F7 m/ a8 ]* t
10.jpg

7 r" Y9 R( d; G8 j0 f4 c5 [
经过分析后Cube会自动列出可以使用的MCU
然后显示在列表里
11.jpg
7 I& D6 j- j, x5 p+ H9 r1 q# Q' X
这里举个例子,我们选择没有压缩优化
分析模型算法后的结果我没有匹配的MCU可以使用
% w5 ?; I  d2 T$ n: O% r
12.jpg
2 X% r; S1 \& {( @6 _- z! V6 R
这是选择压缩比参数8的结果,可以支持很多的MCU使用这个神经网络算法。。

5 N1 z, S) D+ M1 y0 u2 l" V- p, A( R
13.jpg

! Y6 U5 D; \6 [- C8 A7 @
好了,这里我们就选择STM32F767ZI Nucleo 板卡作为 这次演示使用的板卡
  [' G+ B5 a% G, |2 i
14.jpg
好了选择好了,板卡,我们还需要给它添加扩展库,也就是AI库
: }; a5 Q* L/ s6 R
+ p$ f4 ?& T0 t) `6 M
15.jpg

( r2 h) o" ~: @2 F8 x' U" H: s1 b* O) D4 G; Q9 ~
选择好Validation 和打勾 AI core
2 _( g+ Z' U" u- \9 k: J/ y
16.jpg

- t9 T1 x$ Y5 q( E* b5 ~3 q: ~- V
然后在cube 左下方可以看到下图箭头 提示的插件功能

% G+ o5 m1 F4 Y6 i; Q
17.jpg
2 {; ^7 p! N+ r( x$ _
我们需要打勾以下2个功能
- t& I( S" k0 o7 D
18.jpg
" K/ I5 [2 j0 q  [0 M
然后创建我的AI算法名称,这个名称会在后续的里自动创建好。
; k' |/ N# L5 p" m8 y3 l
19.jpg
4 H( E7 f3 q# t' i# b5 J$ g
添加好,我们下载好的AI神经网络算法,然后再Analyze下就好。。打勾表示验证通过
* L) }1 M" N; J5 ~* Y) ?3 v
20.jpg

0 }( `8 a/ z* ?# D! [
然后我们需要配置我们的mcu的 CPU ICache 和 CPU DCache
; t5 J2 H3 L4 i9 Y# f" I
21.jpg

4 ~& u0 b# a# E2 N. T. r5 \) O
然后配置MCU主频为216Mhz
$ a* B' g" h) e4 ^! b1 ]
22.jpg

, ?* c4 I$ r: S" I5 ^$ X
6 c, G  e) x4 J" U! |
然后我们需要配置串口3和CubeMx进行通讯,验证我们工程。。。
! \8 R# B0 H2 \5 n0 b
23.jpg

3 Z. E) y$ \+ M# d- M( B  k1 T
然后在 AI扩展功能里选择通讯端口为串口3
1 s- }3 T. q, K+ I8 D6 `
24.jpg
好了,工程差不多创建好了。接下来就是 配置工程的路径好 我们配置使用IAR 编译环境。。 然后Heap 然后要配置到2000 这个很重要,要是设置少了 系统就会奔溃(切记)) h  g7 y# d1 A1 G

& q* H  N$ l% L# s$ z
25.jpg
! g, r+ Z, v: A0 |
好了工程生成好了,我们就可以 使用IAR 打开工程了 工程如下,工程里自动生成了基于AI的算法的所以文件

9 G) x. h$ c! d( ~1 V
26.jpg
% ]' T& I+ b1 P7 y
这里可以看到,基于AI训练好的模型数据列表。。。

# R7 G# q& j& i% y; X  J: a1 z
27.jpg

0 R- v% W9 p. \7 s- E+ G
好了,配置位STLINK,然后编译好就可以直接下载到板子上了
, x7 y0 S! t& X- w% I* Y% \
28.jpg

$ V3 A4 G9 I. P; b$ W) ~9 u( P
29.jpg
好了,现在我们需要回到CubeMx里,回到 AI扩展功能里。。 先重启下开发板,然后 点击Validation on target

  `6 J, b! f6 s* U$ }4 E
1 h- r% X' A+ q
30.jpg
* f+ @; v) \6 B
选择手动,然后选择对应的串口端口
" Y+ N/ ^$ Y/ ^7 L
31.jpg
9 d* S: s$ U; ^
这里可以看到验证已经开始了‘
5 R' U% ?. p! n" a
32.jpg
好了,结果出来了。我们可以在串口输出的信息里看到有关的数据
' s/ S. K9 d. i% C
33.jpg
* r; u- n  b0 [9 D
34.jpg
35.jpg
$ t5 u2 R" Z" s& z  u0 I9 v. _) l9 i
36.jpg

5 D, e1 Y* s2 `2 e. S4 H( b3 K/ ~' J( w7 \* N8 K3 ?
好了,基于CubeMx+AI扩展库的使用就分享到这了,想了解更多关于 使用STM32 AI的朋友可以关注ST官网的教程。。。
收藏 3 评论33 发布时间:2019-1-6 17:29

举报

33个回答
单片机爱好者 回答时间:2019-5-25 21:12:11
Build target 'STM32F767_AI', P$ x; v" ^. ?, `) l: L
assembling startup_stm32f767xx.s...
1 E9 L4 c% \/ s) P6 xcompiling main.c...
5 D1 x" ?# V8 A  U* o6 {# U../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory2 w* H3 ^- ]& z2 e! L, Z
  #include "network.h"; |1 K7 A1 \, H$ ]3 P
../Src/main.c: 0 warnings, 1 error
. a, Z, ?" H# n/ c- |/ gcompiling app_x-cube-ai.c...
+ o% o+ o/ x4 N* f* [../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory  h- X8 N: M. I# W. S2 Z2 S% T
  #include "network.h"$ |, v0 m4 V! ?9 e, k& A( k
../Src/app_x-cube-ai.c: 0 warnings, 1 error, {2 V4 [7 O1 [8 G3 R& G
compiling stm32f7xx_it.c...( c9 p" ~/ z7 f2 b
compiling stm32f7xx_hal_msp.c...( C7 I$ F: I2 I
compiling stm32f7xx_hal_cortex.c...
, h, H4 O* i# R* a7 ecompiling stm32f7xx_hal_crc.c...: X/ f. g4 m: g: s
compiling stm32f7xx_hal_crc_ex.c...7 `/ r* X  \. t/ j% H# E2 Q7 @4 B" B
compiling stm32f7xx_hal_tim.c...0 _" ~$ v. A. }, l! i6 r
compiling stm32f7xx_hal_tim_ex.c...
) U$ J/ x* @. |- tcompiling stm32f7xx_hal_uart.c...7 {2 i+ _$ Y( f8 u' i
compiling stm32f7xx_hal_uart_ex.c...  E1 A% q$ t' t- F
compiling stm32f7xx_hal_rcc.c...
2 t1 J+ m% W! D# ycompiling stm32f7xx_hal_rcc_ex.c...# C: y6 ~% X  f! w
compiling stm32f7xx_hal_flash.c...
0 z& Q% Q3 j( ^1 q9 k. t- c3 b& kcompiling stm32f7xx_hal_flash_ex.c...
1 i8 I9 D" ]# A/ \9 V8 t% E3 Qcompiling stm32f7xx_hal_gpio.c...
: {& k9 b+ L6 N9 |compiling stm32f7xx_hal_dma.c...% ^5 K- i, M, y3 k" m
compiling stm32f7xx_hal_dma_ex.c...& {+ O+ c0 a5 o" h/ n1 n4 j% {. m
compiling stm32f7xx_hal_pwr.c...) l. B2 V3 o; x4 o+ V
compiling stm32f7xx_hal_pwr_ex.c...7 |# S$ b# y7 a) T8 d+ k4 F
compiling stm32f7xx_hal.c...$ ^' k8 z: X' M: Y& k8 r$ o# g
compiling stm32f7xx_hal_i2c.c...: b4 f& N# _/ y7 G
compiling stm32f7xx_hal_i2c_ex.c.../ z3 B6 A. c' v# D8 Z4 q2 {1 C1 ^
compiling stm32f7xx_hal_exti.c...
' J2 O2 M9 t' Wcompiling system_stm32f7xx.c...3 W% [0 N. k. O
compiling aiPbMgr.c...- x! O- Z+ w3 \) G6 _! n+ P
../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory
% J2 T( Q6 S8 F  #include "network.h"
& {" C$ Y  l% ?4 Z7 I! u& c# Z) `../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiPbMgr.c: 0 warnings, 1 error
  |1 N$ D  ~$ Q8 }/ fcompiling aiTestUtility.c...! m! g& o; d$ j/ H9 I, [! U
../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory
! p* p- Z" Y( x0 z( R% j2 g( H7 v  #include "network.h"
/ q# ^8 t/ t$ O$ M* G8 E- J6 Q3 }../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiTestUtility.c: 0 warnings, 1 error/ H) ]# j* Z7 v$ V  Q3 X6 r* G% }
compiling aiValidation.c...
9 T0 _1 H+ U0 P2 g! W$ \" e../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory
; s4 ~: G/ V; A6 O  #include "network.h"5 q) X9 R7 u( y( l: V2 ^
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiValidation.c: 0 warnings, 1 error
! j8 Z) T  X5 D) \( ]3 X! [compiling pb_common.c...+ ?7 \  l; ]/ N$ p5 D1 F# _" K' z0 v
compiling pb_decode.c...% w$ a: |/ q. i; C# t8 F2 Z3 D
compiling pb_encode.c...4 M3 R) o, t/ x
compiling stm32msg.pb.c...
8 q( ~6 h. [) M( s"STM32F767_AI\STM32F767_AI.axf" - 5 Error(s), 0 Warning(s).: f9 P- d9 P3 |$ c; s  e. r! Q8 G' w( }3 k
Target not created.
单片机爱好者 回答时间:2019-5-25 21:11:53
Build target 'STM32F767_AI'( \% O0 h, d  L$ u
assembling startup_stm32f767xx.s...
( I1 p% l0 Z" x' }$ lcompiling main.c...  H+ g3 I- V& @  s/ D2 z
../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory
8 H  \: j$ A# o3 T& I  #include "network.h"% e- p, i5 v- S
../Src/main.c: 0 warnings, 1 error
. x& q7 I, ^5 ?! U8 i8 ^compiling app_x-cube-ai.c...; L5 ?3 @8 Y7 a6 k. U( ]6 n$ u
../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory
$ ?- g% i) C! P5 G5 R) Y  #include "network.h"
0 O0 z9 p" Y: p' e0 o. y& @../Src/app_x-cube-ai.c: 0 warnings, 1 error
6 q$ N. H( O+ p" D/ Lcompiling stm32f7xx_it.c...
" s3 g7 t3 l- r7 o' v! kcompiling stm32f7xx_hal_msp.c...
" z8 @7 j* Y+ `+ icompiling stm32f7xx_hal_cortex.c...: V( L' _$ g0 j8 s/ h
compiling stm32f7xx_hal_crc.c...
9 U. C% R$ \2 v1 n. l+ Tcompiling stm32f7xx_hal_crc_ex.c...
9 N& x- G9 i8 R3 H0 x% ?* d( Lcompiling stm32f7xx_hal_tim.c...+ R1 j$ ]( y8 l! N/ c
compiling stm32f7xx_hal_tim_ex.c...
/ z  t0 i+ @% A7 Ccompiling stm32f7xx_hal_uart.c...
0 O5 V1 w1 M0 bcompiling stm32f7xx_hal_uart_ex.c..." a; T) k* F) E6 U: x( g
compiling stm32f7xx_hal_rcc.c...
: r$ p2 a8 W9 N5 o. P5 Vcompiling stm32f7xx_hal_rcc_ex.c...: ~+ E- g; ]! F9 E0 O% f) R
compiling stm32f7xx_hal_flash.c...
& X0 \, n8 m3 X/ z  S; Z* Ncompiling stm32f7xx_hal_flash_ex.c.... ]) a( O$ j2 g5 o+ }& P
compiling stm32f7xx_hal_gpio.c...2 h- @' i8 k$ O+ b- g/ f
compiling stm32f7xx_hal_dma.c...8 y+ C/ S$ f$ p2 T/ l! Y
compiling stm32f7xx_hal_dma_ex.c...
; J3 D' ~2 @/ Y* ], c! S$ Ycompiling stm32f7xx_hal_pwr.c...' n+ v: [# O1 H" |
compiling stm32f7xx_hal_pwr_ex.c...
8 p& g! X; f/ g! \% M) E: h% b. kcompiling stm32f7xx_hal.c.... i3 I* p6 D' I/ z
compiling stm32f7xx_hal_i2c.c...+ K3 N, E' w6 X8 J' _& m
compiling stm32f7xx_hal_i2c_ex.c...
7 A3 t8 }( D0 E" _compiling stm32f7xx_hal_exti.c...
2 I7 p! I2 v$ u1 Z; y) q9 D' A) Hcompiling system_stm32f7xx.c...
' r5 p; }- |& L  ?" hcompiling aiPbMgr.c...
$ D! F% O6 c2 j, x& x7 }8 \../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory
$ H% C; N, O( ]1 Z. X: i5 b, w* i( z  #include "network.h"2 Q: @$ l9 t# k+ g( |6 x
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiPbMgr.c: 0 warnings, 1 error
) ?# C: s6 \# d. u) M9 ecompiling aiTestUtility.c...( x4 L0 V* l! s. s' P9 }& r! u
../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory
. ^- v' y5 e, m5 I3 l& x  #include "network.h"
9 i; ?; X0 M6 J../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiTestUtility.c: 0 warnings, 1 error% W' D0 R/ L. E: z/ a
compiling aiValidation.c...
" x2 i3 e. ]/ M1 F# N  w3 |../Inc/app_x-cube-ai.h(77): error:  #5: cannot open source input file "network.h": No such file or directory
! V- O( h1 e/ K! y: Q$ h  #include "network.h"
! P4 I: F6 A* X# N# ~: C../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiValidation.c: 0 warnings, 1 error  y* Q  J  N, Q3 I0 X) C
compiling pb_common.c...5 I) Z. A2 z0 C* O
compiling pb_decode.c...3 z1 {  m+ L8 ]9 V! {$ s
compiling pb_encode.c...9 N) }/ G$ k* h
compiling stm32msg.pb.c...& u5 H" t% h# W4 U. h9 U
"STM32F767_AI\STM32F767_AI.axf" - 5 Error(s), 0 Warning(s).( p7 s$ k9 x, Q4 F
Target not created.
Beatle 回答时间:2019-7-14 14:55:07
じ太阳当空照 发表于 2019-7-14 09:15
% d7 \8 O) U. o1 j7 s我真的不知道是哪出了问题,求大神指导,我导入以后,选好芯片,然后点击Additional Software进去,里面 ...

/ Q& u. z, B; M1 d0 L. F2 t7 z2 a首先确保已经安装了AI库0 D' B+ j+ j7 y" T8 y+ S
0 Y1 y0 `: _1 t1 O
1.png ( I( X, T" I; h$ ^3 l
使能Atificial intelligence后,配置好参数,确保自己使用的单片机是在列表中的。
/ ^0 ]0 G2 Z* J/ V3 j: M( k- k! x" {, p: a: r& b

* I, f/ x; i3 Y  \& g6 P 2.png & o6 z9 x) ^3 I7 D: @* J+ K
% ~  J2 S* @5 v8 }0 m
( G$ O! i' r4 V+ E, Y

) {6 K8 J0 n4 n! m$ A如果确定上面操作无误,界面还是空的话那就看看这里的配置是否和你真实的路径是一致的。
# L8 Y* T7 }8 D& x
' }3 Y' w  m) q1 X9 R% U9 r7 `) p 3.png & ?0 E  U2 A! l  y- T9 d4 k) O
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:46
8 `5 Z7 J3 O' ]# N2 f; s多谢分享。。

8 K6 S2 ?& a( Q* T1 c厉害了大佬
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  b' ?3 u/ b7 @' \2 T: b( v
我只看见MODEL.H5没看见STM32F767AI.H5,为什么
( P2 g4 n% F4 Y/ ^6 K
model.h5就是我们需要导入到工程里的AI Keras的训练好的模型
杨满意 回答时间:2019-1-21 16:52:12
解释下输出结果的含义
木木&点点 回答时间:2019-1-23 15:23:29
杨满意 发表于 2019-1-21 16:52
$ a  K/ q6 ~, p0 n& [- |解释下输出结果的含义

; z5 v, l8 Y' p( P8 g1 b6 P9 k& {输出吗   这是去使用库的AI神经算法
h55 回答时间:2019-1-28 11:02:50
点点&木木 发表于 2019-1-21 16:11
( [- t- K+ }  m& ?! o* vmodel.h5就是我们需要导入到工程里的AI Keras的训练好的模型
0 F1 q0 W- M; ~$ ]/ d) u
我导入model.h5就没反应了,没有出现他教程中的STM32F767AI.H5,请问要怎么操作
木木&点点 回答时间:2019-1-31 19:42:28
hu-jian-li 发表于 2019-1-28 11:028 D5 N$ e9 X9 Y- @- T8 M# S
我导入model.h5就没反应了,没有出现他教程中的STM32F767AI.H5,请问要怎么操作 ...
8 C1 e- n' n/ {  Q* K
导入到工程的时候,没出现STM32F767AI.h5吗
& g3 R. D. h  r, n; q
123下一页

所属标签

相似分享

官网相关资源

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