基于深度学习的vgg模型识别人脸情绪 毕业论文+项目源码及数据库文件

!!! 有需要的小伙伴可以通过文章末尾名片咨询我哦!!!

 💕💕作者:优创学社
💕💕个人简介:本人在读博士研究生,拥有多年程序开发经验,辅导过上万人毕业设计,支持各类专业;如果需要论文、毕设辅导,程序定制可以联系作者
💕💕各类成品java系统 。javaweb,ssh,ssm,springboot等等项目框架,源码丰富,欢迎咨询交流。学习资料、程序开发、技术解答、代码讲解、源码部署,需要请看文末联系方式。

VGG网络

摘  要:随着深度学习技术的飞速发展,卷积神经网络(CNN)在计算机视觉和图片分类等领域展现出了令人瞩目的性能。这些成就离不开一系列先驱性网络架构的探索与创新,特别是LeNet和AlexNet为后续的VGG网络设计奠定了坚实的基础。VGG网络由牛津大学的Simonyan 和 Zisserman在2014年提出,并在ImageNet大规模视觉识别挑战赛(ILSVRC-2014)中取得了显著成绩,其7.32%的分类错误率和25.32%的定位错误率证明了其卓越的性能。VGG网络通过堆叠多个3×3的卷积层和2×2的池化层,构建了一个深层次的网络架构,有效减少了参数数量,降低了计算复杂度。VGG网络包括VGG16和VGG19两个主要变体,VGG16包含13个卷积层、5个最大池化层和3个全连接层,总计21个层,而VGG19则通过增加卷积层数至16个,进一步提升了网络深度,以捕获更为复杂的特征。进一步探讨了VGG16网络模型在多个不同应用场景下的性能,包括人脸情绪识别、机载高光谱针叶树种分类和轴承故障诊断。在实验部分,在本研究中使用微调的VGG16对FER2013 数据集进行7分类任务,VGG16在此任务中表现优异。

关键词:VGG网络;深度学习;计算机视觉图像分类;

随着深度学习技术的日新月异,卷积神经网络在计算机视觉和图片分类等领域展现出了令人瞩目的性能。这些卓越的进步得益于一系列先驱性网络架构的探索与创新,其中LeNet和AlexNet为后续的VGG网络设计奠定了坚实的基础。VGG网络由Simonyan 和 Zisserman在2014年的论文《Very Deep Convolutional Networks for Large-Scale Image Recognition》中首次提出。该模型在ImageNet大规模视觉识别挑战赛(ILSVRC-2014)中取得了显著成绩,尽管未能摘得桂冠,但其7.32%的分类错误率和25.32%的定位错误率仍然彰显了其卓越的性能。尤其是其深度结构的设计和特征学习能力,对后续的研究产生了深远的影响。VGG网络的核心在于其通过堆叠多个3×3的卷积层和2×2的池化层,构建了一个深层次的网络架构。这种设计策略与传统的CNN架构相比,具有几个显著的优势。具体而言,采用多个连续的小型卷积核替代单一的大型卷积核,不仅减少了参数数量,降低了计算复杂度,还增强了模型的非线性表达能力,使其能够捕捉图像中更为复杂的特征。[1]其次,通过堆叠多个卷积层,VGG网络增加了网络的深度,从而能够学习到更加抽象和高级的特征表示,这对于提高分类性能至关重要。VGG网络自提出以来,由于深度结构和强大的特征学习能力,VGG网络也被应用于各个领域,从而衍生出一系列VGG变体。

1 VGG网络的提出

神经网络在视觉分类、目标定位和语义分析领域已经展现出其无可比拟的优势。相较于早期出现的机器学习算法,如支持向量机(SVM)和随机森林(RF),在多个知名数据竞赛中,神经网络的性能都显著超越了这些传统算法。在VGG网络诞生之前,LeNet和AlexNet等网络架构已经引起了广泛关注。LeNet网络在小规模数据集上取得了卓越的成就,然而在面对更大、更真实的数据集时,其性能往往被SVM等机器学习算法所超越。然而,这一局面在2012年发生了转折。Alex Krizhevsky、Ilya Sutskever和Geoff Hinton提出了一种名为AlexNet的新型卷积神经网络,并在ImageNet挑战赛中以惊人的成绩一举夺魁。这一突破性的进展不仅证明了卷积神经网络在图像识别任务中的巨大潜力,也为后续的研究提供了宝贵的经验。[2]然而,尽管AlexNet取得了显著的成果,但其在深度和复杂度上仍存在一定的局限性。网络的深度相对较浅,参数量相对较多,这在一定程度上限制了其特征提取能力。为了克服这些局限性,牛津大学的Visual Geometry Group团队在2014年提出了VGG网络。这一网络架构在ImageNet大规模视觉识别挑战赛(ILSVRC-2014)中取得了显著的成就,进一步巩固了深度神经网络在图像识别领域的领先地位。VGG网络的一个显著特点是其首次提出了卷积块的神经网络架构思想。这种设计理念使得网络结构更加清晰、模块化,就像搭积木一样,可以方便地堆叠和扩展。这种思想在后续的神经网络设计中得到了广泛应用,如ResNet、GoogLeNet等经典网络架构都借鉴了VGG的块设计思路[3]。

