cnn|基于卷积神经网络的人脸识别算法

摘要:近年来,随着科学技术的不断发展,人脸识别技术日渐成熟,使得人脸识别技术的使用率不断增大。例如:门禁、ATM机、公安系统以及新兴起的人机交互等领域,都应用到了人脸识别系统。在人脸识别研究领域中,深度学习扮演着重要的角色。由于深度学习的人脸识别技术凭借其识别率高、识别快等特点,逐渐成为整个领域的主流技术。在众多深度学习算法中,以卷积神经网络为代表的人脸识别系统得到了广泛应用,主要研究内容如下:首先,通过对经典损失函数进行研究,对比每种损失函数的特点,然后根据A-Softmax函数进行改进,借助Margin的方法来改进函数角度,并在函数中添加归一化操作。
关键词:卷积神经网络;人脸识别











目录
一、项目背景 3
二、基本原理 3
三、系统设计及算法实现 6
四、人脸识别结果 9
(一)模型训练 9
(二)模型评估测试 9
五、心得体会 12
六、参考文献 12

















一、项目背景
人工智能的发展极大地方便了人们的生活,现代社会中,刷脸解锁、刷脸支付等通过识别人面部信息确定人的身份的现象已遍布各个领域。人脸识别的应用十分广泛,未来仍有广阔的发展前景。基于卷积神经网络对人脸识别的研究,首先分析了卷积神经网络(CNN)模型能够快速准确进行人面部表情识别的原理,即由于CNN的卷积层和池化层起到了滤波作用,将输入的图片进行特征提取并进行压缩,减轻了CNN运算的负担,提高了运算速度; 通过将K近邻法和BP神经网络框架模型与CNN模型作比较,实验证明了CNN模型在进行人面部表情识别过程中的准确度最高、速度最快。因此,CNN模型训练在人面部识别系统中具有较高的应用价值[1]。

  • 基本原理
人脸识别技术采用图像处理技术和生物统计学的原理。输入大量面部图像用于分析以建立数学模型,即人脸特征模板。使用建立的人脸特征模板和被测试者的面部图像,执行特征分析,并根据分析结果给出类似的值使用此值确定它是否是同一个人。
CNN主要用来获取位移、所放以及其他形式旋转不变的二维图像数据的显著特征,因为图像的局部感知区域允许神经元或者处理单元访问到最底部基础特征。由于CNN特征的检测层通过训练数据来学习,避开了显式的特征抽取,而是在隐式地训练数据中学习;由于同一个特征映射面上,神经元权值相同。因此神经网络进行并行学习,这是卷积神经网络的一个优点。
DBFace框架是可以同时获得人脸检测和关键点定位,相较与人脸检测和关键点定位分开的做法有一定的优势,减少了对原图的crop和resize操作,并且对多人脸的情况,这种操作是对人脸个数敏感的,后期倾向也是将人脸检测和关键点定位[2]。
DBFace使用CenterNet做检测任务,MobileNetv3-small做backbone。相较于MobilenetV2,MobilenetV3在其基础上新增了 SE 、Hard-Swish Activation等模块,在兼顾Inference速度的同时提升网络性能。CenterNet是在2019年论文Objects as points中提出,相比yolo,ssd,faster_rcnn依靠大量anchor的检测网络,CenterNet是一种anchor-free的目标检测网络,在速度和精度上都比较有优势。
CenterNet网络比较简单,主要包括resnet50提取图片特征,然后是反卷积模块Deconv(三个反卷积)对特征图进行上采样,最后三个分支卷积网络用来预测heatmap, 目标的宽高和目标的中心点坐标[3]。
如下图所示为CenterNet网络结构:







