视频分类/行为识别是计算机视觉领域中非常有挑战性的课题,因为其不仅仅要分析目标体的空间信息,还要分析时间维度上的信息,如何更好的提取出空间-时间特征是问题的关键。本文总结了该领域的技术进展和相关数据集,技术进展从传统特征法到深度学习中的3DCNN,LSTM,Two-Stream等。
1 视频分类/行为识别问题
首先我们要明确这是一个什么问题,基于视频的行为识别包括两个主要问题,即行为定位和行为识别。行为定位即找到有行为的视频片段,与2D图像的目标定位任务相似。而行为识别即对该视频片段的行为进行分类识别,与2D图像的分类任务相似。
本文聚焦的是行为识别,即对整个视频输入序列进行视频分类,一般都是经过裁剪后的视频切片。接下来从数据集的发展,传统方法,深度学习方法几个方向进行总结。
2 视频分类/行为分析重要数据集
深度学习任务的提升往往伴随着数据集的发展,视频分类/行为识别相关的数据集非常多,这里先给大家介绍在论文评测中最常见的3个数据集。
2.1 HMDB-51
HMDB-51共51个类别,6766个短视频。数据集地址:http://serre-lab.clps.brown.edu/resource/hmdb-a-large-human-motion-database/#dataset,发布于2011年。
数据来源非常广泛,包括电影,一些现有的公开数据集,YouTube视频等。从中选择了51个类别,每一个类别包含101个以上视频。
分为5大类:
- 常见的面部动作(smile,laugh,chew,talk)
- 复杂的面部动作(smoke,eat,drink)
- 常见的肢体动作(climb,dive,jump)
- 复杂的肢体动作(brush hair,catch,draw sword)
- 多人交互肢体动作(hug,kiss,shake hands)
下面是其中一些维度的统计,包括姿态,相机运动等。
51个类别的展示如下:
2.2 UCF-101
UCF-101共101个类别,13320个短视频。数据集地址:https://www.crcv.ucf.edu/research/data-sets/human-actions/ucf101/,发布于2012年。
UCF-101是目前动作类别数、样本数最多的数据集之一,包含5大类动作:人与物体互动、人体动作、人与人互动、乐器演奏、体育运动。总共包括在自然环境下101种人类动作,每一类由25个人做动作,每个人做4-7组,视频大小为320×240。正因为类别众多加上在动作的采集上具有非常大的多样性,如相机运行、外观变化、姿态变化、物体比例变化、背景变化等等,所以也成为了当前难度最高的动作类数据集挑战之一。
各个类别的分布如上,相对还是比较均匀的,UCF-101是视频分类/行为识别方法必须评测的标准。
2.3 Kinetics-700 dataset
Kinetics-700 dataset被用于ActivityNet比赛,包含约650000个视频,700个类别。数据集地址:https://deepmind.com/research/open-source/open-source-datasets/kinetics/,发布于2019年。
ActivityNet比赛始于2016的CVPR,是与ImageNet齐名的在视频理解方面最重要的比赛。在这个比赛下的Task A–Trimmed Action Recognition比赛是一个视频分类比赛,2019年的比赛使用kinetics-700数据集,在此之前还有2017年的kinetics-400和2018年的kinetics-600。
数据集是Google的deepmind团队提供,每个类别至少600个视频以上,每段视频持续10秒左右,标注一个唯一的类别。行为主要分为三大类:人与物互动,比如演奏乐器;人人互动,比如握手、拥抱;运动等。即person、person-person、person-object。
除了以上数据集,比较重要的还有Sports-1M,YouTube-8M等,篇幅所限,就不一一描述,大家可以参考文献[1]。
如果不能下载数据集,可以移步有三AI知识星球获取。
3 传统有监督特征提取方法
传统的方法通过提取关键点的特征来对视频进行描述,以时空关键点,密集轨迹方法等为代表。
3.1 时空关键点(space-time interest points)
基于时空关键点的核心思想是:视频图像中的关键点通常是在时空维度上发生强烈变化的数据,这些数据反应了目标运动的重要信息[2]。
比如一个人挥舞手掌,手掌一定会在前后帧中发生最大移动,其周围图像数据发生变化最大。而这个人的身体其他部位却变化很小,数据几乎保持不变。如果能将这个变化数据提取出来,并且进一步分析其位置信息,那么可以用于区分其他动作。
时空关键点的提取方法是对空间关键点方法的扩展,空间关键点的提取则是基于多尺度的图像表达,这里的时空关键点就是将2D Harris角点的检测方法拓展到了3D,具体求解方法非常复杂读者需要自行了解,篇幅问题就不讲述了。
得到了这些点之后,基于点的一次到四次偏导数,组合成一个34维的特征向量,使用k-means对这些特征向量进行了聚类。
除了harris,经典的2D描述子SIFT被拓展到3D空间[3],示意图如下:
上图从左至右分别展示了2D SIFT特征,多个时间片的2D SIFT特征,以及3D SIFT特征,后两者的区别在于计算区域的不同,3D SIFT的每一个关键点包含3个值,幅度和两个角度
统计关键点时空周围的梯度直方图就可以形成特征描述子,然后对所有的特征描述子进行k-means聚类,划分类别,形成词汇“word”。所有不同word就构成了一个vocabulary,每个视频就可以通过出现在这个vocabulary中词汇的数量来进行描述,最后训练一个SVM或者感知器来进行动作识别。
除了以上的两种特征,还有HOG3D等,感兴趣的读者可以自行阅读。
3.2 密集轨迹(dense-trajectories)[4]
时空关键点是编码时空坐标中的视频信息,而轨迹法iDT(improved Dense Trajectories)是另一种非常经典的方法,它追踪给定坐标图像沿时间的变化。
iDT算法包含三个步骤:密集采样特征点,特征轨迹跟踪和基于轨迹的特征提取。
密集采样是对不同尺度下的图像进行规则采样,不过真正被用于跟踪等不是所有点,因为平滑区域的点没有跟踪意义,通过计算每个像素点自相关矩阵的特征值,并设置阈值去除低于阈值的特征点来实现这个选择。
对轨迹的追踪是通过光流,首先计算图像光流速率(ut, vt),然后通过这个速率来描述图像运动轨迹:
wt是密集光流场,M是中值滤波器,得到的一系列点形成了一个轨迹。由于轨迹会随着时间漂移,可能会从初始位置移动到很远的地方。所以论文对轨迹追踪距离做了限制,首先将帧数限制在L内,而且轨迹空间范围限制在WxW范围,如果被追踪点不在这个范围,就重新采样进行追踪,这样可以保证轨迹的密度不会稀疏。
除了轨迹形状特征,还提取了HOG,HOF(histogram of flow)以及MBH(motion boundary histogram)等特征。其中HOG特征计算的是灰度图像梯度的直方图,HOF计算的是光流的直方图,MBH计算的是光流梯度的直方图,也可以理解为在光流图像上计算的HOG特征,它反应了不同像素之间的相对运动。
以HOG特征为例,在一个长度为L的轨迹的各帧图像上取特征点周围大小为N×N的区域,将其在空间和时间上进行划分。假如空间划分为2*2,时间划分为3份,bins为8,则HOG特征维度为2*2*3*8=96,HOF特征和MBH特征计算类似。
提取出HOG等信息后,接下来具体的分类与上面基于时空关键点的方法类似,不再赘述。
4 深度学习方法
当前基于CNN的方法不需要手动提取特征,性能已经完全超越传统方法,以3D卷积,RNN/LSTM时序模型,双流法等模型为代表。
4.1 3D卷积[5]
视频相对于图像多出了一个维度,而3D卷积正好可以用于处理这个维度,因此也非常适合视频分类任务,缺点是计算量比较大,下图展示了一个简单的3D模型。
4.2 RNN/LSTM[6]
视频和语音信号都是时序信号,而RNN和LSTM正是处理时序信号的模型。如下图所示,通过CNN对每一个视频帧提取特征,使用LSTM建模时序关系。
4.3 双流法(two-stream)[7]
双流法包含两个通道,一个是RGB图像通道,用于建模空间信息。一个是光流通道,用于建模时序信息。两者联合训练,并进行信息融合。
双流模型是视频分类中非常重要的一类模型,在特征的融合方式,光流的提取等方向都有非常多的研究,关于更多模型的解读如果感兴趣可以移步有三AI知识星球中的模型结构1000变板块。