图 1 LeNet和Alexnet网络的框架

2 VGG网络的结构和特点

VGG网络是由多个卷积块和全连接层组成,常用的VGG网络有VGG16和VGG19,后面的数字代表网络的可学习参数层的数量。VGG网络是由使用由多个具有3×3大小核的卷积层构成的卷积块替换AlexNet中的较大核的卷积层(11×11、5×5)改进而来[5]。

2.1卷积块

如图 2所示,卷积块是VGG网络的重要组成部分,一般由多个卷积层和一个最大池化层构成。在VGG16中前面2个卷积块使用由2层卷积层和1个最大池化层构成,而后面3个卷积块由3层卷积层和1个最大池化层构成。在VGG19中前面2个卷积块使用2层卷积层和1个最大池化层构成,而后面3个卷积块由4层卷积层和1个最大池化层构成。在每个卷积层后使用非线性激活函数,常用为ReLU。使用这种卷积块的设计,有利于设计相对更深的网络架构,学习更多的非线性特征。

2 卷积块

2.2 VGG16

如图 3所示,VGG16由13个卷积层、5个最大池化层和3个全连接层组成,总计21个层,整个网络均使用卷积核大小为3×3的卷积核,最大池化层的核大小为2×2,通过使用相对较小的3×3卷积核,堆叠多次,能有效增加网络的深度,并减少模型的整体参数,有利于缩短模型的训练时间,并提升模型的泛化能力[6]。在前面2层使用具有两个卷积层的卷积块,卷积核数量分别为64和128,而在后3层使用具有三个卷积层的卷积块,卷积核数量分别为256、512和512。并在卷积层后使用ReLU激活函数增强模型的非线性性能。使用三个全连接层用于将其最终转换成ImageNet数据集的目标类别数,最后使用softmax函数将其转换为每个类别的预测概率。

2.2 VGG19

如图所示,相比于VGG16,VGG19具有更深的网络结构,包含19个带权重的层(16个卷积层和3个全连接层)。具体而言,VGG19将VGG16的最后三次卷积块从包含3层卷积层增加到包含4层卷积层。更深的网络结果,能够提取更加复杂的特征,在具体应用中具有根据数据集的复杂程度和需要完成的任务难度选择适合的VGG层数[7]。

3 VGG16和VGG19网络架构

3 VGG网络的应用

3.1人脸情绪识别

使用VGG16网络模型对FER-2013PLS数据集进行7种人脸情绪识别,分别为快乐、惊讶、悲伤、愤怒、厌恶、恐惧和中性。由于FER-2013PLS数据集中图片大小均为48×48,而经典VGG16模型的输入图片大小为224×224,所以使用预处理resize图片大小为224×224,并在最后添加一层全连接层,输入为1000个神经元个数,输出为7个来匹配本任务中的样本数量。具体网络框架如图 4所示。并于ResNet50、InceptionResNetV2、InceptionV3等一些经典神经网络框架进行对比分析。

.图 4 人脸清晰识别中的VGG16模型

如表 1 不同模型的精度对比所示,VGG16模型在人脸情绪的分类实验中获得了最高准确率,达到79%,而ResNet50模型准确率最低,仅有73%,可能是由于ResNet50模型的网络太深,导致模型在训练数据上有些过度拟合[8]。

1 不同模型的精度对比

Model

Accuracy(%)

VGG16

79

ResNet50

73

InceptionResNetV2

78

InceptionV3

78

3.2机载高光谱针叶树种分类

通过对VGG16模型进行改进,提出了一种对针叶树种类进行识别的网络模型,如图 5所示。通过删减VGG网络中的不同卷积层和池化层,并对卷积核的分布进行重新设计。具体而言,卷积核大小均设置为3,具有3个卷积块,每个卷积块中核的数量分别为128,64,32,初始学习率为0.0001,使用反向时间衰减学习率优化器,学习率随着迭代次数的增加而不断下降。将ReLU激活函数替换为Mish激活函数,可以有效避免网络的饱和问题,并将其与未改进的VGG16网络进行对比分析[9]。

5 基础VGG16与改进VGG16

从表 2模型性能对比中可以清晰看出,与未改进的VGG16网络相比,针对针叶树高光谱影像的改进VGG16模型的分类精度提升了8.17%,达到了94.47%的分类准确率,Kappa系数为0.9328。表明VGG16在不同图像分类中都能达到较好的性能,在针对不同的任务,可以适当调整VGG模型架构,以优化模型性能。                                                                                                                                                                                                                                                                                                                                                           

2模型性能对比

Model

Accuracy(%)

Kappa

VGG16

86.30

0.8264

Improved VGG16

94.47

0.9328

