基于SeetaFace的人脸识别门禁系统

2018-09-04 16:36
制造业自动化 2018年8期
关键词:级联人脸特征提取

(惠州学院 电子信息与电气工程学院,惠州 516007)

0 引言

随着社会的发展,科学技术的进步,生活水平的提高,人们的生活出现越来越多的安全隐患,诸如盗窃造成财产损失,丢失证件、遗忘密码等特征物品的缺失给人们带来不便的同时也暴露出缺陷。但将每个人的生物特征充分运用,比如人脸,指纹等,则可以避免这个问题,这也使生物识别技术越来越受欢迎。而人脸识别技术就是最受欢迎的其中之一。

运用人脸识别的门禁系统,将会更灵活,更安全,更便捷。人脸识别是让机器思考并进行判断,是机器视觉领域最具有挑战性的课题之一。其自身容易推广、安全性高、方便、准确度高、可以自学等优势可以应用到公安侦查、安全鉴别、互联网等领域。人脸识别具有很大的研究价值。因为它的研究涉及到机器视觉、图像处理、数学等多门学科,常用于各种安全级别较高的系统,对提高系统安全程度和保障安全起到很大的作用。人脸识别的研究对推动系统安全的提升有着至关重要的意义。

1 人脸图像获取和预处理

1)图像采集

用Open CV打开摄像头,在屏幕上出现显示窗口,在窗口中使用Open CV的画图工具画一个正方形的框,只有当人脸在框内时才能进行人脸检测、特征点定位、特征提取和比较。当人脸对准在框内时,点击“样本采集按钮”捕捉一帧图像,然后程序开始执行,提取图像特征数据,将图片信息转换成数据信息存储在bin文件中。

2)图像灰度化

在程序中,首先,用一个if语句判断图像是否为灰度图,是单通道图像则直接使用;若返回的判断结果为多通道图像,则用cvtColor函数先把多通道图像变成单通道的灰度图后再进行操作。

图1 灰度化效果图

3)图片尺寸缩放

为了缩短计算时间,可以将图像缩小。图像缩小有两种方法:一、使用图像金字塔改变图片的像素进行缩放,图像越小,像素越低;二、用函数resize改变图像的长和宽进行缩放,但不改变图像的像素,是真实意义上的缩放,可以避免因像素降低,图片变模糊引起的识别率降低。

2 人脸检测模块

SeetaFaceEngine-master中的Face Detection模块,基于一种结合经典级联结构和多层神经网络的人脸检测方法[1],采用的漏斗型级联结构专门针对多姿态人脸检测而设计,其中运用的由粗到精的设计理念兼顾了精度和速度的平衡。如图2所示,漏斗型级联结构在顶部由多个针对不同姿态的快速LAB级联分类器[2]构成,紧接着是若干个基于SURF特征的多层感知机(MLP)级联结构,最后由一个统一的同样基于SURF特征MLP级联结构来处理所有姿态的候选窗口,整体上呈现出上宽下窄的漏斗形状。从上到下,虽然随着层次的递增,每个层次的分类器及其所采用的特征逐步变得复杂,但可以保留人脸窗口并排除难以与人脸区分的非人脸候选窗口。

图2 人脸检测原理

3 人脸特征点定位

真实场景下的人脸特征点定位会受到姿态、表情、光照和遮挡等因素的影响。为此,SeetaFaceEnginemaster中的FaceAlignment模块采用一种由粗到精的自编码器网络来求解复杂非线性映射过程。如图3所示,特征点定位模块从像素低,分辨率较低的图片开始进行人脸形状的估算,用自编码器网络进行初步的特征点定位,得到第一级图像S0;然后提高输入图片的像素,进行人脸形状估算,并将S0中定位的特征进行局部提取,输入到自编码器网络中进行对齐,得到S1,此时S1的定位精度就远超过S0了,然后再选取更高像素的图片进行人脸形状估算,将S1中定位的特征进行局部提取,输入到自编码器网络中进行对齐,得到定位精度更高的S2。以此类推,当选取的图像像素达到最大是,级联的自编码网络级数越多,特征点定位就越准确。

图3 人脸特征点定位原理

4 人脸特征点标记

FaceAlignment模块中的函数PointDetectLandmarks可以在检测出人脸并传回人脸区域的基础上标记人脸的五个(眼睛中心、鼻尖和嘴角)特征点。使用cvCircle函数画五个点将特征点位置标记出来,可以直观的看到所标记的地方,并判断人脸是否在规定区域内,只有人脸在规定的框内才进行下一步的特征提取和比较。该标记可以改变大小,颜色,样式等。

人脸特征点标记效果如图4所示。

图4 特征点定位效果图

5 人脸识别

SeetaFaceEngine-master中的FaceIdentification模块,提取特征向量,将图片信息转化成数据信息存储在二进制的Identification.bin文件中,留做样本数据。SeetaFace开源的人脸特征提取模块也是基于卷积神经网络的,其实现的是深度卷积神经网络:包含7个卷积层与2个全连接层。该网络将5×5的卷积核拆分为两层3×3的卷积核,从而增加了网络深度,且没有增加计算量。人脸特征直接采用VIPLFaceNet FC2层的2048个结点的输出,特征比对可简单采用Cosine计算相似度,如图5所示,将数据库中的人脸进行特征提取后,得到特征向量,数据1,然后将实时检测的人脸进行特征提取,得到特征向量数据2,然后将得到的向量数据1与向量数据2进行余弦值的比较,通过函数CalcSimilarity比较两向量的相似度并输出。最后进行阈值比较,将输出的相似度值与预先设置好的阈值进行比较,当相似度大于阈值时,判断识别成功,是管理员或者用户,若小于阈值则判断识别失败。从而达到人脸识别智能门禁的效果。SeetaFace在多数人脸识别场景下均具有良好的性能。

图5 人脸识别原理

6 结果

使用SeetaFaceEngine-maste中的Face Detection模块和FaceAlignment模块检测并定位人脸特征点,采用SeetaFaceEngine-master中的FaceIdentification模块进行人脸特征点提取和比对,可以达到97.1%的识别正确率。速度方面,在单颗Intel i7-3770 CPU上,开源代码提取一张人脸之特征的时间约为120ms。

7 结论

1)检测速度快:人脸检测+人脸特征点定位+人脸特征点的提取和比对所用时间仅为120ms。

2)检测准确率高:对人脸的识别率可达97.1%。

3)检测范围:该系统可用于平时生活中门禁,也可用于公安侦查等检验身份等领域。

猜你喜欢
级联人脸特征提取
铀浓缩厂级联系统核安全分析
有特点的人脸
一起学画人脸
基于Gazebo仿真环境的ORB特征提取与比对的研究
富集中间组分同位素的级联
—— “T”级联
基于Daubechies(dbN)的飞行器音频特征提取
三国漫——人脸解锁
Bagging RCSP脑电特征提取算法
基于MED和循环域解调的多故障特征提取
长得象人脸的十种动物