更新:
常用数据集介绍及网站链接:数据集

一、P2Pnet-P2Cnet

——(基于深度学习的唇语识别应用的研究与实现 杨帆 电子科技大学 2018)

(一) 综述

中文唇语识别方案概述:
在中文唇语识别研究中,通过对唇语识别本质和汉语语言发音规则的理解,将中文唇语识别过程划分为两个子问题过程:连续嘴唇图片帧映射为拼音语句的拼音序列识别,即”LipPic to Pinyin”(以下简称 P2P)和拼音序列翻译为汉字语句的汉字序列识别,即“Pinyin to Chinese-Character”(以下简称 P2CC),能够降低唇语识别问题难度。如下图所示中文语句唇语识别过程。

在这里插入图片描述

(二) P2Pnet

(1)VGG-M 卷积神经网络模型

VGG-M 的网络输入是固定的 224224 尺寸大小的 RGB 的 2D 图像,接着便是核大小不一样的卷积层。每一个卷积层,命名为 conv。在第一个卷积层、第二个卷积层以及第五个卷积后面分别接入一个 Max pooling 层,用于保持网络的平移不变性,进行特征提取和更多的保留图像纹理信息,同时减少网络参数防止网络过拟合。经过多个堆叠的 conv 后的输出,会接入一个三层的 全连接(FullyConnection,以下简称 FC)网络。最后的分类输出是一个 softmax 多分类器。VGG-M网络模型如图所示。
在网络模型中,对每一个卷积层(conv)进行的操作并不完全相同。在第一层卷积层中,进行核大小为 7
7 步长为 2 的卷积运算,在第二层卷积层,进行核大小为 55 步长为 2 补偿为 1 的卷积运算,在余下三层卷积层,进行核大小为 33步长为 1 补偿为 1 的卷积运算。同时,对第一、二层卷积进行了 LRN(LocalResponse Normalization,以下简称为 LRN) 操作。LRN表示在网络卷积层进行非线性激活操作后,对输出进行局部响应归一化(Local Response Normalization,以下简称为 LRN)处理。

在这里插入图片描述

(2)Batch Normalization(批度规范化)

批度规范化 BN 是对深度网络中的每一个网络层(主要是卷积层)的输入数据进行规范化处理,即对卷积层的激活函数的输入进行处理,使得线性变换后非线性变换前的数据向量的各个维度符合标准正态分布。具体方法是:将特征数据的每一个维度减去数据同一维度的均值,然后再除以数据同一维度的标准差,因为使用的是批量梯度下降算法,均值和标准差通过当前迭代的批度(Batch)计算得到的。
假设有一个 d 维的输入向量X = x1,x2,x3,…xn每一维的数据使用 BatchNormalization 进行数据规范化处理(即使之服从标准正态分布),见公式:
在这里插入图片描述
在网络训练中,公式(4-1)容易造成梯度消散问题。通过对公式(4-1)的结果)进行放大和缩小操作,在一定程度能够缓解网络梯度消散。其计算方法见公式(4-2):

在这里插入图片描述
反向传播过程中,通过梯度下降算法进行学习、更新。批度规范化网络层前向传导过程见公式:

在这里插入图片描述

(3)RNN 网络

循环神经网络 RNN、长短时记忆网络 LSTM 和门控循环单元 GRU 均是自然语言处理中常见的深度学习模型。普通循环神经网络 RNN 能够解决短期时间依赖问题,而一旦问题信息时间步数变长,RNN 性能将会失效。为此,LSTM 应运而上,通过三个门–输入门、遗忘门和输出门的控制来细胞的状态,以达到解决长期的依赖关系。同时,也诞生了许多 LSTM 的变体网络,GRU是其中使用较多的一个网络单元。GRU 通过将遗忘门和输入门结合成一个更新门,且将细胞状态和隐藏状态合并在一起,减少了对门的控制。

(4)Connectionist Temporal Classification(连接主义时间分类)

