理解视频中的人体行为在视频监控、自动驾驶以及安全保障等领域有着广泛的应用前景。目前视频中的人体行为分类研究是对分割好的视频片段进行单人的行为分类。对视频中的人体行为分类研究已经从最初的几种简单人体动作到几乎包含所有日常生活的几百类行为。上篇官微文章详细介绍了基于RGB视频数据的两种深度行为分类模型,本文将介绍第三种深度行为分类模型——基于3D卷积神经网络的,并对三种模型进行分析和对比。
基于 3D卷积网络深度行为分类模型
视频特征学习的难点在于时序特征的学习。表现良好的双流架构在基于2D CNN挖掘空间信息的同时,不断探索时序上运动特征的表达方式。这里的运动特征指的是视频帧外观的改变。视频本身就是一个3D体,用3D卷积的方式获取视频中的空时特征显然是更直观的,3D卷积网络(3D ConvNets)比2D卷积网络更适用于时空特征的学习。3D卷积与2D卷积的区别如图1所示,图中(a)(b)是2D卷积核分别应用于单帧图像和多帧图像(或者是单通道图像,多通道图像),输出2D特征图,(c)是3D卷积核应用于3D视频体,输出的3D特征图保留了时间维度的信息。
图 1 2D与3D卷积示意图
Baccouche等人[1]和Ji等人[2]首先提出了3D卷积网络,使用3D卷积核同时处理空间和时间维度,然而该3D卷积模型浅层且参数量巨大,十分臃肿。Karpathy [3]等人在研究如何使用2D CNN来融合时间信息时,发现在单个视频帧上运算的网络与处理整个视频空时体的网络表现差异很小,因此认为时间维度上的建模对于行为识别的精度并不重要。Facebook在2015年提出C3D[4],该模型实现了与2014年双流法接近的视频行为分类的精度。它使用3D卷积和3D池化以及全连接层构成了11层的浅层网络(如图2),其最大的优势在于速度,然而C3D的模型大小却达到321MB,甚至大于152层ResNet[5]的235MB模型。这样的模型训练起来是困难的,且无法在像ImageNet这样大规模图片数据集上预训练,浅层的网络也限制了模型的分类性能。2017年,Facebook实验室的Du Tran[6]等人又在残差网络框架下重新实现了C3D,使得推理速度快了两倍的同时模型参数也少了两倍。
图 2 C3D模型示意图
为了进一步提高3D CNN模型的泛化能力,P3D[7]将三维卷积核分解为二维空间卷积和一维时间卷积((2+1)D卷积)(如图3)。
图 3 3D卷积分解成(2+1)D卷积
Pseudo-3D(P3D)[7]在残差学习[5]的框架下,将2维的残差单元中的卷积核全部扩充成3维的卷积核,并将3*3*3的卷积核分解为一个1*3*3的二维空间卷积和3*1*1的一维时域卷积。P3D模型加深了模型深度的同时,提高了视频人体行为分类的精度,并且相比于原始的C3D降低了模型大小。I3D[8]是基于ImageNet预训练的Inception-V1骨干网络,将网络中的2D卷积核和池化核都扩展为3D的,同时结合双流网络处理连续多帧的 RGB图像和光流图像。使用大型视频数据集Kinetics预训练后,I3D模型在更小的UCF 101数据集上展现了优越的性能,成为了后续研究工作重点比较的模型。2018年Facebook和谷歌deepmina团队又分别在P3D和I3D的基础上,进一步探究3D空时卷积在行为识别中的作用,相继提出了R(2+1)D [9] 和S3D [10]。两个网络都采用了将3D卷积核分解为2D卷积核加1D卷积核的形式(如图3),证明了从长期时序上学习视频的时间动态特征的必要性。R(2+1)D模型相比3D网络,在不增加模型参数量的情况下,具有更强的表达能力且更易优化,尤其是在网络层数加深时。S3D模型在准确率、模型容量、还有计算效率上都实现了比原始的I3D更好的性能,在S3D模型基础上S3D-G增加了上下文特征门控机制,进一步提高了行为分类的精度。视频的行为分类任务应用2D可分离卷积大大提升了精度与计算能力,受此启发,facebook在2019年最新的一个研究工作CSN[11],考虑了卷积运算中通道交互的因素,将一个3D卷积核分为的传统卷积,用于通道交互;的深度卷积用于局部空时交互。CSN在显著减少模型参数量的同时又提升了精度,其中的通道分离对模型有正则化的作用,避免了过度拟合。本文在UCF101数据集和kinetics数据集上对上述3D网络模型的参数量,计算效率,以及分类精度做了对比。(如表1所示)。
表 1 在UCF101和kinetics数据集上比较3D卷积模型
UCF 101数据集虽然是流行的视频行为分类标准,但研究者们都有的共识是其有限的视频数据量无法支持从头开始训练较深的CNN网络。上述3D CNN研究工作都关注对3D卷积核的分解,主要动机之一是将3D卷积核分解为2D卷积核和1D卷积核之后,其中的2D卷积核可以使用图像数据进行预训练,对于已标注视频数据的需求也会大大减少。Kinetics大规模视频数据集的出现给3D CNN的发展提供了新的前景。Hara等人[12]应用Kinetics数据集训练了基于残差网络及其扩展版本的不同深度的3D CNN网络,发现Kinetics的数据量已经足够支持训练152层的深度Resnet 3D网络,并且这样训练出来的简单的3D CNN结构的分类精度已经可以和I3D相比。Wang等人[13]则是在I3D三维网络的基础上,使用ResNet-101骨干网络,通过加入非局部模块来获得视频中更长距离的空时依赖关系,这样使得模型NL-I3D在仅输入RGB视频帧的情况下,行为分类的性能已经十分优越。
先进方法的比较分析
基于双流架构,RNN网络以及3D网络的深度行为分类模型示意图如图4所示。
a)Two-Stream b)LSTM c)3D ConvNet
图 4 基于RGB视频数据的三种深度行为分类模型示意图
为了进一步提升模型的性能,研究者们在各个方面不断努力,包括使用多种输入数据形式(RGB图像,RGB差,光流图像,扭曲光流,运动矢量等等),探究时序上的融合方法,将2D卷积核扩展为3D卷积核,提取关键视频帧,增加注意力机制等等。概括来讲,对于这三种深度行为分类模型的研究,重点在于如何更有效地挖掘更具有判别力的空域外观信息和更长期的时序运动信息。三种深度行为分类模型在UCF 101和Kinetics数据集上的性能如表2所示。
表 2 深度行为分类模型在UCF 101和Kinetics数据集上的性能对比
在表2数据中,基于RNN的行为分类模型的推理速度没有具体体现,但是从模型复杂度来看,其推理速度与双流法和3D网络相比没有任何优势,同时分类精度也有一定差距。这是因为基于RNN网络的分类模型虽然能进行更长期的时序建模,但其聚合空间信息以及表示时序上运动的能力都很有限。在2017年之前,双流架构良好的性能表现使得研究者们对双流架构的关注度非常高,相比之下3D网络的发展则十分缓慢。但是2017年之后,3D网络的关注度明显提高,原因可以归结于三点:(1)可以利用现有的数据训练深度3D网络。P3D,I3D等2D CNN扩展的3D网络可以使用大规模的图片数据集Imagenet进行预训练,并且大型视频数据集kinetics的提出使直接训练更深的3D网络成为可能。(2)光流无法很好地建模时序上的动态变化,并且计算量很大。2017年Facebook实验室探究了光流在行为分类中的作用,发现光流实际上无法提供与外观互补的运动信息,它能有效提高行为分类的精度是因为光流对图像外观的不变性。(3)视频本身是空时体,用3D网络进行空时建模更为直观。
应用于视频中行为分类的深度模型追随着图像任务上深度学习模型的发展步伐,从最初的11层的浅层3D网络C3D到在ResNet深度残差框架下扩展的3D网络Res-C3D,以及在ResNet-152层上实现的199层的P3D和152层的CSN,研究模型的深度越来越深,这极大地归功于可训练公开视频数据量的增加。在对3D空时建模不断地探索中,研究者们都试图在进一步提高行为分类精度的同时减少模型的参数和加快运算速度。这些研究都证明了3D空时卷积应用于视频上比2D卷积更具优势。因为视频本身是空时三维体,时间维度的信息对理解视频来说是必不可少的。
到目前为止,基于RGB视频数据的深度行为分类模型的研究取得了不错的分类效果,在目前最大规模的视频数据集Kinetics上分类精度达到了93.8%。然而,上述深度行为分类模型的研究都是基于对分割好的视频片段进行单人行为的分类。我们必须清醒的认识到,在真实的场景中,理解视频中的人体行为仍具有很大的挑战。
真实的视频场景中复杂的背景,光照变化、人体外貌变化、摄像机视角以及运动速度等不确定因素,都会影响深度行为分类模型的性能。
真实视频流中包含了大量长时间的非动作冗余视频段。在对人体行为分类的基础上,进一步提取明确人体行为的时间边界,则是视频时序行为检测任务。该任务也有研究者不断在当前深度行为分类模型的基础上尝试解决,但效果和速度都低于当前的应用要求。
基于RGB视频的深度行为分类模型能够从视频图像帧中获得细致的外观纹理特征,但是很难在空间和时间上对不同的人体运动建模。因此很难适用于多人的场景中。