也是想在考研复试的时候可以拿出来给导师看看,证明自己会一些算法和软硬件的东西,让导师更认可自己,好了,下面简单介绍一下过程。
这个模型大概看了看,就是mobilenet+yolo2的检测头,实际就是yolo2的效果
1.首先,就是要准备数据,思来想去,口罩的检测可能更有实际意义,所以就找了口罩的数据,下面分享给大家。可以使用自己的数据集或自己标注一些自己想做得场景,标注工具也在工程里了。
链接:https://pan.baidu.com/s/1mzcFeHboRKcEPfLJNGJ5yA
提取码:9213
2.训练模型,为了达到更好的效果,首先用kmeans聚类,获取图像对应的anchors,效果还可以,然后修改configs.json文件,这里模型输入的大小是224*224的,其实320*240的会更好,修改anchors和训练路径,然后python trian.py训练。训练好后模型会保存在save文件夹下tflite文件。
这里说下为什么模型320*240更好,这是由板子上的摄像头和显示屏决定的,因为k210的c语言没办法实现resize操作,这对它来说太难了,即便写了底层的函数也会运行很慢,所以模型要适配板子,模型的输入要小于等于320*240,这个模型的输入是224*224的,所以屏幕的检测输出并没有沾满,只用了左上角224*224的显示大小。
3.模型转换,模型量化,使用工程目录下得ncc_0.1_win,解压后,把tflite转换成Kmodel,原来训练好的tflite模型大小为20多M,转换完只有1.81M,说明量化很充分,模型在板子上跑起来也很轻快。
ncc_0.1_win\ncc test.tflite test.kmodel -i tflite -o k210model --dataset train_img
4.使用官方的Kendryte IDE,编译模型。没有Kendryte IDE的可以百度自行下载,打开kendryte_kpu-standalone_3工程目录
改这个工程的时候遇到很多坑,这个代码官方没给任何说明,经过大量的尝试结合算法经验,终于把它给改好了。
5.烧录编译好的二进制文件到开发板KD233
6.烧写模型文件kmodle到flask
最终效果还不错,各种口罩图片基本全能识别,上图,照的是本人(从来没怀疑过自己)
上图2,感谢观看