Connectionist Temporal Classification(简称 CTC)是一种通用的损失函数,主要训练解决未知输入序列和输出序列对齐的网络系统。CTC 考虑了输出序列相对于输入序列的时间扭曲,但并没有对可能的重新排序进行建模。因此,CTC 广泛用于语音识别研究。给定一个长度为T 的输入序列 x ,CTC 假设一个长度为T 的字符序列c 的概率如公式:
在这里插入图片描述
其中,假定每个时步的字符输出在条件上是独立的,Ct表示第t 时步的输出字符, P(Ct |x)表示输出序列在第t 时步时输出字符Ct 的概率。CTC 假定真实输出序列长度为,其中t <= T。为了从长度为T 的字符序列中构建比更短的输出序列,CTC 引入空格和删除邻近相同字符的操作,定义一种多对一的映射,例如
在这里插入图片描述
因此,长度为t的输出序列 z 的概率如公式:
在这里插入图片描述
最终,CTC 的损失函数定义如公式:
在这里插入图片描述
其中,S 表示网络模型的数据集, (x,z)表示 x 表示一个输入数据, z 表示真实样本标签。

(5)拼音序列识别网络框架

5.1 ConvNet 模型结构

原 VGG-M 网络中,前两层卷积层 conv1和 conv2 的卷积核大小分别为 7x7 和 5x5。为了保留更多的图像特征,在改后的网络 ConvNet 中选取每一层卷积层的核大小为 3x3。在卷积神经网络中,池化操作不仅能够简化网络复杂度,还能够进行特征压缩,提取主要特征。而为了保存更多的图像特征信息,所以在第三卷积层 conv3使用 Max Pooling,而不是在第二卷积层 conv2 使用。此外,相比局部响应归一化LRN 数据处理方法,批度规范化 BN 能够使得网络拥有更高的学习率、加速网络训练以及防止过拟合等优点,所以对每一卷积层均使用BN操作,同时,取消dropout操作。同时,删除最后作为分类的全连接层,形成新的网络ConvNet,并在拼音序列识别中充当图像特征提取器的角色。

5.2 P2P网络模型

在这里插入图片描述

其模型的相关映射关系如下公式所示:

在这里插入图片描述
公式(4-11)表示对 ConvNet 网络提取的嘴唇图片Xi 的特征向量Yi 进行降维,生成维度为 d 特征向量
在这里插入图片描述
LSTM 单元的运算见公式(4-12)
在这里插入图片描述
整个 P2P 网络结构的损失函数如公式(4-13):

在这里插入图片描述

(三)P2CCnet

(1) Encoder-Decoder 模型

若集合 V 表示一个词汇集,对于一个由词汇 V 中的词构成的序列

在这里插入图片描述
则统计语言模型赋予这个序列一个概率 P(S),来衡量S 符合自然语言的语法和语义规则的置信度。在形式化上,统计语言模型主要是为一个长度为 N 的字符串确定一个概率分布 在这里插入图片描述
表示该字符串存在的可能性,其中,W1 到Wn 以此为这个字符串中的各个词。一般在实际求解过程中,通常采用以下公式(5-1)计算其概率值:
在这里插入图片描述
从语料中统计 N 个词同时出现的次数得到各个词出现的概率,整句的概率计算如公式(5-2):
在这里插入图片描述
在深度学习中,Encoder-Decoder 框架是一种概念模型,其中,Encoder 部分将输入序列转化成一个固定的长度向量,即编码;Decoder 部分用于将之前生成的固定向量再转化成输出序列。如下图所示 Encoder-Decoder 框架示例。

在这里插入图片描述
在 RNN 网络中,t 时刻的隐藏状态是由上一个时刻t1的隐藏状态和输入数据Xt-1 共同决定的,见公式(5-3):
在这里插入图片描述
在 RNN 组成的 Encoder 网络中,实际上的语义编码往往用最后时刻的隐藏状态代替,见公式(5-4):
在这里插入图片描述

在这里插入图片描述
Decoder 网络输出序列为Y = {Y1,Y2,Y3,…Yn} 的联合概率见公式(5-5):
在这里插入图片描述

(2)汉字序列识别网络

在这里插入图片描述
最终,Encoder 模块的目标函数如下公式(5-3):
在这里插入图片描述
Decoder模块的目标函数如公式(5-4):

