1.yolov3模型训练
2.部署到K210
文章有点长,是因为很细节。
首先建一个新文件夹(要以英文命名)再在文件夹中建如下两个文件夹(images是用来放原照片的,xml是用来放标志后的照片的)。
将要识别的照片原照片放到images文件夹,然后先不要急着去标注,打开yolov3,在工具集中找到
打开后按照片中如下操作
然后点击开始下载,看到如下就是下载成功了
至于为什么这样呢
是因为K210上识别的照片模式是240x240,我们找到照片不全是这个格式,所以要转换才能更好的识别。训练效果才更好,同样照片集越多,识别越准。
然后回到images文件夹中你会发现出现了数量一样的jpg照片,这些就是224x224格式的照片,当然原来的照片也在,你可以删掉,也可以放到另一个文件夹,但就是不能放在images上了(不知道哪些是标注后的可以看时间,时间新的就是标注后的)。
还有一步很重要就是要点开转换后的照片看是否有空白的照片(可以在文件夹上方点击查看模式,方便查看),有的话就得全删掉(因为标志照片xml与images上的是一一对应的,不删的话,那些空白照片标志不了,会导致训练不了)。
如下
完成这一步就可以开始标注了
同样在工具集中找到如下工具
然后按下图所示一步步操作
change save Dir 是保存标注照片的地方。
然后
最后按如下步骤去标注,框要包住整个物体,刚刚包过是最好的。
一直标注完到最后一张照片就可以了。
然后再打开xml文件夹就可以看到如下
这时候就可以去训练了
按下图步骤
第一次训练是有点久的,慢慢等待,然后训练完会自动弹出一个文件夹。如下
将里面的所有文件复制到car文件夹的Train_date里 (有没有发现文件里多了好多文件,这些都是自动生成的)。
复制完成后是这样的。
然后就可以测试模型了
按下图步骤
然后等待一会就会出现以下界面
这就表示测试完成了。(有一张图未识别出来,原因可能是照片数量太少,好的数据集大几千张,也可能是测试次数少)。
接下来就是部署到K210上了
因为K210上的文件形式是.kmodel,而训练完的模型文件的是.tflite 所以要转换。
按下图操作
然后点击转换,等待转换成功。打开文件夹中的Train_date中就会找到如下文件
接下来再新建一个文件夹
如下图,将下面的三个文件拖到新的文件夹(K210_car)。
然后按如下路径在yolov3文件夹中找到
同样放到新建文件夹总(也可以不放,只是为了方便管理)
最后就将这些文件复制到你的SD卡中(也可以不用SD卡,下面再说)
然后将SD卡插入K210上,打开上图的boot.py 文件,就可以连接上机了
还需要按如下修改代码中的文件位置。
(下图中的labels,不是与下面的对应就行,也要跟你放进SD卡中的文件名称一样)
修改后记得点保存,然后就可以运行了。
识别不是很准确,也是因为数据集不够大(有时能识别到(很难),有时识别不到),也有灯光的原因,所以我换了成了yolov3中带的mask数据集进行测试可以看到以下结果
这就很稳定的识别出来了。到这你就再K210上成功了一大步。
那就来说说没SD卡的,这就得把模型包烧录到K210上了(建议还是用SD卡)
首先你得到Sipeed找到下面的固件并下载
然后再在kflash_gui.exe上烧录到K210的固件上,如下图
串口要选对,然后就是可以下载了。
然后再将.kmodel文件下载到K210上,如下(地址一定不要错,因为前面的是固件的地址)
然后就可以打开boot.py了,但是要修改以下地方(这里就以mask的为例)
可以在新建文件夹中找到这些数据复制过来就行了。
不懂这些函数的可以去Sipped 上学习。
然后就可以运行了。