APP下载

基于CNN的人脸识别研究与实现

2021-02-19谷广兵沈晓萍王玉婷

现代信息科技 2021年13期
关键词:人脸检测

谷广兵 沈晓萍 王玉婷

摘  要:人脸识别技术是人工智能一个典型的应用场景,为了实现基于微信小程序的人脸登录功能,文章对人脸区域检测、人脸特征提取、人脸判别内容进行了研究。人脸区域检测通过tensorflow-ssd 进行模型搭建并采用widerface进行模型参数的训练。人脸特征提取采用facenet进行模型搭建并采用LFW数据集进行模型参数的训练,然后采用欧式距离进行人脸相似度计算,以TensorFlow将训练好的模型以PB格式存储,通过Python完成上述功能模块的封装,并与前端微信小程序完成数据交互。通过测试,系统可以完成人脸注册、人脸登录功能。

关键词:TensorFlow;SSD;facenet;人脸检测;人脸匹配

中图分类号:TP391.4      文献标识码:A文章编号:2096-4706(2021)13-0014-05

Research and Implementation of Face Recognition Based on CNN

GU Guangbing, SHEN Xiaoping, WANG Yuting

(Jiaxing Vocational & Technical College, Jiaxing  314036, China)

Abstract: Face recognition technology is a typical application scenario of artificial intelligence. In order to realize the face login function based on WeChat applet, the paper studies face region detection, face feature extraction and face discrimination. The face region detection model is built by tensorflow-ssd, and the model parameters are trained by wideface. Face feature extraction uses facenet to build the model and LFW data set to train the model parameters, then uses European distance to calculate the face similarity, stores the trained model in Pb format with tensorflow, completes the packaging of the above functional modules through python, and completes the data interaction with the front-end WeChat applet. Through the test, the system can complete the face registration and face login functions.

Keywords: TensorFlow; SSD; facenet; face detection; face matching

0  引  言

人臉识别[1]是人工智能技术落地的一个重要体现。在当今社会中,人脸识别广泛应用在考勤、门禁、医疗诊断、公共安全系统、监视系统等领域,与人脸识别有关的应用智能化最高,相关业务落地更深入。以旷视集团、商汤科技、科大讯飞为代表的一批企业在该方面的研究较为超前,提供了API接口,具备明显的发展优势。总之,人脸识别作为新兴技术,有很好的安全性、可靠性和有效性,并且在很多新兴生物特征识别技术中脱颖而出。

本文以深度学习中的卷积神经网络为基础[2],通过数据集的选取、数据集的清洗与打包、模型的训练与测试、PB模型文件的转化,并最终以微信小程序为客户端,以flask框架为服务端完成系统的实现,完成人脸验证的功能,从而让新兴技术成果能很好地转化。

1  技术分析

本文研究过程中,以深度学习中的卷积神经网络、TensorFlow为技术核心。深度学习[3]是一种含有多隐藏层的多层感知器,在已知网络结构和网络结构内部参数的前提下,通过“前向运算”完成目标任务分类的功能,属于“怎么用”的范畴;通过“反向传播”可以完成网络参数的学习,也就是一种有监督的学习过程,属于“怎么学”的范畴。TensorFlow 是一个基于数据流图的可用于大规模分布式数值计算的开源框架,主要分为计算图的搭建、计算图的训练两大部分。

1.1  卷积神经网络

深度学习涉及卷积神经网络(CNN)、循环神经网络(RNN)、自动编码机(Autoencoder)等内容。卷积神经网络主要用来解决图像问题,因此也是本文所采用的网络模型。

卷积神经网络是以卷积结构为主搭建起来的深度网络,可以自动提取所输入图片的特征,并且对图片的变形(如平移、比例缩放)等具有高度不变性。卷积神经网络包括两个重要的内容“卷积”和“池化”。通过卷积中的卷积核(或者称为滤波器),可以帮助我们找到特定的局部图像特征(如边缘),用于后面的网络模型中,如图1 所示。

