最近做一个基于K210的疲劳检测训练,原来思路是三模型检测,一个模型检测人脸,裁切缩放到128*128像素,一个模型检测人脸关键点,将斜脸的照片修正为正脸,最后一个模型基于128*128像素的照片进行识别睁眼闭眼张嘴闭嘴,然后判断是否疲劳。但是实际测试发现,三模型太大,K210手册说总内存才6MB,不仅会内存溢出,修改代码为每次循环加载模型,用完就删,发现帧率太低,遂舍弃三模型,改用双模型
接下来教大家一下模型训练方法。
训练第一步,采集数据集,
网上教程很多,我修改了一个代码,使其在摄像头中识别人脸,框出,裁剪,缩放为128*128(重要),然后存在内存卡中,然后取下内存卡导入电脑
手动删除一些没拍好的照片。
注意拍照时一定要注意光源,如果采集环境差,可以增加补光灯(保证和测试环境相似,或者各种环境都采集几十张),光做毕业设计的话,推荐保持正脸,可以微微侧脸,一来缩小数据集,二来增加识别度,总之够用就行
第二部,标注
打开K210官网MaixHub首先感谢K210官网,给学生们提供免费在线训练网站
点击模型训练,新建训练,填写必要信息上传图片
手动标注眼睛嘴巴,这是最无聊的
在线训练
然后创建任务,任务设置如图,牢记我们传入的照片是128*128像素的虽说训练的模型老,才yolov2,但亲测够用,能跑就行
等待训练结束,点击部署,手动部署,下载模型包。
加入工程
压缩包里三个文件
main.py只看一个地方
model-102953.kmodel文件记住他的后缀102953
修改参数
打开我们的主函数,将这句模型路径model_addr="/sd/model-102900.kmodel",修改为model_addr="/sd/model-102953.kmodel",
还有anchors修改成官网main.py文件样子:anchors = [1.16, 0.78, 1.44, 0.94, 1.28, 0.84, 2.19, 1.2, 2.0, 0.94]
然后将labels = ['睁眼', '闭嘴', '闭眼', '张嘴']中的汉语修改为数字labels = ['1', '2', '3', '4']注意顺序,保证睁眼改成1,闭嘴改成2,这样LCD才不会乱码
官网下载的模型model-102953.kmodel移到K210的SD卡中,就可以完美运行。