在这里插入图片描述
在 P2CC 序列对序列网络中,设定 Fe() 和 Fd() 分别表示 Encoder 和 Decoder模块的映射关系 如公式(5-5)所示:

在这里插入图片描述

二、基于 HMM 的唇读识别

——(基于 HMM 与深度学习的唇读识别研究 宋文明 大连理工大学 2017)

(一)算法设计

(1)数据处理

将采集到的视频转换为图像序列。转换帧频为 25fps,由基于 OpenCV 的 C++程序完成转换。在每一个视频转换成为图像序列后,将每帧图像逐一进行关键点检测并记录检测结果,该工作部分通过 Face++完成。

在这里插入图片描述
在这里插入图片描述
唇语识别系统所使用特征包含 6 个:外唇高度 Ho、内唇高度 Hi、唇宽度 W 以及三者
随时间变化的一阶导数 ho,hi,w。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
六个特征曲线如图 3.3、图 3.4 所示,特征值如图 3.5 所示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
根据以上公式所需,从检测数据中找到“mouth_upper_lip_top”、“mouth_upper_lip_bottom”、“mouth_lower_lip_top”、“mouth_lower_lip_bottom”、
“mouth_left_corner”、“mouth_right_corner”等 6 项,将其从每帧图像所得数据中提取出来,形成相应的坐标序列。
最终,模型训练及测试所用的数据为六维特征向量 F:
在这里插入图片描述

(2)模型设定

对于任意词汇,其通过口型表达的过程,可划分成若干时间片,每个时间片上的表达对应于 HMM 的一个观察状态,整个词汇表达的完整过程对应一个 HMM 的观察序列。如图所示:

在这里插入图片描述
在这里插入图片描述
每一个隐藏状态对应着一个视素(viseme),视素这个概念是参考传统的语音识别中将单词分解为音素(phoneme)的做法而提出的,它指唇形特征在一个单词的发音过程中用于识别的最小可区分单位。根据经验,此处设置 HMM 的隐藏状态数为 5,如图3.7 所示。视素同样需要使用数学模型进行拟合。传统的语音识别中,大多采用高斯混合模型 Gaussian Mixture Model,GMM对音素进行拟合。借鉴这一成熟技术,本文同样使用 GMM 对视素进行拟合;除此之外,本文提出另外一套方案,使用深度学习中的深度置信网络代替 GMM 进行拟合。

(3)实验策略

1.模型训练

训练前对全部 HMM 统一初始化,设置其隐藏状态数为 5,具体如以下公式:
在这里插入图片描述

在这里插入图片描述

2.测试识别

在这里插入图片描述

三、基于 D3D 的唇语识别算法研究

——(基于深度学习的唇语识别数据库构建和算法研究 杨明敏 华中科技大学 2019)

(一)唇语识别数据集 LRW-1000 的构建

(1)唇语识别数据集的基本要求

数据集基本要求主要如下:

  1. 数据源的视频图像中,要尽可能的包含多的场景、多种类型的说话人,用来保证训练得到的模型具有较好的泛化能力。
  2. 数据源尽量包含不同的分辨率类型,因为实际场景中,由于摄像头质量和说话人远近会带来分辨率差异,单一的分辨率图像无法保证模型的鲁棒性。
  3. 数据源必须包含清晰的语音信息,因为唇语识别的目标是说话内容文本,这部分内容主要通过语音识别技术进行获取,如果不能保证语音信息的准确性,文本内容的准确性就得不到保障,模型就不能正确工作。
  4. 最终得到的数据源,图像序列皆为完整的唇部序列,没有大的跳动且图像单帧错误率不能超过 3%,音频文本内容的错误率不超过 1%,音视频的平均同步误差不得超过 1 帧。此处的三个评估标准分别按照如下的方式计算:图像单帧错误率是指不包含正确唇部图像的帧数占整个数据集样本帧数的比例;文本内容的错误率是指错误的字符数占所有字符数的比例;音视频的同步平均误差是指所有样本偏移的帧数占整个数据集样本帧数的比例。