由于相邻像素倾向于具有相似的值,同理,卷积层相邻的输出像素包含的大部分信息都是冗余的,此时通过引入“池化层”可以在某个位置找到强边缘,降低数据的冗余,简化网络的参数,如图2 所示。

1.2  TensorFlow

TensorFlow作为一个数据流编程的系统,被广泛用于机器学习。其核心概念包括Graph、Session、tensor:

(1)Graph主要构建网络结构、参数,实际应用中,可以将训练、测试过的模型保存成PB文件,以供后续使用。以下为相关程序代码:

#将Graph模型保存为PB文件

import tensorflow as tf

g = tf.Graph()

tf.train.write_graph(g.as_graph_def(),”.”,“graph_frozen.pb”)

#加载PB,还原Graph模型

with tf.gfile.GFile(graph_frozen.pb,’rb’) as fid:

serialized_graph = fid.read()

od_graph_def.ParseFromString(serialized_graph)

tf.import_graph_def(od_graph_def,name=’’)

(2)上述Graph必须在Session这个上下文中完成执行,通常将与Graph有关的操作称之为“前端计算”,将与Session有关的操作称之为“后端计算”。在Session执行中,可以指定资源设备情况、数据情况,对Graph进行feed数据tensor填充,tensor指的是网络解点之间传输的数据。相关程序代码为:

#指定CPU资源

tf.device(‘/cpu:0’):

#按需分配GPU资源

gpu_options = tf.GPUOptions(allow_growth=True)

config = tf.ConfigProto(gpu_options=gpu_options)

with tf.Session(config=config) as sess:

….

#注入数据

sess.run(OperaInstance,feed_dict=dict_sample)

2  人脸检测与人脸匹配模型构建

人脸检测与人脸匹配[4]模型是系统实现的主要功能,如图3所示为人脸检测、识别的主要流程图,分别要经过人脸数据采集、人脸数据预处理,人脸特征提取,人脸相似度度量。其中,人脸数据采集需要捕捉人脸信息,并上传至服务端,服务端进行临时存储;预处理是提取一个如同(449 330 122 149)的人脸坐标信息;人脸特征提取主要是提取128维的特征向量,人脸相似度比对,是对数据库中预存的人脸特征进行欧拉计算,选取差距最小的预存信息。

2.1  人脸检测

人脸检测属于目标检测的一种,作为人脸识别业务的重要一环,受人脸姿态和表情变化、大小、位置、遮挡等因素的影响。目前存在较多的人脸检测模型,如R-CNN、SSD、Yolo、MTCNN等。本文所采用的SSD模型[5,6],属于one-stage检测模型,以resnet作为前置网络。本模型采用widerface作为数据集,该数据集背景场景差异较大,因此训练出来的模型更具有适应性。本文采用https: //github.com/tensorflow/models所提供的系统框架进行模型的搭建,最终将训练的模型网络结构、参数生成PB文件。具体业务流程如表1所示。

2.2  人脸匹配

本节所述人脸匹配专注于人脸识别,即通过當前人脸和数据库中所存人脸进行对比,属于1∶N的识别归类,其主要分为人脸特征表示、人脸相似度度量两个方面。FaceNet[7]采用卷积神经网络(CNN)学习人脸到欧式空间的映射,因此欧式空间里距离的度量关联着人脸相似度,同一个人的不同图像在空间中的距离很小,不同人的图像在空间中有较大的距离。并采用triplet_loss[8]来衡量训练过程中样本之间的距离误差,网络直接输出为128维度的向量空间。

本文采用https: //github.com/davidsandberg/facenet.git所提供的系统框架进行模型的搭建,最终将训练的模型网络结构、参数生成PB文件。具体业务流程如表2所示。

3  程序实现

