👲👲作者主页:🔗杰森的博客
📒📒本文摘要:基于卷积神经网络融合Inception模块的人脸识别,原理分享
💖💖如果本文帮助到你的话,还请各位小伙伴👍点赞➕收藏⭐➕评论💭支持杰森呀✌️
文章目录
- 1 引言
- 2 相关基本理论
- 2.1 全局平均池化层
- 2.1 联合损失
- 3 基于D-Inception网络的人脸识别算法
- 3.1 基于D-Inception网络的人脸识别算法
- 3.2 D-Inception网络结构
- 4 实验结果与分析
- 4.1 实验环境
- 4.2 数据集
- 4.3评价指标
- 4.4 结果与分析
- 5 结论
1 引言
人脸识别技术已经广泛应用于日常生活中,采用了多种成熟的方法,尽管如此,仍有一些因素影响着人脸识别的准确性,包括光照条件、面部角度、表情变化、随着年龄增长的面部特征变化、整容和化妆等问题。丁莲静等研究人员通过将人脸图像分块并提取信息熵,并结合自适应阈值局部二值模式(ATRLBP)算子来获取概率直方图,将这两者相结合作为特征直方图来进行人脸识别。
这种方法在处理人脸姿态、表情、遮挡以及噪声等问题时表现良好,但在光照变化条件下的识别效果较差。杨瑞等研究者提出了一种基于Gabor特征和深度信念网络(DBN)的方法,用以学习数据的高层特征,在保持较低的特征维数的同时,也保持了较高的识别率,但由于模型复杂性,训练时间较长。唐风高等研究者提出了一种改进的残差网络,采用多任务级联卷积神经网络(MTCNN)对人脸进行对齐,并在训练完成的残差网络中采用Angular Softmax损失函数替代传统的Softmax层,以学习更具判别力的角度特征,从而显著提高了识别准确率。苏俊峰等人则结合了残差网络和图聚类的方法进行人脸识别,在聚类匹配阶段运用了Chinese whispers和k-means聚类算法,并通过F1-Measure和信息熵等评价指标进行聚类评估,获得了较高的识别准确率。
上述模型存在一个问题,随着网络规模的增大,会导致参数量增多,使得网络结构不够轻量化。此外,由于训练数据量庞大,小样本数据集下效果往往不佳。为了解决这些问题,本章提出了一种基于Inception模块的人脸识别方法。首先,使用多个卷积结合1×1卷积来提取浅层特征。然后,在Inception模块中引入空洞卷积来代替传统的5×5卷积,以提取多尺度特征。通过输出的特征具有不同的通道数作为权重,将这些特征进行融合,并传入深层网络中,以获取更具辨识度的特征。此外,使用全局平均池化层来替代冗余的全连接层,有效减少了参数量。实验和分析结果表明,所提出的网络结构在参数量和训练数据较少的情况下,仍然能够保持较高的识别率。
2 相关基本理论
2.1 全局平均池化层
全局平均池化层(Global Average Pooling,GAP)是一种对输入的所有通道的特征图进行均值计算的操作,每个通道输出一个均值。在这个操作中,将特征图的每个通道的所有像素值相加,并除以通道的像素数量,得到该通道的平均值。通过这种方式,GAP能够将每个通道的特征图转化为一个单一的数值,从而减少了参数数量和计算量。GAP在人脸识别中被广泛应用,特别是在替代传统的全连接层时,能够有效地减少网络的复杂性,并提高模型的泛化能力。图2-1为全连接层与全局平均池化层的对比。
将输入特征图的通道数设为 n,则全局平均池化层输出通道数也为 n,先对每一张输入特征图求得平均值,再进入到loss函数层计算各个类别的概率值,输出识别结果。全局平均池化层对比全连接层没有额外参数,和复杂的计算,节省了计算开销,全局平均池化层相当于对网络结构进行了正则化,不容易发生过拟合现象。
2.1 联合损失
Softmax损失函数常用于多分类问题,通常作为神经网络的输出层。它通过对网络模型提取的特征向量进行离散概率分布的梯度对数归一化,将输出转化为各类别的概率分布。最后,通过交叉熵损失函数来衡量实际输出结果和真实结果之间的差距。交叉熵损失函数可以有效地度量预测结果与真实结果之间的差异,从而指导模型的优化。
Softmax输出对各个类别的概率进行预测,这样可以增强特征在类别之间的区分性。然而,Softmax并不要求类内的特征紧凑,而对于人脸识别这样具有高度相似性的任务来说,这种特性可能并不理想。因此,为了进一步优化人脸识别的分类效果,可以选择使用其他损失函数。
在人脸识别中,Center Loss有较好的效果。损失函数旨在增强类内的特征紧凑性,使得同一类别的人脸特征更加接近,而不同类别的人脸特征更加分散。通过引入这些损失函数,可以提高人脸识别任务的分类效果,进一步增强模型对人脸特征的判别能力。
通过联合使用Softmax损失和中心损失,可以使得网络具有更好的人脸识别效果。Softmax损失通过将特征向量映射到类别的概率分布上,扩大了不同类别之间的差异,使得网络更加关注类别间的区分性。而中心损失则通过将特征向量映射到类别的中心点上,减少了同一类别内的差异,使得网络更加关注类内的紧凑性。
通过联合使用Softmax损失和中心损失,网络可以同时学习到类别间的差异和类内的紧凑性。这样训练出来的网络具有更好的鲁棒性和泛化能力,能够更准确地进行人脸识别。中心损失可以有效地将同一类别的特征向量聚集在类别的中心点附近,使得同一类别的特征更加紧凑、相似,从而提高了识别的准确性。而Softmax损失则能够将不同类别的特征向量分散开来,增加类别之间的差异,使得网络能够更好地区分不同的人脸。
3 基于D-Inception网络的人脸识别算法
3.1 基于D-Inception网络的人脸识别算法
GoogleNet中提出的Inception模型有效解决了随着网络深度增加带来的过拟合问题,并且在尽可能降低计算量的同时提高了网络的准确率。在提升网络性能的过程中,仅仅增加网络的深度和通道数会导致模型参数量和计算量的急剧增加的问题。Inception模型采用了多个并行的卷积分支,通过不同尺度的卷积核来捕捉不同层次的特征。这种并行结构可以在不增加参数量和计算量的情况下提高网络的表达能力。Inception模型还引入了1x1的卷积核来进行降维,减少通道数,以进一步减少计算量。通过这些设计,Inception模型在保持较低的计算量的同时,能够提高网络的准确率。
引入空洞卷积的Inception模型结构可以有效地提取多尺度的特征。通过扩大感受野,模型可以更快地收敛,并且神经元能够接触到更大范围的原始图像,从而获得更高层次的全局信息。同时,在其他尺度的传统卷积中,可以很好地提取更多细节的局部信息。通过使用Concat操作将各个卷积分支的输出进行特征融合。可以将局部信息与全局信息很好地结合在一起,提高了模型的准确率。通过以上改进,Inception模型在提取多尺度特征方面取得了显著的进展,并且通过特征融合的方式,能够更好地捕捉到图像中的细节和全局信息。图3为改进后的Inception模型。图3-1为改进后的Inception模型。
3.2 D-Inception网络结构
图3-2为D-Inception网络模型,一共使用了三个Inception模块,Inception模块内设置不同的卷积核数量,使得特征提取的权重不同,并在其中添加了空洞卷积代替原本的5×5卷积,防止过拟合的同时提取多尺度信息。
具体操作为:首先,通过一个5x5卷积层和多个3x3卷积层提取人脸的浅层特征,并使用1x1卷积层增强人脸的非线性特性,并将通道数进行升维。图片尺寸降低到20x20后,进入第一个改进的Inception模型中,提取人脸的深层特征。在特征融合操作中,不同尺度的输出通道数设置不同,以提取有效的特征信息。通过池化层降低图像尺寸,并将得到的特征图输入到后续的Inception模块中。最后,使用全局平均池化层替代全连接层,减少参数量。然后,将特征向量传入到全连接层进行预测。使用联合损失计算loss,并优化模型。以及输出的大小如下表所示。
Layer | Kernel Size | Output Size |
---|---|---|
Conv-1 | 5×5×32 | 80×80×32 |
MaxPool-1 | 3×3×32 | 40×40×32 |
Conv-2 | 1×1×64 | 40×40×64 |
Conv-3 | 3×3×64 | 40×40×64 |
MaxPool-2 | 3×3×64 | 20×20×64 |
Inception-1 | - | 20×20×64 |
MaxPool-3 | 3×3×64 | 10×10×64 |
Inception-2 | - | 10×10×128 |
Inception-3 | - | 10×10×192 |
MaxPool-4 | 3×3×192 | 5×5×192 |
Conv-4 | 1×1×512 | 5×5×512 |
GAP | 1×1×512 | 1×1×512 |
Loss | - | - |
其中改进的Inception模型中各卷积层的卷积核数量按照图的分支的形式从左到右顺序如下表所示。
Layer | Kernel Sizes |
---|---|
Inception-1 | 1×1×8, 1×1×24, 3×3×32, 1×1×8, 3×3×16, 3×3×64, 1×1×8 |
Inception-2 | 1×1×16, 1×1×32, 3×3×64, 1×1×16, 3×3×32, 3×3×64, 1×1×16 |
Inception-3 | 1×1×32, 1×1×48, 3×3×96, 1×1×32, 3×3×48, 3×3×128, 1×1×16 |
4 实验结果与分析
4.1 实验环境
实验的硬件环境为:Windows 10(64位),GPU(RTX2060SUPER),CPU(i7-12700H)。软件环境为:开发环境(PyCharm 2019.1.1 x64),编程语言python,深度学习框架(tensorflow1.7.0)。
4.2 数据集
训练数据集CASIA-FaceV5是亚洲人脸数据集,包含500个人的2500张图像,其中每人有5张图像,图像大小为640×480,含有不同人脸角度和光照不同的照片,CASIA-FaceV5数据集如图4-1所示。

