本来准备考研,突然实训要做一个水果识别,然后想起来自己买过的k210吃灰板,不如。。。
官网的模型训练资料太少了,只写了支持yolov2-tiny,其实还支持其他模型,由于yolo2模型基本是卷积层和迟化,结构较为简单
本人小白,仅仅是了解过一些神经网络的知识,训练过程也没有编写过任何代码,这里仅仅是教然后训练
下面说一下训练过程
首先下载darknet,这是一个c语言神经网络开源架构,是yolo的官方支持架构,通过此架构可以获得cfg配置文件和weights权重文件,官方的网站https://pjreddie.com/darknet/yolo/,具体然后训练可以参考
https://www.rt-thread.org/document/site/tutorial/smart-car/darknet-yolov2/darknet-yolov2/
如果使用的是yolov2-tiny权重,训练下来大概会有40m,很大,所有我在yolov2-tiny的基础上删掉了1024和512两层,训练后模型直降6m。。。
Ps:训练模型运算量相当大,不要试图使用cpu去跑,本人使用百度 ai studio免费gpu,一晚上跑了90000步,之前使用白漂的阿里云服务器,一上午不到1000步(吐血)
官方支持的模型是kmodel,而我们获得的是weights和cfg文件,接下来是如何转换,我的思路weight和cfg转pb,pb转tflite,tflite转kmodle
接下来是转换步骤
我使用的是darkflow,它可以将weights和cfg文件转换成pb文件(tensorflow支持的文件,可以将此文件转换成tflite),这个github地址:https://github.com/thtrieu/darkflow,具体如何使用可以百度
Ps:这里有个坑,如何使用linux由于文件原因会报错,参考网上方法: 打开darkflow根目录下darkflow/utils中的loader.py,将其中121行中的self.offset由16改为20:
self.offset = 20
还有一个注意点是需要将此文件夹里的标签文件改成和你训练分类种类一样
这时你获取了pb文件,接下来的转换过程就和手写数字设备的转换过程一样了,具体可看maix教程https://blog.sipeed.com/p/tag/k210
教程较为简单,往简介,很多细节可以百度,下面是效果