图1:CenterNet网络结构
CenterNet的模型计算流程如下:
图片缩放到512x512尺寸(长边缩放到512,短边补0),随后将缩放后1x3x512x512的图片输入网络
图片经过resnet50提取特征得到feature1尺寸为1x2048x16x16
feature1经过反卷积模块Deconv,三次上采样得到feature2尺寸为1x64x128x128
将feature2分别送入三个分支进行预测,预测heatmap尺寸为1x80x128x128(表示80个类别),预测长宽尺寸为1x2x128x128(2表示长和宽),预测中心点偏移量尺寸为1x2x128x128(2表示x, y)
CenterNet具有结构简单,构建建档,数据处理简单,直接检测目标中心及放款位置得特点。因此在人脸识别上应用较为广泛[4]。












三、系统设计及算法实现
代码的主体在一个App类中,在APP类中可以对超参数的设定,三个loss的定义,调整数据的下载,训练的过程,如下图所示为App类中对网络参数的设置:











图2:网络模型参数设置
设置三个loss函数,分别为focal loss,GIoU,Wing Loss:







图3:focal损失函数定义










图4:GIoU损失函数定义






图5:Wing损失函数定义

在DBFace类中对网络结构进行定义,需要定义的网络有做检测任务的CenterNet结构,做backbone的MobileNetV3-small。






图6:backbone结构定义








图7:MobileNetV3-small网络设置

要求检测到的人脸特征要有三个输出的,分别是人脸box中心点的高斯heat map, 第二个是回归出来的人脸框部分,最后就是人脸关键点landmark部分







图8:人脸关键点提取设置

图9:网络流程图

四、人脸识别结果
(一)训练模型
在设置号初始参数后,对模型进行训练,将训练完成之后的模型保存,模型保存在model文件家下,如图所示:







图10:模型保存
(二)模型评估测试
该模型可以进行图片静态识别,也可以进行视频实时识别过程。



图11:人脸识别模式
1.图片识别
调用模型对图片进行识别,可以较为快速且准确的识别出人脸结果,并且可以区分出人脸和非人脸。





【cnn|基于卷积神经网络的人脸识别算法】
图11:单人人脸静态识别








图12:多人人脸静态识别
2.视频识别
调用模型,选取笔记本自带摄像头对人脸进行实时检测识别,在算法的准确率基本不变,但是,当多个人物发生移动时,识别的跟随速度也会有所下降。
从以上结果中可以看出,在进行人脸识别时会生成一个方框和五个点,方框显示的时人脸区域,五个点分别对应着眼睛、鼻子和嘴唇,方框左上对应的是识别为人脸的概率。在对图片进行静态识别中,该算法可以有效的区分人脸和非人脸,在多人人脸识别中也有较高的准确性,在动态识别中,该算法的性能效果也较好。在此基础上,可以应用于人数计数,增加训练集分类和样本,可以更好识别人脸的身份信息。







五、心得体会
这次的机器学习课程设计,我主要负责论文报告的撰写,但也在整个过程中收获了很多。从人脸检测的选题,到代码调试,最终的报告完成。每一步都有着很多困难和挑战,比如库为更新不能使用,更新后又与之前的代码又不兼容等问题。虽然调试代码的过程中经常是运行出满屏红色错误和bug,但是方法总比困难多。小组的团队合作也让我知道了沟通和交流的重要性,大量的资料查找也让我对互联网的使用能力有了很大的提升。同时,实际的操作也让我知道,这和平时的理论和实验不同,错误都是未知的,解决的方法也没有所谓的标准答案。但这也对我解决实际问题的能力得到了提升。希望以后有跟多的机会做这样的课程设计。





六、参考文献
[1]梁雁,刘广峰.基于卷积神经网络的人脸识别研究[J].数字通信世界,2021,(01):101-102.
[2] Fan S ,Zhu F ,Chen S , et al. FII-CenterNet: An Anchor-Free Detector With Foreground Attention for Traffic Object Detection[J]. IEEE Transactions on Vehicular Technology, 2021, PP(99):1-1.
[3] Shi, Y. ,Z. Mi , andY. Guo . "Stereo CenterNet based 3D Object Detection for Autonomous Driving." (2021).
[4] Howard, A. ,Sandler, M. ,Chu, G. ,Chen, L. C. ,Chen, B. , &Tan, M. , et al. (2019). Searching for mobilenetv3.

    推荐阅读