唇语识别主要通过观察说话者嘴唇的运动变化序列从而识别出相应的文本信息, 其研究内容涉及到模式识别、图像处理、语音识别及自然语言处理等多个领域, 具有广阔的应用场景.例如在高噪环境中, 由于说话者音频受到环境的干扰, 导致识别率降低, 而视觉信息相对很稳定, 因此, 通过唇语识别利用视觉信息从而能够极大地辅助提高语音识别的准确率.在非噪声环境下, 当进行语音识别时, 辅助观察说话者的脸部表情变化、嘴唇运动以及人体肢体动作等信息, 能够更加准确地理解对方所要表达的内容.此外, 嘴唇同虹膜、鼻子等一样, 作为人脸的一项重要生物特征, 在人脸身份检测中发挥了重要作用.例如在人脸活体检测应用中, 通过核查说话者嘴唇运动, 可进一步提高活体识别的安全性, 从而排除了传统人脸识别中使用其他工具造假的可能.此外, 唇语识别可与手语识别相互依存, 一起促进聋哑人在日常生活中的正常交流.
目前为止, 唇语识别研究已经取得了一定的成果.然而, 由于日常应用场景及条件的多样化和复杂化, 使得唇语识别技术在实际应用中依然面临巨大的挑战:(1)人的嘴唇是一个三维的非刚性物体, 不同的说话者对象、不同的语句内容, 都会使得人的嘴唇运动在视频中显示不同的变化, 这给识别带来了很大的困扰; (2)光源照射和人脸角度的不同等因素, 使得人的嘴唇在视频中有不同的形态, 从而对识别率造成很大的影响.
近几年来, 深度学习在各个领域取得的显著成果, 也促进了应用神经网络来解决唇语识别的研究.随着技术的成熟, 唇语识别率也在不断提高, 例如DeepMind的WLAS[1]和LipNet[2].然而, 已有的这些研究都是基于单词分类或者英文句子的识别, 与中文唇语识别的内容截然不同.汉语与英语不同:英语是由26个字母组成的字母语言, 所有的单词都是由字母拼读而成, 通过拼读可以准确地确定某个单词; 而汉语不同, 汉语的发音是由23个元音字母和24个辅音字母组成, 去掉一些不可能的拼读组合, 再加上4种不同的音调, 拼音总共大约有1 000种, 然而汉语中的汉字总数超过90 000个, 其中有3 000个是经常使用的, 也就是说, 每个拼音平均对应3~90个汉字.据统计, 汉语是信息熵含量最大的语言.因此, 从汉语这种高模糊性语言中提取具有显著区别的特征信息, 是中文唇语识别中的一个重要并且富有挑战性的任务.
本文根据中文的特点, 首次提出了句子级别的中文唇语识别模型ChLipNet, 该模型由两个子模块组成, 即嘴唇图片序列映射到拼音字符序列的拼音序列识别模块和拼音字符序列转换为汉字序列的汉字序列识别模块, 如图 1所示.其中,
|
Fig. 1 Module division of Chinese lip reading recongnition framework 图 1 中文唇语识别框架的模块划分 |
(1) 拼音序列识别主要利用卷积神经网络Convolutional Neural Network(CNN)作为嘴唇图片帧序列的特征提取器, 然后, 使用循环神经网络Recurrent Neural Network(RNN)理解并分析提取的特征, 最后利用Connectionist Temporal Classification(CTC)损失函数匹配输入输出序列.该过程简称为P2P过程, 生成的拼音序列识别网络简称为P2P网络;
(2) 汉字序列识别是一个基于语言模型的Encoder-Decoder网络框架, 这个过程简称为P2CC过程.P2CC网络的输入是拼音字符序列, 其中Encoder网络负责对拼音字符序列进行编码, 而Decoder网络则对Encoder的输出进行解码, 从而生成汉语句子.
当P2P和P2CC两个子模块分别训练好后, 把它们联合在一起组成中文唇语识别网络ChLipNet并进行最终的端到端训练.
由于现有的唇语数据集都是针对字符、单词、数字或者短语的, 且都是关于非中文的.为此, 我们采集了6个月的CCTV新闻联播视频及其对应的文稿, 使用半自动化技术, 通过视频剪辑、文本和时间戳生成以及嘴唇检测等操作生成包含14 975条中文句子及其对应嘴唇序列的中文唇语数据集CCTVDS.此外, 在汉字序列识别P2CC的预训练过程中, 还额外统计了近30个月的新闻联播文稿内容作为辅助数据.
1 相关工作Petajan等人在1984年最初提出了唇语识别系统[3], 该系统把单个词作为最小的识别单元, 通过计算输入的嘴唇图片序列, 得到能够表示的特征向量, 并与数据集中所有词的特征模板进行相似度匹配, 最后将相似度最高的词作为预测结果并输出.之后, 在1988年, Petajan等人在原唇语识别系统上引入矢量化和动态时间规整等算法, 主要用于解决训练和识别过程中说话人语速变化较大的问题, 从而对唇语识别系统进行改进[4], 极大地提高了唇语识别的正确率.
近几年也出现了很多尝试用深度学习解决唇语识别的工作, 例如:
1) Noda[5]利用VGGNet对人嘴唇图片进行单词和短语的预训练, 然后通过RNN网络, 可分别实现44.5%短语识别和56.0%单词分类准确率;
2) Chung等人提出了利用VGG时空卷积神经网络在BBCTV数据集上进行单词分类[6], 并再次提出了一种用于学习嘴部特征的视听最大边缘匹配模型[7], 并将其作为一个LSTM的输入, 从而用于OuluVS2数据集上的10个短语的分类;
3) Wand等人[8]在2016年将LSTM递归神经网络引入用于唇语识别的研究, 虽然该研究没有包含句子序列的预测和说话者的独立性, 但在GRID语料库上, 模型识别讲话人的准确率可达79.6%;
4) Chung等人在2017年提出由卷积神经网络和循环神经网络组成的WLAS模型, 其在含有1万条样本句子的LRC数据集上可取得46.8%的句子准确率, 是目前句子级别的英语唇语识别中较好的成绩.
2 汉语发音规则及中文特征汉语是一种非形态语言.汉语中的词语没有严格意义的形态变化, 只有音节符号.汉语中的音节是由声母、韵母和声调按照拼音规则组合而成, 其中, 声母有23个, 韵母有24个, 另外还包括4种声调, 见表 1.因此, 粗略计算得音节种类不超过2 208个(包括不合理拼音).
| Table 1 Classification of initial, vowel and intonation mark 表 1 声母、韵母以及声调分类 |
自1955年开始, 汉语拼音被用作是辅助汉字发音的一种工具.它和英语的音标类似, 但又大不相同.其中, 声母又叫做辅音字母, 用在韵母之前, 并跟韵母一起构成完整的音节.辅音的主要特点是发音时气流在口腔中会受到各种不同的阻碍, 因此可以说, 声母发音的过程也就是气流受阻和克服阻碍的过程.除声母、音调之外的部分, 就是韵母, 包括韵头、韵腹和韵尾这3部分.音节是人类听觉系统能感受到的最小语音单位, 在汉语中, 单个汉字就是单个音节(但汉字不是音节文字).然而, 在1994年出版的《中华字海》中, 约有87 019个汉字(其中重复字320个), 因此汉字数量空间是远远大于音节数量空间的(最多2 208维).单个汉字具有丰富的信息和意义, 例如, “中”可解释为“里面”, 或者“适于”“合适”等含义.当汉字与汉字通过语言规则相互组合成词、短语或者句子时, 才有具体含义, 例如“中间”“中计”等.如图 2为“中国人”短语示例, 其中, 绿色框代表拼音序列, 黄色框代表声调, 蓝色虚线框代表单个汉字.
|
Fig. 2 Examples of Chinese, Pinyin, Hanzi and intonation mark 图 2 汉语、拼音、汉字和音调的示例 |
据统计, 汉字中超过85%的是同音字, 即:同一个发音(嘴型)可至少对应2个, 至多对应120个汉字.这也是中文比其他语言更难识别的一个重要原因之一.如表 2所示为部分音节和对应的常见汉字, 其中的数字表示该音节可对应不同汉字的总个数.
| Table 2 List of syllables and the corresponding common Hanzi 表 2 音节及对应常见汉字示例 |
3 ChLipNet整体框架 3.1 拼音序列识别模型(P2P)
与大多数图像识别任务不同, 拼音序列识别中需要网络能够捕捉图像最细微的特征, 尤其是嘴唇图片间的运动变化.图片到拼音的拼音序列识别P2P模型的结构如图 3所示.
|
Fig. 3 Model architecture of Pinyin-to-Hanzirecognition (P2P) 图 3 图片到拼音识别(P2P)网络模型 |
在P2P网络模型中, 嘴唇图片先转换成灰度图, 其中, 每隔两帧的连续5张120×120灰度图片作为输入, 因此, 若一个样本有n张嘴唇图片, 则输入长度为
| ${y_i} = CN{N_{{\theta _c}}}({x_i})$ | (1) |
其中,
| $ v_{i}=K\left[y_{i}\right]+b $ | (2) |
其中, K是维度为d×512的矩阵, d是LSTM单元中embedding空间的大小, b是维度为d的误差参数.
最终, 连续的特征向量vi序列作为n-LSTM的输入, 通过n-LSTM输出一个维度为d'的向量
中, 其LSTM单元的运算过程见公式(3):
| $\begin{gathered} ({i_i}, {f_i}, {o_i}, {g_i}) = {W_x}{v_i} + {W_h}{h_{i - 1}} + {b_{lstm}} \\ \left[ {\begin{array}{*{20}{c}} {{{\bar l}_i}} \\ {{{\bar f}_i}} \\ {{{\bar o}_i}} \\ {{{\bar g}_i}} \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} {sigm({i_i})} \\ {sigm({f_i})} \\ {sigm({o_i})} \\ {\tanh ({g_i})} \end{array}} \right] \\ {c_i} = {{\bar f}_i} \times {c_{i - 1}} + {{\bar l}_i} \times {{\bar g}_i} \\ {h_i} = {o_i} \times \tanh ({c_i}) \\ \end{gathered} $ | (3) |
其中, blstm表示误差参数矩阵, 维度为4d'; Wx和Wh分别表示LSTM单元中与输入x和隐藏状态h有关的参数矩阵, 维度为4d×d';
| $L(S) = - \ln \prod\nolimits_{(X, Z) \in S} {P(Z|X)} = - \sum\nolimits_{(X, Z) \in S} {\ln P(Z|X)} $ | (4) |
其中, S表示整个数据集, (X, Z)为数据样本, Z为输入图片对应的真实拼音字符序列标签, P(Z|X)为输入X得到Z的概率模型.
3.1.1 Connectionist Temporal Classification (CTC)CTC[9]是一种通用的损失函数, 主要用于解决未知输入序列和输出序列对齐的网络系统.由于CTC损失函数比传统的隐马尔科夫模型等具有更好的性能, 因此在P2P模型中, 本文我们采用CTC损失函数来实现输入图片和输出拼音序列的自动划分与对齐.给定一个拼音序列的分布并且用空白字符进行增强, 那么CTC通过最大
化所有与之等价的序列来定义生成该序列的可能性.假设拼音序列的标签为
| $P(y|x) = \sum\nolimits_{v \in {\Gamma ^{ - 1}}(y){\rm{ s}}{\rm{.t}}{\rm{. }}|v| = step} {P({v_1}, ..., {v_k}|x)} $ | (5) |
其中, step是序列模型中步长.例如, 假设step=3, CTC计算‘qi’的概率为:p(qqi)+p(qii)+p(-qi)+p(q-i)+(qi-).
3.2 汉字序列识别模型(P2CC) 3.2.1 P2CC辅助数据在P2CC模型中, 训练数据为拼音字符序列和对应的汉字语句.在CCTVDS数据集中, 共有14 975个样本.为了克服汉语的语义模糊性, 同时保证辅助数据跟原始样本同源, 从而减少冗余信息, 加速模型的训练, 我们在CCTV官网上额外下载了近30个月的新闻文稿, 并生成对应的拼音序列以对P2CC进行预训练.最后训练中, 删除新增数据集中过短(字数少于4)和过长(字数大于25)的句子, 得到的辅助数据共约304 223条拼音汉字样本.
3.2.2 Encoder-Decoder模型自从Bengio提出使用神经网络来训练语言模型[10]后, 越来越多的基于语言模型的网络框架[11-13]被用来解决自然语言处理中的各种问题.其中, Encoder-Decoder框架[14]被广泛应用.
在一个Encoder-Decoder框架中, Encoder和Decoder可选用循环神经网络RNN(LSTM或者GRU)的组合, 如图 4所示为LSTM组成的Encoder-Decoder模型示例.
|
Fig. 4 Example of Encoder-Decoder model composed of LSTM 图 4 LSTM组成的Encoder-Decoder网络示例 |
在RNN网络中, t时刻的隐藏状态是由上一个时刻t-1的隐藏状态和输入数据Xt共同决定的, 见公式(6):
| $ {{h}_{t}}=f\left( {{h}_{t-1}}, {{X}_{t}} \right) $ | (6) |
在RNN组成的Encoder网络中, 实际上的语义编码往往用最后时刻的隐藏状态代替, 见公式(7):
| $ C={{h}_{T}} $ | (7) |
在图 4中, 若Encoder的输入是X={X1, X2, X3, …, Xm}序列, 得到Encoder的输出为C=hm.Decoder是通过当前已经输出的序列Y1, Y2, …, Yt-1来预测当前Yt的输出, 那么Decoder输出序列为Y={Y1, Y2, Y3, …, Yn}的联合概率见公式(8):
| $\left. \begin{gathered} P({Y_t}|\{ {Y_1}, {Y_2}, ..., {Y_{t - 1}}\} , C) = g({Y_{t - 1}}, {h_t}, C) \\ P(Y) = \prod\nolimits_{t = 1}^n {P({Y_t}|\{ {Y_1}, {Y_2}, ..., {Y_{t - 1}}\} , C)} \\ \end{gathered} \right\}$ | (8) |
其中, g(·)是一种多层网络函数, 用于计算输出Yt的概率, 是一种非线性映射.
3.2.3 Sequence-to-sequence模型基于对语言模型框架Encoder-Decoder的理解, 我们构建了一个将发音(拼音)字符序列转化为汉字序列的模型P2CC, 如图 5所示.
|
Fig. 5 Model architecture of Pinyin-to-Hanzi recognition (P2CC) 图 5 拼音到汉字识别(P2CC)网络模型 |
在P2CC模型中, 每一个RNN单元表示2层GRU单元连接(后面的实验分析表明, 2个GRU效果最好).在Encoder模块的训练阶段, 输入是拼音字符序列C=C1, C2, …, Cl, Ci表示拼音序列中第i个字母, 为26维的向量. Encoder先将输入序列通过Embedding(Em单元)进行升维, 然后输入给RNN, 最后, 输出序列为O=O1, O2, …, O.第i时刻的输出向量Oi用于参数化下一个时刻输入Ci+1的预测分布Pr(Ci+1|Oi).
Encoder模块的目标函数LEncoder(C)如下公式(9):
| ${L_{Encoder}}(C) = \max \sum\nolimits_{i = 0}^{l - 1} {\log \Pr ({C_{i + 1}}|C \leqslant i)} $ | (9) |
其中, C表示拼音语句序列的训练数据.
在Decoder模块的训练阶段, 输入是汉字序列
| ${L_{Decoder}}(Y) = \max \sum\nolimits_{i = 0}^{n - 1} {\log \Pr ({y_{i + 1}}|y \leqslant i)} $ | (10) |
当Encoder和Decoder都训练收敛之后, 将Encoder的输出作为Decoder的输入, 从而进行拼音到汉字模型的整体训练.设定Fe(·)和Fd(·)分别表示已经预训练好的Encoder和Decoder模型, 则整个P2CC模型的映射关系如公式(11)所示:
| $\left. \begin{gathered} m_i^{(e)} = M_{ \cdot , {c_i}}^{(e)}, \\ h_i^{(e)} = {F^e}(m_i^{(e)}, h_{i - 1}^{(e)}), \\ m_i^d = M_{ \cdot , {y_{i - 1}}}^{(d)}, \\ h_i^d = {F^d}(m_i^d, h_{i - 1}^{(d)}), \\ p_i^d = soft\max ({W_{he}}h_i^d + {b_e}) \\ \end{gathered} \right\}$ | (11) |
其中,
通过对分别已经收敛的拼音序列识别模型P2P和汉字序列识别模型P2CC进行整体端到端的优化, 从而构建中文唇语识别的整体架构ChLipNet.在ChLipNet中, P2P模型中的CTC损失函数被移除, 即P2P产生的输出序列直接依次作为P2CC模块的输入序列.中文唇语识别整体网络模型ChLipNet如图 6所示.
|
Fig. 6 Chinese lip reading architecture of ChLipNet 图 6 中文唇语识别模型ChLipNet |
在ChLipNet网络中, 输入是一个句子对应的嘴唇图片, 相当于普通网络的一个mini-batch输入.由于句子长度是可变的, 所以ChLipNet是一个动态的模型.
4 数据集 4.1 已有数据集介绍目前, 公开常用的唇语识别数据集有:
(1) AVLetter英语数据集.该数据集由5男5女录制而成, 语料为26个字母.每个人要求对每个字母读3遍, 共计78个样本;
(2) AVLetters2英语数据集.该数据库是对上述AVLetter的扩展, 由5个人录制, 每人对26个字母重复读7遍, 共计182个样本;
(3) OuluVS1数据集.本数据集包含了10个日常简单的单词或者短语, 由20个人录制而成, 且每人要求对每一个短语重复5次;
(4) MIRACL-VC1数据集.该数据集中的语料为10个单词和10个短语, 每个人对每个单词和短语重复10遍, 最终获得3 000个样本;
(5) GRID数据集.该数据集是由给定单词根据固定格式组成的“句子”, 例如“Place red at J 2, Please”, 第1个单词为动词, 第2个单词为颜色词, 然后依次分别为介词、字母、数字等, 且每个单词有可选的固定候选集, 所以这种固定形式构成的数据集从实际意义来说并不是基于“句子”级别的, 样本总共大约有9 000个;
(6) BBCTV数据集.该数据集收集了从2010年~2016年期间约6年的BBC视频, 涉及到新闻和讨论内容, 约有118 116个句子, 共17 428个单词.
4.2 自建唇语数据集CCTVDSCCTVDS来源于CCTV官网上2016年4月~10月连续6个月的新闻联播视频, 通过对视频进行半自动化处理, 最终生成形如(嘴唇图片序列, 中文语句)的数据集.其中, 嘴唇图片大小为120×120.
如图 7所示为CCTVDS数据集中“今天”字段的连续嘴唇图片.
|
Fig. 7 Continuous lip pictures of "today" in CCTVDS dataset 图 7 CCTVDS数据集中“今天”字段的连续嘴唇图片 |
下面详细介绍CCTVDS数据集的生成过程, 具体流程如图 8所示.
|
Fig. 8 Semi-automatic generation process of CCTVDS dataset 图 8 CCTVDS数据集的半自动生成过程 |
4.2.1 视频剪辑
在镜头检测模块, 采用图像的全局直方图来判断CCTV视频中镜头在主播单独说话和其他场景之间的切换, 得到粗略的单人主播视频片段.全局直方图通过统计帧内所有像素点在各个颜色(灰度)等级的个数, 按照公式(12)计算出两帧间的差异值:
| $D(i, i + 1) = \sum\nolimits_{j = 1}^M {|{H_i}(j) - {H_{i + 1}}(j)|} $ | (12) |
其中, Hi(j)表示的是第i帧内等级为j的直方图的值, M是直方图的总等级数.然后, 再通过人工二次检验核查视频片段的正确性, 生成合理可用的视频片段; 同时, 以25fps的频率将视频转换为连续的帧图片, 生成包含有人脸的初始样本集.
4.2.2 文本处理和时间戳标记文本处理主要由人工完成, 在保证语句含义合理的前提下, 以每行不超过18个字的标准规范文本格式.通过OksrtClient实现视频和文本语句的自动对齐, 同时可获得视频片段中每句话的起始和结束时间戳.根据时间戳和图片的保存频率可将每句话的对应帧图片自动查找出来.
4.2.3 嘴唇检测与分割1) 人脸检测
在嘴唇检测前, 首先对图片进行人脸检测.在所裁剪的图片数据中, 均是包含正面角度的人脸, 且无显著的光照影响, 因此采用经典的人脸检测算法——Viola-Jones检测器进行检测便可满足需求.该算法在图像矩形区域进行像素处理时, 使用积分图方法加速Haar-like特征的计算, 再在整张图片上通过滑动窗口提取类Haar特征, 并以此通过多个级联弱分类器进行判断.当所有的分类器判定均为正样本时, 才把该窗口确定为人脸图片.
2) 嘴唇定位与分割
人脸检测之后, 再次用相同算法对人眼睛进行定位, 根据人脸的空间几何特征, 实现对单张图像中人嘴唇区域的首次定位.然后, 根据同一系列的人脸图像嘴唇区域位置信息, 利用最小二乘法对图像帧序列中的嘴唇位置进行二次定位, 最终将图片裁剪成120×120大小的嘴唇区域.如图 9所示为利用人脸空间几何特征定位嘴唇.
|
Fig. 9 Locate the lips according to the geometric features of face space 图 9 根据人脸空间几何特征定位嘴唇 |
其中, d表示眼睛间距, d1=0.4d, d2=0.7d, F_h=2.4d, F_w=1.8d.嘴唇中点坐标为(Mx, My), 其中, Mx=0.5F_w= 0.8F_h, 嘴唇宽和高分别为0.3F_w和0.67F_h.
4.3 CCTVDS数据集统计在CCTVDS数据集中, 每个样本句子对应的嘴唇图片序列长度范围为10~196, 平均包含了2~25个汉字, 样本数量共计14 975个, 且样本标签中共计2 972 355个汉字.CCTVDS具体统计见表 3, 训练集、测试集和验证集按照7:2:1进行划分.
| Table 3 Sample statistics of CCTVDS dataset 表 3 CCTVDS数据集的样本统计数据 |
5 实验结果及分析
对模型进行训练之前, 先对数据进行整理, 移除标签数据中的特殊字符(例如@, !, ?, < 等), 并将少于2个汉字的句子删除.此外, 根据句子的长度, 将数据分成3个子数据集, 各自分别包含的汉字个数为2~9, 10~15和16~25, 样本数量分别为95 883 619和1 768.
实验过程中, 使用拼音准确率(PAR)、汉字准确率(HAR)和混淆值来衡量模型的性能.PAR和HAR定义为1-错误率=1-(D+S+I)/N, 其中:D, S, I分别为从结果序列转换到真实标签时, 需要删除、代替和插入的拼音字母或者汉字的数量; N为真实标签中拼音字母或者汉字的数量.混淆度是概率分布的一个衡量, 越小的混淆值, 表明分布的预测越好.
5.1 P2P网络模型实验分析 5.1.1 训练技巧批度规范化(batch normalization, 简称BN)在运行过程中需要统计每一个mini-batch的一阶统计量和二阶统计量, 不适合用于动态的网络结构和循环神经网络RNN中.因此在P2P模型中, 卷积神经网络ConvNet使用了BN操作, 而动态的RNN网络在训练过程中尝试使用其他规范算法:层规范化(layer normalization, 简称LN)、参数规范化(weight normalization, 简称WN)、余弦规范化(cosine normalization, 简称CN).
使用BN算法后, 在训练时, P2P网络可以设置较高的初始学习率, 加速网络的收敛.然而, 过高的初始学习率会导致P2P模型中的n-LSTM很难收敛.针对这个问题, 我们给P2P中不同的模块设置不同的初始学习率.在ConvNet网络中, 选取较高的初始学习率, 如0.1.而在n-LSTM网络中, 选取较小的初始学习率, 如0.001.通过给两个不同的模块设置不同的学习率, 促使ConvNet和n-LSTM尽量同时收敛, 进而达到P2P模型完全收敛的效果, 使其具有更好的拼音序列识别能力.
5.1.2 实验结果P2P模型由卷积神经网络ConvNet、循环神经网络RNN和CTC组成.实验结果表明:P2P模型中使用不同的特征提取器ConvNet, 产生的结果也不相同.实验中共尝试了VGG-M, VGG-16, IncepV2和AlexNet这4种不同卷积网络, 且网络中的后三层全连接均用一个平均值池化层代替.其中, VGG-M取得的最高识别准确率为58.51%, VGG-16的41.28%次之, IncepV2和AlexNet的准确率分别为40.11%和39.19%, 见表 4.
| Table 4 Pinyin-level recognition accuracy statistics of P2P network (%) 表 4 P2P网络的拼音识别准确率统计 (%) |
在所有实验中, 无论采用哪种特征提取器, 当循环神经网络为1-512-LSTM(1层512的LSTM)时, 均取得最好的结果.GRU表现较差, 可能是因为CTC损失函数的使用, 导致在反向传播的过程中不能找到有效的梯度回传路径.同时, 在训练时发现:以VGG-16作为特征提取器时, 若对VGG-16模型微调, 模型的性能会急剧下降; 以IncepV2或者ResNet作为嘴唇图片序列的特征提取器时, 由于网络层数太深, 训练时很容易发生梯度消失.
此外, 实验表明:使用不同的学习率去训练网络, 其收敛速度最快; 而在RNN中分别使用层规范化LN、参数规范化WN和余弦规范化CN的速度次之; 无任何训练技巧时网络收敛最慢.同时, 在对循环神经网络进行规范化(LN、WN和CN)时, 使用CN能够得到比LN和WN更稳定的损失值.在训练期间, 尝试在P2P模型中使用双向的LSTM神经网络, 结果显示:准确率并没有显著提高; 与单向的LSTM网络相比, 反而更加消耗存储空间和计算成本.因此, 最终在模型中采用普通的LSTM提取图片间的序列信息.
5.2 P2CC网络模型实验分析 5.2.1 Encoder的训练技巧大量实验表明:在序列模型中, 当时间步数过长时, 网络收敛得很慢且很难训练[15].因此, 我们将P2CC模型分为Encoder和Decoder两个模块分别进行预训练.
我们从CCTV官网上额外下载了从2016年1月1日~2017年6月15日的文本数据作为辅助数据集, 并采用相同的分组方式, 将句子按照长度分别分为3个子数据集.辅助数据集中的汉字总数和句子总数分别为2972355, 215697.受curriculum learning的启发, 模型先用短的数据集进行训练, 然后再不断加长训练数据的长度.实验中可观察到:这样训练模型的收敛速度会快很多, 并且可以大幅度地减少过拟合.猜测可以把这种训练方式看作是数据增强的一种, 所以模型表现出更好的性能.
在预训练过程中, Encoder的输入是拼音字符序列.而在整个唇语识别ChLipNet网络中, 拼音序列识别模型P2P的输出作为P2CC的输入序列.由于P2P网络存在损失, 无法输出完全正确的拼音字符序列.为了模拟P2P模型的生成序列, 我们对P2CC模型中Encoder的输入进行随机增加、删除以及替换等错误处理, 并且字符的随机增加、删除和替换率保证在0到25%之间.
例如, 将拼音字符序列“jintiantianqihenhao”变为“jingtiantanqqihenghhao”.
5.2.2 Decoder的训练技巧在训练循环神经网络时, 通常将前一时刻的真实输出作为下一时刻的输入, 这有助于模型学习一种超过预期目标的语言模型.然而在推断过程中, 样本的真实标签是不可用的, 均使用前一时刻的预测输出, 但是模型还无法容忍之前时刻的错误预测输出, 从而导致较差的性能.于是, 我们采用Bengio等人提出的预定抽样方法[16], 弥补Decoder在训练和推断过程中的差异.如图 10所示为预定抽样方法示例图.
|
Fig. 10 Example of a predetermined sampling method 图 10 预定抽样方法示例 |
在训练Decoder网络时, 若输入序列较短, 则直接使用真实的样本标签; 当输入序列较长时, 则从前一时刻的输出中随机采样, 而不是始终使用真实的样本标签作为下一个RNN单元的输入, 采样概率随着时间从0增加到0.2.实验表明:当抽样概率大于0.2时, 无法实现Decoder网络的稳定学习.
5.2.3 实验结果P2CC模型的参数初始化范围为[-0.02, 0.02], 初始学习率设为0.001.实验结果显示:P2CC模型结构直接决定着其性能, 在不同的RNN配置下, 模型混淆度和损失值均不相同.随着随机错误率的增加, 网络的损失值也略微增加, 混淆度和最小损失值分别为2.69和0.99;错误率为15%, 则最小混淆度和最小损失值分别为2.77和1.02;当RNN采用2-1024-GRU时, P2CC在4种不同错误率下的混淆度和损失值均为最小.错误率为10%时, 错误率为20%时, 最小混淆度和最小损失值分别为2.97和1.09;错误率为25%时, 最小混淆度和最小损失值分别为3.00和1.10.当采用2-512-GRU时, 模型的最小混淆度为2.94, 最小损失值为1.08.由于当采用1024-GRU时, 其结果并不明显优于512-GRU的结果, 而且还存在大量的网络计算, 因此, 从实验结果和网络训练效率层面来看, RNN采用2-512-GRU便可很好地满足汉字序列识别研究.表 5为P2CC模型在随机抽样率为10%时, 不同RNN网络的实验结果.
| Table 5 Experimental results of P2CC with different RNN networks under 10% sampling rate 表 5 P2CC在错误率为10%下不同RNN网络下的实验结果 |
5.3 ChLipNet模型实验分析
通过将ChLipNet网络与其他唇语识别模型在CCTVDS数据集上进行对比分析, 进而来测试ChLipNet模型的整体性能.表 6所示为不同唇语识别模型在CCTVDS上的实验对比结果, 并且包括模型的各自网络结构以及相关的训练数据集和语言类别, 其中, AiC表示模型在各自原文章中的准确率, AiS表示模型在CCTCDS上重新训练所取得的最高句子识别准确率, AiP表示在CCTVDS上所取得的拼音字母序列的准确率.
| Table 6 Experimental results of different lip reading models on CCTVDS 表 6 不同唇语模型在CCTVDS上的实验结果 |
通过实验结果, 在基于深度学习的唇语识别模型中, 可得出以下结论.
(1) 对比NN+LSTM和CNN+LSTM的实验结果, 发现CNN表现出强大的特征提取能力;
(2) 通过和STCNN+BiLSTMCTC对比, 时空卷积网络的性能不一定比传统的2D-CNN更优, 尤其是在唇语识别研究中;
(3) 从序列模型中可得, RNN(LSTM/GRU)在语义解码方面具有强大的优势, 适用于文本编译和生成.
除了WLAS模型外, 其他唇语识别模型都是用来预测非中文的单词或者短语的.因此, 它们在句子级别的CCTVDS数据集上效果较差.另外, WLAS模型的输入为嘴唇图片和音频数据, 由于CCTVDS数据集中不包含音频信息, 因此WLAS在CCTVDS也不能产生较高的准确率.正如实验结果所示:本文提出的中文句子级别的唇语识别模型ChLipNet可分别取得45.7%的句子准确率和58.5%的拼音序列准确率, 而WLAS相应的准确率分别为36.7%和49.8%.
6 总结本文首次提出了端到端的中文唇语识别模型ChLipNet, 该模型可以将输入嘴唇图片不用分割直接自动地转化为汉语句子输出.在训练过程中, 两个不同的网络模块分别各自解决图片到拼音和拼音到汉字的识别, 当这两个模块分别训练好后, 再整体进行端到端的优化调整.通过增加训练技巧, 实验结果表明:在中文唇语数据集CCTVDS上, ChLipNet的性能超过之前相关的唇语架构.
在之后的工作中, 我们将会进行以下的尝试.
(1) 采集更为丰富的数据集.在深度神经网络中, 数据集的样本量直接决定了网络模型参数训练的完成度以及分类回归的准确率;
(2) 对网络输入进行扩充.目前的ChLipNet网络只支持视觉信息的输入, 我们将尝试增加网络输入数据类型, 实现多种类型数据的输入.例如, 在输入中增加音频数据, 实现视觉和音频的整合, 提高网络识别精度;
(3) 将ChLipNet应用到不同的方言中;
(4) 在Encoder-Decoder模型使用Attention机制, Attention机制能够避免因为输入序列过长造成的错误输出, 使得网络输出更加精准的结果.此外, Attention能够解释和可视化我们的网络模型, 加强对网络的理解.
| [1] |
Chung JS, Senior A, Vinyals O, et al. Lip reading sentences in the wild. arXiv: 1611.05358, 2016. 3444-3453.
|
| [2] |
Assael YM, Shillingford B, Whiteson S, et al. Lipnet: Sentence-level lipreading. arXiv: 1611.01599, 2016.
|
| [3] |
Petajan ED. Automatic lipreading to enhance speech recognition (speech reading)[Ph.D. Thesis]. Universityof Illinois at Urbana- Champaign, 1984.
|
| [4] |
Petajan E, Bischoff B, Bodoff D, et al. An improved automatic lipreading system to enhancespeech recognition. In: Proc. of the SIGCHI Conf. on Human Factors in Computing Systems. ACM, 1988. 19-25.
|
| [5] |
Noda K, Yamaguchi Y, Nakadai K, et al. Lipreading using convolutional neural network. In: Proc. of the 15th Annual Conf. of the International Speech Communication Association, 2014.
|
| [6] |
Chung JS, Zisserman A. Lip reading in the wild. In: Proc. of the Asian Conf. on Computer Vision. 2016.
|
| [7] |
Chung JS, Zisserman A. Out of time: Automated lip sync in the wild. In: Proc. of the Workshop on Multi-view lipreading. ACCV, 2016.
|
| [8] |
Wand M, Koutník J, Schmidhuber J. Lipreading with long short-term memory. In: Proc. of the IEEE Int'l Conf. on Acoustics, Speech and Signal Processing. 2016. 6115-6119.
|
| [9] |
Graves A, Gomez F. Connectionist temporal classification: Labelling unsegmented sequence data with recurrent neural networks. In: Proc. of the Int'l Conf. on Machine Learning. ACM, 2006. 369-376.
|
| [10] |
Bengio Y, Ducharme R, Vincent P, et al. A neural probabilistic language model. Journal of Machine Learning Research, 2003, 3(Feb): 1137-1155.
|
| [11] |
Collobert R, Weston J, Bottou L, et al. Natural language processing (almost) from scratch. Journal of Machine Learning Research, 2011, 12(Aug): 2493-2537.
http://d.old.wanfangdata.com.cn/OAPaper/oai_arXiv.org_1103.0398 |
| [12] |
Mikolov T, Karafiát M, Burget L, et al. Recurrent neural network based language model. In: Proc. of the Conf. of the Int'l Speech Communication Association (INTERSPEECH 2010). Makuhari: DBLP, 2010. 1045-1048.
|
| [13] |
Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate. Computer Science, 2014.
|
| [14] |
Mikolov TA. Statistical language models based on neural networks. 2012.
|
| [15] |
Feichtenhofer C, Pinz A, Zisserman A. Convolutionaltwo-Stream network fusion for video action recognition. In: Proc. of the CVPR. 2016.
|
| [16] |
Bengio S, Vinyals O, Jaitly N, Shazeer N. Scheduledsampling for sequence prediction with recurrent neural networks. In: Proc. of the Advances in Neural Information Processing Systems. 2015. 1171-1179.
|
2020, Vol. 31


