基于MaixHub的小方舟分类模型学习

Posted JxChen*

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于MaixHub的小方舟分类模型学习相关的知识,希望对你有一定的参考价值。

前言

在暑假之余,与指导老师以及实验室中的部分成员共同对小方舟进行了一定的研究,并对小方舟进行了基于MaixHub的分类模型学习。下方提供我们在探索过程中的一些心得,若哪里有问题欢迎留言评论。

注:由于本文内容是实验室成员共同完成的,转载时请保留声明。

一、材料准备

材料名称材料数量
N+小方舟×1
SD卡(32G)×1
读卡器×1

二、烧录固件

1、固件下载

模型加载时需要烧录与其所对应的固件,固件库已经开源并且处于持续更新的状态,这边提供对应的下载地址->传送门,同时也附上我们烧录的固件maixpy_v0.6.2_57_gae955b706_minimum_speech_with_ide_support.bin

链接:https://pan.baidu.com/s/19OQrACoBaqffAab7K-3HAw
提取码:gs8g

2、烧录固件

烧录固件同样我们使用的是kflash_gui,烧录过程中须留意小方舟连接上之后会有两个串口号不同的串口,我们选择数字小的串口进行烧录,并且烧录地址为0x300000

链接:https://pan.baidu.com/s/1pT1k1sASu5kR7VxAITVHEw
提取码:i77j

如果小方舟出现蓝屏或者灰屏,可尝试以下操作

  • 打开kflash_gui V1.6点击右上角选择擦除中的整片擦除
  • 重启小方舟后刷入目标固件,再次重启小方舟

三、制作数据集

1、收集需要训练的目标的照片

保证每一个训练类的照片数目都在40以上,最好训练照片多收集,增加模型训练的准确度,我们在训练中每一个训练类都以300张进行训练,最终训练得出的准确度和丢失率都比较理想。

2、转换格式

收集照片是还需注意每张照片的分辨率为224*224,否则后面的模型训练可能会出错导致无法进行,我参考了网上一些博主的方法,采用了文章K210借助MaixHub训练平台进行目标检测运用python脚本对照片进行转换,并对其代码进行了一定程度上的优化修改。(python相关安装配置请自行百度)

2.1、创建转换目标文档

在桌面新建存放需要转换照片的文档,由于在代码中我将其命名为Hello,因此存放的文档名也为Hello(可对代码和文档名自行修改)

2.2、创建转换结果存放文档

在桌面新建images文件夹用于存放脚本转换之后的照片

2.3、运行python转换脚本

运行该脚本会用到PIL模块,因此我们要保证我们设备上有安装到PIL库,它是一个功能非常强悍的第三方图像处理库,目前官方的最新版本并不支持python3,后来出现了移植到python3的库pillow,pillow号称是friendly fork for PIL,其功能和PIL差不多,可用pip进行安装

pip install pillow

安装完成后可直接运行脚本进行转换

from PIL import Image
import os.path
import glob
def convertjpg(jpgfile,outdir,width=224,height=224):
  img=Image.open(jpgfile)
  img = img.convert('RGB')#加上这一行可转换彩色
  try:
    new_img=img.resize((width,height),Image.BILINEAR)  
    new_img.save(os.path.join(outdir,os.path.basename(jpgfile)))
  except Exception as e:
    print(e)
for jpgfile in glob.glob("Hello/*.JPG"):
  convertjpg(jpgfile,"images")

3、照片分类

将图片数据集按分类保存为单独的文件夹, 子目录的名字为最后生成label的名字。需注意的是,目录名称不支持采用汉字进行命名

//数据集结构示例

----images
|        |
|        |---0.jpg
|        |
|         ---1.jpg
|
 ------xml
         |---0.xml
         |
         |---1.xml

四、机器码获取

  1. 下载key_gen固件:https://pan.baidu.com/s/1hnpwFgwfwhZVowW6Q3lrRA 提取码:sdbq

  2. 使用kflash_gui对key_gen固件进行烧录

  3. 设备连上重启后的小方舟,打开串口调试器,波特率选择115200,便可查看机器码,下面是采用了XCOM V2.6进行获取的设置界面,如果机器码没出来,反复点击RTS进行刷新即可

五、模型训练

1、账户激活

1.1、打开MaixHub点击下图框选链接

1.2、输入邮箱点击验证后,会有一份邮件发送到你邮箱,根据邮箱指示点击验证便可,由于我已经验证过,旁边会有已验证的提示

2、提交数据集

2.1、填写刚刚获取的机器码,下方的模型描述为选填

2.2、将上面分类整理好的文件夹打包成zip包,上传到MaixHub,需要注意的是压缩包大小不能超过20M

2.3、提交训练时候就可以在个人中心内查看正在训练/已经训练完成的模型了

六、模型加载

1、下载(Download)训练好的模型到本地之后可以看到一个压缩包,对其进行解压就可以查看训练之后的结果。其中的report.jpg为结果报告。如果最终训练出来的结果不理想,误差较大的话,可尝试增大各个训练类的照片量,并且控制每一个训练类的照片数量是相同的。

  • 第一个曲线图代表准确度,迅速上升至接近1.0后并且保持平缓为好
  • 第二个曲线图代表丢失率,迅速下降到接近0.0后并且保持平缓为好

2、将压缩包内文件全部拷贝到SD卡中,然后将其插入小方舟,重启后可查看训练之后的结果。小方舟左上角显示的是准确率,左下角为识别时间,单位为毫秒

加载时要保证小方舟已经烧录文章开头提及的固件maixpy_v0.6.2_57_gae955b706_minimum_speech_with_ide_support.bin

以上是关于基于MaixHub的小方舟分类模型学习的主要内容,如果未能解决你的问题,请参考以下文章

R语言基于Keras的小数据集深度学习图像分类

方舟编译器学习笔记分类与导读

一种基于伪标签半监督学习的小样本调制识别算法

图像分类猫狗分类实战—基于pytorch框架的迁移学习(ResNet50模型实现分类实战)

Keras深度学习实战——基于VGG19模型实现性别分类

Keras深度学习实战——基于ResNet模型实现性别分类