LipNet论文解读

论文:lipnet:端到端情感级唇读

由于缺乏指导,我在调查相关领域的内容时,很少在中文网站上看到对唇读相关文章的详细分析,所以花费了大量的时间和精力。本文分析了句子层面在该领域的一个创举,并介绍了文中的要点。在本文之前,Lipreading的大部分工作集中在字母、单词、数字或短语的识别上,具有一定的局限性。虽然本文所用数据中的句型有限,词汇量也相对较少,但这并不妨碍它在句子的尺度上得到识别,并且取得了相当不错的效果。

首先,介绍数据集。网格数据集是句子级的数据集,包含3万多条数据。每一条数据都是一个视频,视频内容是一个人说出一个固定的句子,对应一个文本标签,标签上标注每个单词的开始时间和结束时间。句子的句式是限定的,不是逻辑自然句,也就是:?

换句话说,每个句子由6个固定类型的词组成,上标表示该词类型在数据集中的类型数,比如?说明这个位置是一个颜色词(比如蓝色),数据集中的一个* * *有四个颜色词。

此外,应该理解,数据集的视频I具有34个文件夹,对应于由34个不同的人记录的视频。每个文件夹包含数千个视频数据,都是由同一个人录制的。在后期的实验中,笔者将采用两种不同的方式进行训练和测试:(1)用30个人的视频进行训练,用另外4个人的视频进行测试,也就是看不见的说话人;(2)从34个人的视频中,随机抽取255个视频作为测试数据,其余作为训练数据;

首先,根据数据集部分末尾介绍的分组方法,将数据分为两个训练集和测试集。然后,利用现有的面部识别检测器,将视频的每一帧处理为?仅包含嘴的尺寸框架。最后,每一帧都是标准化的。

(1)常规图像序列和水平翻转图像序列分别用于训练;

(2)由于数据集提供了每个单词的起止时间,因此可以利用每个单词对应的图像帧序列来训练模型;

(3)随机删除或复制一些帧,概率设为0.05;

介绍完数据的组织,大家都知道这是Seq2seq的问题,很像语音识别的套路。所以唇读的套路就是很大程度上融合了CV的套路和机器翻译的套路。

这篇文章的模型结构没什么特别的,而且这篇文章里面有很多废话。总结一下,其实就是用3D卷积提取图像帧的特征,然后用两层双向GRU作为编解码输出一个预测值,最后用全连通层输出预测概率。总的来说,模型的结构并不复杂,还有一些改进。

另外,损失函数函数值得注意。本文使用了CTC损失函数,这是语音识别中使用的经典损失函数,避免了帧和字符的对齐。具体可以参考这篇文章。

WER和CER的指标分别是单词错误率和字符错误率,即单词错误率和字符错误率。当然,越低越好。指标分为两栏:看不见的说话人和重叠的说话人,分别对应数据集部分介绍的两种数据划分方法下的测试结果。可以看到,LipNet在网格数据集上的各项指标都达到了当时的最好。很多后续在网格数据集上的作品都达到了1.0%~2.0%,但是在LRS数据集上的表现,比如在网格数据集上的效果就差得很远,因为网格数据集中的句式单一,人脸对着摄像头,只能作为基础研究。自然场景下唇读的句子级识别还有很长的路要走。

水平有限,欢迎大家批评指正。有问题可以一起讨论。