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

news2024/12/25 23:09:23

👲👲作者主页:🔗杰森的博客
📒📒本文摘要基于卷积神经网络融合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.coloradmin.cn/o/2265513.html

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

相关文章

项目亮点案例

其实对我来说是日常操作,但是如果在面试的时候面试者能把日常的事情总结好发出来,其实足矣。 想让别人认同项目,选取的示例需要包含以下要素: 亮点项目四要素:明确的目标,问题点,解决方法和结果…

Vue.js组件(5):自定义组件

1 介绍 下面的所有组件全部基于VUE3 TS element plus编写,其中部分组件可能涉及到其他技术栈,会进行单独说明。 2 基础组件 2.1 表格操作组件TableToolButton 此组件用于对表格进行增加、编辑、删除、导出操作。 2.1.1 组件属性 addVisible&#x…

ctfhub技能树——disable_functions

LD_PRELOAD 来到首页发现有一句话直接就可以用蚁剑连接 根目录里有/flag但是不能看;命令也被ban了就需要绕过了 绕过工具在插件市场就可以下载 如果进不去的话 项目地址: #本地仓库;插件存放 antSword\antData\plugins 绕过选择 上传后我们点进去可以看到多了一个绕过的文件;…

【PCIe 总线及设备入门学习专栏 1.1 -- PCIe 基础知识 lane和link介绍】

文章目录 OverivewLane 和 LinkRC 和 RPPCIe controllerPCIE ControllerPHY模块 Inbound 和 OutboundPCIe transaction modelPIODMAP2P Overivew PCIe,即PCI-Express总线(Peripheral Component Interconnect Express),是一种高速…

golang LeetCode 热题 100(动态规划)-更新中

爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1:输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2&…

分布式专题(10)之ShardingSphere分库分表实战指南

一、ShardingSphere产品介绍 Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。Apache ShardingSphere 设计哲学为 Database Plus,旨在…

Vue 3.5 编写 ref 时,自动插入.Value

如果是 Vue 3.2 ,那么可能用的是Volar

深度学习中的并行策略概述:2 Data Parallelism

深度学习中的并行策略概述:2 Data Parallelism 数据并行(Data Parallelism)的核心在于将模型的数据处理过程并行化。具体来说,面对大规模数据批次时,将其拆分为较小的子批次,并在多个计算设备上同时进行处…

OneCode:开启高效编程新时代——企业定制出码手册

一、概述 OneCode 的 DSM(领域特定建模)出码模块是一个强大的工具,它支持多种建模方式,并具有强大的模型转换与集成能力,能够提升开发效率和代码质量,同时方便团队协作与知识传承,还具备方便的仿…

《Web 应用项目开发:从构思到上线的全过程》

目录 一、引言 二、项目启动与需求分析 三、设计阶段 四、技术选型 五、开发阶段 六、测试阶段 七、部署与上线 八、维护与更新 九、总结 一、引言 在数字化浪潮席卷全球的当下,Web 应用如繁星般在互联网的苍穹中闪烁,它们形态各异&#xff0c…

中小学教室多媒体电脑安全登录解决方案

中小学教室多媒体电脑面临学生随意登录的问题,主要涉及到设备使用、网络安全、教学秩序等多个方面。以下是对这一问题的详细分析: 一、设备使用问题 1. 设备损坏风险 学生随意登录可能导致多媒体电脑设备过度使用,增加设备损坏的风险。不当…

Odoo 免费开源 ERP:通过 JavaScript 创建对话框窗口的技术实践分享

作者 | 老杨 出品 | 上海开源智造软件有限公司(OSCG) 概述 在本文中,我们将深入研讨如何于 Odoo 18 中构建 JavaScript(JS)对话框或弹出窗口。对话框乃是展现重要讯息、确认用户操作以及警示用户留意警告或错误的行…

OOP面向对象编程:类与类之间的关系

OOP面向对象编程:类与类之间的关系 三大关系:复合(适配器设计模式)、委托(桥接设计模式)、继承 8、1复合Composition has-a -> 适配器模式 一个类里面含有另一个类的对象 —> 复合关系 has-a 适配器设…

集成 jacoco 插件,查看单元测试覆盖率

文章目录 前言集成 jacoco 插件,查看单元测试覆盖率1. 添加pom2. 配置完成、执行扫描3. 执行结果4. 单元测试报告 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞…

下载运行Vue开源项目vue-pure-admin

git地址:GitHub - pure-admin/vue-pure-admin: 全面ESMVue3ViteElement-PlusTypeScript编写的一款后台管理系统(兼容移动端) 安装pnpm npm install -g pnpm # 国内 淘宝 镜像源 pnpm config set registry https://registry.npmmirror.com/…

创建用于预测序列的人工智能模型,设计模型架构。

上一篇:《创建用于预测序列的人工智能模型,设计数据集》 序言:在前一篇中,我们创建了用于训练人工智能模型的数据集。接下来,就要设计模型的架构了。其实,人工智能模型的开发关键并不在于代码量&#xff0…

ubuntu22.04安装PPOCRLabel

可使用的模型参考模型列表,ppocr版本这里PPOCR版本作为预训练模型: (经常用放在这里) 基础电脑配置: cunda12.4 ubuntu22.04系统 pytorch2.5.0 (python3.10不能运行,python3.8我之前可以正…

Linux网络——TCP的运用

系列文章目录 文章目录 系列文章目录一、服务端实现1.1 创建套接字socket1.2 指定网络接口并bind2.3 设置监听状态listen2.4 获取新链接accept2.5 接收数据并处理(服务)2.6 整体代码 二、客户端实现2.1 创建套接字socket2.2 指定网络接口2.3 发起链接con…

江苏捷科云:可视化平台助力制造企业智能化管理

公司简介 江苏捷科云信息科技有限公司(以下简称“捷科”)是一家专注于云平台、云储存、云管理等产品领域的创新型企业,集研发、生产和销售于一体,致力于在网络技术领域打造尖端品牌。在推动制造业企业数字化转型的进程中&#xf…

消息队列(一)消息队列的工作流程

什么是消息队列 首先,代入一个场景,我现在做一个多系统的集成,分别有系统A、B、C、D四个系统,A系统因为使用产生了业务数据,B、C、D需要使用这些数据做相关的业务处理和运算,最基本的做法就是通过接口通信…