目录
前言
📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。
🚀对毕设有任何疑问都可以问学长哦!
选题指导:
大家好,这里是海浪学长毕设专题,本次分享的课题是
🎯基于深度学习的黑暗场景人脸识别系统
课题背景和意义
在光线不足或黑暗场景中,人脸识别系统的性能往往会受到严重挑战。由于光照条件恶劣,图像质量下降,导致人脸特征难以提取和识别。为了解决这一问题,基于深度学习的黑暗场景人脸识别系统应运而生。该系统利用深度学习算法和计算机视觉技术,实现对黑暗场景中人脸的自动检测和识别,为夜间监控、安全防范等领域提供有力支持。
实现技术思路
一、算法理论基础
1.1 人脸识别算法
FaceNet,使用三元组损失函数代替交叉熵损失函数。三元组损失函数将特征映射到一个超球空间上,并通过优化使得同一类别的样本在特征空间中更加接近,不同类别的样本在特征空间中更加分散。最终得到一个1x128维的人脸Feature Embedding。FaceNet使用了Inception模型作为网络的主干,该模型具有较少的参数量但具有更高的精度。使用交叉熵损失函数可以将人脸识别问题转化为分类问题,但可能会导致参数量增大和对训练数据要求高。而使用三元组损失函数可以将特征映射到一个超球空间上,通过优化使得类内距离更短,类间距离更远,从而得到更好的人脸特征嵌入。此外,Inception模型作为Backbone可以在参数较少的情况下提供更高的识别精度。
异构人脸识别算法主要由人脸检测、特征提取和人脸匹配三个模块组成。人脸检测模块使用不同的方法来找到图像中的人脸位置,包括传统的AdaBoost分类器和基于深度学习的方法。特征提取模块利用深度卷积神经网络(CNN)学习人脸的特征表示,其中CNN级联网络是一种常见的架构。人脸匹配模块使用各种匹配算法和度量方法来比较人脸特征向量之间的相似度,从而实现人脸识别的功能。通过这三个模块的协同工作,异构人脸识别算法可以准确地定位人脸、提取有用的特征并进行相似度匹配,实现高效可靠的人脸识别。
在异构人脸识别中,使用单镜头尺度不变人脸检测器(S3FD)进行人脸检测,能有效地检测不同尺度的人脸,尤其对小尺寸人脸的检测效果显著。人脸对齐阶段利用深度卷积网络定位人脸关键点,以实现准确的对齐。通过卷积神经网络学习到的特征向量对人脸进行表示,使得不同人的特征向量之间距离较大,而同一个人的特征向量距离较小。在异构人脸识别中,通常以高分辨率可见光图像作为图库查询,利用其他成像模式的图像作为探针进行识别。通过这些步骤,实现了准确的人脸检测、对齐和特征表示,从而实现异构人脸识别的目标。
1.2 深度学习
在红外人脸识别中,应用了三元损失函数的思想,通过设置两对三元损失函数来对红外图像进行训练。对于每张红外图像,将与之不同身份的人脸作为负样本,计算两个三元损失。实验结果表明,在不同的损失函数下,Arcface Loss在近红外领域表现出较好的性能,因此在热红外研究中也将继续使用Arcface Loss。使用通用人脸卷积神经网络模型来学习模态不变特征,可以将不同模态的图像投影到共享的子空间中,以实现模态间的特征一致性。
GCF-GAN是在Cycle GAN基础上增加了对局部特征信息的增强,其中使用了卷积块注意模块(CBAM)来实现局部增强的注意力机制。CBAM是一种简单有效的前馈卷积神经网络注意模块,可以根据给定的中间特征图,逐步推导出通道和空间两个维度上的注意图,然后将注意图与输入特征图相乘,实现自适应特征细化。
在解决红外人脸识别问题时,我们需要消除两个模态之间的差异,使得相似人脸的特征更加接近。子空间学习方法是一种常用的传统人脸识别方法,在异质人脸识别中也被广泛应用。该方法的基本思想是找到一个公共的判别子空间,使得来自同一类别的异质图像在该空间中尽可能接近,而来自不同人的异质图像的距离尽可能拉远。通过子空间学习方法,可以实现对红外人脸识别中不同模态之间差异的消除和特征的一致性学习。
金字塔注意力机制在近红外和可见光人脸识别中起到了关键作用,通过自动学习不同大小的局部表示,提取一致的特征。该机制利用金字塔结构捕获多尺度特征,并发展多元学习以关注不同的局部信息,生成多样的局部特征。整个网络采用Siamese网络结构,将成对的近红外和可见光图像输入网络,共享参数进行特征提取。通过CBAM获取注意力图,提取前、中、后层的注意力图,并取其均值作为最终的注意力图。将注意力图与网络输出图相乘,通过Arcface Loss进行优化,使得同类人脸特征相似度增加,不同类别人脸特征相似度减小。
1.3 特征学习
在我们的框架中,引入了跨模态注意力金字塔(CMAP)学习来提取红外和可见光之间的一致性特征,包括多尺度和离散化的学习。CMAP的目标是学习不同大小和局部区域的特征。通过CBAM,我们可以从IR-50网络中的第i层特征得到注意力图。整体网络结构包括了CMAP模块,用于学习跨模态的一致性特征。
在框架中,我们还提出了双对齐神经网络(DANN)来减少不同模态之间的域差距和区域不匹配。DANN模型通过内交叉模态混合机制,将两种模态尽可能映射到同一决策空间中,以减少模态之间的差异。另外,为了最大化来自两个模态的一致性特征并规避不能互相表达的特征,我们提出了跨模态金字塔(CMAP)模块,对不同位置和尺度的特征进行特征对齐。
二、 数据集
2.1 数据集
为了实现基于深度学习的黑暗场景人脸识别系统,我们首先面临的是数据集的构建问题。由于黑暗场景下的图像质量较差,人脸特征难以提取,我们决定采用多种途径收集数据,包括夜间监控视频、低光照条件下的人脸图像等。在数据收集过程中,我们注重数据的多样性和标注准确性,尽量涵盖不同人脸姿态、表情和光照条件下的图像。为了提高模型的泛化能力,我们还采用了数据扩充技术,如直方图均衡化、对比度增强等,对原始图像进行预处理,提高图像质量。此外,我们还利用深度学习算法对图像进行特征提取和分类识别,实现对黑暗场景中人脸的自动检测和识别。
2.2 数据扩充
在黑暗场景人脸识别系统中,数据扩充和预处理同样扮演着关键角色。通过对原始图像进行直方图均衡化、对比度增强等操作,我们可以改善图像质量,提高人脸特征的可见性和可提取性。此外,我们还可以采用数据增强技术,如随机裁剪、旋转等,来增加数据集的多样性和规模。这些扩充和增强操作有助于模型更好地泛化到实际黑暗场景中,实现对人脸的准确识别和检测。同时,为了进一步提高模型的性能,我们还可以考虑采用多模态融合的方法,结合其他传感器或信息源来增强人脸识别系统的鲁棒性和准确性。
三、实验及结果分析
3.1 实验环境搭建
实验环境使用Windows操作系统,并利用Python作为主要的编程语言进行算法和模型的实现。使用PyTorch作为深度学习框架,构建和训练神经网络模型。借助Pandas等库,完成数据的加载、处理和转换。这样的实验环境提供了一个方便和高效的平台,用于开发和测试算法系统。
3.2 模型训练
双流网络算法中,使用了预训练的二维卷积神经网络模型VGG-M来提取图像空间特征和光流。对于图像空间特征,使用单张视频帧(256×256像素大小)进行训练;对于光流,选择了20张相邻帧的256×256像素大小的光流作为输入。最后,在输出的softmax层中采用平均融合方式合并两个流的结果。
我们通过对优化器、初始学习率和随机失活概率的不同组合进行实验,总共运行了54次,以综合考虑LRCN、Two-stream和C3D算法的特点,并获得最佳的参数组合。在优化器、初始学习率和随机失活概率这三个参数上,我们将LRCN、Two-stream和C3D算法的特点进行了结合,并设定了一致的可选参数组合。其中,优化器可选择Adam或SGD,初始学习率可选择0.01、0.001或0.0001,随机失活概率可选择0.4、0.5或0.6。共有18组参数组合方式,每组参数重复运行3次,总共运行54次实验,以避免偶然误差。
相关代码示例:
import itertools
# 定义算法
algorithms = ['LRCN', 'Two-stream', 'C3D']
# 定义优化器选项
optimizers = ['SGD', 'ADAM']
# 定义初始学习率范围
learning_rates = [0.001, 0.01, 0.1]
# 定义随机失活概率范围
dropout_rates = [0.2, 0.5, 0.8]
# 生成所有可能的组合
combinations = list(itertools.product(algorithms, optimizers, learning_rates, dropout_rates))
# 运行实验
results = {}
for combination in combinations:
algorithm, optimizer, learning_rate, dropout_rate = combination
# 记录结果
results[combination] = {
'algorithm': algorithm,
'optimizer': optimizer,
'learning_rate': learning_rate,
'dropout_rate': dropout_rate
}
海浪学长项目示例:
最后
我是海浪学长,创作不易,欢迎点赞、关注、收藏。
毕设帮助,疑难解答,欢迎打扰!