
偶然看到一篇好文章,分享给大家。 : Q5 D8 d2 |) w8 U) g J0 ?![]() 今天介绍下ST官方刚刚推出的CubeMx 自带的X-CUBE-AI(Artificial intelligent)插件功能,可以给现有的STM32 M3-M7高性能的处理器添加基于训练好的ANN 的模型用于不同的数据分析处理。 使用STM32Cube.AI简化了人工神经网络映射 ' V8 t* u# `* s1.可与流行的深度学习培训工具互操作 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 ! \, k& N7 S6 O. I6 g* ~0 \那先前的准备工作就是需要安装最新版本的CubeMx 5.0.1 然后使用CubeMx 去安装X-CUBE-AI插件, 700多M的容量。。慢慢下载吧 0 T+ ^$ w4 ?. e3 O# a![]() 下载好后,CubeMx里的Artificial intelligent 激活Enable ![]() 这里我们就可以看到里面的选项了 下载下来。。然后选择Keras 的AI API算法 , F* o4 |* ^7 w: M- k2 C![]() model.h5就是我们需要导入到工程里的AI Keras的训练好的模型 ![]() Human Activity Recognition Using Convolutional Neural Network in Keras 人类活动识别卷积神经网络算法模型 ![]() 然后我们导入到工程里 ![]() 这里选择压缩参数,不同的压缩参数对MCU的flash容量 要求也不一样。。 ![]() 点击Analyze cube就好计算使用这个神经网络算法的ram和flash容量占用 ![]() 好了结果出来了, C1 [/ v2 G4 O( P8 E! x![]() 经过分析后Cube会自动列出可以使用的MCU 然后显示在列表里 ![]() 这里举个例子,我们选择没有压缩优化 分析模型算法后的结果我没有匹配的MCU可以使用 ![]() 这是选择压缩比参数8的结果,可以支持很多的MCU使用这个神经网络算法。。 ) s8 v7 S4 T8 N8 Y2 u& t) D![]() 好了,这里我们就选择STM32F767ZI Nucleo 板卡作为 这次演示使用的板卡 ( Y2 R# K% X1 N# i) k![]() ( ^3 i6 v' s: L; x. Q ![]() 选择好Validation 和打勾 AI core # R) z+ m* Z( Z! G" k# r![]() 然后在cube 左下方可以看到下图箭头 提示的插件功能 ![]() 我们需要打勾以下2个功能 ![]() 然后创建我的AI算法名称,这个名称会在后续的里自动创建好。 . K4 L# g- i b% `$ w) g![]() 添加好,我们下载好的AI神经网络算法,然后再Analyze下就好。。打勾表示验证通过 ! [' N% O" _1 Z$ k! U![]() 然后我们需要配置我们的mcu的 CPU ICache 和 CPU DCache ![]() 然后配置MCU主频为216Mhz 1 N7 \6 Z: V9 [! s![]() 9 T. z# O6 }. W3 D! W/ b& e2 f 然后我们需要配置串口3和CubeMx进行通讯,验证我们工程。。。 ![]() 然后在 AI扩展功能里选择通讯端口为串口3 2 I ]. n' U% F8 q; r![]() ' Z5 ^# f7 ^) S9 a" P( L( i ![]() 好了工程生成好了,我们就可以 使用IAR 打开工程了 工程如下,工程里自动生成了基于AI的算法的所以文件 3 |7 \ T9 s: e( ?4 S5 F; l) y![]() 这里可以看到,基于AI训练好的模型数据列表。。。 / }0 {# x9 w% g( r: ?; E3 o, g8 r+ ]![]() 好了,配置位STLINK,然后编译好就可以直接下载到板子上了 * V' S: c/ \. N0 o$ H' n![]() ![]() 好了,现在我们需要回到CubeMx里,回到 AI扩展功能里。。 先重启下开发板,然后 点击Validation on target ! r* ?; k$ B% |9 [# U# i9 q9 h, l* m) d3 {8 I1 ?% ?8 S. ? ![]() 选择手动,然后选择对应的串口端口 + u8 U) S1 B r. R![]() 这里可以看到验证已经开始了‘ ’) u. C& \ v1 A1 w1 Y! z ![]() 好了,结果出来了。我们可以在串口输出的信息里看到有关的数据 ![]() ![]() ![]() ![]() 好了,基于CubeMx+AI扩展库的使用就分享到这了,想了解更多关于 使用STM32 AI的朋友可以关注ST官网的教程。。。 |
STM32硬件结构学习
STM32中BOOT的作用
【STM32N6570-DK评测】1.开箱测评
【STM32F769I-DISC1】开发板刷入Micropython并完成点灯、读取内部温度测试
【STM32F769I-DISC1】测评01:创建STM32cube IDE 工程,点个灯
【STM32F769】创建deepseek本地服务,并实现http请求
【STM32N6570-DK评测】1.你好N6
实战经验 | STM32 AI Model Zoo 的安装及实例介绍
STM32F10xxx 正交编码器接口应用笔记 及源代码
汇编浮点库qfplib移植STM32F769I-DISCO开发板与硬件浮点运算性能测试对比
assembling startup_stm32f767xx.s...+ f* C5 {8 J5 G0 v
compiling main.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"
../Src/main.c: 0 warnings, 1 error
compiling app_x-cube-ai.c...% R/ d0 Q$ B- \9 G( Z' b
../Inc/app_x-cube-ai.h(77): error: #5: cannot open source input file "network.h": No such file or directory& ~% r' t6 \5 w' x
#include "network.h"/ L- V& c/ o$ m0 j# ]( H: z
../Src/app_x-cube-ai.c: 0 warnings, 1 error2 ~$ M) ~+ i8 n
compiling stm32f7xx_it.c...
compiling stm32f7xx_hal_msp.c...
compiling stm32f7xx_hal_cortex.c...
compiling stm32f7xx_hal_crc.c...1 ~& H: w' K& E, S9 B, z5 Y5 f
compiling stm32f7xx_hal_crc_ex.c...2 X( Y! L/ [# |" I& g) G: w
compiling stm32f7xx_hal_tim.c...
compiling stm32f7xx_hal_tim_ex.c.../ W5 L* R/ e0 B' l9 K
compiling stm32f7xx_hal_uart.c...
compiling stm32f7xx_hal_uart_ex.c...' g5 M9 e+ r- D' v; K
compiling stm32f7xx_hal_rcc.c...5 M1 e; U6 ]( C! z
compiling stm32f7xx_hal_rcc_ex.c...7 ~- T! ?. \" f
compiling stm32f7xx_hal_flash.c...% u" M1 L+ s! D$ ^ t; b
compiling stm32f7xx_hal_flash_ex.c...3 ~9 D! R/ d Z0 D8 \. [) @2 _
compiling stm32f7xx_hal_gpio.c...( ^! [: g: J: Z0 B4 P
compiling stm32f7xx_hal_dma.c...0 U" I9 O3 W8 @
compiling stm32f7xx_hal_dma_ex.c...# i' A" {% O+ \5 E* Z: I$ P1 Z
compiling stm32f7xx_hal_pwr.c...! G9 k% B9 k9 ^
compiling stm32f7xx_hal_pwr_ex.c...
compiling stm32f7xx_hal.c...
compiling stm32f7xx_hal_i2c.c...
compiling stm32f7xx_hal_i2c_ex.c...
compiling stm32f7xx_hal_exti.c...: R- Q) s* x. m' x! o2 t
compiling system_stm32f7xx.c...
compiling aiPbMgr.c...% P7 Y1 l7 q5 G6 ]
../Inc/app_x-cube-ai.h(77): error: #5: cannot open source input file "network.h": No such file or directory
#include "network.h"+ H3 ^2 J c$ o; D
../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 directory
#include "network.h"; I" V1 H/ e0 d7 ]
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiTestUtility.c: 0 warnings, 1 error
compiling aiValidation.c...5 j( ]. l! n5 t) B! N4 O8 E. _. \: ]
../Inc/app_x-cube-ai.h(77): error: #5: cannot open source input file "network.h": No such file or directory
#include "network.h"7 g; G4 B: j5 b* R* f/ l' \
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiValidation.c: 0 warnings, 1 error
compiling pb_common.c...
compiling pb_decode.c...7 D( ~; W( g. f; }8 F% z. {* v
compiling pb_encode.c...: I$ _. w0 E) R9 j2 L: l
compiling stm32msg.pb.c...- [* P! G1 W+ j) b
"STM32F767_AI\STM32F767_AI.axf" - 5 Error(s), 0 Warning(s).1 y1 F" }2 U. a
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. M- q% V& I9 M: L2 C/ Z3 e0 B4 y
#include "network.h"6 K" v& F; X7 t7 ?
../Src/main.c: 0 warnings, 1 error5 V3 f8 n- N- O- \2 X+ b& }3 c# u
compiling app_x-cube-ai.c...5 x6 ~' _( v5 P8 E+ i9 x/ L
../Inc/app_x-cube-ai.h(77): error: #5: cannot open source input file "network.h": No such file or directory
#include "network.h"; o8 Q* V- s" R# j' O& e
../Src/app_x-cube-ai.c: 0 warnings, 1 error2 f* M& [: Q& l) B- J0 ^
compiling stm32f7xx_it.c..., n p; Z5 i# m/ c/ q1 T6 p
compiling stm32f7xx_hal_msp.c...
compiling stm32f7xx_hal_cortex.c...1 W% [- ^8 I8 O4 D3 Z# `7 p
compiling stm32f7xx_hal_crc.c...( f/ k0 R) G8 z& K1 ], @7 M) j2 L
compiling stm32f7xx_hal_crc_ex.c...0 V6 Y- d- g+ q9 h, y' b
compiling stm32f7xx_hal_tim.c...
compiling stm32f7xx_hal_tim_ex.c...
compiling stm32f7xx_hal_uart.c...9 u, O7 t/ v: c! X& f s _
compiling stm32f7xx_hal_uart_ex.c...
compiling stm32f7xx_hal_rcc.c...
compiling stm32f7xx_hal_rcc_ex.c...
compiling stm32f7xx_hal_flash.c...2 W) m8 K+ ]# o' K. d& ?' b( g
compiling stm32f7xx_hal_flash_ex.c...9 I& c/ g" i8 _: D) |
compiling stm32f7xx_hal_gpio.c...* g! J X% t6 E! Z% M
compiling stm32f7xx_hal_dma.c...- N6 O+ `0 U( I
compiling stm32f7xx_hal_dma_ex.c...% M( j- l8 K( ~0 E
compiling stm32f7xx_hal_pwr.c...* Q! E' G# F [' K% s. e. e
compiling stm32f7xx_hal_pwr_ex.c...' ?$ o5 M: [# v: |& R+ x3 f
compiling stm32f7xx_hal.c...
compiling stm32f7xx_hal_i2c.c...5 t3 W8 z3 E6 j2 b3 L% X {7 E7 k
compiling stm32f7xx_hal_i2c_ex.c...; A6 s' k. `; u' r& }+ I
compiling stm32f7xx_hal_exti.c...; @2 [) g. c' Y$ x! o
compiling system_stm32f7xx.c...0 G4 v! t# d) t6 p( C' U1 h
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"
../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 directory2 j1 c8 {" G" X8 K0 i% w
#include "network.h"3 g6 f6 T0 \: M, U4 Q$ i, E& p) U
../Middlewares/ST/X-CUBE-AI_Application/Validation/Src/aiTestUtility.c: 0 warnings, 1 error" ]3 v; X( \% t4 J% f: @
compiling aiValidation.c...: L G6 [) V# K1 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"
../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...- i! x$ l5 n* e3 K1 ]. k ?
compiling stm32msg.pb.c...
"STM32F767_AI\STM32F767_AI.axf" - 5 Error(s), 0 Warning(s).
Target not created.
首先确保已经安装了AI库
, Q; {/ l; [/ ?% w! w
使能Atificial intelligence后,配置好参数,确保自己使用的单片机是在列表中的。3 A! f9 l1 {5 f8 t
+ Q" u& H. P5 h8 m8 x+ W: C R
如果确定上面操作无误,界面还是空的话那就看看这里的配置是否和你真实的路径是一致的。' p7 z# C; ~' d. V; j
厉害了
model.h5就是我们需要导入到工程里的AI Keras的训练好的模型
输出吗 这是去使用库的AI神经算法
我导入model.h5就没反应了,没有出现他教程中的STM32F767AI.H5,请问要怎么操作
导入到工程的时候,没出现STM32F767AI.h5吗