577浏览
查看: 577|回复: 1

[项目分享] 【MaixPy 教程】玩转1000种物体分类

[复制链接]
本帖最后由 hockel 于 2021-4-22 19:29 编辑

前言

接触MaixPy 已经快一年了,k210芯片在视觉运算能力上是可圈可点的。经过一年多的发展,接触MaixPy的人也越来越多。本人是做少儿编程的老师,看了MaixPy的wiki 里面有些知识点对于一些初学者可能不太友好(有些人可能想看一下K210所实现的效果,奈何卡在了程序运行上面。果断放弃)。本次教程就针对官方教程中的1000物体分类进行详细的说明。

准备阶段

1、用 kflash_gui刷入 maixpy_v0.6.2_46_geafab8cfd_minimum.bin 固件
Dingtalk_20210422171242.jpg

2、刷入mobilenet_0x300000.kfpkg模型文件
Dingtalk_20210422171528.jpg

3、用uPyLoader上传程序

3.1 选择串口并点击 Connect 按钮来连接板子

Dingtalk_20210422174151.jpg

3.2 第一次运行该软件需要初始化, 点击 File->Init transfer files 来完成初始化,

Dingtalk_20210422182105.jpg

然后它在板子里创建两个文件,分别是 __upload.py__download.py

Dingtalk_20210422182234.jpg

3.3 我们将main.py和labels.txt上传到板子上。

Dingtalk_20210422182559.jpg

Dingtalk_20210422182618.jpg

Dingtalk_20210422182642.jpg

程序设计

因为这个模型有4.2MiB,比较大,所以使用了minimum的固件,同时保证GC使用的内存不要太大,可以通过以下方式设置小一点,把内存留给模型使用

from Maix import utils
import machine

utils.gc_heap_size(256*1024)
machine.reset()

用uPyLoader对我们的main.py进行修改后保存,执行点击执行(Execute)即可.

Dingtalk_20210422190740.jpg

第二步:

# 导入相关库
import sensor, image, lcd, time
import KPU as kpu
# 液晶屏初始化
lcd.init()
#摄像头初始化
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_windowing((224, 224))
sensor.set_vflip(1)
sensor.set_hmirror(1)
sensor.run(1)
# 开机加载模型的labels
lcd.clear()
lcd.draw_string(100,96,"MobileNet Demo")
lcd.draw_string(100,112,"Loading labels...")
# 这里打开的是flash里的labels.txt,如果我们选择打开sd卡中的文件,路径为:“labels.txt”
f=open('labels.txt','r')
labels=f.readlines()
f.close()
# 加载1000中物体分类模型
task = kpu.load(0x300000) 
clock = time.clock()

while(True):
    img = sensor.snapshot()
    clock.tick()
    fmap = kpu.forward(task, img)
    fps=clock.fps()
    # 这里把运行的结果转换成了一个list对象,然后找到了最大值的下标, 
    plist=fmap[:]
    pmax=max(plist) 
    max_index=plist.index(pmax) 
    a = lcd.display(img, oft=(0,0))
    # 通过这个下标我们就知道标签名是什么了(labels[max_index])
    lcd.draw_string(0, 0, "%.2f:%s                            "%(pmax, labels[max_index].strip()))
    print(fps)
a = kpu.deinit(task)

Dingtalk_20210422191326.jpg

实验效果:

总结

好了,这样子我们就可以轻松搞定1000种物体检测了。由于模型的种类太多:识别的效果没有20种好。上述的模型文件及程序代码我已经放置在附件中,供尝试练习。更多MaixPY教程欢迎浏览个人博客:www.hockel.club




glass.rar

4.37 MB, 下载次数: 70

code

宣坝  学徒

发表于 2021-9-2 21:43:08

这个帖子真给力,不过我觉得还是很难怎么办
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail