976浏览
查看: 976|回复: 4

[官方教程] 【MaixPy教程】用maixHub训练模型进行开源硬件识别

[复制链接]
本帖最后由 猪百岁 于 2021-3-4 16:40 编辑

【MaixPy教程】用maixHub训练模型进行开源硬件识别

ThuMarch-202103043338..png

前言

年前参加了dfrobot的活动:DF冬季AI挑战赛有幸进入第二轮,大方的木子给了200的优惠券。在逛了DF商城时候无意间发现了一个宝贝:Maix Dock AI开发板!又有液晶屏和摄像头!!难道它不香吗?现在想想它是真的香

ThuMarch-202103045299..png

ThuMarch-202103044851..png

它是基于k210 AI芯片,作为核心处理单元,k210带独立FPU的双核处理,64位的CPU位宽,8M的片上SRAM,400M的可调标称频率,支持乘法、除法和平方根运算的双精度FPU,在AI处理方面k210可进行卷积、批归一化、激活、池化等运算。也可以进行语音方向扫描和语音数据输出的前置处理工作,可实现人脸检测,语音识别,颜色、物体识别,MNIST手写数字识别,Feature map显示,tiny yolov2 20分类等多种功能。

什么是K210 AI芯片呢?可以看一下大神稚辉君的帖子:嵌入式AI从入门到放肆【K210篇】-- 硬件与环境 想要详细了解MaixPy的资料可以查看:矽速科技官网


硬件准备

  • 刷入MaixPy的最新固件的K210开发板这里推荐Maix Dock

  • 一根TypeC数据线

  • TF卡及读卡器

准备数据集

  1. 用手机拍摄我们的Arduino、microbit、掌控板、树莓派的图片(ps:识别的准确定和我们的数据集的大小有关):

ThuMarch-202103044623..png

数据集处理

将图片数据集按分类保存为单独的文件夹, 子目录的名字为最后生成label的名字。
注意:分类文件夹数量要大于 2个!

例如:

数据集文件目录结构
   |-Dir_name
     |-Class_1
       |- pic01.jpg
       |- pic02.jpg
       |- pic03.jpg
      |-Class_2
       |- pic01.jpg
       |- pic02.jpg
       |- pic03.jpg

ThuMarch-202103048339..png

  1. 使用转换工具处理文件夹

    工具下载地址:预处理软件

    • 将预处理软件下载完成之后,解压后点击.exe文件即可使用

ThuMarch-202103047816..png

选择文件夹确定即可

ThuMarch-202103046734..png

选择我们准备好的数据集

ThuMarch-202103044390..png

执行完成后会生成zip文件(这个之后我们在模型训练的网站上会有用到)

ThuMarch-202103049363..png

*注意:
建议的图片分辨率 224
224, 上传之前可以使用工具批量转换一下
每个分类不要低于40张图片,否则无法开始训练
数据集压缩后大小不超过20M
子目录名不能使用汉字, 否则生成的label无法显示**

训练模型

获取机器码

  1. 下载key_gen固件 key_gen_v1.2.zip

  2. 下载kflash-gui kflash-gui

  3. 使用kflash-gui 烧录 key_gen 固件

ThuMarch-202103044128..png

  1. 打开串口终端(Xcom), 重启开发板, 可以看到打印出的机器码。
Please Send Bellow Data to Sipeed --> support@sipeed.com:
​
6f80dccbe29**********cc7e9d69f92
​
Generate key end
​
其中 6f80dccbe29**********cc7e9d69f92 就是对应开发板的机器码

提交训练任务

  1. 打开Maixhub模型训练平台并创建一个任务

ThuMarch-202103043760..png

在填写邮箱处填写接受模型的邮箱在填写机器码处填写机器码

  1. 上传数据集,选择我们前面准备好的数据集

ThuMarch-202103046422..png

  1. 进行数据训练,训练的时间和我们的数据集大小有关

ThuMarch-202103045188..png

训练好后,我们的邮箱会接受的我们的训练模型:

ThuMarch-202103049813..png

这里可以看到我的准确度还是比较低的。我们下载并解压下来可以看到下面这个文件:

ThuMarch-202103049416..png

里面有我们的的数据模型,和我们模式的一些准确度、损失度等信息

ThuMarch-202103044457..png

ThuMarch-202103047885..png

ThuMarch-202103041398..png

烧录模型到flash

模型有两种使用方式, 可以使用sd卡或烧录flash的方式来运行模型脚本。

使用sd卡

  1. 烧录最新Maixpy固件

  2. 将邮件中的zip 解压

  3. 将所有文件放到sd卡根目录

  4. 将sd卡插到开发板上, 重启开发板

烧录模型到flash

  1. 打开 kflash-gui, 选择解压出的kfpkg文件(模型内自带maixpy 固件,不需要单独烧录)

ThuMarch-202103047851..png

程序的编写

在邮件中的训练模型解压文件中,有boot.py,就是我们的识别模型程序了,我们现在用MaixPY IDE打开(具体使用操作及相关API文档可以参考官方wiki):

ThuMarch-202103044896..png

# refer to http://blog.sipeed.com/p/680.html
import sensor, image, lcd, time
import KPU as kpu
lcd.init()
lcd.clear()
#lcd.mirror(1)
try:
    img = image.Image("/sd/startup.jpg")
    lcd.display(img)
except:
    lcd.draw_string(lcd.width()//2-100,lcd.height()//2-4, "Error: Cannot find startup.jpg", lcd.WHITE, lcd.RED)

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_windowing((224, 224))
sensor.set_vflip(0)
sensor.set_hmirror(0)

sensor.run(1)
f=open('/sd/labels.txt','r')
labels=f.readlines()
f.close()
task = kpu.load('/sd/f1ba58e5f3d2011d3320a4fd0cd2ca69_813835c56cbfc4cfaf63052b70ba2c6e.smodel')
lcd.clear(0xFFFF)
clock = time.clock()
while(True):
    img = sensor.snapshot()
    clock.tick()
    fmap = kpu.forward(task, img)
    fps=clock.fps()
    plist=fmap[:]
    pmax=max(plist)
    max_index=plist.index(pmax)
    a = lcd.display(img, oft=(48,0))
    lcd.draw_string(48, 224, "%.2f:%s                            "%(pmax, labels[max_index].strip()))
    print(fps)
a = kpu.deinit(task)

程序演示




基于K210模型训练开源硬件识别.mp4

版权声明:本文为CSDN博主「tonycarson」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tonycarson/article/details/105999352

Sy  学徒

发表于 2021-3-5 13:19:22

预处理软件没有下载地址鸭
FriMarch-202103054934..png
回复

使用道具 举报

Sipeed-大佬鼠  版主

发表于 2021-3-5 13:55:06

Sy 发表于 2021-3-5 13:19
预处理软件没有下载地址鸭

这个预处理软件现已经不再更新和提供了
回复

使用道具 举报

MaK-er  学徒

发表于 2021-4-2 23:21:32

大佬,有Dock的3D打印外壳文件吗
回复

使用道具 举报

MaK-er  学徒

发表于 2021-4-3 00:00:40

MaK-er 发表于 2021-4-2 23:21
大佬,有Dock的3D打印外壳文件吗

不用了,我在群里找到了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail