基于卷积神经网络融合Inception模块的人脸识别

👲👲作者主页:🔗杰森的博客
📒📒本文摘要基于卷积神经网络融合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,并优化模型。以及输出的大小如下表所示。

LayerKernel SizeOutput Size
Conv-15×5×3280×80×32
MaxPool-13×3×3240×40×32
Conv-21×1×6440×40×64
Conv-33×3×6440×40×64
MaxPool-23×3×6420×20×64
Inception-1-20×20×64
MaxPool-33×3×6410×10×64
Inception-2-10×10×128
Inception-3-10×10×192
MaxPool-43×3×1925×5×192
Conv-41×1×5125×5×512
GAP1×1×5121×1×512
Loss--

其中改进的Inception模型中各卷积层的卷积核数量按照图的分支的形式从左到右顺序如下表所示。

LayerKernel Sizes
Inception-11×1×8, 1×1×24, 3×3×32, 1×1×8, 3×3×16, 3×3×64, 1×1×8
Inception-21×1×16, 1×1×32, 3×3×64, 1×1×16, 3×3×32, 3×3×64, 1×1×16
Inception-31×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时,准确率曲线趋于平稳。训练曲线总体波动不大,准确率增长稳定,没有出现过拟合。在联合损失的表现中,损失值稳定下降,没有出现梯度消失等情况。

模型准确率 (%)参数量
FacePDM97.72-
FD-ResNet95.33-
MobileNet-L+RPN97.540.30M
D-Inception97.580.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方法有效地提高了小样本人脸识别的准确率。这表明模型在处理小样本数据时具有优越的性能。模型不仅能够有效地提取人脸特征,还能有效地利用这些特征进行分类,从而提高了人脸识别的准确率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/64996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ffmpeg之显示一个yuv照片

显示YUV图片的步骤 1.初始化SDL库 目的:确保SDL库正确初始化,以便可以使用其窗口、渲染和事件处理功能。操作:调用 SDL_Init(SDL_INIT_VIDEO) 来初始化SDL的视频子系统。 2.创建窗口用于显示YUV图像: 目的:创建一个…

iDP3复现代码模型训练全流程(一)——train_policy.sh

iDP3 核心脚本包括三个:deploy_policy.sh、vis_dataset.sh、train_policy.sh,分别代表了部署、预处理和训练,分别作为对应 py 脚本的参数设置前置环节 训练环节仅需运行指令: # 3d policy bash scripts/train_policy.sh idp3 gr1…

链原生 Web3 AI 网络 Chainbase 推出 AVS 主网, 拓展 EigenLayer AVS 应用场景

Chainbase AVS 主网的正式上线,正在将 Chainbase 不同的层进行深入的串联,为 Chainbase 数据网络带来了验证和处理方面的应用与拓展的能力,并成为数据体系全面启动的新契机。 在 12 月 4 日,链原生的 Web3 AI 数据网络 Chainbase …

Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码 【AI辅助开发系列】

🎀🎀🎀【AI辅助编程系列】🎀🎀🎀 Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…

Jenkins 任意文件读取(CVE-2024-23897)修复及复现

Jenkins任意文件读取漏洞CVE-2024-23897修复及复现 漏洞详情影响范围漏洞复现修复建议 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行…

智慧农业云平台与水肥一体化:道品科技引领农业现代化新潮流

在当今科技飞速发展的时代,农业也正经历着一场深刻的变革。智慧农业云平台和水肥一体化技术的出现,为农业生产带来了前所未有的机遇和挑战。 一、智慧农业云平台:农业生产的 “智慧大脑” 智慧农业云平台就像是农业生产的 “智慧大脑”&…

C++--------内存结构

C内存结构 程序内存分区: 栈区(Stack):由编译器自动分配和释放,用于存放函数的参数值、局部变量等。其操作方式类似于数据结构中的栈,先进后出。例如,在函数调用时,函数内部的局部变…

f(f(x))=x^2 -11x+36, 求f(6)的值,

