STM32CubeMX AI尝尝鲜

  我是在学习Tensorflow 2.0的时候,当然,最终还是为了跑在嵌入式设备上,因为这次疫情影响,在离住的地方比较近的办公场所办公,手头上只有一块STM32F407ZG的开发板,没错,是某点某子的开发板,想着要不在这板子上跑跑,刚好之前看到了Cube-AI,所以就进行了一波尝试。
  同时感谢这个视频,可以算是个新手入门指南视频,就是画质***->新手入门视频

X-Cube-AI介绍

  X-CUBE-AI是STM32Cube.AI生态系统的STM32Cube扩展软件包的一部分,通过自动转换预训练的神经网络并将生成的优化库集成到用户的项目中,扩展了STM32CubeMX功能。
官方链接在这里,从来没听说的朋友们可以先去预览一波啊:ST X-Cube-AI

  我就来浓缩一下,简而言之就是通过X-Cube-AI扩展将当前比较热门的AI框架进行C代码的转化,以支持在嵌入式设备上使用,目前使用X-Cube-AI需要在STM32CubeMX版本5.0以上,STM8CubeMX没注意看,目前支持转化的模型有Keras、TF lite、ONNX、Lasagne、Caffe、ConvNetJS,还算比较牛*的,Cube-AI把模型转化为一堆数组,而后将这些数组内容解析成模型,和Tensorflow里的模型转数组后使用原理是一样的。

&&开发前提

  1. 假设大家使用过STM32CubeMX,当然没学过的可以取微雪课堂看看,记得刚开始我也是从微雪入门,现在已经是白雪皑皑了啊,不过注意,当时我看的微雪课堂的教程是5.0以前版本,会有些许不同,不过百度大部分能解决的;
  2. 假设大家能够安装X-Cube-AI扩展。
  3. Python版本3.7;
  4. Tensorflow 2.0;
  5. 支持Tensorflow2.0的各种插件

创建模型

  在PC上建立模型,我的模型是建立一个能源等级检测输出,输入电压,输出对应等级,我模型做成了分类,热乎乎热代码来啦:

'''
电源等级检测测试
训练模型阈值
一级    ->  v>=8.0
二级    ->  7.8<=v<8.0
三级    ->  v<7.8

输入层 -> 隐藏层 -> 输出层

'''
'''
电源等级检测测试
训练模型阈值
一级    ->  v>=8.0
二级    ->  7.8<=v<8.0
三级    ->  v<7.8

输入层 -> 隐藏层 -> 输出层

'''

#导入工具包
import tensorflow as tf
import pandas as pd
import numpy as np

#读取数据
data = pd.read_csv('data/voltage.csv', sep=',', header=None)
voltage = data.iloc[:,0]
level = data.iloc[:,1:]
level.astype(int)

#建立模型
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(units=20, activation='relu', input_shape=(1,)))
model.add(tf.keras.layers.Dense
### STM32CubeMXAI的集成及其在嵌入式系统中的应用 #### 集成背景与发展 随着人工智能技术的发展,越来越多的应用场景需要在边缘设备上实现智能化处理。STM32系列微控制器凭借其低功耗、高性能的特点,在物联网(IoT)领域得到了广泛应用。为了满足开发者对于快速构建具备AI功能的产品需求,STMicroelectronics推出了基于STM32CubeMX平台的人工智能解决方案。 #### 工具链支持 通过STM32CubeMX工具可以轻松配置硬件资源并生成初始化代码框架。更重要的是,该软件集成了X-CUBE-AI扩展包[^1],允许用户将训练好的神经网络模型转换为可在MCU上运行的形式,并自动生成必要的驱动程序和支持库文件。这大大简化了从算法设计到实际部署的过程。 #### 应用实例分析 - **图像识别**:利用卷积神经网络(CNN),可以在本地完成简单物体分类任务而无需依赖云端服务; - **语音唤醒词检测**:采用轻量级RNN结构来实现实时监听特定关键词的功能; - **传感器数据分析**:借助LSTM等序列建模方法对来自各种物理量测量装置的数据流进行预测性维护预警; ```c // 示例C代码片段展示如何调用预加载于Flash内的小型化DNN推理引擎执行图片类别判断操作 #include "ai_image_classification.h" int main(void){ uint8_t result; /* 初始化外设 */ MX_GPIO_Init(); MX_DMA_Init(); /* 加载预先量化压缩后的TensorFlow Lite Micro模型至RAM中 */ ai_model_load(&model_data); while (true){ // 获取摄像头输入帧数据... // 执行前向传播计算得出最有可能的目标标签索引值 result = ai_inference(input_buffer); if(result == CLASS_CAT || result == CLASS_DOG){ HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET); }else{ HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET); } // 延迟一段时间再继续下一轮循环... } } ```
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值