目录 1 绪论 5 1.1研究背景与意义 5 1.2国内外研究现状 5 1.3 研究内容 6 2 唇语识别技术理论 7 2.1 深度学习基础概念 7 2.1.1 神经网络原理 7 2.1.2 深度学习算法 9 2.1.3 图像识别过程 10 2.2 预处理及数据增强 10 2.3 LSTM 11 2.4目标检测Yolo算法 12 2.5 Flask框架 12 3 唇语数据集及预处理 14 3.1数据集来源与介绍 14 3.2数据预处理 14 3.3唇语特征提取 15 4 深度学习模型设计 18 4.1 唇语识别模型结构设计 18 4.2唇语识别模型训练 19 4.3 唇语识别模型评估 21 5 总结与展望 23 参考文献 24 致谢 26
1 绪论 1.1研究背景与意义 随着技术的不断更新迭代,深度学习已经不再局限于单一的研究领域,跨模态和多技术融合的研究逐渐兴起。例如,“自动驾驶”、“实时语音转写和多语言翻译”、“网购推荐系统”以及“医疗诊断”等领域都广泛应用了深度学习技术,显示出深度学习在各个领域的重要性。 因此,基于深度学习的跨模态和多领域融合研究无疑是当前最具前沿价值的研究领域,也是未来发展的必然趋势。唇语识别作为涉及图像处理、语音处理、自然语言处理以及模式识别等多个前沿领域的前沿技术,正受到最新科技的广泛支持,同时也在不断推动这些领域的相互融合。唇语识别在广泛的应用场景中展现出巨大的潜力:对于近距离的室内环境而言,现有的语音识别系统在准确识别说话人表达内容方面已取得显著进展。然而,面临嘈杂环境的挑战,如噪音干扰等,使得语音识别准确率受到影响。在这一点上,唇语识别通过视觉信息的独立性,不受噪音干扰,能够辅助提高语音识别的准确性,同时所示说话者的面部表情和心理状态,有助于更全面理解表达的核心内容。其次,唇语识别在反作弊和活体检测方面有着独特的应用价值。随着人脸检测技术的广泛应用,系统面临着各种攻击,如图片攻击、视频播放攻击和3D打印攻击。引入唇形信息后,结合语音和生理特征,可以提升人脸检测的正确性和鲁棒性,增强系统的安全性。第三,唇语识别可应用于口型矫正领域。随着全球化的推进,英语成为必备的第二语言,发音不标准一直是学习者的困扰。唇语识别技术可以通过学习官方播音员的口型,纠正学习者的口型,从而提高发音准确性,促进语言学习。最后,唇语识别还有助于聋哑人更好地与人交流。在我国,听力语言残疾者数量庞大,而手语存在一系列问题。通过将唇语识别技术应用于聋哑人的发音教学,有望为他们提供更为有效的交流工具,成为对于改善生活质量的福音。 结合深度学习在各个领域的最新研究成果,唇语识别研究的重点正在不断突破,为其在未来的发展奠定坚实基础。本文基于深度学习在相关领域的卓越贡献,不仅构建了首个中文唇语识别数据集,为未来的研究提供了数据支持,同时提出了新的唇语识别算法,为该领域的研究和应用发展注入 1.2国内外研究现状 唇语识别作为一个涉及多个领域的综合技术,相较于其他研究领域,目前仍处于起步阶段。目前,主要应用场景主要集中在两个方面:一是在嘈杂环境下辅助语音识别,以提高识别的准确性和鲁棒性;二是辅助唇语教学,帮助学习者更好地掌握唇语技能。尽管唇语识别的研究仍处于初期阶段,但近年来学术界和商业界对其越来越重视,这在全球范围内人工智能领域中得到了体现。许多海外高校的人工智能实验室以及知名互联网科技公司,如奥卢大学、牛津大学和谷歌等,都开始大力投入唇语识别的研究和开发。此外,越来越多来自世界各地的关于唇语识别算法的研究工作也纷纷出现在计算机视觉领域的国际顶级会议上,如AAAI、ICCV、ECCV和CVPR等。与国外相比,国内在唇语识别领域的研究起步相对较晚。目前,已公开研究的机构包括科大讯飞、搜狗、海云研究院以及中科院计算所,其中科大讯飞和搜狗等公司已将语音识别和唇语识别相结合,并实现了技术产品化。此外,中科院计算所还为未来中文唇语识别研究提供了一个重要的开源数据库LRW-1000。尽管唇语识别在理论研究和产品化方面取得了一些成就,但面临着日益多样化和复杂化的应用场景,仍然存在着一系列挑战:光照条件的不同导致面部阴影引起算法误判;大角度人脸对算法鲁棒性的考验;非刚性唇部活动的多样性和差异性增加了算法学习的难度;不同发音习惯导致同一音素对应的唇形长短不同,存在长短时依赖的问题。 1.3 研究内容 本文的研究旨在设计与实现基于深度学习的唇语识别系统,以解决唇语识别在实际应用中的挑战。为了达到这一目标,本文将按照以下结构展开。首先,在绪论中,将介绍研究的背景与意义,明确本文研究的目的及其重要性,并概述国内外关于唇语识别的研究现状,为本文的研究提供理论基础。接着,第二章将介绍项目所涉及的技术理论,包括LSTM、目标检测(Yolo算法)和轻量级web框架(Flask),为后续的项目设计与实现奠定基础。第三章将进行项目分析与技术路线的讨论,对项目进行全面的分析,包括需求分析、功能分析等,并提出项目的技术路线,明确项目的设计思路和实现方法。接下来,第四章将详细介绍项目的设计与实现过程,包括用户登录与注册功能的设计与实现,以及唇语识别技术的实现过程,包括唇部检测切割、数据预处理、网络模型数据处理、数据训练与测试等环节,并将算法与系统框架进行整合。第五章将所示并分析项目的结果,包括系统功能的所示以及对唇语测试结果的分析,评估项目的实际效果与性能。最后一章为总结与展望,总结本文的研究工作,回顾项目的成果与不足之处,并展望未来的研究方向与发展趋势。通过以上结构的安排,本文将全面系统地展现基于深度学习的唇语识别系统的设计与实现过程,为该领域的进一步研究与应用提供理论与实践的指导。
2 唇语识别技术理论 2.1 深度学习基础概念 2.1.1 神经网络原理 神经网络是一种模仿人类神经系统结构和功能的数学模型,通过多层神经元之间的连接和信号传递来实现复杂的信息处理。其基本原理可以概括如下: 神经元:神经网络的基本单元,模拟生物神经元的功能。每个神经元接收来自上一层神经元的输入信号,并通过激活函数处理后产生输出。连接权重:连接两个神经元之间的权重表示了它们之间信息传递的强度和方向。神经网络通过学习调整连接权重来适应输入数据并优化输出结果。激活函数:用于引入非线性因素,增加神经网络的表达能力。常见的激活函数包括sigmoid、ReLU(Rectified Linear Unit)和tanh等。前向传播:输入数据经过神经网络的各层,通过连接权重和激活函数进行计算,最终得到输出结果的过程。反向传播:根据损失函数计算输出结果与实际值之间的误差,并将误差反向传播至网络各层,利用梯度下降等优化算法调整连接权重,以最小化误差并提高模型性能。
图 2-1神经网络基本原理 深度学习模型通常由多个层次的神经元组成,包括输入层、隐藏层和输出层。隐藏层可以有多层,这种多层的结构使得深度学习模型能够学习到更加复杂和抽象的特征表示,从而提高模型的性能和泛化能力。 卷积神经神经网络往往用于图像识别和分类方面,通过科研工作者的不断努力已经证明了其在在图像领域具有非常大的高效性。卷积神经网络是三维进行排列的,每一层都有深度x高度x宽度,这是与常规神经网络最大的不同之处。高度和宽度是卷积过程中的一个二维模型,这个和常规的神经网络并没有什么不同之处。卷积神经网络还有一维的深度信息,这个深度信息往往代表激活函数的第三个维度信息。卷积神经网络的整体框架都包含卷积层、池化层和全连接层,其中卷积层的作用是提取输入图片中的信息,这些特征是由图像中的每个像素通过组合或者独立的方式所体现,比如图片的纹理特征,颜色特征。池化层的作用是对卷积层中提取的特征进行挑选,如下图所示最大池化层的操作实例
图 2-2 最大池化层的操作 池化层主要有以下几个作用: (1): 挑选不受位置干扰的图像信息。 (2): 对特征进行降维,提高后续特征的感受野,也就是让池化后的一个像素对应前面图片中的一个区域。 (3): 因为池化层是不进行反向传播的,而且池化层减少了特征图的变量个数,所以池化层可以减少计算量。 全连接层: 池化层的后面一般接着全连接层,全连接层将池化层的所有特征矩阵转化成一维的特征大向量,全连接层一般放在卷积神经网络结构中的最后,用于对图片进行分类到了全连接层,神经网络就要准备输出结果了。 如下图所示,倒数第二列的向量就是全连接层的数据。
图 2-3 全连接层过程 前馈神经网络是最常见的深度学习模型类型之一,前馈神经网络模型是将一些基本函数组合起来的模型,如下图所示,假设有这三个函数链式连接,这个链式连接口以表示为: (2-1)
图 2-4 深度前馈网络示意图 前馈神经网络算法通常包括向前反馈算法和向后反馈算法,他们最重要的就是使用了激活函数。使用ReLU激活函数具有很多优点,例如ReLU的收敛速度要比Sigmoid和Tanh的收敛速度要快的多,其次就是ReLU在X坐标轴上的数值恒为0,这样就不易发生过拟合的情况,使网络变得越来越稀疏,各个函数之间的依赖变得越来越弱,耦合性大大降低。在y坐标轴上最大的值恒为1因此不存在梯度小时的情况,这也是ReLU激活函数被经常使用的原因。 2.1.2 深度学习算法 深度学习是一种基于多层神经网络的机器学习方法,其核心思想是通过大量数据和强大的计算能力来训练模型,从而实现对复杂数据的高效表示和学习。常见的深度学习算法包括:卷积神经网络(CNN)、循环神经网络(RNN)、长短期记忆网络(LSTM)、生成对抗网络(GAN)、深度强化学习(Deep Reinforcement Learning)。这些深度学习算法在各自领域取得了重大突破,并在人工智能领域的诸多应用中发挥着重要作用。随着硬件计算能力的提升和算法优化的不断深入,深度学习算法将在未来展现出更加广阔的发展前景,为人类社会带来更多的智能化应用和价值。 2.1.3 图像识别过程 如图2-4所示卷积神经网络进行图片识别过程。首先对原始样本也就是图片信息进行处理,提取图片的相关特征,然后把处理的数据信息送到卷积神经网络模型的卷积层中,图片样本信息在卷积层中进行相关的计算和信息反馈调整最后变成向量的相关信息,转别后的特征人是无法进行理解的,只有机器才能进行识别,最后通过最后一层进行输出想要的结果。人眼对照片的识别过程与神经网络识别模型进行识别有许多相似的地方,例如都需要对样本信息进行加工,都需要经过一些处理器进行处理最终输出结果,在这个过程中很显然的可以知道卷积神经网络的搭建参考了人眼识别的过程,卷积神经网络模型在识别图片的过程中与人眼识别的最大不同之处就是信息处理方式不一样,通过下图可知差异。
图 2-4 卷积神经网络的图片识别过程 2.2 预处理及数据增强 在应用CNN进行图像识别任务之前,通常需要进行一系列的预处理和数据增强操作,以提高模型的性能和泛化能力。预处理包括对图像进行裁剪、缩放、归一化等操作,使得输入数据符合网络的训练要求,同时能够减少模型训练时的计算复杂度和内存占用。数据增强是一种常用的技术,通过对原始图像进行随机变换或变形,生成更多的训练样本,从而增加数据的多样性和数量,提高模型对不同数据的泛化能力。常见的数据增强操作包括随机翻转、旋转、平移、缩放等,可以有效减少过拟合现象,提升模型的鲁棒性。
图 2-5 数据增强案例 2.3 LSTM 长短期记忆(Long Short-Term Memory,LSTM)是一种特殊的循环神经网络(Recurrent Neural Network,RNN),专门用于处理序列数据,如文本、语音以及时间序列等。相较于标准的RNN,LSTM在捕捉长期依赖性方面表现更为优异,能够有效地学习和记忆长序列中的关键信息,因此在众多序列建模任务中取得了显著成就,LSTM截图如图2-6所示。 LSTM的核心思想在于通过精心设计的记忆单元(memory cell)来控制信息的流动,以保持和遗忘长序列中的信息。记忆单元包括一个状态向量和三个门(input gate、forget gate以及output gate),每个门由一个sigmoid神经元和一个逐元素相乘的操作组成,用于调控信息的传递。首先是输入门(input gate),它决定了新输入信息的哪一部分将被添加到记忆单元中。输入门的输出受当前输入和前一时刻的隐藏状态影响。 其次是遗忘门(forget gate),它决定了从记忆单元中哪些信息需要被遗忘。遗忘门的输出同样由当前输入和前一时刻的隐藏状态决定。最后是输出门(output gate),它决定了记忆单元中的哪部分信息将被传递给输出。输出门的输出同样取决于当前输入和前一时刻的隐藏状态。通过这些门的巧妙设计,LSTM能够有效地解决长序列中的梯度消失和梯度爆炸问题,同时更好地捕捉序列中的长期依赖关系。这使得LSTM成为处理语音识别、机器翻译、文本生成等任务的首选模型之一。
图 2-6 LSTM单元结构图
3 基于seResNet和GRU的唇语识别的唇语数据集处理 3.1 基础算法结构 采用了结合seResNet和GRU的简洁网络,并对其训练方法进行了适当的优化,最后达到了与SOTA相似的效果,并且他们还对代码进行了开源。因此,本研究以其简洁的网络结构为基础,对其进行了必要的优化。在此基础上提出一种基于深度学习的唇语识别方法,该方法采用了深度神经网络作为网络结构,通过大量实验证明这种新方法比传统的识别方法有更好的准确率和召回率。在基础算法的设计中,整体采用了seResNet加GRU的架构,并对seResNet的卷积层进行了适当的调整。如图3-1所示的那样,首先使用唇部图像序列作为模型的输入,并将其输入维度设置为(B C T H W)。其中,H和W代表图像的大小,C代表图像通道的数量,B代表实际训练的批次大小,而T代表实际输入的唇语图像序列的长度。唇部的图像序列首先经历了一个3DCNN处理,从图的右上角可以清晰地观察到其内部结构,这实际上是一个简化的三维卷积层。这个卷积层结合了批正则化、ReLU激活函数和三维最大池化技术。在三维卷积中,卷积核的数量为64。在这里,三维卷积层和三维最大池化都对空间维度H和W维度进行了降维处理,而不是对时间维度T进行降维。因此,经过3DCNN处理后,输出的维度分别是(B 64 T H/4 W/4)。
图 3-1 基础算法结构图 紧接着,看到了一个经过修订的seResNet。与传统的se ResNet相比,图3-1中的se ResNet的主要区别在于删除了前面部分的一层二维卷积、批归一化、激活函数和最大池化,并选择使用之前的3DCNN作为替代。经过众多的实验研究,发现使用3DCNN作为前端处理可以显著提高图像的准确性。实际上,前端的3DCNN的主要功能是对唇部图像序列进行对齐,这有助于减少由图像输入引起的噪声干扰。在这里将使用这个方法来进行唇形检测,并对它做进一步改进以适应现在的网络模型。从图3-1中可以观察到,seResNet的核心结构是由Block层构成的,其中Block层的dim代表了Block层输出的图像特征维度。Block的每一个设计都融合了残差层与通道的注意力。在残差层中,主要由两组二维卷积、批归一化和激活函数组合而成。输入首先通过第一个二维卷积,该卷积的卷积核数量为dim。这意味着将输入通道维度调整为输出通道维度,接着进行批归一化和激活函数,然后进入下一个二维卷积。这个二维卷积不会改变通道维度,经过批归一化后,将输出和输入进行残差连接,最后输入激活函数作为输出,这就是一个简单的残差层。这样就可以将所有通道都考虑到了,并且在每个层上都使用不同的算法来计算权值。其次,通道注意力层的主要功能是关注图像特征通道的重要性,它是一个整体结构。首先,对图像特征进行全局平均池化,从而获取图像特征的全局信息。然后,通过两个全连接层和sigmod激活函数,学习通道的权重参数。最后,将这些权重参数与输入的图像特征相乘,得到输出。结合残差层和通道的注意力层,得到了一个完备的Block构造。采用串联的Block结构,包括两层Block、两层Block、两层Block和两层Block,可以更深入地提取图像的特征图。由于图像特征向量需要作为GRU的输入,因此接上了一个全局平均池化,得到特征图的全局特征向量,然后再接上一个批归一化。实验表明在这个过程中得到了较好的分类性能。事实上,seResNet的输入与3DCNN的输出维度并不一致。因此,需要将3DCNN的输入转化为(B×T 64 H/4 W/4)作为seResNet的输入,接着将seResNet的输出维度设为(B×T 512),再将变换维度设为(B T 512)作为最终的输出结果。 接下来是一个双向GRU,这个双向GRU主要是由两个单向GRU构成的。为了避免传统方法中由于使用了多个不同方向而导致的误差和不准确问题,采用一种新的融合算法来解决这个问题。其中一个GRU直接将seResNet的输出作为其输入数据,而另一个GRU则是先在时间维度上执行reverse的翻转操作,然后将这些数据作为输入,从而实现唇部图像特征向量序列的翻转处理。首先将这两种方法相结合来得到最终结果,即利用了时间上的连续性以及空间上的对称性,因此该算法可以提高计算效率并保证准确率。接下来,两个GRU的隐层单位维度均被设定为1024,而隐层的层数为3层。这样,每一个GRU输出的特征向量维度都是(B T 1024)。然后,将这两个向量在通道维度上进行合并,合并后的维度是(B T 2048)。最后,通过连接dropout来减少模型的过度拟合。实验表明该算法能很好地检测出人脸表情变化过程中所蕴含的特征,而且由于不需要知道任何先验知识,因此可以有效提高识别精度。在这里,双向GRU可以获取正向和反向的时间信息,因此具有更高的鲁棒性。 最终步骤包括全局平均池化和一个分类层,由于最后需要完成一个分类任务,因此首先使用全局平均池化对T维度进行取平均值,即输出维度为(B 2048)。在完成分类任务后,接上一个全连接层,最后输出的维度是(B 词汇类别的总数)。 3.2训练策略 3.2.1 学习率调整 在进行深度学习时,调整学习率的方法对模型的总体表现产生了显著的效果。本文主要讨论了学习率对网络结构和权值更新方式所带来的变化以及这些因素之间的关系。在梯度下降的过程中,学习率作为一个参数,决定了优化器前进的步长大小。为了使整个算法达到最优状态,采用了不同的学习率对神经网络进行训练。当学习率降低时,网络训练的速率也会减缓,有时甚至可能接近局部最小值;反之则可能出现过拟合现象。然而,随着学习率的提高,网络训练的速率并不总是更快。因此,要选择一个合适的学习率以保证梯度能快速地达到最大值。由于学习速率过高可能会引起梯度在特定区域内的波动,因此不能达到最低点。因此要想提高学习效率,就必须控制好学习率的大小。无论是过高还是过低的学习率都可能导致问题,因此在训练过程中,需要动态地调整学习率,以确保梯度能够达到其最小值。
图3-2 余弦学习率曲线 在基本的算法设计中,采用了余弦学习率的调节方法。通过对数据集进行多次迭代,得到一个新的样本集后再根据这个新的样本来重新构造一个新的基函数和更新学习率曲线。如图3-2所示的余弦学习率曲线表明,学习率首先在一个较大的位置逐渐降低,这样模型的梯度就不会仅仅停留在局部的极值点。随后,学习率迅速减少到一个较小的学习率,这使得模型梯度能够逐步接近其最优解。通过这种方法来提高分类正确率,同时降低了计算复杂度。余弦曲线可以通过数学来表示,其中lr代表初始学习率,lrt代表第t个epoch的学习率,而T则表示训练过程中的总epoch次数。
3.2.2 标签平滑 标签平滑技术(Label Smoothing)作为正则化方法,在分类任务上展现出了显著的性能增强。本文将这种方法应用于人脸识别中,通过实验对比了不同类型标签对人脸图像识别结果的影响。在进行深度学习时,对标签持有绝对的信赖,标签数量为1的情况下,损失函数越低,模型的输出就越趋近。所以在进行标签平滑时,可以使模型尽可能地逼近真实值。然而,确保输出与标签完全匹配并不是好事,因为数据集上的标签都是经过人为设置的,这其中可能包含了一些噪声。因此为了让模型更加可靠和稳定,需要使用到一个新的方法——标签平滑技术。当一个模型对错误的标签进行过度拟合时,它实际上会遭遇过拟合的问题,而标签平滑技术正是为了减少模型对标签的过度信赖而设计的。如果标签平滑程度足够大的话,那么其对模型的干扰作用可以被削弱。因此,即便标签出现错误,该模型所受的负面影响也会相对较小。 本研究采用的是多分类模型,因此选用了交叉熵损失函数,正如公式(3.2)所揭示的,该网络会为每一类提供置信度的输出。然后,正如公式(3.3)所示的,当标签为y时,交叉熵损失函数会产生输出。如果把这个输入作为一个随机向量来处理,则它可以得到与期望值相同的结果。因此,预期的概率输出可以通过公式来所示:
在对标签进行平滑处理后,对其进行了相应的调整,正如中所描述的那样。在计算中考虑了标签的数量和分类数以及它们之间的关系。在这之中,超参数是关键,而K代表的是类别的总数。对于每个样本,通过计算得到一个新的概率值,即为该样本在每一类中所占比例的估计值。当标签发生变化时,loss的表示与所示相符。通过计算得到了不同类型的概率值,并且将这些结果与传统方法和随机模拟方法得出的结果作比较,发现两种方法都能较好地拟合实际数据。模型输出的概率分布可以通过公式来所示。通过对数据进行分析得到了不同类型的错误概率以及每个错误所占比例和错误率之间的关系,并对模型进行修正。从结果来看,最终的模型并不是完全信任标签,而是选择了部分信任。
可以观察到标签平滑为非标签类型提供了一个微小的值。从另一个视角看,这可以被视为一种正则项的惩罚。由于标签不再是绝对的,这迫使模型去学习该标签的特性,从而使得不同标签类型的特征向量之间的空间距离更大,以满足标签平滑后的需求。
3.4数据集来源与介绍 数据集来自2019年“创青春·交子杯”新网银行高校金融科技挑战赛-AI算法赛道唇语识别。数据集对一组唇语图片序列进行中文单词的预测,给定的数据集是封闭集(类别数量是一定的,测试集中的类别均在训练集中出现过),如下图3-3所示:
图3-3 数据集查看 3.2数据预处理 训练数据的数量总共达到了9996个样本,而测试数据则包含了2504个样本,这些数据被分成了313个不同的类别。在这些类别中,观察到词语只包含两个字或四个字的情况,它们的样本比例为6816比3180。进一步分析发现,在这313个类别中,两字词的类别比例为213,而四字词的类别比例为100。具体到样本分布,发现在这313类中,有311个类别拥有32个样本,而仅有两个类别,“落地生根”和“卓有成效”,有着相对较多的样本,分别达到了22个样本。就样本的图片数量而言,除了存在一些异常数据外,大多数样本的图片数量分布在2张到24张之间。有趣的是,两字词和四字词的图片数量存在着大量的重叠现象,这说明了在数据集中这两种词语的分布具有相似性,分别如下图3-4 ,图3-5所示。
图3-4 两字词和四字词图片数量对比
图3-5 训练集和测试集样本图片数量对比
3.5 唇语特征提取 在选了模型之前需要进行特征提取。一个模型模型能够识别特定说话者在特定时间讲述的单词或短语。如下图3-6一个“请”字的唇形。
图3-6 “请”字唇形 采取了图像裁剪的步骤,以确保最终只关注说话者的嘴唇。利用分类器和 dlib 库来实现这一步骤。通过裁剪,将图像集中的注意力聚焦在了嘴唇部分。然后将所有裁剪后的图像进行排序,以便形成一张合并后的图像。这样做是为了方便后续处理,同时得到了来自不同帧的多个图像。在训练模型方面,使用了 eras 库。通过该库,能够更有效地训练出的模型,以便准确地识别嘴唇的位置和状态。如下图3-7所示不同帧的序列。在处理不同帧的序列时,遵循两项原则:首先,保证裁剪后的嘴巴位于图像的正中央;其次,确保每组裁剪后的图片大小相同,并且嘴唇不会占满整个图像。
友情链接:
Copyright © 2022 世界杯预选赛亚洲区_高达世界杯 - fzxzyy.com All Rights Reserved.