本方案是在星瞳科技所提供的OPENMV例程基础上进行的修改 分辨不同人脸
1、将每次识别人脸时只采集1次样本数据修改为采集3次样本数据,每次分别与图像库中图片进行比对。每次比对后都会输出1个结果,循环3次后,输出出现次数最多的那个结果,减小识别误差率。
2、原例程是比对样本与图像库整张的图片中黑白像素数量,取最相近的结果进行输出。本方案将识别范围向中间缩小了1/8,可以一定程度上避免因为背景因素对结果造成的影响。
3、新定义了一些输入IO口和输出IO口,实现通过按键切换模式(身份识别、口罩判别、学习模式选择、学习后身份识别)、通过高低电平输出表示结果的功能(见附表)。
4、修改了图像库保存的位置,身份识别模式的图像库保存在"face/f%d"中,口罩判别模式的图像库保存在"mask/m%d"中,学习模式的图像库保存在"identify/i%s"中。因此,在使用此方案时,您需要先将github上的几个文件夹提前下载至您的OPENMV的根目录当中。
5、添加了相机参数自动调节的功能(自动增益、自动白平衡、自动曝光),一定程度上避免光线原因造成的识别结果误差。(该功能不确定一定有效)
除题目第3项身份不符报警功能没有加入之外,题目其余要求均实现。识别部分得分为45分(总分50分)
1、未加入身份不符报警功能,原因是因为没有找到合适的报警阈值。且阈值可能因为环境因素发生较大变化,造成队员身份识别错误,风险较大,故不加入。
2、为方便用LED灯表示结果,最后的输出结果没有将各模式编号后按照二进制结果输出高低电平,造成了一些结果的重复。
3、最后的学习后身份识别功能本来想添加两个模式,一个模式是针对学习模式的图像库单独进行识别,另一个模式是对学习模式和身份识别库的图像库一起进行识别,这两个模式之间通过按键进行切换。但最后因为时间问题,及按键数量问题,没有加入该模式,只选择了第一种模式作为默认功能。
4、因为OPENMV的精度问题,在识别过程中出现了几次的识别错误(包括穿黑色衣服无法识别是否戴口罩、因为角度问题识别错人等),因此该方案的识别功能对各方面的要求较高,某些情况下识别难度较大。
5、比赛准备过程中,有尝试过用haar算子追踪人脸(参考人眼追踪方案),再在此基础上圈定人脸范围进行身份识别,但是由于两种模式相机参数不同,故无法实现。
6、比赛准备过程中,也有尝试过用OPENCV官方库中的haar算子,进行人鼻子和嘴巴的追踪,以判断是否佩戴口罩,但在转制xml文件至cascade文件时报错,后判断是xml文件的问题。(OPENMV官方调用的haarcascades_cuda库,该库内的文件可转制成功。但haarcascades库转制失败,cuda库中不包括鼻子和嘴巴的文件。)
7、因为是第一次接触OPENMV,所以文件中较多方案的代码是重复的,一方面是为了方便修改,另外也是由于时间有限。欢迎大家对该方案进行修改,有什么问题可在issues中提出。