(2)LRW-1000 的质量评估

  1. 包含超过 2000 的说话人和 80 多种真实场景,符合 3.1 节的标准 1,它也是目前所有开源词级数据集中说话人规模和场景规模最大的。
  2. 源视频包含 2 种分辨率的视频,且人脸的大小覆盖范围极大,最终的唇语图像大小在 20-320 像素之间,符合标准 2。
  3. 源数据中的语音信息都经过算法过滤和人工校验,所有保留的样本中不包含任何噪音的比例超过 98%,符合标准 3。
  4. 所有的样本皆为对应的唇语图像。序列中包含错误唇部图像的样本低于0.5%,音频本文经过校验与说话的内容完全一致,音频和视频 95%精确同步,剩下的误差在 1 帧以内,符合标准4。
    在这里插入图片描述

(4)LRW-1000 的信息统计

  1. LRW-1000 数据集的构建包含 51 档电视节目的 840 个视频,原视频总长度 508小时,单个视频长度由 20 分钟到 2 小时不等,皆为实事报道和新闻类节目。训练集、验证集和测试集按照 8/1/1 的比例划分,且为了验证模型的泛化能力,在划分的时候避免在训练集与验证集和测试集中出现相同的电视节目。最终,挑选了 44 个节目共计 634 视频作为训练集,总时长超过 415 个小时;其中 3 个节目的 122 个视频,共计总时长 48.95 小时,作为验证集;剩下的 4 个节目共计 84 个视频,总时长约 43.4小时作为测试集。
  2. LRW-1000 一期是一个单词级别(Word Level)的数据库,有效视频长度约 60小时,包含超过 745187 个视频片段(样本个数),共计 1000 个类别(根据句子的分词结果进行类别划分。标签诸如:的、中国、中共中央等长短不一的短语),每个类别平均有 750 个样本。每个样本的视频平均长度 0.3 秒,由 0.02 秒至 1.01 秒不等。
  3. LRW-1000 不同于其他数据库的另一个点就是唇部图像的分辨率波动很大(通过表 3.1 可以看出,绝大部分主流数据集都是在限定的譬如实验室或者车内的环境下通过固定的摄像机录制,分辨率基本相等),这使得它更贴近实际场景,也是它的难点之一。
  4. LRW-1000 包含了超过 2000 个说话人,这些说话人大多是主持人、嘉宾、室外被采访者等等,在年龄、脸部姿态、性别、口音和说话习惯上都有很大的差异性,这也是 LRW-1000 数据集的第二点难点所在。
  5. LRW-1000 相对于大部分开源的数据集,具有样本规模更大、类别更多、场景更复杂、说话人更多样的特点。
    在这里插入图片描述

(二)基于 D3D 的唇语识别算法研究

(1)D3D 唇语识别模型

1)D3D 的提出动机

从唇语识别的难点出发,针对当前主流算法的不足,本文提出一个新的算法模型 D3D,它主要通过:

  1. 结合 3D 卷积和 RNN 对不同时序依赖的建模能力,较好解决了难点序列长度的差异对模型长短时依赖的要求
  2. 提出了新的 residual-attention,通过注意力机制来让网络更好的关注和任务相关的信息从而忽略掉背景等噪声进而较好的解决了由于唇部的非刚性,不同人的唇部动态会有很大的差异性
  3. 通过 Dense-Connection 利用不同 scale 的信息从而较好的解决了唇部分辨率的差异,由于场景的远近导致摄像机捕捉到的画面分辨率不一致,唇部图像分辨率的差异带来的学习难度上的提升。
2)D3D 前端模型结构

在 3D 卷积(Convolution 3D, C3D)提出之前,RNN 是通用的时序建模结构,LSTM/GRU 通过门控机制,很好的解决了长时依赖导致的梯度弥散问题。在 C3D 提出之后,通过 CNN 进行时序建模的研究越来越多,证明了 CNN 在的时序建模能力甚至要优于 RNN,并且相对于 LSTM/GRU 而言,C3D 能够更好的捕获短时依赖。
本课题从唇语识别的难点出发,结合 DenseNet 和 C3D 的优势,提出了新的前端结构 D3D,其结构如图所示。
在这里插入图片描述
网络的核心部分参照了 DenseNet 的网络结构,这里将所有的空间卷积修改为时空卷积,让网络在前期同时学习图像特征和短时的时序依赖。每个 DenseBlock 包含若干个 DenseLayer,每个 DenseLayer 包含两层 3D 卷积,第一个卷积采用 1/1/1 的卷积核,目的是用来融合上一层的跨层特征,同时压缩特征通道数,减少计算量;第二个卷积采用常规的 3/3/3,用来学习特征上的短时依赖。

