偶然看到一篇好文章,分享给大家。 2 ]8 _8 e1 t" W- [9 P; _9 P+ e: J' k0 f9 Y# x, D* a 今天介绍下ST官方刚刚推出的CubeMx 自带的X-CUBE-AI(Artificial intelligent)插件功能,可以给现有的STM32 M3-M7高性能的处理器添加基于训练好的ANN 的模型用于不同的数据分析处理。 使用STM32Cube.AI简化了人工神经网络映射 1.可与流行的深度学习培训工具互操作 2.兼容许多IDE和编译器 3.传感器和RTOS无关 4.允许多个人工神经网络在单个STM32MCU上运行 5.完全支持超低功耗STM32MCU 提高您的工作效率 . R: g$ {2 D5 T2 E: ~* d利用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 这里我们就可以看到里面的选项了 下载下来。。然后选择Keras 的AI API算法 6 }/ z6 o' @! Wmodel.h5就是我们需要导入到工程里的AI Keras的训练好的模型 4 U* ~ o7 d3 A! L6 DHuman Activity Recognition Using Convolutional Neural Network in Keras 人类活动识别卷积神经网络算法模型 然后我们导入到工程里 这里选择压缩参数,不同的压缩参数对MCU的flash容量 要求也不一样。。 点击Analyze cube就好计算使用这个神经网络算法的ram和flash容量占用 , A% J9 z) d/ D+ I/ [$ V+ {/ Q4 m1 {好了结果出来了, 经过分析后Cube会自动列出可以使用的MCU 然后显示在列表里 这里举个例子,我们选择没有压缩优化 分析模型算法后的结果我没有匹配的MCU可以使用 这是选择压缩比参数8的结果,可以支持很多的MCU使用这个神经网络算法。。 好了,这里我们就选择STM32F767ZI Nucleo 板卡作为 这次演示使用的板卡 % _. c8 x* R7 U3 {$ s! E7 J T: `0 S q( h8 w5 t6 g. V5 x3 W* G! ^/ F 选择好Validation 和打勾 AI core 然后在cube 左下方可以看到下图箭头 提示的插件功能 我们需要打勾以下2个功能 , Y6 f# p" j; M7 n然后创建我的AI算法名称,这个名称会在后续的里自动创建好。 添加好,我们下载好的AI神经网络算法,然后再Analyze下就好。。打勾表示验证通过 然后我们需要配置我们的mcu的 CPU ICache 和 CPU DCache 然后配置MCU主频为216Mhz 然后我们需要配置串口3和CubeMx进行通讯,验证我们工程。。。 然后在 AI扩展功能里选择通讯端口为串口3 2 [0 {* e" g a4 m; X+ P$ ^" x4 ]; t 好了工程生成好了,我们就可以 使用IAR 打开工程了 工程如下,工程里自动生成了基于AI的算法的所以文件 . p% I( k8 J% z# V% F这里可以看到,基于AI训练好的模型数据列表。。。 6 M/ c. c! |& b+ m0 a! K8 S好了,配置位STLINK,然后编译好就可以直接下载到板子上了 好了,现在我们需要回到CubeMx里,回到 AI扩展功能里。。 先重启下开发板,然后 点击Validation on target # _( i: [# y# [9 I, j' B选择手动,然后选择对应的串口端口 6 e& S! I% ?& D" g# x: R3 R这里可以看到验证已经开始了‘ ’ 好了,结果出来了。我们可以在串口输出的信息里看到有关的数据 # l5 L( ^( i2 W9 u' y/ {9 k) a. ~ t, v" _" P2 z 好了,基于CubeMx+AI扩展库的使用就分享到这了,想了解更多关于 使用STM32 AI的朋友可以关注ST官网的教程。。。 |
【银杏科技ARM+FPGA双核心应用】STM32H7系列10——ADC
破解边缘AI硬件与软件挑战,意法半导体解读三大创新要点
【银杏科技ARM+FPGA双核心应用】STM32H7系列57——MDK_FLM
【STM32图书分享之九】—《STM32F 32位ARM微控制器应用设计与实践》
基于STM32F746G-Discover的扩展电路板
意法半导体助力企业产品智能化,加快边缘人工智能应用
【合集】STM32F7教程、资料大集合
F769 Discovery实现播放U盘音乐的播放器
STM32 VS Code Extension (在Ubuntu上开发STM32,ST官方vscode插件使用指南)
无刷直流电机控制应用+基于STM8S系列单片机---电子书
assembling startup_stm32f767xx.s...# i6 d6 q/ `4 f" E
compiling main.c...2 P1 Y! \$ B8 A1 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"
../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+ u$ K, ~8 \3 `
#include "network.h"
../Src/app_x-cube-ai.c: 0 warnings, 1 error: i5 l( O9 j9 t6 G3 c6 y4 K: l
compiling stm32f7xx_it.c...
compiling stm32f7xx_hal_msp.c...
compiling stm32f7xx_hal_cortex.c...
compiling stm32f7xx_hal_crc.c...$ Z, F5 L2 ?2 Z
compiling stm32f7xx_hal_crc_ex.c...4 @- @5 A! W" M% _2 S2 }" F( d0 u
compiling stm32f7xx_hal_tim.c...! Z7 S, L+ U( B6 x2 r& A5 J& ^6 G3 C
compiling stm32f7xx_hal_tim_ex.c...
compiling stm32f7xx_hal_uart.c...
compiling stm32f7xx_hal_uart_ex.c...% U' K I, r( ^
compiling stm32f7xx_hal_rcc.c...! R) \, I {5 G: H$ u, F! U0 H
compiling stm32f7xx_hal_rcc_ex.c...) n& L4 _$ t$ \2 k9 a$ \
compiling stm32f7xx_hal_flash.c...
compiling stm32f7xx_hal_flash_ex.c...2 R' ^; N) {7 o1 z" T7 ?! v( y
compiling stm32f7xx_hal_gpio.c...- G8 m+ D& D1 R5 i8 `
compiling stm32f7xx_hal_dma.c...
compiling stm32f7xx_hal_dma_ex.c...
compiling stm32f7xx_hal_pwr.c...
compiling stm32f7xx_hal_pwr_ex.c..." F6 m0 R5 p$ F O9 E3 i
compiling stm32f7xx_hal.c...
compiling stm32f7xx_hal_i2c.c...
compiling stm32f7xx_hal_i2c_ex.c...
compiling stm32f7xx_hal_exti.c...) [3 _2 s5 v( m3 [8 o
compiling system_stm32f7xx.c...
compiling aiPbMgr.c...! C6 t2 `' S: J3 g
../Inc/app_x-cube-ai.h(77): error: #5: cannot open source input file "network.h": No such file or directory% H1 p' Q! n" N! Z8 O
#include "network.h"
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiPbMgr.c: 0 warnings, 1 error
compiling aiTestUtility.c...2 r) Z- |3 d" A2 m
../Inc/app_x-cube-ai.h(77): error: #5: cannot open source input file "network.h": No such file or directory0 L( m2 u# B( x, E" M' Z
#include "network.h"
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiTestUtility.c: 0 warnings, 1 error6 p, n0 _8 k$ c$ n% x3 ?6 z
compiling aiValidation.c...& B1 |; z$ [: t& F8 {# R
../Inc/app_x-cube-ai.h(77): error: #5: cannot open source input file "network.h": No such file or directory
#include "network.h"" h' u, z; s/ I' n
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiValidation.c: 0 warnings, 1 error! z: t& d; m4 ]+ U- h" G, @
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).
Target not created.
assembling startup_stm32f767xx.s...
compiling main.c...; R) A8 _9 x* v5 i+ g$ D+ A
../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 @3 t+ v5 l. 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
#include "network.h"* Y) B- f: Q8 L Z$ o2 Q( I
../Src/app_x-cube-ai.c: 0 warnings, 1 error J) T. Z7 ?6 [. C
compiling stm32f7xx_it.c...: C6 h1 [) _7 _3 V- ?0 ]
compiling stm32f7xx_hal_msp.c...* T9 u1 h, N% }) ]( \' g' Z, f5 ?+ a
compiling stm32f7xx_hal_cortex.c...+ Q# O! z; z r8 I, x
compiling stm32f7xx_hal_crc.c...
compiling stm32f7xx_hal_crc_ex.c...$ @# |% ]4 m6 d
compiling stm32f7xx_hal_tim.c...
compiling stm32f7xx_hal_tim_ex.c...
compiling stm32f7xx_hal_uart.c..." ^* d& g( z7 v2 f* A( N
compiling stm32f7xx_hal_uart_ex.c...- I, `7 x9 @) Y4 j$ Y
compiling stm32f7xx_hal_rcc.c...1 E4 M: R' ~, S
compiling stm32f7xx_hal_rcc_ex.c.... ?/ u8 ?2 l/ d v/ |& k
compiling stm32f7xx_hal_flash.c...8 I Q* f; N' t8 Z r2 w$ Y5 d; z+ U
compiling stm32f7xx_hal_flash_ex.c...! h3 v% s3 g- f/ t4 x( I3 A
compiling stm32f7xx_hal_gpio.c...
compiling stm32f7xx_hal_dma.c...
compiling stm32f7xx_hal_dma_ex.c...
compiling stm32f7xx_hal_pwr.c...! }) }+ c# f4 f
compiling stm32f7xx_hal_pwr_ex.c...8 }% T" j2 T5 L/ H, ?6 W
compiling stm32f7xx_hal.c...
compiling stm32f7xx_hal_i2c.c.... A, \ D* J0 m% T, o" x
compiling stm32f7xx_hal_i2c_ex.c...
compiling stm32f7xx_hal_exti.c...# W, j4 a* u4 w n
compiling system_stm32f7xx.c...' e: {$ }5 _9 y/ B, e5 ^- B2 n
compiling aiPbMgr.c...+ { E, H {. R) d% w/ V
../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...
../Inc/app_x-cube-ai.h(77): error: #5: cannot open source input file "network.h": No such file or directory4 G; z5 h* U/ Q/ v; c# N4 u
#include "network.h") t! Y( m- \2 y) L8 n% u' U
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiTestUtility.c: 0 warnings, 1 error
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") d+ u" Z( r2 E9 H" k6 W d) u
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiValidation.c: 0 warnings, 1 error/ @/ J8 B, j% Z( k8 @* x
compiling pb_common.c...
compiling pb_decode.c...$ X+ K3 L: d1 a. g5 d
compiling pb_encode.c...' y& W4 o1 E$ H/ `/ E! v: k
compiling stm32msg.pb.c...
"STM32F767_AI\STM32F767_AI.axf" - 5 Error(s), 0 Warning(s).
Target not created.
首先确保已经安装了AI库
$ X, L7 Z. a! }% l
使能Atificial intelligence后,配置好参数,确保自己使用的单片机是在列表中的。
, A3 V) F% W/ Z( |
如果确定上面操作无误,界面还是空的话那就看看这里的配置是否和你真实的路径是一致的。
厉害了大佬
model.h5就是我们需要导入到工程里的AI Keras的训练好的模型
输出吗 这是去使用库的AI神经算法
我导入model.h5就没反应了,没有出现他教程中的STM32F767AI.H5,请问要怎么操作
导入到工程的时候,没出现STM32F767AI.h5吗6 m; D" \/ w4 d