一种基于级联卷积网络的移动端人脸识别系统实现

2021-09-10 06:25马无锡罗坚
浙江工贸职业技术学院学报 2021年1期
关键词:人脸识别

马无锡 罗坚

摘  要:考虑到现有人脸识别算法的准确率和可移植性,设计并且实现了一个基于Android平台的人脸识别考勤系统。该系统可以直接部署到采用Android系统的移动设备,通过摄像头采集图片并根据已录入的人脸库数据对检测到的人脸进行识别和考勤登记。本系统采用一种基于级联卷积网络的人脸检测算法MTCNN和人脸特征提取算法FaceNet来实现人脸识别。考虑到移动设备计算能力的有限性,采用NCNN框架将两种算法进行移植到Android平台。最终测试表明,本文系统的实时性和准确率基本满足实际需要。

关键词:人脸识别;算法移植;MTCNN;FaceNet

中图分类号:G255                                 文献标识码:A               文章编号:1672-0105(2021)01-0063-05

A Face Recognition System on Mobile Devices Based on Cascaded Convolutional Networks

MA Wu-xi, LUO Jian

(Zhejiang Industry & Trade Vocational College, Wenzhou,325003,China)

Abstract:  In this paper, according to the accuracy and portability of existing face recognition algorithm, a face recognition system which based on the Android platform is used in attendance. The system can take photos and identify the registered people who in the database, and it can be directly deployed to mobile devices using the Android system. In the algorithm, the face detection algorithm called MTCNN based on cascaded convolutional network and Face feature extraction algorithm called FaceNet are used to realize the face recognition. Considering the limited computing power of mobile devices, the deep learning framework called NCNN was used to transplant algorithms to the Android platform. Finally, the accuracy and real time of the system in this paper meet the actual needs.

Key Words:  face recognition; algorithm transplant; MTCNN; FaceNet

一、引言

人脸识别一直以来是人工智能领域与生物特征领域非常活跃的研究方向,主要包括人脸检测和识别两个部分。近年来,随着深度学习技术的飞速发展,人脸识别技术非常成熟,已经广泛应用到商业、文化、安全等很多领域,扮演着非常重要的角色。

对于人脸识别系统,正确率和实时性是衡量系统的两个关键性指标,也是众多人脸识别算法自始至终不断超越的目标。人脸识别算法从传统依赖于人工设计特征和机器学习组合的方式转化成基于卷积神经网络的深度学习方法,在检测和识别的正确率上有了很大的提升。这也是目前人脸识别得以广泛应用到我们生活中的重要原因。

基于深度学习的目标检测算法,从Ross Girshick提出的RCNN系列算法[1-3](包括:Region-CNN、Fast Rcnn、Faster Rcnn)到后续的SSD[4](Single Shot MultiBox Detector)、YOLO(You Only Look Once)系列算法[5-7]以及专门用于人脸检测的MTCNN(Multi-task Cascaded Convolutional Networks)算法[8],不仅在检测速度上有了巨大的提高,而且检测目标的完整性以及对于小目标的检测能力越来越强。在人脸识别方面,Facebook提出的DeepFace[9]、汤晓鸥团队的DeepID系列算法[10]、Brandon的OpenFace[11]、中科院的SeetaFace以及谷歌的FaceNet[12]等算法,在识别准确性上均有很高的准确率。

本文采用人脸检测算法MTCNN和人脸识别算法FaceNet通过移动端深度学习框架NCNN移植到Android平台,并开发了一款人脸识别APP,用来实现对上课学生的点名,从而大大提升了传统点名方式的效率。

二、算法介绍

(一)MTCNN算法简介

MTCNN是Kaipeng Zhang等人于2016年提出的一種级联卷积网络结构。它采用多任务学习的方式,可以同时完成人脸检测和人脸关键点检测两个任务,主要输出人脸区域的检测框以及眼睛、鼻子、嘴角五个关键点。该算法主要由三个网络组成,从粗检测到细检测分别为:Proposal Network(P-Net)、Refine Network(R-Net)、Output Network(O-Net),每个网络以前一个网络的输出作为输入,具体的人脸检测流程如图1所示。

MTCNN算法使用的级联卷积结构,以及训练过程中采用“在线困难样本挖掘”和“人脸对齐联合学习”策略,极大地提升了检测效果。该算法在准确率和实时性上的优势使其成为人脸检测项目中普遍采用的一种方案。考虑到实际应用中人不一定正对摄像头,为了提高算法的人脸检测效果,在原来人脸训练数据集上增加了侧脸样本。为比较MTCNN算法和其他人脸检测算法在检测率、误检率以及检测速度等指标上的差异,使用论文[13]中的人脸数据集来进行测试,测试结果见表1。

