[计算机视觉]人脸应用:人脸检测、人脸对比、五官检测、眨眼检测、活体检测、疲劳检测 (2)

[计算机视觉]人脸应用:人脸检测、人脸对比、五官检测、眨眼检测、活体检测、疲劳检测

眼睛在打开到闭合时,下面这个表达式的值快速趋近于零:

[计算机视觉]人脸应用:人脸检测、人脸对比、五官检测、眨眼检测、活体检测、疲劳检测

上面表达式EAR(Eye Aspect Ratio)的值等于垂直方向两个线段长度之和除以水平方向线段长度*2,这个值在闭眼的瞬间可以趋近于零,在睁眼的瞬间,恢复到原来值。EAR的变化过程如下图所示:

[计算机视觉]人脸应用:人脸检测、人脸对比、五官检测、眨眼检测、活体检测、疲劳检测

我们只需要监控EAR的值是否快速波动并且趋近于零来判断是否闭眼,是否快速恢复来判断是否睁眼。如果闭眼和睁眼时间间隔很短(只占几个视频帧,每秒25帧算),那么就认定为眨眼。

 

活体检测

人脸应用中,为了防止人们使用照片等伪造人脸通过授权,一般都需要对画面中的人脸进行活体过滤,即判断当前视频画面中的人脸是否是真人,而不是照片等其他代替物。通过前面介绍的眨眼检测技术,我们可以实现一个非常简单的‘活体检测’算法,算法每隔一个随机时间段(比如几秒,时间不固定,防止人们录制视频来伪造)就要求视频画面中的人眨眼,如果画面中的人积极配合算法发出的指令,那么可以认为画面中是真人,否则可能就是伪造人脸。

[计算机视觉]人脸应用:人脸检测、人脸对比、五官检测、眨眼检测、活体检测、疲劳检测

需要说明的是,活体检测仅仅通过以上这种方式可能还不是足够安全,一般还可以结合其他活体检测技术,比如相机深度检测、脸部光线检测、以及利用深度学习技术直接对人脸进行二分类(活体/非活体)。

 

疲劳检测

疲劳检测这个应用场景太大了,比如可以用于长途汽车司机疲劳监控告警、值班人员疲劳监控告警等。主要原理还是通过前面介绍的眨眼检测技术,将其稍微改进一下,我们就可以对闭眼进行检测,如果闭眼超过一段时间(比如1秒),那么就认为疲劳发生,发出告警。眨眼判断很简单,闭眼判断更简单,这些所有的判断逻辑全部基于人脸表征提取的数据:

[计算机视觉]人脸应用:人脸检测、人脸对比、五官检测、眨眼检测、活体检测、疲劳检测

 

Demo源码:在公众号上

需要明确的是,本文所有算法的准确性全部依赖于模型训练的好坏,人脸检测是否准确、人脸特征提取是否合适、人脸表征检测结果是否准确。机器学习就是这样,结果的好坏完全取决于模型训练的好坏(特征提取的好坏)。比如本文这个demo中可以容易看到,人脸表征检测对戴眼镜的人脸效果不是很好,需要更多这方面的训练数据。有问题的朋友请留言,感兴趣的朋友请关注公众号,分享原创CV/DL相关文章。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzpgs.html