致小白的K210模型训练与运用

致小白的K210模型训练与运用


前言

由于我也是刚接触K210不久,并且对python没有太多的了解,但是又想自己训练模型,于是花了挺多的时间在找寻简单的模型训练方法,本来是在几天前就找到了简单的模型训练方法,但是后来在使用的过程中出了点问题,直到今天才把问题勉强解决。所以写下本文来记录一下我所使用的K210模型训练方法,希望能给和我一样的小白一些帮助


提示:以下是本篇文章正文内容,下面案例可供参考

一、模型训练方法

1.使用MixHub平台进行训练
2.使用Mx-yolov3自己搭建平台进行训练

二、详细介绍

1.使用MixHub平台进行训练

详细方法可以看:MixHub训练使用说明
(1)数据集的准备
首先我们需要确定我们是要进行目标分类还是目标检测
目标分类是没有框的,只能识别该物体的种类,不能给出该物体的具体位置信息,效果如下
在这里插入图片描述
而如果是目标检测的话是有框的,可以给出物体的具体位置信息,并且框出来,效果如下图
在这里插入图片描述
这里以目标分类为例,具体的可以看MixHub训练使用说明

首先我们准备一个数据集文件夹,格式如下:
在这里插入图片描述

在这里插入图片描述
然后我们使用image_tool来将图片转换成224*224格式
在这里插入图片描述

转换好之后会多出一个文件夹
在这里插入图片描述
将cat和dog文件夹删除将cat_out和dog_out改成cat和dog。得到下图
在这里插入图片描述
然后压缩成ZIP格式
在这里插入图片描述
打开MixHub训练平台
填入邮箱和机器码,选择分类目标识别,机器码是通过将一个固件下入Maix bit或者其他sipeed的K210获得的。
在这里插入图片描述
再上传数据集,也就是刚刚的ZIP格式文件,点击开始训练
在这里插入图片描述
然后就等着就行,等训练好了就会将下载连接发到你的邮箱中
在这里插入图片描述
下载好了之后就是一个这样的压缩包
在这里插入图片描述
解压开之后就有以下文件
在这里插入图片描述
第一个boot.py是测试代码,第二个labels.txt是种类,第三个m.kmodel是模型文件
接下来将上面所有文件放入U盘中,即可看到效果

2.使用Mx-yolov3自己搭建平台进行训练

首先得感谢袁运强老师制作的Mx-yolov3
软件获取方法import创客公众号回复Mx3
软件的详细介绍也可以看公众号里的文件,在这里我以我使用过程中的问题以及解释做一下说明
这里也以物体分类为例
首先我们将MX3下载下来
在这里插入图片描述
然后双击Mx_yolov3安装,得到一个Mx_yolov3的文件夹
在这里插入图片描述
首先我们打开环境配置文件夹,双击环境配置.exe
在这里插入图片描述
在这里插入图片描述
然后按照步骤一步一步来就行,特别注意的是第三步的那二个一定要装,不然模型训练的会很慢
接下来我们以物体分类为例
首先我们找到Mx_yolov3文件夹中的example文件,将它复制到桌面
在这里插入图片描述
在这里插入图片描述

接着我们打开Mx-yolov3,找到图像识别
在这里插入图片描述
接着点选择找到刚刚的example文件夹
在这里插入图片描述
然后点击提取,将Alpha设置为0.75
在这里插入图片描述
接着点开始训练,等待即可,注意的是如果这里没有开GPU加速,训练要很久
在这里插入图片描述
训练好了模型之后我们再来测试一下模型
点击测试模型,然后找到所训练的模型位置
在这里插入图片描述
测试好了之后这里可以看到模型的效果
在这里插入图片描述
接下来是最后一步,也是最重要的一步
模型转换!!!
就是这一步,卡了我五天
我们输入路径选择tflite文件,输出文件任意设置,再选择量化图片,量化图片的路径如下
在这里插入图片描述
在这里插入图片描述
接着点击开始转换
如果你的结果是这样的
在这里插入图片描述
出现了模型转换成功,那么恭喜你,可以直接跳到最后一步了
如果你的结果是下图中的这样,或者是其他模型转换错误的情况,那么你得继续看接下来的步骤,尝试一下
在这里插入图片描述
尝试一、将参数设置成如下图
在这里插入图片描述
然后将图片用他自带的那个猫狗分类的例子,再重复上面的步骤试一下,看看能不能成功。
我测试发现生成的模型比较大的可以转换成功,如下图
在这里插入图片描述
生成的模型比较小的会转换失败,如下图
在这里插入图片描述
而调整模型的大小是调Alpha这个参数,参数越小,模型越小,效果越差,参数越大,模型越大,效果越好。
在这里插入图片描述
如果你按上述方法尝试了之后发现还是模型转换失败,那么你可能得用第二个方法了
找到Mx-yolov3文件夹中的NNcase 0.2这个文件夹
在这里插入图片描述
双击打开
在这里插入图片描述

