10. 源码级应用开发
注:
- 本章节使用SDK1.1.0版本和nncase2.4.0版本实现,后续更改请参考: kendryte/K230_training_scripts (github.com)。
- 开发时需要注意版本对应,k230_sdk版本和nncase版本对应关系参考链接:K230 SDK nncase版本对应关 系 — K230 文档 (canaan-creative.com)。
- 相关教学视频,见参考章节链接。
本章节介绍了KTS(k230_training_scripts)工具的使用方法和模型上板部署过程。KTS提供了分类、检测、翻译、关键词唤醒共四个任务从训练到部署的源码,覆盖cv、nlp、语音等多个模态。用户对源码可见,感兴趣的用户可以对源码进行修改,实现更换数据集、更换模型等部分。本工具适合对深度学习的不同模态的任务有比较成熟的了解,并希望使用k230开发板完成部署的用户。
10.1 使用KTS实现图像分类任务
k230_training_scripts(KTS)提供了源码级的详细的k230开发案例,覆盖cv、nlp和audio相关的AI任务。KTS的github地址:kendryte/K230_training_scripts (github.com)。KTS相比于上面的两个工具更为灵活,对用户的代码能力要求也更高,用户可以自行修改配置对应步骤,用户可以更换模型,调整参数,从源码实现k230应用的快速开发和部署。
使用KTS进行AI开发需要实现环境搭建、数据准备、模型训练和测试、CANMV k230镜像编译和烧录、C++代码编译、网络配置和文件传输、k230端部署等环节。以蔬菜分类场景为例,代码参见:kendryte/K230_training_scripts。
10.1.1 环境搭建
(1)Linux系统;
(2)安装显卡驱动;
(3)安装Anaconda,用于创建模型训练环境;
(4)安装Docker,用于创建SDK镜像编译环境;
(5)安装dotnet SDK;
10.1.2 数据准备
图像分类任务自定义数据集按照如下图格式组织:
注意:图像分类必须按照上述格式进行组织。
10.1.3 模型训练和测试
本节内容在训练环境中实现。
10.1.3.1 创建虚拟环境
开启命令终端:
conda create -n myenv python=3.9
conda activate myenv
10.1.3.2 安装python依赖库
按照项目内的requriements.txt安装训练所用的python库,等待安装:
pip install -r requriements.txt
在requriments.txt中会安装模型转换的包nncase和nncase-kpu,nncase 是一个为 AI 加速器设计的神经网络编译器。
编译镜像和使用nncase转换kmodel时请注意版本对应关系,k230_sdk版本和nncase版本对应关系参考下述链接:
K230 SDK nncase版本对应关系 — K230 文档 (canaan-creative.com)
您可以按照对应版本更换nncase和nncase-kpu的版本,比如更换nncase版本为2.7.0:
pip install nncase==2.7.0
pip install nncase-kpu==2.7.0