偶然看到一篇好文章,分享给大家。 7 N" _7 y9 f: s& k% z 今天介绍下ST官方刚刚推出的CubeMx 自带的X-CUBE-AI(Artificial intelligent)插件功能,可以给现有的STM32 M3-M7高性能的处理器添加基于训练好的ANN 的模型用于不同的数据分析处理。 使用STM32Cube.AI简化了人工神经网络映射 6 [" E! _9 d0 O, `1.可与流行的深度学习培训工具互操作 2.兼容许多IDE和编译器 3.传感器和RTOS无关 4.允许多个人工神经网络在单个STM32MCU上运行 5.完全支持超低功耗STM32MCU 4 _0 O2 c& \7 K3 K& q提高您的工作效率 利用DeepLearning的强大功能提高信号处理性能并提高STM32应用程序的生产率。创建人工神经网络并将其映射到STM32(通过CubeMx自动生成优化的代码),而无需手动构建代码。 以上就做个简短的介绍,想了解更多有关STM32Cube.AI可以访问下面的链接:http://www.st.com/content/st_com ... 2_gl_social_dec2018 那先前的准备工作就是需要安装最新版本的CubeMx 5.0.1 然后使用CubeMx 去安装X-CUBE-AI插件, 700多M的容量。。慢慢下载吧 下载好后,CubeMx里的Artificial intelligent 激活Enable 6 g4 X: x# E( k" I% O/ |0 F这里我们就可以看到里面的选项了 下载下来。。然后选择Keras 的AI API算法 model.h5就是我们需要导入到工程里的AI Keras的训练好的模型 Human Activity Recognition Using Convolutional Neural Network in Keras 人类活动识别卷积神经网络算法模型 然后我们导入到工程里 这里选择压缩参数,不同的压缩参数对MCU的flash容量 要求也不一样。。 点击Analyze cube就好计算使用这个神经网络算法的ram和flash容量占用 好了结果出来了, 8 g K- i# p& H" U/ u, x经过分析后Cube会自动列出可以使用的MCU 然后显示在列表里 这里举个例子,我们选择没有压缩优化 分析模型算法后的结果我没有匹配的MCU可以使用 这是选择压缩比参数8的结果,可以支持很多的MCU使用这个神经网络算法。。 好了,这里我们就选择STM32F767ZI Nucleo 板卡作为 这次演示使用的板卡 选择好Validation 和打勾 AI core " j% r/ J+ r( c4 p然后在cube 左下方可以看到下图箭头 提示的插件功能 我们需要打勾以下2个功能 / B' [( K1 `6 d8 F3 K1 {7 l+ C然后创建我的AI算法名称,这个名称会在后续的里自动创建好。 添加好,我们下载好的AI神经网络算法,然后再Analyze下就好。。打勾表示验证通过 4 w$ y4 r& `, H* N然后我们需要配置我们的mcu的 CPU ICache 和 CPU DCache * N) r$ h: K6 `: k) x然后配置MCU主频为216Mhz 8 F* I* N0 K( v' P5 L. g% w6 v' e9 u5 f, ]$ ?! h& o) a 然后我们需要配置串口3和CubeMx进行通讯,验证我们工程。。。 5 y# P" N: R2 X- `5 e2 t然后在 AI扩展功能里选择通讯端口为串口3 L' Q9 V. m8 Y+ b/ n0 y好了工程生成好了,我们就可以 使用IAR 打开工程了 工程如下,工程里自动生成了基于AI的算法的所以文件 ; h* R) ?* A. k# u4 P c. b4 I这里可以看到,基于AI训练好的模型数据列表。。。 4 [0 }4 E: d6 N8 V) p+ q( W好了,配置位STLINK,然后编译好就可以直接下载到板子上了 好了,现在我们需要回到CubeMx里,回到 AI扩展功能里。。 先重启下开发板,然后 点击Validation on target # \2 s$ d; p8 A! H) {& U7 S* s4 D) E选择手动,然后选择对应的串口端口 这里可以看到验证已经开始了‘ ’ 好了,结果出来了。我们可以在串口输出的信息里看到有关的数据 & e; U. ~% @3 w 好了,基于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...! 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
compiling 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
compiling stm32f7xx_it.c...8 A( {" @8 a7 E! X2 g, k
compiling stm32f7xx_hal_msp.c...
compiling stm32f7xx_hal_cortex.c...! R! a9 p# d+ u( k. D: A- @9 _
compiling stm32f7xx_hal_crc.c...
compiling stm32f7xx_hal_crc_ex.c...
compiling stm32f7xx_hal_tim.c...
compiling 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...
compiling stm32f7xx_hal_flash.c...
compiling stm32f7xx_hal_flash_ex.c...$ `+ C `/ K0 J
compiling stm32f7xx_hal_gpio.c...( G N# \* R7 t& q7 H
compiling stm32f7xx_hal_dma.c...
compiling stm32f7xx_hal_dma_ex.c...
compiling stm32f7xx_hal_pwr.c...
compiling stm32f7xx_hal_pwr_ex.c...* ?5 A( z8 ~/ }, F
compiling stm32f7xx_hal.c...
compiling 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...
compiling 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
#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"
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiValidation.c: 0 warnings, 1 error
compiling pb_common.c...
compiling pb_decode.c...
compiling pb_encode.c...
compiling stm32msg.pb.c...
"STM32F767_AI\STM32F767_AI.axf" - 5 Error(s), 0 Warning(s).+ s6 ]+ @# g* P
Target not created.
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 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
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( }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
compiling 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...
compiling stm32f7xx_hal_crc.c...
compiling 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...
compiling stm32f7xx_hal_uart.c...
compiling stm32f7xx_hal_uart_ex.c...$ m! O4 k* ~8 j/ S+ g
compiling stm32f7xx_hal_rcc.c...
compiling stm32f7xx_hal_rcc_ex.c.../ r1 U7 G- Q- E* u. e
compiling stm32f7xx_hal_flash.c...
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...
compiling stm32f7xx_hal_dma_ex.c...
compiling stm32f7xx_hal_pwr.c...( B' t \% O r) p
compiling stm32f7xx_hal_pwr_ex.c...
compiling stm32f7xx_hal.c...) B5 W( h: f2 o3 J" |
compiling stm32f7xx_hal_i2c.c...
compiling 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...
../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"
../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...
../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
#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...
compiling pb_decode.c...! ~$ w6 E3 X& e, g% q" Z
compiling pb_encode.c...
compiling stm32msg.pb.c...
"STM32F767_AI\STM32F767_AI.axf" - 5 Error(s), 0 Warning(s).
Target not created.
首先确保已经安装了AI库, l j' A, ]" u% X- W: I! q9 a' i
4 u" F) t7 p N3 F6 Y: v
使能Atificial intelligence后,配置好参数,确保自己使用的单片机是在列表中的。$ B3 }0 L$ r# ]4 w+ g2 v( L
如果确定上面操作无误,界面还是空的话那就看看这里的配置是否和你真实的路径是一致的。: a5 w; p: {9 d; U
4 q1 s+ V, F2 t* i' s3 G
厉害了大佬
model.h5就是我们需要导入到工程里的AI Keras的训练好的模型
输出吗 这是去使用库的AI神经算法
我导入model.h5就没反应了,没有出现他教程中的STM32F767AI.H5,请问要怎么操作
导入到工程的时候,没出现STM32F767AI.h5吗4 [8 c) I, q; J" z2 n& U$ }. f! Y