基于深度神经网络的遮挡人脸识别算法的研究(小白初学)
研究背景
在自然条件下人脸面部的光照变化、角度变化、表情变化以及存在遮挡物,使得采集到的人脸图像存在人脸特征的损失。因此研究遮挡人脸识别算法提高识别的准确率具有重大的意义。
算法介绍
- 基于卷积神经网络(CNN)的人脸识别模型
- 基于级联卷积神经网络(MTCNN)的人脸识别算法
- 基于对抗网络(GAN)的人脸修复算法
基于卷积神经网络(CNN)的人脸识别算法
首先先介绍感知器的相关知识。
感知器:接受多个输入,产生一个输出。
多层网络:由多个感知器组成(增加了隐含层)。
在隐含层中,应用激活函数给感知器引入非线性因素。
在这里,我们介绍3个激活函数:
-
Sigmoid函数:把输入的值变为0和1之间的输入。
它的函数表达式是这样的:
因此我们可以求得他的导数表达式,其函数图像为两端趋近于0的正态函数。因此会导致梯度离散的情况。 -
Tanh函数:把输入的值变换为-1和1之间的输出。
它的函数表达式是这样的:
求得他的导数表达式,其函数图像和Sigmoid导函数的图像相似。因此也会导致梯度离散的情况。 -
Relu函数:只需要判别输入的数据大于0或小于0。
它的函数表达式是这样的:
因此我们可以得到它的导函数图像,如下:
可以看到它的导函数在x>0的情况下始终取值为1,因此可以有效的减少梯度离散的情况。
在了解上述知识后,我们来介绍CNN结构。
CNN由输入层、卷积层、池化层、全连接层组成
- 输入层:将图像转换为矩阵输入神经网络。
- 卷积层:对输入的数据进行特征提取,即将输入的人脸图像转换为机器学习的数字特征,然后进行卷积操作。
卷积操作:对输入的图像进行卷积,即在原图像上滑动卷积核。卷积操作主要有相加和相乘的操作。
- 池化层:
①特征不变性
②特征降维(去除冗余信息)
这里的特征不变性即假设输入的一张图片是猫,不管经过怎样的变化(平移,旋转等),仍可识别为猫。
而将上述提到的卷积、激活函数、池化相结合就得到深度神经网络。
全连接层:对深度网络的结果进行识别分类。
首先将经过卷积、激活函数、池化的深度网络后的结果串起来,在模型训练后得出权重进行加权求和,得到各个结果的预测值,最大值即为结果。
基于级联卷积神经网络(MTCNN)的人脸识别算法
MTCNN实现的流程:
- 1.构建图像金字塔。
介绍完图像金字塔后,我们先插入介绍一个NMS算法:去除预测结果中重复的框。
- 2.P-Net,NMS。
P-Net:对上一步构造的图像金字塔进行初步特征提取与标定边框并进行NMS算法对大部分窗口进行过滤。
-
3.R-Net,NMS。
R-Net:精细化建议框。
-
4.O-Net,NMS。
O-Net:输出最终的结果。
基于GAN网络的人脸去遮挡
- 生成器(Generator):生成尽可能真实的伪数据
- 鉴别器(Discriminator):判断数据是否是真数据
是一个动态博弈的过程。