“tf.keras 是用于构建和训练深度学习模型的 TensorFlow 高阶 API。利用此 API,可实现快速原型设计、先进的研究和生产…” —— Keras | TensorFlow Core
目标: 依赖 nnom 库,将 keras 模型部署到 esp、stm32 等微控制器上
🐈⬛majianjia/nnom: 适用于微控制器的高级神经网络库.
部署到 stm32 | Keil
使用 STM32F103C8T6 + MPU-6050, 由于手上没有按键模块,暂时用串口中断的方式代替按键。(希望不会对效果有太大影响…😅)
- STM32F103C8T6封装引脚图_stm32f103c8t6封装图
- STM32F103 实例应用(13)——串口接收中断+串口空闲中断接收不定长字符串_stm32f103串口中断接收数据程序-CSDN博客
串口发送一次输入时触发串口接受中断,中断回调函数里会从传感器读取一帧数据,直到得到特定长度的数据帧就由主线程送入模型中进行推理。
效果很一般,据了解 MPU-6050 只是收集加速度和角度,而原作者提供的模型包含了较多区分度不高的动作,可以先训练只包含少量动作的模型。
串口中断是由硬件异步触发的,不在程序的主线程发生,被跨线程访问的状态变量在声明时注意使用volatile
关键字,以防编译器对其进行优化,确保每次都从内存中读取到最新的值。
部署到 esp8266 | Arduino
首先是如何在 Arduino IDE 中编译 nnom 库
- 该步骤已验证成功
自己“制作”一个 Arduino 库: Arduino | 如何组织一个 Arduino 第三方库
尝试烧录到开发板上
nnom 会将 keras 模型编译为一个 model.h
文件,在源码中包含头文件,调用 nnom 的 API 即可创建模型实例进行推理。
暂时也没有 esp8266 的板子…
部署到 ws63 | 海思
待续。