图4-4 预处理后的CASIA-FaceV5数据集
测试集使用LFW数据集,LFW数据集是一个广泛用于人脸识别领域的经典数据集,具有丰富的特征和多样的人脸图像。为了更好地利用这些数据进行测试,可以采取数据增强的方法,包括但不限于对图像进行水平镜像、随机裁剪、旋转、缩放等操作,以扩大数据集的多样性和数量。这样可以有效地防止模型过拟合,并提高模型的泛化能力。同时,还可以考虑使用一些先进的人脸识别模型,如基于卷积神经网络的模型,来提高测试的准确性和鲁棒性。通过充分利用LFW数据集和合适的数据增强方法,可以更好地评估人脸识别模型的性能和效果。
4.3评价指标
采用准确率(Accuracy)方法来评价所提出的方法的优劣程度。准确率是被正确分类的样本数占总体样本的比重,表示总的测试样本数。
4.4 结果与分析
对于CASIA-FaceV5数据集,我们对数据进行了增强,得到了3500张图像。我们将其中的90%作为训练集,剩下的10%作为验证集。在网络训练过程中,我们将epoch设为55,每次训练使用100张图片作为一批进行训练。初始学习率设置为0.5,当迭代次数超过100后,学习率每50次衰减一次,每次衰减5%。
选择ReLU函数作为激活函数,并通过随机梯度下降进行网络参数的优化。另外,我们每训练100次就进行一次验证,以确保模型的准确性和稳定性。模型在CASIA-FaceV5数据集训练的准确率和损失曲线数据集进行训练得到的结果,可以看到在第10至25个epoch时,验证集的准确率逐渐低于训练集的准确率,在第35至40个epoch时,训练集和验证集的准确率均有上下波动,准确率增长变缓,在第50至55个epoch时,准确率曲线趋于平稳。训练曲线总体波动不大,准确率增长稳定,没有出现过拟合。在联合损失的表现中,损失值稳定下降,没有出现梯度消失等情况。
模型 | 准确率 (%) | 参数量 |
---|---|---|
FacePDM | 97.72 | - |
FD-ResNet | 95.33 | - |
MobileNet-L+RPN | 97.54 | 0.30M |
D-Inception | 97.58 | 0.21M |
FacePDM模型引入皮尔森相关系数判别替换facenet中欧氏距离判别模块,在CASIA-WebFace和CASIA-FaceV5数据集上进行实验,使用Inception结构和残差思想相结合输入图片大小为299×299×3,经网络提取特征后,经归一化后得到128维特征向量,在通过损失函数优化模型。
FD-ResNet采用分数阶微分对节点函数进行处理,辅助提取特征信息,结合残差模块进行人脸识别,使用CASIA-WebFace数据集进行训练,输入图片大小为112×112×3,在不同分数阶的条件下,识别效果不同, LFW上测试的准确率在阶数为0.1时为85.03%,0.5阶时为95.333%,训练时间相差1倍。MobileNet-L+RPN模型改进了MobileNet网络,使用L-softmax层,避免过拟合,结合区域生成网络(RPN)进行人脸识别,RPN在特征图上产生多尺度选区,通过分数来决定选区进入分类层,输入图片大小为224×224×3。
通过表中数据可知,本问中的方法准确率达到了97.58%,与其他模型在参数较少的同时保证了较高的准确率,在与其他模型比较中准确率稍低于FacePDM,但是D-Inception网络结构简化,参数量少,所需训练样本少。本文提出的D-Inception网络在网络结构上进行简化,只有0.02M的参数量,在小数据集上表现突出,并且训练曲线平稳上升,有较高的准确率。
5 结论
提出了一种结合空洞卷积的Inception网络模型,并使用较小的CASIA-FaceV5数据集进行了训练。在训练过程中,避免了过拟合现象。此外,模型在面对光照和角度变化时,其准确率受到的影响不大,表明模型具有较高的鲁棒性。
提出的D-Inception网络模型有效地防止了过拟合,提高了对光照和角度变化的人脸数据的鲁棒性。通过使用全局平均池化来替代全连接层,我们显著降低了模型参数量,从而提高了模型的效率。为了更准确地评估模型的性能,在本中使用了联合损失函数来计算预测结果与真实结果之间的误差。这种损失函数的使用有助于减少相同特征的类内差距,从而更好地将相似特征进行区分。这使得训练过程中的曲线更加平稳上升,为模型提供了更准确的评估。Inception网络的并行结构有助于将人脸的局部特征融合在一起,从而提取出多尺度的特征。
这种特性提高了我们的模型的准确率。所以提出的D-Inception方法有效地提高了小样本人脸识别的准确率。这表明模型在处理小样本数据时具有优越的性能。模型不仅能够有效地提取人脸特征,还能有效地利用这些特征进行分类,从而提高了人脸识别的准确率。