从表1可看出MTCNN的检测速度是最快的,检测准确率处于MMOD和SSD两种算法之间,在漏检率上明显低于其他两种算法。考虑到MTCNN采用的训练集图片比较清晰,而漏检的图片分辨率较低不够清晰,因此在后期的训练集中加入模糊的样本重新对其进行训练,可以有效降低其漏检率。

(二)FaceNet算法简介

FaceNet是谷歌公司在2015年提出的一种使用深度学习来进行人脸验证的方法,与其他做人脸识别的深度学习不同的是,FaceNet并没有采用传统的softmax的方式先进行样本的分类学习,然后再将其中某一层的输出来作为特征,而是直接使用端对端的学习方式,将一个图像映射到欧式空间的编码方法。该算法的优点是只需要裁剪的脸部区域,不需要额外的处理,如3D对齐等,即可以作为模型的输入得到图像的特征编码,再基于这个编码可以做人脸识别、人脸验证和人脸聚类等操作。

三、系统实现

(一)系统框架

本文的识别系统功能分为两部分:人脸采集和人脸验证。人脸采集功能主要用来建立人脸库,由管理员将需要识别的人员通过摄像头对其脸部进行拍摄1至3张照片(不同角度)作为库存图片,并输入用户身份信息以供后期查阅。人脸验证功能主要是根据用户拍摄的待识别图片,检测出其中的人脸区域并提取特征,再将特征与人脸库中预存的特征进行比对,从而找出最匹配的人脸作为识别结果。整个系统的实现流程如图2所示。

(二)算法移植

MTCNN和FaceNet两个算法,在网上有很多的开源方案,但是基本上都是基于TensorFlow、Caffe、Mxnet等框架的复现。这些PC端的主流框架在移动端显得往往过于庞大,而且这些框架非常依赖于GPU,在CPU上训练和测试的时间往往会很长。所以,我们需要将基于PC实现的算法以及训练得到的模型进行移植和压缩才能放到移动端使用,以达到实时性检测识别的要求。在此,我们选择腾讯开源的移动端深度学习框架NCNN来进行算法的移植和模型的压缩。

深度学习模型经过压缩后,在检测精度上必然有一定的损失,但是经过测试,压缩模型的效果依然可以满足实际需要,因此可以用来在移动端进行检测。MTCNN移植后的人脸检测效果如图3所示。

在MTCNN检测到人脸的基础上采用移植后的FaceNet来进行特征的提取,并计算人脸的相似性,具体效果如图4所示。从图中可以明显看出,两个相似人脸的欧式距离明显小于1,而非相似人脸间的欧式距离大于1。

(三)人脸矫正

在实际检测人脸的过程中,人脸往往会有倾斜,会对人脸特征的提取产生影响,从而导致人脸识别时候误差的产生。因此,在提取人脸特征之前需要先对人脸进行校正,才能保证所提取特征的准确性。基于在人脸检测阶段已经得到了五个关键点(眼睛、鼻子,嘴角),在此,我们以两只眼睛的关键点作为校正的标准,即在正脸情况下,两只眼睛的连线应该是处于水平状态。根据眼睛关键点的连线与水平线的夹角来计算得到人脸向左或者向右倾斜的角度,从而对人脸进行放射变换来进行校正即可,具体过程如图5所示。其中,图5-a是原图人脸检测的结果,图5-b是为做校正前的人脸图片,图5-c是校正过后的人脸图片。

四、系统集成

(一)开发环境

本文系统实现平台为Android 7.0系统,采用的编程软件为Android Studio3.3,并使用最新的NCNN作为深度学习框架。主要使用的编程语言为Java,编程平台为64位Windows系统,测试平台为华为Mate30手机。

(二)界面设计

用户界面如图6所示,主要分为人脸登记、人脸识别、人脸库查看三个部分。人脸登记部分的流程为:选择人脸登记;通过摄像头采集等待需要录入的学生人脸照片,并填写姓名、班级、学号等信息,点击“保存”按钮将人脸图片保存至人脸库。识别部分的流程为:点击“考勤”按钮;通过摄像头从多个角度拍摄多张学生的集体照片,然后点击“识別”按钮,等待该班级的考勤结果。人脸库查看流程为:点击“人脸库”按钮,根据班级选择需要查看的班级成员的人脸图片,并进行相应的编辑、删除操作。

(三)数据库设计

本文系统采用Android平台下使用较为广泛的SQLite作为数据库平台。SQLite是一种开源、跨平台的轻量级数据库,具有占用系统资源少、查询速度快的特点。在本系统中,主要用于存放人脸库中每个学生的姓名、班级、学号等基本个人信息以及考勤信息。为了保证后期的识别速度,在人脸登记时候将所采集的人脸图片的特征向量也保存到数据库中,在进行识别的时候省去了对人脸库图片特征的提取。具体的数据表内容及映射关系如图7所示。