前述内容分别完成了基于CNN的人脸检测、人脸匹配模型的训练,并将模型保存为PB文件。本文将采用微信小程序作为客户端,微信小程序是基于手机微信的一种客户端集成平台,具有功能强大的组件库,本文将采用媒体组件camera实时捕捉用户人脸,使用画布canvas展示人脸图像。在服务端语言选择上,使用Python语言,可以提取PB文件中的网络结构与参数,通过封装Python函数的方式,完成输入数据的前向运算,并使用flask作为服务端框架,完成人脸识别程序的开发工作。该程序业务流程图如图4所示。

3.1  人脸注册

人脸注册模块可以选择从相册中选择,也可以选择相机按钮从系统中实时采集。后端/frServer/register 接口负责对上传信息进行校验,主要是针对人脸坐标位置的提取,如果此时未能检测出人脸,则返回“error”信息,效果图如图5所示。

3.2  人脸登录

人脸登录模块将通过摄像头捕捉当前人脸区域,后端接口调用/frServer/login。通过完成人脸框提取,如图6、图7所示,进一步调用特征提取函数,提取128维特征向量,通过与数据库中存储的特征进行欧式距离计算,找出相似度最高的数据,从而验证成功进行跳转,如图8所示。如果未能找出相似度数据,则提示登录失败,如图9所示,更换其他方式登录。

4  结  论

人脸识别技术是深度学习的重要研究方向,在当前人工智能领域有着广泛的应用,本文主要侧重于研究人脸区域识别、人脸特征向量提取,在研究过程中,运用了深度学习网络中的SSD、facenet模型,以及resnet、triplet等深度学习网络,分别进行数据清洗、数据打包、模型参数选取、模型训练、数据验证等。在后续的研究过程中,将侧重于人脸关键点提取、人脸属性判定的研究。

目前,随着人脸识别算法的发展,人脸识别精度也越来越高,但同时也面临诸如低质量人脸识别、人脸防伪等问题。相信随着相关技术的发展以及法律制度的健全,上述问题会得到很好的解决。

参考文献:

[1] 张晶晶,李秋艳,刘硕,等.基于深度学习的人脸识别在身份认证领域应用综述 [J].数据通信,2021(4):1-6.

[2] 张广才,何继荣,高文朋.基于深度学习的人脸识别研究 [J].无线互联科技,2019,16(19):133-135.

[3] 郭丽丽,丁世飞.深度学习研究进展 [J].计算机科学,2015,42(5):28-33.

[4] 余璀璨,李慧斌.基于深度学习的人脸识别方法综述 [J].工程数学学报,2021,38(4):451-469.

[5] WU W Y,QIAN C,YANG S,et al. Look at boundary:a boundary-aware face alignment algorithm [C]//2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City:IEEE,2018:2129-2138.

[6] LIU W,ANGUELOV D,ERHAN D,et al. SSD:single shot multibox detector [C]// European Conferenceon Computer Vision,Amsterdam,Netherlands,2016:21-37.

[7] SCHROFF F,KALENICHENKO D,PHILBIN J. FaceNet:a united embedding for face recognition andclustering [C]//IEEE Conference on Computer Vision and Pattern Recognition,Boston,MA,USA. IEEE,2015:815-823.

[8] YI D,LEI Z,LIAO S C,et al. Learning face representation from scratch [EB/OL].(2014-11-28).https://arxiv.org/abs/1411.7923.

作者簡介:谷广兵(1986—),男,汉族,河南漯河人,讲师,硕士,研究方向:计算机视觉、大数据技术、工业互联网。

猜你喜欢

人脸检测
肤色与唇色信息相结合的人脸检测
人脸检测技术综述
基于Android的车载疲劳驾驶监控系统研究与设计
一种鲁棒的长期人脸特征点跟踪系统
基于改进的Adaboost算法在人脸检测与识别中的应用与研究
JNI技术在基于OpenCV的人脸与微笑检测中的应用
基于人脸特征定位的SNS网站应用组件研究与设计
基于Android平台的人脸识别系统设计与实现
基于Matlab的人脸检测实验设计
基于肤色模型与改进Adaboost算法的人脸检测