该教程主要记录自己使用K210在Windows10下面的训练过程,请严格按照教程的步骤一步步来。所需要的文件我都已经放在了阿里云盘
。
阿里云盘链接:
Python3.8.10
cuda10
百度网盘链接:
链接:https://pan.baidu.com/s/1fbZhCQlHQs91d7J5yi1cHA
提取码:qdeb
推荐安装
python3.8.10
由于python3.9有一些不知名问题导致了环境可能会配置失败
点击下载安装python3.8.10,具体的安装教程各位可以自行百度安装,需要注意的是,需要把Python添加到环境变量中。与此同时,用于安装Python的软件管理工具pip也需要安添加到系统环境变量中,具体的添加教程也是可以在CSDN搜索到的,这里就不细讲。
安装之后的python,按win+r,输入cmd打开命令行,然后输入python
+ 回车,出现下图则表示python安装成功
在Python安装完成了之后,需要检查pip
是否安装完成(在Python安装的时候是默认安装pip的)
检查方法:按win+r,输入cmd打开命令行,然后输入pip -v
回车,出现下图则表示pip安装成功
对于模型的训练,可以使用CPU或者是GPU进行训练,本教程是针对GPU训练的环境配置的。
不同版本的CUDA有所对应不同的显卡驱动版本要求,对于K210的环境,我们推荐的是CUDA10.1
搭配
cudnn v7.6.5.32 for cuda 10.1
,同样,我们把安装包也一起放置在了阿里云盘
中。
CUDA的安装:在下载好了CUDA
的压缩包之后,解压打开。会达到一个安装包文件
以管理员身份运行,具体的安装方法新手推荐默认,不需要修改任何地方。
cudnn v7.6.5.32 for cuda 10.1的安装:解压文件夹,将解压后的文件夹下的文件拷贝到cuda安装目录下,与之相对应的文件夹下。
这时CUDA的环境已经配置好了!!!
在安装完成了之后可以使用以下方法检查CUDA的环境是否配置好。
在命令行中输入python,然后再输入
import tensorflow as tf
tf.test.is_gpu_available()
回车检查一下这些文件有没有找到,和最后一行是否打印出True!!!!!如果没有,则说明你的前面的cuda和cudnn环境没有安装好,请将所有关于英伟达的软件驱动进行卸载,是卸载!!!不是将文件删除。然后再重新进行cuda和cudnn的环境配置。
对于Tensorflow的安装,这是也是有要求的,需要安装tensorflow-gpu 2.3.0版
win+r,输入cmd,打开命令行
在命令行中输入:
pip install tensorflow-gpu==2.3.0
如果下载的很慢,请输入:
pip install tensorflow-gpu==2.3.0 -i https://pypi.mirrors.ustc.edu.cn/simple
然后等待安装成功即可。
本地训练所需要的环境我们已经基本配置完成了,接下来就是对数据集的制作和运行代码进行模型训练。
1、安装依赖
首先打开我们下载好的项目文件—K210_Project
可以看到有如下几个文件
打开maix_train
再在上方地址栏输入cmd
,回车,进入命令行模式
pip install -r requirements.txt
(下载速度很慢的时候可以使用以下指令来提高下载速度)
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
回车,等待安装结束
2、数据集的制作
数据集的制作这里就不再详细描述,按照Sipeed官网的示例制作即可,个人建议在进行标注的时候选用Python来下载安装LabelImg来进行数据的标注。
但要注意,K210支持两种识别方式
1、目标分类
2、目标检测
两者所需要的数据集格式存在一定的差异,本文着重介绍目标检测。
3、开始训练
在前面我们打开的CMD命令行输入以下命令
对训练的环境进行初始化
python train.py init
运行训练代码
python train.py -t detector -z datasets/fruit_test.zip train
注意!!!这里面的datasets/fruit_test.zip train
是你所使用的数据集,我在工程中添加了我自己使用的一份数据集,打开K210_Project\maix_train\datasets
可以看到如下文件
其中fruit_test
里面包含的即为数据集,另外在该文件路径下面,还保存了其他的数据集,感兴趣的话可以自行修改指令进行训练
训练完之后在K210_Project\maix_train
路径下就会得到一个out的文件夹,里面的文件就是训练之后得到的模型以及配置文件
4、模型的使用
打开上一步生成的out
文件夹,会发现里面有一个压缩包—
maixhub_detector_result_2021_11_12__22_07.zip
对其解压,打开解压之后得到的文件夹,可以发现有如下内容。
这里介绍以下各个文件各自的作用:
boot.py
里面存放的是给K210使用的运行脚本文件,我们需要在MaixPy IDE
里面运行该脚本,确保在IDE上面程序可以正常运行之后,还需要把该文件以脚本的形式下载到板子内部的Flash中,注意该脚本文件需要下载到0x000000
地址下面,确保板子上电后首先执行的是该部分程序。此外,这部分代码并不能直接使用,需要对其进行一定的修改
才可下载到K210板子上面运行。
labels.txt
里面存放的是模型文件中的分类,在修改boot.py
中会根据这一部分进行修改。
m.kmodel
训练之后得到的模型文件,需要下载到板子内部Flash地址为0x300000
地址中,供脚本文件调用。
README.txt
训练文件生成的提示文件,暂不需要对其进行修改。
report.jpg
训练结束之后模型内部的loss值,反应了模型内部的迭代程度以及量化程度,可以在一定程度上反应训练之后模型的准确程度,但其目前仅限于针对训练集而言,对新的目标还需要实际验证。
startup.jpg
官方定义的开机JPG界面。
了解文件夹中各个文件的作用之后,开始训练。
首先将m.kmodel
利用kflash_gui.exe
烧录到板子内部的Flash中,
点击下载,下载完成之后,打开MaixPy IDE
,连接上开发板。
之后把boot.py
里面的内容复制到MaixPy IDE
开始界面,这里我们需要修改部分参数。
因为我们是直接把模型文件烧录到板子内部的Flash中,所以我们需要修改程序中模型的调用地址为model_addr=0x300000
,使得程序可以在该地址下进行模型寻址。
除此之外,我们需要修改labels
指向的类别分类,这里我们直接把label.py里面的内容直接替换掉原来的内容即可。
此外,还有一个需要进行修改的地方,
训练出来的模型只支持224*224
的图片输入,但该部分训练生成的运行脚本默认是240*240,故需要修改该部分参数,方可运行。
程序修改完成之后,点击运行,发现成功识别
当在IDE成功运行识别程序之后,就可以把改代码以脚本的形式下载到K210中,实现开机自启。
本文章借鉴了以下文章,如有侵权,请联系删除!!!!!
Sipeed官方 K210教程