`发现一个非常奇怪的事情,那就是我的帖子真的不见了。。。 以下是重发的。。。
在疫情期间,大家都戴着口罩,又不希望频繁触摸指纹打卡机,我们方案的目标是借助NCS2实现快速打卡功能。
一、原理
Openvino的长处在于通过已经训练好的模型来快速神经计算,实现检测(Detec
tion)、分类(Classification)和分割(Segmentation),我们先来看看例程,“object_detection_sample”,其中代码
可以定位出需要的“块”,画出物件周围的边界框,并且初步检测出这个“块”大致是什么内容,但已有模型显然不满足我们需求,检测出“人”已经是其极限了。要识别人脸,需要引入新的模型。
使用Openvino的IE(inference-engine)功能,大致流程如下:
可以根据输入模型来判定最优可能性,其代码来自“classification_results.h”:
二、项目实现的功能
通过将带有口罩的人脸从图中分隔出来,存成图片文件,图片格式为png。
单独识别切出的“人脸”,在例程代码中可以看到,识别出的结果存在概率,也就是说,代码本身就允许设置置信区间。
考虑到用于打卡,将识别的置信区间设置在85%,换句话说,识别低于85%的人物照片,将不被认可。在实际操作中,这也是符合习惯的,我们可以要求反复读取摄像头前的人物,直到认出为止。只要选择高清晰度的摄像头就可以做到这一点了。
因为打卡相关的代码还未编写,暂时只实现了显示出“最有可能”的人的名字。当程序判断“脸”的人物存疑(比如概率为75%),我们直接显示识别失败。
三、测试
同事的照片实在不太好调用,但网上明星的照片很多,于是采用网上照片进行训练,分别选取了4位明星(周冬雨、陈伟霆、薛之谦、朱一龙),其男女比例为3:1,相对符合公司人员比例,大约下载了2500张照片(总数)进行学习,生成模型应用,并运行代码进行测试,结果如下:
在6幅图中人脸已正确获取3幅,但(图片代号5)
识别出3幅,只有2幅正确,1幅识别错误,其它无法识别,人脸截取正确率超过80%。
附:
原图
|