在这里插入图片描述

3)D3D 后端模型结构

D3D 的后端采用了两种结构,分别在不同的训练阶段使用。因为诸如 D3D 这样的深层网络,直接端到端(end-to-end)训练会让模型陷入局部最优,不能学习到一个较好的图像特征表示。第一阶段的后端(后文简称 TemporalConv)和第二阶段的后端(后文简称 BackendGRU 与 TCN)结构如图所示。

在这里插入图片描述

(2)Residual-Attention 的模块结构

开放场景下的唇语识别,会包含各种类型的复杂背景,这个背景对于唇语识别任务来说是极大的干扰和不利因素,如果网络过多的关注于这类噪声,会导致模型性能的急速下降,为了让网络更好的关注和任务相关的信息,从而忽略复杂场景内无关信息的干扰,本课题提出来了一个新的 residual-attention 机制,它是传统注意力机制在 CNN 领域的一个新的应用。(注意力机制的提出,主要是为了解决 Encoder-Decoder 结构中,长序列特征压缩导致的信息损失问题

在这里插入图片描述
residual-attention 机制是注意力机制在 CNN 领域的应用,为了适应 CNN 的结构,相对于传统的 attention 在结构上做了一些调整,并取得了很好的效果。一言以蔽之,就是要求解一个经过 softmax 的归一化 mask,用该 mask 去告诉网络应该关注特征图的哪一部分。而这个求解 ask 的过程即是 attention 的过程

在这里插入图片描述
residual-attention 不同于常规 attention 的地方在于:

  1. 它通过降采样/上采样的方式,配合 skip-connection,能让网络从不同 scale的特征去获取最需要关注的特征图上的空间位置点。
  2. 采用残差连接的方式,避免因为归一化导致的权重小于 1,从而使得某些部分的特征响应减弱。
  3. 采用 sigmoid 代替 softmax,因为特征图中可能有多处需要关注的地方,且距离较远的特征图像素点可能没有太多的关联,如果使用 softmax 的,就必须进一步抑制较小权重,使得某些本应该被关注的地方的响应值被进一步削弱。

四、基于卷积神经网络的唇语识别

——(基于视觉信息和深度学习的中文唇语数据集构建与识别 胡杨 华中科技大学 2017)

(一)汉字转音素

(1)汉字转拼音

中文简体汉字一般使用的是 GB2312 编码,采用的是 16 位编码方式,其中简体中文的编码范围是从 B0A1 开始,到 F7FE 结束。如果将该编码的每 8 位用 0—256的之间的十进制数字来表示,简体中文的范围就是[176|161]到[247|254],这样的话,对于其中的每一个汉字,我们都可以使用两个值来表示它,如“啊”就是[176|161],“我”则是[206|210]。
通过上述方法,可以通过一个矩形范围内的二维坐标来对每一个汉字进行定位。这时,我们可以先建立一个拼音音节表。这个表是一个一维的表,表里面是诸如"a", “ai”, “an”, “ang”, “ao”, “ba”, “bai”, “ban”, “bang”, “bao”, “bei”, “ben”, “beng”, “bi”, “bian”, “biao”, “bie”, “bin”, “bing”, "bo"等的拼音音节,里面覆盖了所有的音节组合情况。然后,我们通过建立一个与汉字二维坐标对应的二维数组,接着将汉字对应的音节的索引值存放进二维数组中。这样就可以完成简单的汉字转拼音了。举个例子,输入汉字“我”,它的二维坐标[206|210],该索引在二维数组中的值为”wo”,这样就得到了“我”的拼音。

(2)拼音转音素

在这里插入图片描述

(二)端到端的唇语识别网络设计

以 LSTM 为核心,本节将构建唇语识别网络,在网络的输入端,人脸图像首先要经过前面的卷积神经网络。由最后一层神经网络所获取的特征信息将作为输入传到 LSTM 层,从而可以获取序列的时域信息。最后一层 LSTM 层所获得的最后的特征向量在经过多层感知机后将通过一个 softmax 分类器,从而可以生成相应的标签信息。下图是网络结构的大体示意图。
在这里插入图片描述
作为最简化版的时序网络,该网络能读取唇部序列图片,解码出对应的中文的标签,但也要求网络训练时的训练数据标签信息严格对齐,这对于自动收集的任意长度的中文数据集来说,显然是很难做到的事情,所以为了解决变长的唇部序列图片和变长的中文标签问题,本文引入了联结主义时间分类(CTC)来对输入的序列偏和标签进行有效的编码。

五、基于Faster R-CNN,LSTM的唇语识别

——(基于深度学习的唇语识别研究 吴伟 哈尔滨理工大学 2019)

(一)算法概述

一般一个句子在自然语言处理过程中,并不会对一个单独的单词来进行识别处理,其每个单词一般都与在该句子中的前后单词有关系,即它们都有上下文的语义关联存在。不同于自然语言的处理,本文中的唇语识别研究不是句子级的,而是单独的单词或者一个短语,或者一串数字,所以他们并不存在上下文语义的关联。因此本文中,首先会将整个唇语视频序列分为若干个小的子序列,接着再将这些子序列输入到 Faster R-CNN 中进行处理。如下图所示将卷积神经网络 LSTM 相结合的唇语识别方法的结构。从图中可以看到,将 CNN和 LSTM 结合后的那部分称为深度神经网络,在该网络中,CNN 为 Faster R-CNN,其主要是用来提取唇语视频中子序列的唇部特征,然后将其特征输入到 LSTM 网络中,通过对提取到的特征进行特征编码,提取时序特征从而识别出语义信息,最后再使用 Softmax 来对唇语视频中说话者说话内容进行预判。
在这里插入图片描述

(二)基于 Faster R-CNN 的关键点检测

随着深度学习技术的发展,Faster R-CNN 在人脸检测领域取得了很好的效果。又因为 AlexNet 网络的提出推动了深度学习的进一步的发展,并且在ILSVRC12 比赛上,该网络模型获得了冠军,所以本章使用 AlexNet 网络来进行唇部关键点的检测。如下图所示为 AlexNet 结构,其中它的卷积层共有五层,该网络的最后三层为全连接层。
在这里插入图片描述
在进行人脸关键点检测中,训练网络模型时,首先根据检测到的人脸区域信息 {x,y,z,h} ,对人脸关键点的坐标进行规范化,如公式(4-8)所示:

在这里插入图片描述

其中检测到的人脸中心区域的坐标为 (x,y) ,人脸的宽和高分别是 w 和 h 。

(三)基于 LSTM 的唇语识别

在经过 Faster R-CNN 检测到唇部关键点过后,并通过关键点检测模型对检测到的关键点进行提取特征向量 (x1,x2,x3,…,xn)再将其输入到 LSTM 网络中,输出的则是唇语视频中的内容 y 。

LSTM 网络最早是由 S.Hochreiter 等人提出。当输入tx ,并且已知前一个隐藏层状态t−1h 以及在 t 时刻的记忆状态向量tc ,可以计算得到当前输出向量th ,计算如下:

在这里插入图片描述

在使用该模型时,每个序列输出的条件概率都对应着一个输入序列,其概率计算如式(4-15)与(4-16)所示:
在这里插入图片描述
如下图所示,为采用 LSTM 进行识别的流程图。训练阶段将卷积神经网络的学习率设为 0,并且将使用 Faster R-CNN 检测到的关键点提取出的特征向量输入到 LSTM 网络中,而 LSTM 的输出则为预测结果。其损失函数定义如式(4-17)所示:

在这里插入图片描述

在这里插入图片描述
在使用随机梯度下降法进行误差反向传播过程中,会出现**梯度弥散(梯度消失)**等问题,因此使用 LSTM 能够很好的解决该问题,并且能很清晰的记录下中间过程等信息,从而得到的隐藏层状态能够最优。最后,针对在训练过程中出现过拟合的问题,在 LSTM 网络的最后一层引入了 dropout 层,以此来提高识别效果。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