前言:本篇主要讲解搭建所需环境,以及基于pytorch框架在stm32cubeide上部署神经网络,部署神经网络到STM32单片机,本篇实现初步部署模型,没有加入训练集与验证集,将在第二篇加入。篇二详细讲解STM32CubeIDE上部署神经网络之指纹识别(Pytorch)的数据准备和模型训练过程等,进行实战,第二篇在本专栏查阅。
目录
1. 环境安装和配置
2. AI神经网络模型搭建
2.1 数据集介绍
2.2 网络模型
2.3 训练
3. STM32CubeIDE上进行模型转换与模型部署到单片机
4. STM32 CubeUDE上进行模型验证
5. 结果统计与分析
1. 环境安装和配置
本文介绍在STM32cubeIDE上部署AI模型,开发板型号STM32F429IGT6。
与AI加速器不同,ST支持神经网络计算是因为之前的芯片已经内置了DSP处理器,可以执行高精度浮点运算,正好可以拿来做神经网络计算。如何判断自己准备购买的板子适不适合做AI计算,最好也按以下步骤在CUBE-AI上模拟部署一遍,若模拟成功,所选开发板就是可以的。
STM32cubeIDE可直接在ST官网下载,下载链接
https://www.st.com/zh/development-tools/stm32cubeide.html
默认安装即可,不懂可自行上网查教程。
2. AI神经网络模型搭建
2.1 数据集介绍
针对tinyML开发了自己的指纹识别数据集,数据集和完整代码见文末下载链接。指纹识别数据集包含100个类别,大小为260*260,训练集30张,测试集5张。在测试时使用128*128与64*64的分辨率。
数据集在如下文件夹中
生成测试集的方法:
import os
import numpy as np
from PIL import Image
import torchvision.transforms as transformsnormalize = transforms.Normalize(mean=[0.5],std=[0.5])
test_transforms = transforms.Compose([# transforms.RandomResizedCrop(224),transforms.Resize(128),transforms.ToTensor(),normalize])def prepare_eval_data(data_file, transform=None):datas = os.listdir(data_file)imgs=[]labels=[]for img_path in datas:data = Image.open(data_file + '/' + img_path) # 260*260*1label, _ = img_path.split('_')label = int(label) - 1labe