部署PyTorch模型到draco开发板实现mnist

本文详细描述了如何在draco开发板上部署PyTorch训练的MNIST模型,涉及环境设置、RtthreadstudioSDK安装、模型训练、ONNX优化、RT-AK工具转换以及嵌入式应用和烧录过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

部署PyTorch模型到draco开发板实现mnist

1.环境的搭建:

首先我们需要在电脑里面安装anaconda环境,具体的可以见我写的一篇博客:
博客地址:
https://blog.youkuaiyun.com/liaoyuan1130/article/details/131599620?spm=1001.2014.3001.5501

2.下载Rt thread studio

下载安装后,在软件的SDK管理器中,需要下载安装三个包:分别是k210-RT-DRACO,RISC-V-GCC-KENDRYTE,OpenOCD-Kendryte。

这里需要注意的是:下载三个包时,如果一次性勾选三个进行安装,可能会有问题,我的解决办法是:先安装后面两个,再安装第一个,或者一个一个安装,安装不上的话就多试几次,应该就不会报错了。

3.其他工具

我们还需要RT-AK, Kflash,Netron(自行下载) ,我都会提供在文件夹里。

4.模型的训练

训练模型的代码提供给了大家,文件后缀是.ipynb,用jupyter notebook打开,jupyter notebook是我们在安装anaconda时自带的。首先我们在cmd中输入:
conda activate 环境名
看了我的博客就知道我建立的环境名叫pytorch,所以这里我应该输入:
conda activate pytorch
再输入jupyter notebook,于是就会在网页中弹出网站,找到该.ipynb文件,就有了模型的代码,运行代码时,如果提示少了什么库,就在conda环境中安装就行。
运行代码后,我们可以得到onnx模型,在这里我们需要对其利用onnxsim优化,得到优化后的模型(之后的每个实验的模型都需要优化,要不然利用rt-ak时会报错)。

5.RT-AK工具转换

我们在在RT-AK路径下打开 Windows 终端:

在该路径下,打开cmd,这里我们还是需要进入到conda 环境中,输入:
Conda activate pytorch
然后在输入:
$ python rt-ak.py nncase -i onnx -t k210 --project=<your_project_path> --model_file=<your_model_path> --model_name=mnist --platform=k210 --dataset=<your_val_dataset> --quant-type uint8 --w-quant-type uint8 --input-shape “1 1 28 28” --preprocess True --input-range “0 1” --input-type uint8 --output-type float32 --input-layout NCHW --output-layout NCHW --mean “0 0 0” --std “1 1 1” --output-range “0 1”
例如我的:
Python rt-ak.py nncase -i onnx -t k210 --project_path=“D:\Apps\Rt-threadStudio\rt-threadstdio\RT-ThreadStudio\workspace\test2” --platform=k210 --model_name=mnist --model_file=“C:\Users\ly\Desktop\新建文件夹\new\lab3-mnist-pytorch\lab3-mnist-pytorch\Models\mnist-onnxsim.onnx” --quant-type uint8 --w-quant-type uint8 --dataset=“C:\Users\ly\Desktop\新建文件夹\new\lab3-mnist-pytorch\lab3-mnist-pytorch\Datasets\quantize_data” --input-shape “1 1 28 28” --preprocess True --input-range “0 1” --input-type uint8 --output-type float32 --input-layout NCHW --output-layout NCHW --mean “0 0 0” --std “1 1 1” --output-range “0 1”。
这里需要输入的几个参数:
(1)rtt工程路径:就是在rtt文件夹下的workspace下,就有你建立的项目。
(2)模型名字:这里叫mnist
(3)模型文件路径:也就是训练的onnxsim模型路径。
(4)量化数据集路径:存入了一些图片。
(5)Input-shape可以通过Netron查看模型的输入大小.
(6)preprocess表示是否进行预处理,如果模型要量化的话就要选的True。
(7)input-range表示图片像素值范围,训练中如果有归一化,就是“0 1”,否则“0 255”。
(8)input-type表示输入图片的类型。
(9)output-type表示输出图片的类型,如果训练时经过softmax等层,就是float32。
(10)input-layout:onnx填NCHW, tflite填写NHWC。
(11)output-layout:onnx填NCHW, tflite填写NHWC。
(12)–Mean-- std:根据图片预处理决定,如果没有经过(img-mean/std,默认000 111。
(13)output-range:表示图片像素值范围,训练中如果有归一化,就是“0 1”,否则“0 255”。
然后运行,如果显示success,表示没有问题了,在你的项目工程文件夹applications下会多出几个文件:
Mnist_kmodel.c,rt_ai_mnist_model.c,rt_ai_mnist_model.h

6.嵌入式应用

首先改变RISC-V的版本,将8.3.0更换到10.2.0,10.2.0的包我已经放到了文件夹里。然后放入与8.3.0相同的路径中:

然后在rtt studio中,右键项目选择属性,看到如下界面,改变路径:

D:\Apps\Rt-threadStudio\rt-threadstdio\RT-ThreadStudio\repo\Extract\ToolChain_Support_Packages\KENDRYTE\RISC-V-GCC-KENDRYTE\10.2.0\bin
然后这里我们要在更换SDK包,新的SDK我也放在了文件夹里,在项目的packages里面删掉旧的kendryte-sdk文件夹,然后放入新的SDK包在里面。
最后在项目目录下找到rtconfig.py文件,然后打开:

将第18行的内容复制一份到第25行,然后改变里面的路径,也就是刚刚在属性里面改变的路径,保存退出。
然后在main函数中,进行初始化配置和外设的配置,具体代码我会放入文件夹中。
点击编译,看到没有错误就行了。

7.烧录

打开kflash,连接好开发板,找到项目生成的.bin文件,点击下载:

就可以看到屏幕上有了效果。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值