Mx-yolov3+Maixpy+ K210举行当地模型练习和目的检测

[复制链接]
查看1170 | 回复0 | 2023-8-23 11:57:21 | 显示全部楼层 |阅读模式
我打仗K210同样也是由于一次比赛,须要举行目的检测并对垃圾举行分类,在打仗到K210之前我一直使用各种YOLO版本检测,并摆设到树莓派和nano上,一次偶然的时机,我发现了K210,这里要感谢我的一位学长,是他带着我开始了K210的学习,让我从盲目的下令行指令转到Maxipy上使用Python来学习K210。我写下这篇博客是为了记录我的学习生存,并感谢这位资助我的学长。

  

媒介

随着人工智能的不绝发展,呆板学习这门技能也越来越告急,很多人都开启了学习呆板学习,K210便是一个很好的工具。K210是由一家叫做嘉楠的曾经做 挖矿芯片 的公司在客岁推出的一款MCU,其特色在于芯片架构中包含了一个自研的神经网络硬件加快器KPU,可以高性能地举行卷积神经网络运算。 可不要以为MCU的性能就一定比不上高端SoC,至少在AI计算方面,K210的算力实在是相当可观的。根据嘉楠官方的描述,K210的KPU算力有0.8TOPS ,作为对比,拥有128个CUDA单元GPU的英伟达Jetson Nano的算力是0.47TFLOPS ;而最新的树莓派4只有不到0.1TFLOPS 。以是K210是你举行深度学习不可多得的好帮助,接下来我们进入正文。
一、所需环境

1.硬件环境

K210开发板

以上系列都可以,我根本上使用过所有Sipeed的K210开发板,他们根本上都是大同小异。
2.软件环境

软件的话这里我保举使用Mx-yolov3和Maixpy


Mx-yolov3
Maixpy:各人可自行从官网上下载
二、Mx-yolov3

Mx-yolov3是一位大佬写的软件,它须要制定的环境,接下来我会带各人从相识到纯熟使用Mx-yolov3
1.软件环境设置


1.python环境

下载软件后打开文件夹你会看到Mx-yolov3设置文件,直接打开他,所需python环境必须是python3.7.4假如你电脑安装了其他版本的python请先卸载,然后在安装。否则会直接给你报错。
2.干系依赖包

python3.7.4环境安装好后,安装Python依赖库和预练习权重,直接点安装就可以,Python环境没有题目安装相应的依赖也是没有题目的,假如在这里报错了,你须要去查抄你的环境是不是有题目。
3.GPU练习设置

第三步是选装的在这里我可以举行一些介绍不按照第三步对你接下来的练习检测是没有任何影响的,安装cuda和cudun是为了使用GPU练习,不安装的话电脑会使用CPU练习。
安装步调很简单,文件夹里有相应的教程在这里我不做过多赘述。(发起各人安装本来就是GPU干的活为什么要让CPU去干呢,而且练习速率也会快很多)
4.总结

1、先安装Python3.7.4 版本,不支持Python3.8版本(由于很多依赖库不支持3.8版本的Python)必须安装在默认路径,否则修改kreas网络将失败。
2、安装依赖库、拷贝权重文件并修改Kreas网络,在安装依赖库的过程中若收到“HTTP”错误,请更换网络环境重试。
3、若须要使用GPU练习,则须要安装CUDA_10.0和Cudnn_7.6.4,安装乐成后将主动启用GPU举行练习;安装的网络教程在文件夹内。
2.开始使用


环境设置好之后就可以打开Mx-yolov3软件了
1.模型要求


使用Mx-yolov3举行当地练习一定要将本身的图片转换为224*224巨细的图片,否则会出现,识别禁绝确的题目(在这里提示各人一定不要用苹果手机拍照,一定要用安卓手机)本人切身踩坑!!!
图片转换好之后举行标注,标注工具可以使用vott,标注工具的使用可以看我另一篇博客,上面介绍了该标注工具的使用以及百度网盘的下载链接。
使用vott标注要导出vocc形式,在那篇博客里也有介绍。
以上使用软件在Image_tool文件夹下
2.开始练习


选择你须要练习的图片的所在以及标注后导出的标签所在,在这里我使用例程口罩练习给各人做演示(打开Mx-yolov3软件,颠末简单加载之后,我们将看到它的主界面,重新选择一下练习图片所在和练习标签所在,这两个文件夹都在主目次“datasets/yolo/masks“路径下,此中img文件内里包含着所有的练习图片,而xml文件夹内则包含了所有已标注好的标签文件。)
起首选择好你所练习的模型的所在,如上图
接下来选择种类名称
然后你须要计算你所练习模型的锚点,方法很简单,点击计算即可
接下来你会看到如下图片

然后点击开始练习,你就可以举行练习了,不出意外,你可以看到以下图片内容

等候迭代完毕后,信息栏和终端信息将会同时表现练习竣事。

3.模型测试

练习竣过后,可以在主目次下的“模型文件”文件夹中找到你刚才练习好的两个模型文件yolov2.h5和yolov2.tflite


