基于Caffe框架的人脸定位与识别系统的设计
2019-07-08黄琳蒋为杨铁军
黄琳 蒋为 杨铁军
摘 要: 人脸识别是生物特征识别的重要内容,其应用范围也越来越广,如手机的人脸解锁,支付宝的刷脸支付和公共区域的犯罪分子检测等。文章提出了一种基于Caffe框架的人脸定位与识别系统的设计方法。该方法中的人脸定位采用多任务卷积神经网络(Multi-task convolutional neural network,简称MTCNN),并基于Caffe框架实现卷积神经网络(Convolutional Neural Networks,简称CNN)来对人脸进行分类与识别,采用YouTube以及Labeled Faces数据集作为实验数据集,实现了人脸定位和人脸识别功能,取得了较好的定位与识别效果。
关键词: Caffe; MTCNN; 卷积神经网络; 人脸定位; 人脸识别
中图分类号:TP391.4 文献标志码:A 文章编号:1006-8228(2019)06-56-04
Abstract: Face recognition is an important part of biometric recognition, and its application range becomes wider and wider, such as the face unlock of mobile phones, Alipay's face payment and criminal detection in public areas. This paper proposes a design method of face location and recognition system based on Caffe framework. The multi-task convolutional neural network (MTCNN) is used for face localization, and the Caffe framework based convolutional neural network is used to classify and identify the face. YouTube and Labeled Faces datasets are used in experiment to realize the face location and recognition, and a good effect of localization and recognition is achived.
Key words: Caffe; MTCNN; convolutional neural network; face location; face recognition
0 引言
人臉定位与识别系统[1-3]集成了人工智能、机器识别、机器学习、模型理论、专家系统和视频图像处理等多种专业技术,是生物识别技术的新应用。其核心技术的实现表明弱人工智能正在逐渐向着强人工智能转化。现人脸识别的应用主要有访问控制系统、视频监控系统、网络应用程序、相机和智能手机等。其中访问控制系统指在受保护区域访问者可以通过面部识别获得访问权限,如监狱,拘留中心,社区和学校。视频监控系统可应用于监控银行、机场、体育场、商场和超市等公共场所的人群,识别身份。例如,在机场安装监视系统以防止恐怖分子登机。在网络应用程序方面,可使用面部识别辅助信用卡网络支付,以防止非信用卡持卡人使用信用卡,保障支付,防止欺诈等。也可用于考勤系统[4],香港和澳门的中小学开始使用具有面部识别功能的智能卡来记录学生的日常考勤记录。在相机中具有内置人脸识别功能,可以帮助人们进行定位和对焦。在智能手机上的应用有解锁手机并识别用户,如Android 9.0及更高版本iPhone X。在以上行业或领域人脸定位与识别取得了极大发展与应用。本文拟设计并开发一个基于Caffe框架的人脸定位与识别系统。
1 关键技术
CNN是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习的代表算法之一。CNN是图像识别领域的核心算法之一,并在大量学习数据时有稳定的表现。
Caffe[5]的全名是Convolutional Architecture for Fast Feature Embedding,是一个清晰而高效的深度学习框架。它实现了常用的图像相关的机器学习算法,比如卷积和池化等。另外它是开源、免费的。其核心实现语言是C ++。它支持命令行、Python和Matlab接口,可在CPU和GPU上运行。
Python是一门简洁易学的编程语言,具有快速开发、快速运行、良好的跨平台性等特征。还拥有良好的学习资源,有丰富的社区支持,遇到任何问题可以快速地在网上找到相应的解决办法。因此本次选用python作为核心编程语言,用它来调用卷积神经网络模型,并且使用python来进行图片的预处理和处理网络请求。
2 系统设计与实现
使用Caffe框架设计并实现卷积神经网络,采用VGG-16结构,然后在YouTube FaceDB数据集和Labeled Faces数据集对神经网络进行训练,使用python接口调用Caffe训练好的的卷积神经网络进行人脸定位和识别,并把定位和识别等核心功能封装成对应的python工具类,以供其他python代码调用。其实现过程如下。
2.1 下载人脸数据集
数据集主要来自YouTube FaceDB数据集以及Labeled Faces数据集。其中YouTube FaceDB是YouTube公司发布的公开数据集,这是一个专为研究视频人脸识别问题而设计的人脸视频数据集。该数据集包含 1500余个不同人的 3000余个视频。所有数据都是YouTube公司从其YouTube网站上面截取下来的。Labeled Faces数据集是为了研究非限制环境下的人脸识别问题而建立的。这个数据集包含超过13,000张人脸图像,所有数据都是研究人员从互联网上面下载的。数据集中每个人脸均被标注了一个人名。其中,大约有1680个人包含两个以上的人脸。这个集合被广泛应用于评价人脸认证算法的性能。
2.2 数据预处理
YouTube FaceDB数据集是视频数据,需要预先处理成图片数据,由于在同一个视频中出现的人脸为同一个人,所以编写程序时将视频的每一帧保存成一张图片,这些图片都将其标注为同一个人,并标注人名。在筛选掉脏数据后得到大约17000张图片,共127个人。然后将处理后的数据与Labeled Faces数据集合并,最终得到3万余张人脸数据集。
进一步分选数据为训练集与测试集。训练集的作用是拿来对卷积神经网络模型进行训练使用的,而测试集对训练完成后的模型测试使用的。其数据量的比例大致为10:1。使用随机函数将上面得到的数据集分成的训练集与测试集,其训练集的数据为27000+张图片,测试集大致为3000张图片。
2.3 生成清单文件
训练集需要每张图片有明确的标注,也就是每个图片中人物的姓名。为方便读取,可将每个人的人名均替换成了数字表示,并生成清单文件。文件内容部分预览如图1清单文件。其中第一列为图片名,第二列为人名。
2.4 制作LMDB格式数据
由于训练过程中需要反复读取数据,而未经处理的图片格式不利于高速多次的读写,将影响神经网络数据读取的速度,并且将会造成磁盘过量的IO负载,对磁盘的损伤较大,因此需要将数据装换为特定的数据格式——LMDB(Lightning Memory-Mapped Database)。Caffe提供了一个生成LMDB格式文件的工具,只需要指定清单文件即可生成LMDB文件。同时在数据转换过程中还能对图片进行resize操作,本系统把图片全部缩放大小至227*227*1的尺寸,即长宽227像素的灰度图。
2.5 制作HDF5格式数据
由于LMDB格式数据只能用于分类任务的训练,而在人脸定位部分需要做回归任务的训练,因此需要将人脸定位功能的训练集做成HDF5格式的数据。和LMDB格式文件制作相同,第一步也需要制作清单文件,清单文件格式如图2人脸定位清单文件。
图2中,第一列为源文件位置,第二列为人脸的左上角X坐标,第三列为左上角Y坐标,第四列为人脸宽度,第五列为人脸高度。可使用Python的HDF5模块制作HDF5数据。同时在数据转换的过程中还能对图片进行缩放大小的操作,另外在遍历数据的同时计算所有图像的均值,将均值数据保存成均值文件。均值文件可用于图片预处理部分,可作减均值处理。
2.6 人臉定位功能
MTCNN[6]能进行人脸定位和关键点检测,该网络总体可分为P-Net、R-Net、和O-Net三层。首先对图像进行不同层次的缩放来构建图像金字塔,以适应不同大小的人脸的进行检测。然后再通过P-Net网络。P-Net(Proposal Network)的基本构造是一个全连接网络。对上一步构建完成的图像金字塔,通过一个FCN进行初步特征提取与标定边框,并进行Bounding-Box Regression调整窗口与NMS进行大部分窗口的过滤。紧接着使用R-Net网络,R-Net (Refine Network)的基本构造是一个卷积神经网络,相对于第一层的P-Net来说,增加了一个全连接层,因此对于输入数据的筛选会更加严格。在图片经过P-Net后,会留下许多预测窗口,将所有的预测窗口送入R-Net,这个网络会滤除大量效果比较差的候选框,最后对选定的候选框进行Bounding-Box Regression和NMS进一步优化预测结果。最后进入O-Net网络,O-Net(Output Network)基本结构是一个较为复杂的卷积神经网络,相对于R-Net来说多了一个卷积层。O-Net的效果与R-Net的区别在于这一层结构会通过更多的监督来识别面部的区域,而且对人的面部特征点进行回归,最终输出五个人脸面部特征点。本系统采用MTCNN进行人脸定位,使用Bootstrap、JQuery、Html技术实现一个演示程序,输入某个人脸可得该图的人脸定位结果,见图3,成功定位到人脸位置,根据得到的人脸位置的X坐标、Y坐标、人脸宽度和人脸高度等信息生成矩形框,把人脸标记出来。
在多张图片测试结果如表1,总体具有93%的正确率,能够高精度准确识别出人脸位置和大小的检测。
2.7 人脸识别
人脸识别采用卷积神经网络VGGNet[7]中的VGG-16来实现,其结构见图4。VGGNet是在AlexNet的基础上发展而来的,是一个层深更深、网络结构更广的深度卷积神经网络。它可以看作通过减少卷积核的大小(3*3),五组连续的卷积核,增加卷积层的层数,提升了识别的准确率。图3也显示单张人脸图像的识别结果,结果准确,在测试集上可达到97%的准确率,达到预期目标。
3 结束语
本文采用Caffe框架、MTCNN人脸定位网络结构以及卷积神经网络VGG-16为基础设计并实现了人脸定位与识别系统,该系统能检测出人脸位置与大小,并进行人脸识别,具有较高的识别准确率,能满足基本的需要。本系统对其他人脸项目有一定的参考意义。下一步的研究方向是不同角度人脸的识别。
参考文献(References):
[1] 党永成.人脸识别技术综述及分析[J].电子技术与软件工程,2018.3:158
[2] 景晨凯,宋涛,庄雷,刘刚,王乐,刘凯伦.基于深度卷积神经网络的人脸识别技术综述[J].计算机应用与软件,2018.35(1):223-231
[3] 金诗谱,康彦,张书茂.基于大数据的深度学习技术在人脸识别中的应用[J].重庆科技学院学报(自然科学版),2018.20.
[4] 李冠楠.基于人脸识别企业考勤系统的研究[J].计算机时代,2017.4:53-55
[5] Caffe, a deep learning framework developed by theBerkeley Vision and Learning Center (BVLC)[OL].http://caffe.berkeleyvision.org/.
[6] Zhang K, Zhang Z, Li Z, et al. Joint Face Detection and Alignment Using Multitask Cascaded Convolutional Networks[J].IEEE Signal Processing Letters,2016.23(10):1499-1503
[7] Simonyan K, Zisserman A. Very Deep Convolutional Networks for Large-Scale Image Recognition[J].Computer Science,2014.