前言:本篇主要讲解搭建所需环境,以及基于pytorch框架在stm32cubeide上部署神经网络,部署神经网络到STM32单片机,本篇实现初步部署模型,没有加入训练集与验证集,将在第二篇加入。篇二详细讲解STM32CubeIDE上部署神经网络之指纹识别(Pytorch)的数据准备和模型训练过程等,进行实战,第二篇在本专栏查阅。
目录
3. STM32CubeIDE上进行模型转换与模型部署到单片机
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 transforms
normalize = 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*1
label, _ = img_path.split('_')
label = int(label) - 1
labe