设置和0.1版本的一样,点击转换即可
在这里插入图片描述
用0.2版本的转换一般都是可以成功的,但是用0.2版本的转换有一个问题,那就是转换出来的是V4的模型,而用0.1版本转换出来的是V3的模型。
在这里插入图片描述

3.V3模型

V3模型,也就是之前用nncase 0.1版本转换出来的模型
首先找到自己训练的模型,将下图中的二个文件放在SD卡中
在这里插入图片描述
注意将classnames这个文件名改成classes
再将下图中的boot.py文件也放入SD卡中
在这里插入图片描述
接下来将SD卡插入K210,然后给K210通电,就可以看到效果了。

4.V4模型

如果你是用nncase0.2的转换的,那么就是V4模型,V4模型出了上述步骤之外,还有二个地方做更改,一个是固件,固件要找一个支持V4版本的固件,固件可以在Sipeed 固件库找到
在这里插入图片描述
注意的是这个固件是连不了IDE的,这个是我测试过的,还有下面这个,我没有测试过,不过应该也是可以用的,支持IDE和V4的
在这里插入图片描述
除了固件需要更改,那个示例代码boot.py也需要更改一下改成下面的代码

代码如下():

import sensor
import math
import machine
import lcd
import KPU as kpu

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)
sensor.skip_frames(10)
sensor.set_windowing((224,224))
sensor.set_vflip(0)
lcd.init(freq=15000000,color=0x0000)
KPU = kpu.load('/sd/weights.kmodel')
success = kpu.set_outputs(KPU,0,1,1,2)
f=open("classes.txt","r")
labels_txt=f.read()
labels = labels_txt.split(",")
f.close()
while True:
     img = sensor.snapshot()
     plist = kpu.forward(KPU,img)[:]
     pmax = max(plist)
     max_index = plist.index(pmax)
     pgoods = labels[max_index]
     print("No.{} is {}".format(pgoods, pmax))
     lcd.display(img)
     lcd.draw_string(48,224,"NO: {} {}{}".format(pgoods, round(pmax,2)*100,"%"),lcd.WHITE,lcd.GREEN)

也就是加了一句success = kpu.set_outputs(KPU,0,1,1,2)
这一句的主要作用是设置输出层形状,具体的意思不大清楚,我试着参数像这样填是可以运行的
在这里插入图片描述

这一句的具体说明可以看KPU的说明


其他的步骤和V3的一致,将必要文件和boot.py放入SD卡中即可运行,但是效果是卡卡的和PPT一样
  • 97
    点赞
  • 795
    收藏
    觉得还不错? 一键收藏
  • 43
    评论
K210是一款面向物联网(IoT)应用而设计的嵌入式芯片,它搭载了一颗双核MIPS32处理器和一个AI加速器,它的主要特点是高性能、低功耗、低成本、易开发。在K210平台上,我们可以使用PaddlePaddle深度学习框架进行模型训练和推理,下面将详细介绍K210模型训练的相关知识。 一、K210模型训练的基本流程 K210模型训练的基本流程包括数据准备、模型搭建、模型训练模型导出四个步骤。 1. 数据准备:准备好符合要求的数据集,包括训练集、验证集和测试集。 2. 模型搭建:选择适合任务的模型结构,并在PaddlePaddle中搭建模型。 3. 模型训练:将准备好的数据集输入到模型中,进行模型训练,并调整模型超参数以优化模型性能。 4. 模型导出:将训练好的模型导出为K210平台可用的模型文件。 二、K210模型训练的注意事项 1. 数据集的准备:数据集应该充分涵盖任务所需要的样本,同时数据集应该具有一定的多样性,以确保训练出的模型具有较好的泛化性能。 2. 模型选择:选择适合任务的模型结构,同时要注意模型的参数量和计算复杂度,以确保模型可以在K210平台上高效地运行。 3. 超参数调整:在训练模型时,需要不断调整超参数以优化模型性能。常用的超参数包括学习率、批大小、迭代次数等。 4. 训练技巧:在训练模型时,可以采用一些训练技巧来提高模型性能,例如数据增强、正则化、迁移学习等。 5. 模型导出:在导出模型时,需要选择适合K210平台的模型格式,例如.tflite或者.kmodel格式。 三、K210模型训练的工具和框架 K210模型训练可以使用多种深度学习框架和工具,例如PaddlePaddle、TensorFlow、PyTorch等。 在K210平台上,常用的深度学习框架是PaddlePaddle,因为PaddlePaddle提供了完整的深度学习框架和工具链,包括模型搭建、模型训练模型导出等。同时,PaddlePaddle还提供了适用于K210平台的模型导出工具,可以将训练好的模型导出为.kmodel格式,方便在K210平台上进行模型推理。 四、K210模型训练的应用场景 K210模型训练适用于多种物联网应用场景,例如智能家居、智能工业、智能农业等。在这些场景下,我们可以使用K210芯片和PaddlePaddle深度学习框架来训练各种任务模型,例如图像识别、语音识别、目标检测等。这些模型可以在K210平台上高效地运行,从而实现物联网应用的智能化。
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值