应广大开发者要求,我们加班加点推出了 RT-AK(RT-AK:RT-Thread AI Kit 简称) 支持的第二个插件:支持基于 K210
芯片等一些开发板,目前RT-AK已经能够在嘉楠堪智的 KD233 和亚博 YB-DKA01 上正常工作。
说明1:一直致力于推出保姆级教程
说明2:RT-AK 之 K210 插件
在该片文章引用的例程中,没有用到摄像头和 LCD。但是在项目中,有包含 LCD 的例程。
克隆下载即可使用,欢迎 fork、star、watch 三连~
1. 运行 RT-AK 前的准备工作
准备以下几份重要重要重要(重要的事情说3遍)的材料:
1.1 BSP
硬件
嘉楠堪智的 KD233 或者亚博 YB-DKA01,或其它基于 K210 芯片的开发板(可能需要定制 BSP,请与我们联系)
交叉编译工具链 (Windows)
xpack-riscv-none-embed-gcc-8.3.0-1.2-win32-x64.zip | Version:v8.3.0-1.2
1.2 RT-AK 准备
将 RT-AK 克隆到本地
1.3 神经网络模型
由于 k210 原厂工具仅支持三种模型格式:TFLite、Caffe、ONNX
所以提前将 keras 神经网络模型转换成了 tflite 模型,位于
RT-AK/rt_ai_tools/Models/mnist.tflite
如果没有找到该模型,请更新 RT-AK 仓库
1.4 原厂工具
1.NNCase:
已经提前下载好,位于 RT-AK/rt_ai_tools/platforms/plugin_k210/k_tools 路径下
2.K-Flash 烧录工具,下载请选择 K-Flash.zip
2. 执行步骤
代码将会自动使用 NNCase 模型转换工具,获得一个集成了 AI 的 BSP内部的流程请看源码或者 plugin_k210 仓库下的 readme 文档
2.1 基础运行命令
请在 edge-ai/RTAK/tools 路径下运行该程序。
在 RT-AK 运行的过程中会自动拉取 K210 插件的仓库到 RT-AK/rt_ai_tools/platforms 路径下
在 BSP 基础上将会集成 AI 模型的,不包括模型推理等应用代码,应用代码请看下文
在 RT-AK/rt_ai_tools/platforms/plugin_k210 路径下会生成 .kmodel 和convert_report.txt 两个文件
.kmodel AI 模型转换之后的 kmodel 模型
convert_report.txt AI 模型转换过程的 log 日志
RT-AK 之 K210 插件示例 Demo 运行成功界面:
2.2 其他运行命令补充说明
非量化,不使用 KPU 加速, --inference_type
2$ python aitools.py --project=<your_project_path> --model=<your_model_path> --platform=k210 --inference_type=float
3
4# 非量化,指定交叉编译工具链路径
5$ python aitools.py --project=<your_project_path> --model=<your_model_path> --platform=k210 --embed_gcc=<your_RISCV-GNU-Compiler_path> --inference_type=float
6
7# 量化为 uint8,使用 KPU 加速,量化数据集为图片
8$ python aitools.py --project=<your_project_path> --model=<your_model_path> --platform=k210 --embed_gcc=<your_RISCV-GNU-Compiler_path> --dataset=<your_val_dataset>
9
10# 量化为 uint8,使用 KPU 加速,量化数据集为音频之类非图片,--dataset_format
11$ python aitools.py --project=<your_project_path> --model=<your_model_path> --platform=k210 --embed_gcc=<your_RISCV-GNU-Compiler_path> --dataset=<your_val_dataset> --dataset_format=raw
12
13# 示例(量化模型,图片数据集)
14$ python aitools.py --project="D:\Project\k210_val" --model="./Models/facelandmark.tflite" --model_name=facelandmark --platform=k210 --embed_gcc="D:\Project\k210_third_tools\xpack-riscv-none-embed-gcc-8.3.0-1.2\bin" --dataset="./platforms/plugin_k210/datasets/images"
2.3 运行参数说明
RT-AK 中的参数包含了两部分,
基础参数
K210 插件参数
上述示例命令行的参数说明
3. 编译 & 下载
如果在执行 RT-AK 得过程中添加了 --embed_gcc 这个参数,可跳过以下部分:
设置编译环境
方法一:set RTT_EXEC_PATH=
方法二:修改 rtconfig.py 文件,在第22行新增 os.environ[‘RTT_EXEC_PATH’] =r‘your_toolchains’
编译:
1scons -j 6
如果编译正确无误,会产生 rtthread.elf、rtthread.bin文件。
其中 rtthread.bin 需要烧写到设备中进行运行。
下载:
可以看到,下载后得显示界面并没有什么变化,
那是因为 RT-AK 内部不提供应用程序代码,想要让 AI 模型成功运行,需要开发者们自行编写,在本文得末尾,我们提供了一份示例代码。
4. 示例应用代码说明
我们提供了一份运行模型推理的示例应用代码,
下载解压,放置到 《BSP》/applications 路径下
编译烧录即可。
4.1 代码流程
系统内部初始化:
系统时钟初始化
RT-AK Lib 模型加载并运行:
注册模型(代码自动注册,无需修改)
找到注册模型
初始化模型,挂载模型信息,准备运行环境
运行(推理)模型
获取输出结果
4.2 核心代码
如何更换模型输入数据补充说明:
示例数据在 applications 文件夹下,模型不用重新训练,只需更改第18行和第51行即可
详细得 Mnist Demo 工程链接,包括训练和数据处理。
4.3 结果显示
原作者: lebhoryi