【ubuntu】Sipeed Maix Go的模型转换及编译src中的mnist工程示例

7 篇文章 0 订阅
2 篇文章 0 订阅

例子是官网上的mnist数字识别数据集

首先下载Maix-TF-workspace,模型训练脚本:

https://github.com/sipeed/Maix-TF-workspace.git

1、下载脚本解压,首先运行Maix-TF-workspace文件夹中的mnist.py,命令如下:

python3 mnist.py

开始训练神经网络,训练后在目录下会得到mnist.pb模型文件

2、将pb文件转换为tflite文件,需要下载Toolbox工具箱,对模型做转换:

Toolbox工具箱:

https://github.com/sipeed/Maix_Toolbox.git

在这之前先把mnist.pb放入Maix_Toolbox/workspace目录下,pb->tflite模型转换执行的命令如下:

./pb2tflite.sh workspace/mnist.pb

This script help you generate cmd to convert *.pb to *.tflite

Please put your pb into workspace dir

1. pb file name: (don't include workspace)

mnist.pb

2. input_arrays name:

inputs

3. output_arrays name:

output

4. input width:

28

5. input height:

28

6. input channel:

1

-----------------------------------

The command you need is:

-----------------------------------

toco --graph_def_file=workspace/mnist.pb --input_format=TENSORFLOW_GRAPHDEF --output_format=TFLITE --output_file=workspace/mnist.tflite --inference_type=FLOAT --input_type=FLOAT --input_arrays=inputs --output_arrays=output --input_shapes=1,28,28,1

2019-03-18 09:35:35.452504: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA

3、再将tflite文件转换为kmodel模型,在执行以下命令之前,请放入一些训练集或者测试集的图片到images目录下(下载mnist数据集解压到images目录下),运行get_nncase.sh,会自动下载一个ncc的目录,辅助nncase进行动态范围估计,进而进行量化操作。

./tflite2kmodel.sh workspace/mnist.tflite

这时在workspace下生成了mnist.kmodel

4、下载MNIST验证工程,将目录拷贝到standalone工程的src目录下即可。

(standalnone 工程从https://github.com/sipeed/kendryte-standalone-sdk下载)

MNIST验证工程在:

https://github.com/sipeed/LicheeDan_K210_examples/tree/master/src/mnist

我们把生成的mnist.kmodel重命名为m.kmodel,放入mnist代码目录

在main.c中,有个宏开关:LOAD_FROM_FLASH

如果关闭,会直接将模型数据编译进固件;

如果打开,则会从flash指定偏移读取kmodel。

在模型大小较小时,可以直接编译进固件,如果模型上M大小的话,则预先烧录进flash比较方便,避免调试程序时反复烧录固件。

模型烧录进flash的方法:使用mnist文件夹中的pack_model.sh打包出kfpkg文件,使用kflash烧录,这样识别mnist的模型文件就被烧录至kpu。

5、 在MAIX上运行MNIST算法

首先初始化了 时钟,IO,屏幕,摄像头,如果模型存在flash的话,则从flash读取模型到内存。

主循环中,等待摄像头获取到一帧图像,原始分辨率为224x224xRGB的彩色图像。

我们进行灰度化并降采样,反色,然后根据灰度直方图进行灰度拉伸,如果使用M12镜头的话,还需要进行去暗角操作。

此时我们就获取到了接近MNIST数据集的图像了,就可以把图像送入KPU处理。

使用kpu_run_kmodel运行模型,计算结束后,我们使用kpu_get_output获取最后一层的输出结果。

在我们的模型中,最后一层就是10个数字的置信概率。

我们在show_result函数中同时展示了原始图像,预处理后的28×28图像,以及最高概率的数字及概率。

 

××那么如何build下载好的mnist工程呢,需要先到kendryte的官网上下载toolchain,把toolchain 解压缩后把名字改为

riscv-toolchain放在opt目录下

可以在地址:https://kendryte.com/downloads/中下载ubuntu或者windows对应的版本

RISC-V 64bit toolchain for Kendryte K210_ubuntu_amd64

 在standalone文件根目录处,执行

mkdir build && cd build

再进入build文件夹中执行

cmake .. -DPROJ=mnist -DTOOLCHAIN=/opt/riscv-toolchain/bin && make

即可生成可以在Maix GO中运行的mnist.bin文件。

【其中关于cmake命令可根据工程名,修改<PorjectName>,如下代码所示】

cmake .. -DPROJ=<ProjectName> -DTOOLCHAIN=/opt/riscv-toolchain/bin && make

在build目录下编译我们的工程后,会生成mnist.bin, 然后下载固件到Maix Go中:

./kflash.py -p /dev/ttyUSB1 -b 2000000 mnist.bin

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值