偶然看到一篇好文章,分享给大家。 ! U0 o+ y6 _: f/ C& }8 d+ k% ]今天介绍下ST官方刚刚推出的CubeMx 自带的X-CUBE-AI(Artificial intelligent)插件功能,可以给现有的STM32 M3-M7高性能的处理器添加基于训练好的ANN 的模型用于不同的数据分析处理。 & v) d1 j. r- n9 V, u, ~& c使用STM32Cube.AI简化了人工神经网络映射 / g9 c, `- ?" Q/ o1.可与流行的深度学习培训工具互操作 2.兼容许多IDE和编译器 3.传感器和RTOS无关 4.允许多个人工神经网络在单个STM32MCU上运行 5.完全支持超低功耗STM32MCU 提高您的工作效率 利用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 \下载好后,CubeMx里的Artificial intelligent 激活Enable ' h. C* ?7 b' r0 n+ U! q& t! x这里我们就可以看到里面的选项了 下载下来。。然后选择Keras 的AI API算法 3 M* [- @/ ]7 v \+ gmodel.h5就是我们需要导入到工程里的AI Keras的训练好的模型 Human Activity Recognition Using Convolutional Neural Network in Keras 人类活动识别卷积神经网络算法模型 然后我们导入到工程里 这里选择压缩参数,不同的压缩参数对MCU的flash容量 要求也不一样。。 点击Analyze cube就好计算使用这个神经网络算法的ram和flash容量占用 好了结果出来了, ' X* N6 W' F7 m/ a8 ]* t经过分析后Cube会自动列出可以使用的MCU 然后显示在列表里 这里举个例子,我们选择没有压缩优化 分析模型算法后的结果我没有匹配的MCU可以使用 这是选择压缩比参数8的结果,可以支持很多的MCU使用这个神经网络算法。。 好了,这里我们就选择STM32F767ZI Nucleo 板卡作为 这次演示使用的板卡 [' G+ B5 a% G, |2 i' U" H: s1 b* O) D4 G; Q9 ~ 选择好Validation 和打勾 AI core 2 _( g+ Z' U" u- \9 k: J/ y然后在cube 左下方可以看到下图箭头 提示的插件功能 我们需要打勾以下2个功能 - t& I( S" k0 o7 D然后创建我的AI算法名称,这个名称会在后续的里自动创建好。 ; k' |/ N# L5 p" m8 y3 l添加好,我们下载好的AI神经网络算法,然后再Analyze下就好。。打勾表示验证通过 * L) }1 M" N; J5 ~* Y) ?3 v然后我们需要配置我们的mcu的 CPU ICache 和 CPU DCache ; t5 J2 H3 L4 i9 Y# f" I然后配置MCU主频为216Mhz $ a* B' g" h) e4 ^! b1 ]然后我们需要配置串口3和CubeMx进行通讯,验证我们工程。。。 ! \8 R# B0 H2 \5 n0 b然后在 AI扩展功能里选择通讯端口为串口3 1 s- }3 T. q, K+ I8 D6 `好了工程生成好了,我们就可以 使用IAR 打开工程了 工程如下,工程里自动生成了基于AI的算法的所以文件 这里可以看到,基于AI训练好的模型数据列表。。。 好了,配置位STLINK,然后编译好就可以直接下载到板子上了 , x7 y0 S! t& X- w% I* Y% \好了,现在我们需要回到CubeMx里,回到 AI扩展功能里。。 先重启下开发板,然后 点击Validation on target 选择手动,然后选择对应的串口端口 " Y+ N/ ^$ Y/ ^7 L这里可以看到验证已经开始了‘ ’5 R' U% ?. p! n" a 好了,结果出来了。我们可以在串口输出的信息里看到有关的数据 ' s/ S. K9 d. i% C3 K/ ~' J( w7 \* N8 K3 ? 好了,基于CubeMx+AI扩展库的使用就分享到这了,想了解更多关于 使用STM32 AI的朋友可以关注ST官网的教程。。。 |
基于STM32定时器ETR信号的应用示例
STM32 生态系统|基于STM32WB的低功耗蓝牙应用(一)
【STM32H7S78-DK评测】移植AI框架TensorFlow【DSP指令加速篇】
【STM32H7S78-DK评测】移植AI框架TensorFlow【下篇】
【合集】STM32F7教程、资料大集合
【STM32H7S78-DK评测】移植AI框架TensorFlow Lite【上篇】
【STM32H7S78-DK评测】移植边缘AI推理框架——TFLM(TensorFlow Lite for Microcontrollers)上篇
《无刷直流电机控制应用 基于STM8S系列单片机》
STM32定时器触发SPI逐字收发之应用示例
【银杏科技ARM+FPGA双核心应用】STM32H7系列10——ADC
assembling startup_stm32f767xx.s...
compiling main.c...
../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
compiling app_x-cube-ai.c...
../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...
compiling 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...
compiling 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...
compiling stm32f7xx_hal_rcc_ex.c...# C: y6 ~% X f! w
compiling stm32f7xx_hal_flash.c...
compiling stm32f7xx_hal_flash_ex.c...
compiling stm32f7xx_hal_gpio.c...
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...
compiling 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
#include "network.h"
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiPbMgr.c: 0 warnings, 1 error
compiling 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
#include "network.h"
../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...
../Inc/app_x-cube-ai.h(77): error: #5: cannot open source input file "network.h": No such file or directory
#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
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...
"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.
assembling startup_stm32f767xx.s...
compiling 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
#include "network.h"% e- p, i5 v- S
../Src/main.c: 0 warnings, 1 error
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
#include "network.h"
../Src/app_x-cube-ai.c: 0 warnings, 1 error
compiling stm32f7xx_it.c...
compiling stm32f7xx_hal_msp.c...
compiling stm32f7xx_hal_cortex.c...: V( L' _$ g0 j8 s/ h
compiling stm32f7xx_hal_crc.c...
compiling stm32f7xx_hal_crc_ex.c...
compiling stm32f7xx_hal_tim.c...+ R1 j$ ]( y8 l! N/ c
compiling stm32f7xx_hal_tim_ex.c...
compiling stm32f7xx_hal_uart.c...
compiling stm32f7xx_hal_uart_ex.c..." a; T) k* F) E6 U: x( g
compiling stm32f7xx_hal_rcc.c...
compiling stm32f7xx_hal_rcc_ex.c...: ~+ E- g; ]! F9 E0 O% f) R
compiling stm32f7xx_hal_flash.c...
compiling 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...
compiling stm32f7xx_hal_pwr.c...' n+ v: [# O1 H" |
compiling stm32f7xx_hal_pwr_ex.c...
compiling 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...
compiling stm32f7xx_hal_exti.c...
compiling system_stm32f7xx.c...
compiling aiPbMgr.c...
../Inc/app_x-cube-ai.h(77): error: #5: cannot open source input file "network.h": No such file or directory
#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
compiling 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
#include "network.h"
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiTestUtility.c: 0 warnings, 1 error% W' D0 R/ L. E: z/ a
compiling aiValidation.c...
../Inc/app_x-cube-ai.h(77): error: #5: cannot open source input file "network.h": No such file or directory
#include "network.h"
../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.
首先确保已经安装了AI库0 D' B+ j+ j7 y" T8 y+ S
0 Y1 y0 `: _1 t1 O
使能Atificial intelligence后,配置好参数,确保自己使用的单片机是在列表中的。
: M( k- k! x" {, p: a: r& b
% ~ J2 S* @5 v8 }0 m
( G$ O! i' r4 V+ E, Y
如果确定上面操作无误,界面还是空的话那就看看这里的配置是否和你真实的路径是一致的。
厉害了大佬
model.h5就是我们需要导入到工程里的AI Keras的训练好的模型
输出吗 这是去使用库的AI神经算法
我导入model.h5就没反应了,没有出现他教程中的STM32F767AI.H5,请问要怎么操作
导入到工程的时候,没出现STM32F767AI.h5吗