周书田,颜 信,谢镇汕
(电子科技大学格拉斯哥学院 成都 611731)
随着越来越多的摄像采集与监控设备被部署,视频中人脸识别的需求大幅上升。这些系统迫切地需要可靠与准确的人脸识别。与静态配合式人脸识别[1-3]不同的是,视频中的人脸识别往往是非受限的,即捕捉姿势、图像质量等在帧间都会呈现巨大的变化。一方面,帧间信息可以形成信息互补,并通过多帧对人脸进行更加准确的识别;另一方面,帧间部分低质量,如运动模糊、极端采集角度及低分辨率的图像,又会干扰视频人脸识别的结果。如果直接使用静态人脸识别方法,那么这些低质量帧将会带来误识别。因此如何对帧之间的信息进行有效汇聚,从而形成更加鲁棒的视频人脸特征表达,成为一个关键问题。
目前对视频中进行人脸识别最流行的方法是将视频人脸图像帧表示为无序的特征向量[4-8],并把各帧的特征向量进行汇聚成为视频级特征。验证时,对视频级特征进行相似性检索即可。常见汇聚的方式有平均汇聚[6]、最大池化汇聚与注意力机制汇聚[7]。但这些方式需要对所有视频帧进行特征提取,消耗了大量的计算资源,并不高效。因此近来,视频识别领域提出了如3D 卷积[8]等新颖的视频分析框架,可以有效地对连续帧信息进行捕捉,但3D 卷积同样会引入巨大的计算量。
本文首先比较了基于2D 卷积网络与不同帧间汇聚的方法,并介绍了一种在视频中使用3D 分解卷积的连续帧人脸识别方法。该方法不需要逐帧地对人脸数据进行提取,而是将多帧输入一个3D 分解卷积结构,得出一个全局的特征向量。与逐帧进行特征提取并汇聚的算法相比,该方法可以大幅提高计算效率,且保持了竞争力的识别精度。最后,本文提出了用于视频人脸识别的时间金字塔网络,可以对帧间互补信息进行有效建模。3D 分解卷积与时间金字塔网络的有效性在YouTubeFace[9]、PaSC 测试集得到了验证。
本节介绍视频人脸识别的整个流程及各项的详细配置。视频人脸识别系统可以分为3 部分:视频特征编码器、优化视频编码器的损失函数及将视频进行匹配与检索的查找方法。首先将视频切成连续且非重叠的视频片段{ck},每个片段包含有 T帧,对每个片段进行特征抽取。片段特征抽取器将片段作为输入,并且输出 D维度的特征向量 fc。视频总体的特征为所有视频片段特征的平均汇聚。
在对视频间特征进行比对时,本文采用余弦相似度,并且设定阈值,当阈值大于一定值时,认为两段视频中的人为同一人,亦或是视频中的人脸与底库当中的相匹配。视频特征向量 xi与 yi的余弦相似度为:
判定是否为同一人的阈值,可根据应用场景进行设定。在评价性能时,往往采用一定FPR(false positives rates)下的TPR(true positives)进行比较。
接下来,本文分别介绍基于2D 卷积神经网络+特征聚合以及3D 卷积神经网络进行视频人脸识别的方法,并提出一种高效分解卷积,以在保持识别精度的同时,降低计算消耗。
另外一种汇聚的方式是使用注意力机制。注意力机制旨在自适应地在帧特征之间寻找权重,以给“关键帧”更高的汇聚权重[11]。基于注意力机制的帧间汇聚表示为:
对于视频连续帧,本文直接将其输入3D 卷积神经网络——ResNet-50 网络。将包含有n帧的视频片段c 进行卷积生成为 fc。相比于正常的2D 卷积,3D 卷积在时间维度上多了一维度,正常的2D 卷积核可以表示为[c,h,w],而3D 卷积核则可表示为[c,t,h,w]。因为时间通道的加入,可以建模时序帧间的特征信息。
采用3D 卷积可以建模帧间信息,但3D 卷积会引入巨大的计算量与显存消耗,给部署带来巨大挑战。文献[12]对3D 卷积分解进行了一定的探索。如图1 所示,忽略掉通道维度,一个t×d×d的3D 卷积,可以分解为一个1×d×d的卷积再加上一个t×1×1的卷积,使计算量减小,并且分解后的卷积本质上为2D 卷积加1D 卷积,可以使用工业界更加成熟的卷积优化算子进行加速。
3D 分解卷积其本质是先对单帧的空间信息进行建模(2D 卷积),后对帧间信息进行卷积汇聚(1D 卷积)。本文将ResNet-50 网络中所有的3D 卷积都替换成为此分解卷积,实验证明,其实现了更快的推理速度与有竞争力的准确度。
图1 将卷积核为t×d×d 的3D 卷积分解为1×d×d与t×1×1 的卷积
对于视频人脸识别,核心关键点是如何对视频帧间的信息进行建模,如何高效地利用帧间的互补信息。使用3D 卷积分离对连续帧进行提取,并没考虑到视频速度的变化,即一个人在视频中是缓慢的摇晃头部,还是快速地摇晃头部,这种速度的变化并没有被建模到网络中。为了对多种速度的脸部运动进行建模,本文以不同的时间帧率对视频进行采样,并将不同帧率的输入以时间金字塔的方式进行汇聚。
不同分支的网络会经过一个时间金字塔结构,由时间分辨率低的分支进行时序上连续线性插值( I),与高时间分辨率分支进行融合,融合过程可以表示为:
图2 用于视频人脸识别的时间金字塔网络
然后,各时间分辨率网络将会进行特征汇聚,最终由最大池化(max-pooling)形成视频人脸特征。时间金字塔网络综合了不同时间分辨率信息,从而可以捕捉更丰富的帧间信息。
对于单帧与基于时序卷积的网络的训练,本文采用了三元组损失与softmax 交叉熵损失相结合的方式。三元组损失旨在将负样本对的距离拉远,而保持正样本对的距离靠近。softmax cross-entropy损失则为经典的分类损失函数。在两个loss 的监督下,可以使卷积神经网络形成健壮的特征表达。
本文采用UMDFace[13]作为训练集,其包含了3 107 476 个带注释的视频帧,这些视频帧来自于包含3 107 个人物的22 075 个视频。数据集预先包含了估计的人脸姿势和21 个关键点位置及性别等信息。本文采用RetinaFace 对视频帧的人脸进行预处理,采用仿射变换进行剪裁,所有的人脸都被裁切到224×224。
本文在YouTubeFace[9]数据集上对提出的方法与基线方法进行了测试。YouTubeFace 数据集包含来自1 595 个体的3 424 个视频,平均每个人2.15个视频,是现在广泛采用的视频人脸识别测试数据集。视频的长度从48 帧到6 070 帧不等,平均为181.3 帧。本文采用了标准的测试流程对6 000 对给定的正负样本对进行预测,当预测结果与样本对标签结果一致时,计为正确。汇报结果为在6 000对样本的预测准确率。
为了验证该方法的泛化能力,本文还在PaSC[14]数据集上进行了实验。
本文采用SGD 作为网络训练的优化器,初始学习率被设定为0.01,且随着损失的饱和而乘以0.1。对于2D 卷积网络,网络训练的批大小被设定为32。对于3D 卷积网络及3D 分离卷积网络,批大小设定为8。在8 块NVIDIA 2080TI GPU 进行了实验。
在YoutubeFace 数据集上对分解卷积以及各项基线方法进行了验证,其结果如表1 所示。
表1 不同方法在YoutubeFace(YTF)上性能的比较
可以看到,在性能比较上,直接利用3D 卷积实现了最差的性能,而利用改进的分解卷积,可以使得测试准确率提高1.5%。在预先采用2D 卷积网络提取帧间特征并使用不同汇聚方法进行汇聚的比较中,注意力机制取得到了最好的结果,达到96.1%。最大池化相比于平均池化提高了0.2%的性能。对3D 卷积进行高效分解后,其实现了与2D 卷积网络+帧间汇聚相竞争力的结果。进一步将3D 分解卷积与时间金字塔网络进行结合,达到了最佳的性能,为96.5%。
在PaSC 数据集上验证了本文方法的泛化性,如表2 所示。可以看到,采用3D 分离卷积+时间金字塔结构在PaSC 数据集上取得了最优成绩,比常用的2D 卷积+平均池化提高了4.51%的性能
本文比较了不同方法计算消耗的大小,以包含32 帧的视频片段为例,对于2D 卷积网络,其单模型输入为224×224,对于3D 卷积网络,其单模型输入为32×224×224。如表3 所示,3D 卷积网络方法与3D 分离卷积方法显著减小了推理阶段的计算消耗。时序金字塔网络在提高精确的同时,相比于2D 方法,还减少了50%的算力消耗,这有利于工业界的大规模应用。
表2 不同方法在PaSC 上性能的比较
表3 不同方法在计算消耗比较
本文针对视频中人脸识别问题,比较了2D 卷积网络特征提取+帧间特征汇聚(平均池化、最大池化与注意力机制)与3D 卷积的方法,采用3D 分解卷积提高了视频人脸识别的准确率与效率,并提出了一种时间金字塔网络,实现了更高精度的视频人脸识别。在未来的工作中,将会考虑如组卷积及Depth-wise 卷积等更加轻量化的3D 卷积实现方式,以实现更加高效的视频人脸识别。