基于卷积神经网络融合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.rhkb.cn/news/495124.html

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

相关文章

我的 2024 年终总结

2024 年,我离开了待了两年的互联网公司,来到了一家聚焦教育机器人和激光切割机的公司,没错,是一家硬件公司,从未接触过的领域,但这还不是我今年最重要的里程碑事件 5 月份的时候,正式提出了离职…

acme ssl证书自动续签 nginx

参考 github 官方操作 ,acme操作说明 说下我的操作 安装 acme.sh curl https://get.acme.sh | sh source ~/.bashrc 2.注册 acme.sh --register-account -m 123qq.com 如果你在配置 acme.sh 时选择了其他 CA(如 Let’s Encrypt)&#xff…

sentinel学习笔记6-限流降级(上)

本文属于sentinel学习笔记系列。网上看到吴就业老师的专栏,写的好值得推荐,我整理的有所删减,推荐看原文。 https://blog.csdn.net/baidu_28523317/category_10400605.html sentinel 实现限流降级、熔断降级、黑白名单限流降级、系统自适应…

简单了解函数递归

函数递归 一 了解函数递归二 深入理解函数递归的思想三 函数递归的优缺点 一 了解函数递归 首先&#xff0c;我们通过一个简单的代码来理解函数递归。 #include<stdio.h> int Func() {return Func(n1); } int main() {int n 5;Func(n);return 0; }这个就是函数递归&am…

QT的前景与互联网岗位发展

qt是用来干什么的 --》桌面应用开发&#xff08;做电脑的应用程序&#xff0c;面对客户端&#xff09;。 主要用于开发跨平台的应用程序和用户界面&#xff08;UI&#xff09;。它是一个全面的C库集合&#xff0c;提供了构建软件应用所需的各种工具和功能。 客户端开发的重…

重温设计模式--2、设计模式七大原则

文章目录 1、开闭原则&#xff08;Open - Closed Principle&#xff0c;OCP&#xff09;定义&#xff1a;示例&#xff1a;好处&#xff1a; 2、里氏替换原则&#xff08;Liskov Substitution Principle&#xff0c;LSP&#xff09;定义&#xff1a;示例&#xff1a;好处&#…

第十五章 C++ 数组

C 支持数组数据结构&#xff0c;它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据&#xff0c;但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量&#xff0c;比如 number0、number1、...、number99&#xff0c;而是声…

企业数字化转型加速,现代 IT 如何用 Datadog 全面提升可观测性?

作为 Gartner 可观测平台魔力象限的领导者&#xff0c;Datadog 凭借全面的功能、直观的用户界面和强大的产品路线图赢得了全球企业的信任。 企业 IT 架构正变得日益复杂&#xff0c;从本地服务器到云端部署&#xff0c;从单体应用向微服务&#xff0c;还有容器、 Kubernetes 等…

渗透Vulnhub-DC-9靶机

本篇文章旨在为网络安全渗透测试行业靶机教学。通过阅读本文&#xff0c;读者将能够对渗透Vulnhub系列DC-6靶机有定的了解 一、信息收集阶段 DC-9靶场信息: DC-9靶场介绍&#xff1a; https://www.vulnhub.com/entry/dc-9,412/ DC-9靶场下载&#xff1a; https://download.vu…

[WASAPI]从Qt MultipleMedia来看WASAPI

[WASAPI] 从Qt MultipleMedia 来看WASAPI 最近在学习有关Windows上的音频驱动相关的知识&#xff0c;在正式开始说WASAPI之前&#xff0c;我想先说一说Qt的Multiple Media&#xff0c;为什么呢&#xff1f;因为Qt的MultipleMedia实际上是WASAPI的一层封装&#xff0c;它在是线…

Linux下编译安装Kokkos

本文记录在Linux下编译安装Kokkos的流程。 零、环境 操作系统Ubuntu 22.04.4 LTSVS Code1.92.1Git2.34.1GCC11.4.0CMake3.22.1oneAPI2024.2.1 一、安装依赖 二、编译安装 参考文献 Mills R T. PETSc/TAO Developments for Early Exascale Systems[J]. 2024.Josef R. A Stud…

HTMLCSS:惊!3D 折叠按钮

这段代码创建了一个具有 3D 效果和动画的按钮&#xff0c;按钮上有 SVG 图标和文本。按钮在鼠标悬停时会显示一个漂浮点动画&#xff0c;图标会消失并显示一个线条动画。这种效果适用于吸引用户注意并提供视觉反馈。按钮的折叠效果和背景渐变增加了页面的美观性。 演示效果 HT…

容器技术所涉及Linux内核关键技术

容器技术所涉及Linux内核关键技术 一、容器技术前世今生 1.1 1979年 — chroot 容器技术的概念可以追溯到1979年的UNIX chroot。它是一套“UNIX操作系统”系统&#xff0c;旨在将其root目录及其它子目录变更至文件系统内的新位置&#xff0c;且只接受特定进程的访问。这项功…

Git远程仓库的多人协作

目录 一.项目克隆 二.多人协作 1.创建林冲仓库 2.协作处理 3.处理冲突 三.分支推送协作 四.分支拉取协作 五.远程分支的删除 一.项目克隆 我们可以把远程项目克隆到本地形成一个本地的仓库 git clone https://github.com/txjava-teach/txjava-code.git //链接你自己的远…

Docker 部署 plumelog 最新版本 实现日志采集

1.配置plumelog.yml version: 3 services:plumelog:#此镜像是基于plumelog-3.5.3版本image: registry.cn-hangzhou.aliyuncs.com/k8s-xiyan/plumelog:3.5.3container_name: plumelogports:- "8891:8891"environment:plumelog.model: redisplumelog.queue.redis.redi…

Spring常见面试题总结

关于详细介绍&#xff0c;可以看我写的 ( Spring知识点) 这篇文章。 Spring 基础 什么是 Spring 框架? Spring 是一款开源的轻量级 Java 开发框架&#xff0c;旨在提高开发人员的开发效率以及系统的可维护性。 我们一般说 Spring 框架指的都是 Spring Framework&#xff0c…

Mac系统下 IDEA配置Maven本地仓库

1.为什么需要配置本地仓库&#xff1f; 在软件开发过程中&#xff0c;使用Maven工具进行依赖管理是常见的做法。Maven通过集中管理各种依赖库&#xff0c;能够帮助开发者在项目中轻松地引入所需的第三方库&#xff0c;并确保项目能够顺利构建和部署。然而&#xff0c;在使用Mav…

RGCL:A Review-aware Graph Contrastive Learning Framework for Recommendation

A Review-aware Graph Contrastive Learning Framework for Recommendation 解决的问题 基于评论的推荐可以自然地形成为具有来自相应用户项目评论的边特征的用户项目二分图。那么就可以利用评论感知图中独特的自监督信号来指导推荐的两个组件:用户-项目嵌入学习,用户-项目…

5、mysql的读写分离

主从复制 主从复制的含义 主从复制&#xff1a;在一个mysql的集群当中&#xff0c;至少3台&#xff0c;即主1台&#xff0c;从2台。 当有数据写入时&#xff0c;主负责写入本库&#xff0c;然后把数据同步到从服务器。 一定是在主服务器写入数据&#xff0c;从服务器的写入…

重生之我在异世界学编程之C语言:深入预处理篇(上)

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文一、预处理的作用与流程&#xf…