接下来点击“测试模型”按钮,选择yolov2.h5模型文件,稍等几分钟,Mx-yolov2将会把测试结果表现出来。

4.转换模型

点击模型转换按钮,打开NNcase0.1_GUI版本,选择刚才练习出来的yolov2.tflite模型文件,保存所在,量化图片所在(练习图片4~5张),点击开始转换,等候一会,将看到如下信息。

5.摆设到K210上

起首你须要烧录相应固件,点击工具集,你会下图界面

点击

图标
你会看到如下界面

毗连到你的开发板,在文件夹里选择固件烧录,烧录时使用0x300000

烧录完成后将转换得到的yolov2.kmodel模型文件同样烧录到你的K210上,如今你的摆设已经完成了,接下来你须要写一个python脚本运行。
三、脚本运行

1.软件

Maixpy,使用Maixpy时要选择对应的开发板

2.代码部门

在这里附上脚本代码
  1. import sensor
  2. import image
  3. import lcd
  4. import KPU as kpu
  5. lcd.init()
  6. sensor.reset()
  7. sensor.set_pixformat(sensor.RGB565)
  8. sensor.set_framesize(sensor.QVGA)
  9. sensor.set_windowing((224, 224))
  10. sensor.set_hmirror(0)
  11. sensor.run(1)
  12. task = kpu.load(0x300000) #使用kfpkg将 kmodel 与 maixpy 固件打包下载到 flash
  13. anchor = (0.9, 1.08, 1.65, 2.03, 2.49, 3.22, 3.28, 4.29, 4.37, 5.5) #通过K-means聚类算法计算
  14. a = kpu.init_yolo2(task, 0.6, 0.3, 5, anchor)
  15. classes=["Masks","Un_Masks"] #标签名称要和你训练时的标签名称顺序相同
  16. while(True):
  17.     img = sensor.snapshot()
  18.     try:
  19.         code = kpu.run_yolo2(task,img)
  20.     except:
  21.         print("TypeError")
  22.     #a=img.draw_rectangle([0,0,360,20],0xFFFF,1,1)
  23.     if code:
  24.         for i in code:
  25.             a=img.draw_rectangle(i.rect(),(255, 255, 255),1,0)
  26.             a=lcd.display(img)
  27.             # = img.draw_string(0,0, classes[i.classid()], color=(0,255,0), scale=2)
  28.             for i in code:
  29.                 lcd.draw_string(i.x()+40,i.y()-30,classes[i.classid()] , lcd.RED,  lcd.WHITE)
  30.                 lcd.draw_string(i.x()+40,i.y()-10,str(round((i.value()*100),2))+"%", lcd.RED,  lcd.WHITE)
  31.     else:
  32.         a = lcd.display(img)
  33. a = kpu.deinit(task)
复制代码
毗连运行即可
四、脱机运行

1.步调

将转换得到的yolov2.kmodel模型文件、模型文件文件夹内的anchor.txt文件、label.txt文件、步调文件内的物体分类脚本boot.py拷贝到sd卡即可
2.boot文件代码

  1. import sensor
  2. import image
  3. import lcd
  4. import KPU as kpu
  5. lcd.init()
  6. sensor.reset()
  7. sensor.set_pixformat(sensor.RGB565)
  8. sensor.set_framesize(sensor.QVGA)
  9. sensor.set_windowing((224, 224))
  10. sensor.set_hmirror(0)
  11. sensor.run(1)
  12. task = kpu.load("/sd/yolov2.kmodel")
  13. f=open("anchors.txt","r")
  14. anchor_txt=f.read()
  15. L=[]
  16. for i in anchor_txt.split(","):
  17.     L.append(float(i))
  18. anchor=tuple(L)
  19. f.close()
  20. a = kpu.init_yolo2(task, 0.6, 0.3, 5, anchor)
  21. f=open("labels.txt","r")
  22. labels_txt=f.read()
  23. labels = labels_txt.split(",")
  24. f.close()
  25. while(True):
  26.     img = sensor.snapshot()
  27.     code = kpu.run_yolo2(task, img)
  28.     if code:
  29.         for i in code:
  30.             a=img.draw_rectangle(i.rect(),(0,255,0),2)
  31.             a = lcd.display(img)
  32.             for i in code:
  33.                 lcd.draw_string(i.x()+45, i.y()-5, labels[i.classid()]+" "+'%.2f'%i.value(), lcd.WHITE,lcd.GREEN)
  34.     else:
  35.         a = lcd.display(img)
  36. a = kpu.deinit(task)
复制代码
然后上电运行即可
使用K210练习模型检测模型就可以顺遂举行了。感谢各人看到了末了一行。
总结

这是我学习K210后写下的一篇博客,写下这篇博客的目的是为了记录本身的学习生存,同时让更多的人可以或许更快的相识到K210,后续我会对K210的一些具体使用写一篇博客。到此这篇博客就竣事了,并再一次感谢那位带我一起学习的学长。在附上这位学长博客的链接哦(https://blog.csdn.net/hyayq8124)

来源:https://blog.csdn.net/qq_51963216/article/details/121044449
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

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

本版积分规则