3.2 VGG16迁移学习的轴承故障诊断

如图 6所示。由于轴承的故障信号是1维矩阵的时域信号,并不符合VGG的2D图像输入,所以在原始时域信号中随机抽样,抽取N个长度为N的时间信号,形成一个2D矩阵数据,为了变成灰度图的形式,再将矩阵进行归一化,将每个元素的值,限制在0-255之间[10]。

6 1D转2D

使用在ImageNet上的预训练模型,冻结较低层的权重,因为较低层一般用于特征提取的功能,只对最后几层进行重新训练并调整权重,并添加层来改变最后的输出层为2个神经元,分别代表无缺陷和有缺陷,如图 7所示。

7 迁移学习示意图

将迁移学习的VGG16模型与CNN和SVM对比模型分类性能,数据集1来自凯斯西大学的轴承数据库,并分为0HP、1HP、2HP、3HP四个子数据集,数据集2来自辛辛那提大学的IMS轴承数据库,从表可以看出,经过迁移学习的VGG16拥有最好的诊断故障的性能,全部数据集的分类准确率均超过99.6%。

表 3 不同模型的轴承故障判别准确率

Model/Dataset

0HP

1HP

2HP

3HP

IMS

VGG16

100

100

100

100

100

CNN

100

100

100

99.5

99.5

SVM

96.2

96.9

97.5

95.7

94.8

4 实验

4.1 数据集

在本研究的VGG实验中使用在Kaggle数据集网站下载的FER数据集,此数据集包含有6种不同情绪的图片,用于使用深度学习算法来进行定性分析研究。[11]具体来说,如图 8所示,整个数据集包括35887个样本,emotion列中的标签0-6分别对应目标标签Anger,Disgust,Fear, Happy, Neutral, Sadness, Surprise七种情绪,pixels列表示为图片对应的每个像素的像素值,大小在0-255之间,每个样本的pixels向量总长为2304,代表为48×48像素大小的图片,Usage列表明为此数据的类别,Training代表训练集,PublicTest代表公开测试集,PrivateTest代表私有数据集

8 Fer2013公开数据集

如图 9所示,Anger类型样本数据量为4953个,Disgust类型样本数据量为547个,Fear类型样本数据量为5121个,Happy类型数据量为8989个,Neutral类型样本数据量为6077个,Sadness类型样本的数据量为4002个,Surprise类型样本的数据量为6198个。

9 标签的整体分布

4.2 特征工程

首先使用提取pixels的图像数据,使用np.uint8函数将其中的值限制在0-255之间,常用于图像处理,再将其28709×2304的数据reshape成(28709*2304,1)的向量,方便进行整体数据的归一化,使用sklearn库中的StandarScaler标准化函数将其中转换为符合正态分布,即均值为0,方差为1,再次使用reshape将其转换为(28709,1,48,48),其中28709代表样本数,1代表通道数,常用彩色图片为RGB三个通道,本研究中为灰度图,所以只有一个通道,最后两个48分别代表图片的长宽像素值,方便后续定量分析模型的输入。对目标标签进行one-hot编码,One-Hot编码将每个类别表示为一个独立的二进制向量,向量中的1唯一地标识了一个特定的类别,而0表示其他类别。这种方式保留了每个特征取值的独立性,使得算法在处理过程中不会受到特征取值之间潜在关系的影响。根据Usage列将数据集划分为Training、PublicTest和PrivateTest,其中Training、PublicTest和PrivateTest分别包含28709,3589和3589个样本。

在对数据进行特征工程完成后,对图片和对应标签进行展示,以确保数据处理无误,如图 10所示,我们从训练集中随机选取了7个样本。

10 训练集图片及其标签

4.3 模型搭建

在对数据样本进行处理后,对于VGG16模型的构建,我们选择juopyter notebook (Python 3.10 )通过Pytorch 2.2.2+cpu版本进行训练,确保了在无GPU支持的环境下,程序能够在CPU上高效运行。如图 11所示,输入图像大小为224×224(因为VGG一开始被运用在ImageNet数据集中,ImageNet数据集输入图片大小为224×224),VGG16由5个卷积块组成,卷积块1的卷积核数量为64,卷积块2的卷积核数量为128,卷积块3的卷积核数量为256,卷积块4的卷积核数量为512,卷积块5的卷积核大小数量为512。在每个卷积层后面使用ReLU激活函数,增强模型的非线性性能,并使用最大池化层提取主要特征。在经过所有卷积块后得到7×7×512大小的矩阵,将其摊平为1×1×4096的向量,并使用三个全连接层将其降到1000个神经元(因为VGG一开始被运用在ImageNet数据集中,ImageNet数据集中类别数量为1000)。

11 VGG16网络整体架构

更多项目:

另有10000+份项目源码,项目有java(包含springboot,ssm,jsp等),小程序,python,php,net等语言项目。项目均包含完整前后端源码,可正常运行!

!!! 有需要的小伙伴可以点击下方链接咨询我哦!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

优创学社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值