偶然看到的一个题目,一时兴起,做了一下。题目如下 简单粗暴的思路是待定系数法,盲猜f(x)是个2次函数,令f(x)ax^2bxc ,带入原式,发现矛盾(计算略)就想放弃了。 忽然看到如果带入6 的话&#xf…

用Python PySide6 复刻了两软件UI 做下练习

图样 1 代码 1: # -*- coding: utf-8 -*-import sys from PySide6.QtCore import (QCoreApplication, QMetaObject, QRect, QDate) from PySide6.QtGui import QIcon, QPixmap, QColor from PySide6.QtWidgets import (QApplication, QDialog, QLineEdit, QPushBut…

活动图的理解和实践

在软件开发和系统设计中,理解系统的工作流程和并发行为是至关重要的。活动图作为一种重要的建模工具,为我们提供了一种直观且有效的方法来描述这些复杂的过程。本文将详细探讨活动图的理解与实践,包括其基本概念、用途、构建方法以及实际应用…

Redis缓存数据库

1、介绍 redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库 redis的官网:redis.io 注:域名后缀io属于国家域名,是british Indian Ocean territory,即英属印度洋领地 1、redis的特点: 1.丰富的数…

flink sink kafka

接上文:一文说清flink从编码到部署上线 之前写了kafka source,现在补充kafka sink。完善kafka相关操作。 环境说明:MySQL:5.7;flink:1.14.0;hadoop:3.0.0;操作系统&#…

WebRTC搭建与应用(五)-Coturn踩坑记

WebRTC搭建与应用(五)-Coturn踩坑记 近期由于项目需要在研究前端WebGL渲染转为云渲染,借此机会对WebRTC等有了初步了解,在此记录一下,以防遗忘。 第五章 WebRTC搭建与应用(五)-Coturn踩坑记 文章目录 WebRTC搭建与应用(五)-Coturn踩坑记前…

@vue/cli启动异常:ENOENT: no such file or directory, scandir

参考:https://blog.csdn.net/qq_44355188/article/details/122239566 首先异常报错是:ENOENT: no such file or directory, scandir ‘D:\Data\Project\VueProject\hello\node_modulesvue\cli-plugin-eslint\locales’;我的vue/cli版本是 4.5.15 重点是…

Git进阶:本地或远程仓库如何回滚到之前的某个commit

在Git的使用过程中,我们经常会遇到需要回滚到之前某个commit的情况。无论是为了修复错误、撤销更改,还是为了重新组织代码,回滚到特定commit都是一个非常有用的技能。本文将介绍几种常用的回滚方法,帮助读者更好地掌握Git版本控制…

【java设计模式】1 - 软件设计原则

1,软件设计原则 在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。 1.1 开闭原则 对扩展开…

如何安全获取股票实时数据API并在服务器运行?

以下是安全获取股票实时数据 API 并在服务器运行的方法: 选择合适的券商或交易平台 评估自身需求:明确自己的交易策略、交易品种、交易频率等需求,以及对 股票api 的功能、性能、稳定性等方面的要求。调研券商或平台:了解不同券商…

kali切换root用户显示su: Authentication failure解决方案

1.切换root用户显示su: Authentication failure 2.解决方式:使用sudo su命令 3.密码新版的应该都是kali

一篇文章学会HTML

目录 页面结构 网页基本标签 图像标签 超链接标签 文本链接 图像链接 锚链接 功能链接 列表 有序列表 无序列表 自定义列表 表格 跨列/跨行 表头 媒体元素 视频 音频 网站的嵌套 表单 表单元素 文本框 单选框 多选框 按钮 下拉框 文本域和文件域 表…

【开源】一款基于SpringBoot的智慧小区物业管理系统

一、下载项目文件 项目文件源码链接:https://pan.quark.cn/s/3998d958e182如出现网盘空间不够存的情况!!!解决办法是先用夸克手机app注册,然后保存上方链接,就可以得到1TB空间了!!&…