(四)系统测试

为考察本文人脸识别考勤系统的性能,在上课时对教室内的学生进行图像采集进行考勤计数(如图6所示),主要测试系统的识别准确率、误检率、漏检率以及检测速度四个指标,测试结果如表2所示。

从表2可以看出,图片中的人脸均被检测到,识别准确率达到了98.29%,未能达到理想的100%。分析其原因,有些学生坐得太靠后,导致采集到的人脸图片较小,所提取到的人脸特征和库内所存的人脸特征相差较大,因此未被准确识别。后续会在人脸库中对同一个人增加多个尺度及形态的底图用于匹配,可以极大地提高识别率。在Android系统上,单张照片的检测、识别速度为516毫秒,基本达到了实时效果。

五、结论

本文基于深度学习框架NCNN,将人脸检测算法MTCNN以及人脸识别算法FaceNet移植到Android平台,并开发了一套识别系统,主要实现了人脸库的录入以及人脸验证功能,目前用于教师在上课的时候进行学生的点名。教师在点名的时候,在讲台上通过手机从不同角度拍摄教室内学生的照片,然后软件会进行人脸识别,统计出有哪些学生在教室内,大大减少了教师对学生点名所消耗的时间,同时拍摄的照片也可以作为现场备案。目前只是将数据保存在APP本地,并未上传至服务器,对于照片中过小的人脸有存在漏检的情况,这些都需要后期再进行完善。

参考文献:

[1] Ross Girshick,Jeff Donahue,etc.Rich feature hierarchies for accurate object detection and semantic segmentation[J]. IEEE Conference on Computer Vision and Pattern Recognition,2014(06):23-28.

[2] Ross Girshick.Fast R-CNN[J]. IEEE International Conference on Computer Vision (ICCV), 2015(09):1440-1448.

[3] Shaoqing Ren,Kaiming He,Ross Girshick,Jian Sun.Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[J].Advances in Neural Information Processing Systems 28 (NIPS 2015).

[4] Wei Liu,Dragomir Anguelov,Dumitru Erhan,etc.SSD: Single Shot MultiBox Detector[J].ECCV: Computer Vision,2016:21-37.

[5] Joseph Redmon,Santosh Divvala,Ross Girshick,etc.You Only Look Once: Unified, Real-Time Object Detection[J].The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016:779-788.

[6] Joseph Redmon,Ali Farhadi.YOLO9000: Better, Faster, Stronger[J].The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017:7263-7271.

[7] Joseph Redmon,Ali Farhadi.YOLOv3: An Incremental Improvement[J].Computer Science:Computer Vision and Pattern Recognition,2018:4.

[8] Kaipeng Zhang,Zhanpeng Zhang,Zhifeng Li,ect.Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks[J].IEEE Signal Processing Letters,2016:1499-1503.

[9] Yaniv Taigman,Ming Yang,MarcAurelio Ranzato,etc.DeepFace: Closing the Gap to Human-Level Performance in Face Verification[J].IEEE:Conference on Computer Vision and Pattern Recognition,2014(06):1701-1708.

[10] Yi Sun;Xiaogang Wang;Xiaoou Tang.Deep Learning Face Representation from Predicting 10,000 Classes[J].IEEE:Conference on Computer Vision and Pattern Recognition,2014(06):23-28.

[11] Brandon Amos, Bartosz Ludwiczuk,? Mahadev Satyanarayanan.OpenFace: A general-purpose face recognition library with mobile applications[J]. Computer Science,2016.

[12] Florian Schroff, Dmitry Kalenichenko,James Philbin.FaceNet: A Unified Embedding for Face Recognition and Clustering[J].Computer Science:Computer Vision and Pattern Recognition,2015,06

[13] Yi Sun,Xiaogang Wang,Xiaoou Tang.Deep Convolutional Network Cascade for Facial Point Detection[J].IEEE:Conference on Computer Vision and Pattern Recognition (CVPR), 2013:3476-3483

[14] Liu, Wei,Anguelov, Dragomir,Erhan, Dumitr.SSD: Single Shot MultiBox Detector[J].ECCV: Computer Vision 2016:21-37

[15] D. E. King.Max-margin object detection[J]. arXiv preprint arXiv:1502.00046, 2015.)

(责任编辑:潘修强)

猜你喜欢
人脸识别
人脸识别的“国标”来了
AI企业云从科技全球FRVT测试中获得双冠
基于改进的2DPCA人脸识别方法
中科视拓开放商业版本人脸识别算法
人脸识别好用但不能滥用
睡梦中被刷脸盗走万元
荣耀畅玩7C:人脸识别
iPhoneX来了!
刷脸支付
刷脸(双语加油站)