跳到主要内容

KOI预训练模型方法

预训练过程框图

确定训练的物体

选定的训练物体,一般它们之间是有明显的差异,可能是颜色,可能是外形。如果从人的角度观察很难分别出物体之间的差别,那么通过机器学习出来的的效果也不会太好。

这里以螺丝、螺母为例,做模型的预训练。

收集样本

通过KOI拍照,收集不同分类的样本。因为模型是应用在KOI上,因此通过KOI拍照得到的数据会更贴切。

KOI拍照存储到SD卡中有两种方式:

1、Microibt或者其他板子作为主控,KOI作为模块,当按键按虾后,拍下照片存储到SD卡中。

2、KOI自己作为主控,通过自身的AB按键,拍照,存到SD卡中。

这次采用第二种方式,提供了KOI能用的MicroPython代码,main.py放置到SD卡中,SD卡中检测到含有main.py,便会自动运行。

拍照准备

1、准备一张正版的内存卡,如闪迪或者金士顿,容量推荐8G、16G、32G、其它杂牌卡片可能会遇到不识别的问题

2、使用前将其进行快速格式化

3、在SD卡的根目录下,新建一个名为image的文件夹!

4、将提供的main.py文件放置在根目录下

5、正确从电脑中退出SD卡后,在KOI断电的情况下,把卡插到KOI上。

6、确保一切就绪后,使用充电宝给KOI进行供电。

拍照开始

1、将螺母放在各个环境下,进行拍照100张,当按下KOI的A按键,进行拍照保存(如果需要重拍请按B按键)。所拍得的照片会以字母+序号的形式保存到SD卡中

2、注意当KOI供电后,程序就开始运行起来,照片的序号由1开始,每拍一张照片,序号就会自动+1。如果这个过程中,突然断电后,重新供电后,序号又会从1开始算起,因此,请保证充电宝电量充足,保证能把100张照片拍下来。

3、当螺母已经拍照了100张照片后,我们将所得的图片拷贝下来(image的文件夹再清空)。同时,此时将main.py的程序修改一下,将A更改为B,准备拍另外一个分类的照片。

4、一切就绪后,准备好螺丝,重复刚才拍螺母的步骤,将螺丝的样本拍下来。

标注图片准备

通过以上的操作,我们可以得到螺母的照片(A1-A100),螺丝的照片(B1-B100),并且这两种的照片分别放在两个文件夹中。照片的数量,可以多一些少一些,不一定完完全全等于100。数量的多少会影响识别的效果。一般数量在一百以上效果就会比较好。小喵训练的数字、字母等常规单个分类在500以上。

标注工具——labelImg.exe

下载地址:https://github.com/tzutalin/labelImg/files/2638199/windows_v1.8.1.zip
下载并解压得到

选择样本A的文件夹

选择保存的文件夹

选择要保存的文件夹,文件夹名字任意,标注后的数据XML就会保存到此文件夹下。

标注设置

给类别起个名称,如nut,并把勾勾上,通过快捷键W,就可以对图片的目标对象进项画框。

画框操作,尽可能用小的矩形框把我们的目标对象框住。

下一张图片

按快捷键D,切换到下一张图片

常用快捷键:

在使用LabelImg时,可以利用快捷键来提高工作效率。以下是一些常用的快捷键:

  • Ctrl + S:保存标签
  • Ctrl + D:复制当前标签和矩形框
  • Space:标记当前图片已标记
  • W:创建一个矩形框
  • D:切换到下一张图片
  • A:切换到上一张图片
  • Del:删除选中的标注矩形框
  • Ctrl + 放大图片:放大图片
  • Ctrl + -:缩小图片
  • ↑→↓←:移动选中的矩形框的位置

第一个类别样品全部标注完毕

可以在label_nut文件夹下看到已经标注好的数据。

标注第二个类别

同理,更改数据集的文件夹,和保存的文件夹

更改标签

训练平台

当各个分类的图片数据已经标注完毕,此时我们可以将数据传到云端服务器中进行训练。

这里利用的是嘉楠平台(出品K210的公司)

https://developer.canaan-creative.com/

首先进行注册与登录

模型训练

点选项目

创建数据集

上传图片和标注数据

请注意压缩包的结构目录,需要与要求一致

文件夹名称为dataset

dataset下有两个文件夹,images和xml,分别存放分类A、分类B的照片,和标注好的数据

标注数据

数据我们已经全部标注完毕了,这里无需再标注,可以看到右侧未标数量为0,代表全部已经标注完毕了。

创建训练

只需填入任务名称,其它按照默认值即可,确认后就开始排队训练了。

等待训练完毕即可。

使用模型

模型文件解析

  1. 模型训练完毕之后状态变为”已完成“,点击”下载“
  2. 压缩包文件说明
    • det_results:测试结果图片集
    • anchor.txt:锚点值
    • canmv-xxxxx.zip:k210固件一些相关固件
    • det.kmodel:模型文件
    • label.txt:结果序号对应的标签
    • train_loss.txt:训练失败率(数值渐低则是正确的)

在kittenblock中使用

  1. 选择硬件,根据你自己的主板选择未来板或者未来板lite
  2. 添加插件
  3. 核心积木
  4. 未来板:
  5. 未来板lite

在makecode中使用