视频的理解与识别是计算机视觉的基础任务之一。随着视频设备和网络的普通,视频理解也吸引了越来越多研究者的关注。而识别视频中的动作则是其中一个充满挑战而又具有较高实际应用价值的任务。相比图像来说,视频内容和背景更加复杂多变,不同的动作类别之间具有相似性,而相同的类别在不同环境下又有着不同的特点。此外,由于拍摄造成的遮挡、抖动、视角变化等也为动作识别进一步带来了困难。在实际应用中,精确的动作识别有助于舆情监控,广告投放,以及很多其他视频理解相关的任务。
与图像识别相比,视频分析需要更大量数据。早期的数据集KTH[1],Weizmann[2]等仅由演员表演固定的几个动作,如走路,慢跑等。之后,较大规模的数据集如UCF101[3]等由网络视频组成,具体动作类别则由志愿者人工标注完成。目前,研究者发布了更大规模的数据集,例如Kinetics[4]包含了上百类动作以及几十万视频(如图1所示示例),虽然相比实际情况仍不够全面,但也对动作识别的研究有了极大的帮助。
图1. Kinetics数据集的示例视频帧
(https://arxiv.org/pdf/1705.06950.pdf)。
视频动作识别目前常用的技术可以大致分为如下几类:
1. 基于人工特征的视频动作识别
早期的动作识别主要基于兴趣点的检测和表示。梯度直方图[5],时空兴趣点检测[6],以及光流直方图[7]等都用于提取图像和时序的特征表示。与图像相比,视频蕴含了大量的运动信息,为了更好的利用运动信息,Heng等人提出了密集轨迹的特征[8],密集的提取和追踪光流中每个像素特征,编码后进行分类。然而,当面临大规模数据集时,这些特征缺乏一定的灵活性和可扩展性。
2. 基于双流的神经网络
近年来,神经网络在图像识别、物体检测等计算机视觉任务上取得了几乎超越人类的成果,研究者在视频任务中也越来越多的开始使用神经网络。然而,直接将用于图像分类的神经网络用于视频分类会忽略视频的时序特征,而时序特征对于视频分类尤为重要。介于此,研究者提出了基于双流的动作识别方法。Simonyan et al. 提出了一个融合网络[9] ,该论文首次将视频分成空间和时间两个部分,分别将RGB图像和光流图像送入两支神经网络并融合最终分类结果。如图2所示,利用双流神经网络,可以同时得到视频中人或物体外表和运动的信息,该方法在当时各个基准数据集上取得了领先的识别水平。
图2. 双流神经网络结构图
之后,又有许多研究针对双流网络这种框架进行了一些改进,例如Temporal Segment Network则提出了一种可以捕捉较长时序的网络结构[10]。Xu 提出了基于密集扩张网络的框架[11],并探讨了空间和时间分支的不同融合方式。
3. 基于三维卷积的神经网络
除了双流网络,还有一些研究者针对视频将神经网络优化为三维卷积神经网络,以此来捕捉更多的时空信息。如图3所示,Tran等人首次提出了在视频动作识别中使用三维神经网络(C3D)代替二维的神经网络[12]。此后,由于ResNet在图像识别任务中取得的较好效果,Hara等人提出了基于三维网络的ResNet[13],Qiu等人也提出了用二维模拟三维神经网络的伪3D网络(P3D)[14]。
图3.三维神将网络示意图。
最近,deep mind团队提出了Inflated 3D ConvNets (I3D)[15],具体方法是利用了2D网络权重展开作为3D网络的预训练权重,同时借助大规模的Kinetics数据集进行预训练,在基准数据集上效果得到明显提升。
4. 其他
此外,仍有很多研究者在探索其他更有效的视频动作识别方法,如基于长短记忆网络(LSTM)的识别框架[16],基于对抗神经网络(GAN)[17]的框架等。
虽然目前动作识别已经取得了快速的发展,但距离人类识别水平仍有很大的差距,在实际应用中也面临着各种各种复杂的问题。我们期待着今后的研究中能够出现更具有可扩展性,鲁棒性的算法和框架。
【本文是51CTO专栏机构“AiChinaTech”的原创文章,微信公众号( id: tech-AI)”】