「干货」计算机视觉视频理解领域的经典方法和最新成果
新智元专栏
作者:张皓(南京大学)
【新智元导读】相比图像,视频多了一维时序信息。如何利用好视频中的时序信息是研究这类方法的关键。本文简要回顾视频理解方面的近年进展,并对未来可能的研究方向作一展望。
相比图像,视频多了一维时序信息。如何利用好视频中的时序信息是研究这类方法的关键。视频理解可以用于多个领域,例如在智能安防领域中可以取代人工来对监控视频进行分析。本文简要回顾视频理解方面的近年进展,并对未来可能的研究方向作一展望。
常用数据集
视频分类主要有两种数据集,剪辑过(trimmed)的视频和未经剪辑的视频。剪辑的视频中包含一段明确的动作,时间较短标记唯一,而未剪辑的视频还包含了很多无用信息。如果直接对未剪辑的视频进行处理是未来的一大研究方向。
- HMDB-51:6,766视频,51类。剪辑的视频,每个视频不超过10秒。内容包括人面部、肢体、和物体交互的动作等。
- UCF-101:13,320视频,101类,共27小时。剪辑的视频,每个视频不超过10秒。内容包含化妆刷牙、爬行、理发、弹奏乐器、体育运动等。
- Charades:9.848视频(7,985训练,1,863测试),157类。未剪辑的视频,每个视频大约30秒。每个视频有多个标记,以及每个动作的开始和结束时间。
- Sports-1M:1,100,000视频(70%训练、20%验证、10%测试),487类,内容包含各种体育运动。
- ActivityNet (v1.3):19,994视频(10,024训练,4,926验证,5,044测试),200类,共700小时。内容包括饮食、运动、家庭活动等。
- Kinetics:246k训练视频,20k验证视频,400类。
G. A. Sigurdsson, et al. What actions are needed for understanding human actions in videos? ICCV'17.
相比图像分类,视频的类别/动作数目要少很多,而且常常有一定歧义,例如take和put要和后面名词结合才会有具体含义(如take medication, take shoes, take off shoes)。Sigurdsson等人发现人类对这些动词也容易感到混淆。另外,视频中动作开始和结束的时间也不够明确。
经典方法
H. Wang, et al. Dense trajectories and motion boundary descriptors for action recognition. IJCV'13.
H. Wang and C. Schmid. Action recognition with improved trajectories. ICCV'13.
Wang等人提出DT和iDT方法。DT利用光流得到视频中的运动轨迹,再沿着轨迹提取特征。iDT对相机运动进行了补偿,同时由于人的运动比较显著,iDT用额外的检测器检测人,以去除人对相邻帧之间投影矩阵估计的影响。这是深度学习方法成熟之前效果最好的经典方法,该方法的弊端是特征维度高(特征比原始视频还要大)、速度慢。实践中,早期的深度学习方法在和iDT结合之后仍能取得一定的效果提升,现在深度学习方法的性能已较iDT有大幅提升,因此iDT渐渐淡出视线。
逐帧处理融合
这类方法把视频看作一系列图像的集合,每帧图像单独提取特征,再融合它们的深度特征。
A. Karpathy, et al. Large-scale video classification with convolutional neural networks. CVPR'14.
Karpathy等人把视频划分成很多固定长度的片段(clip),并设计了多种融合方法。
- Single frame. 逐帧单独前馈网络。
- Late fusion. 两帧相距15帧的图像分别前馈网络,并融合它们的深度卷积特征。
- Early fusion. 连续10帧图像前馈网络,因此网络第一层的卷积核由11×11×3变为11×11×3×10。Early fusion的思路最早由Le等人提出。
Le, et al. Learning hierarchical invariant spatio-temporal features for action recognition with independent subspace analysis. CVPR'11.
- Slow fusion. 即使用3D卷积。连续10帧图像前馈网络,第一层卷积核时间方向大小为4,第二、三层卷积核时间方向大小为2。
此外,为了加速训练,由于目标通常位于图像中心,Karpathy等人使用了一个两分支网络:一个分支输入空间大小下采样减半的图像,另一个分支输入原图中心裁剪后的图像。这样,总体的输入图像维数只有原图的一半。这两个分支的深度卷积特征拼接(concatenate)起来给全连接层进行分类。
实验发现,3D卷积的融合效果最好,而不考虑运动信息的single frame策略已经是十分强的baseline。Early fusion策略效果最差的原因可能是直接从输入图像上捕获运动信息难度太大。
J. Y.-H. Ng, et al. Beyond short snippets: Deep networks for video classification. CVPR'15.
Ng等人先提取每一帧的深度卷积特征,再设计特征融合方法得到最终输出。其中,紫色代表沿时间方向进行最大汇合(max-pooling),黄色代表全连接层,绿色代表3*3*10,stride 5的3D卷积,红色代表softmax输出。相比Karpathy等人,Ng等人的输入视频片段的长度更长(每秒采样1帧,一个片段由120帧构成),包含了更多的时序信息。实践中发现(a)的效果最好。
B. Fernando and S. Gould. Learning end-to-end video classification with rank-pooling. ICML'16.
在得到每帧图像的深度卷积特征vt之后,Fernando和Gould通过解如下的优化问题来对特征进行排序汇合(rank-pooling)。其动机是靠前的帧
要小一些,而靠后的帧大一些。
X.-S. Wei, et al. Deep bimodal regression of apparent personality traits from short video sequences. TAC'17.
由于相邻帧信息冗余度很高,Wei等人从视频(450帧)中采样100帧,每帧交由DAN分别进行预测。在得到relu5-2/pool5深度特征之后,DAN将其全局最大/平均汇合以得到深度特征。
A. Kar, et al. AdaScan: Adaptive scan pooling in deep convolutional neural networks for human action recognition in videos. CVPR'17.
由于不同帧的重要性不同,Kar等人提出AdaScan汇合方法。其逐帧提取特征,之后判断不同帧的重要程度,并据此进行特征汇合。
M. Zolfaghari, et al. ECO: Efficient Convolutional network for Online video understanding. arXiv:1804.09066.
Zolfaghari等人提出ECO。由于相邻帧有信息冗余,ECO从视频中采样若干帧,每帧单独用2D卷积提取特征,之后沿时间方向拼接特征,再用3D卷积捕获它们的时序关系。ECO和state-of-the-art方法性能相似,但速度上快了10-80倍。在测试时,为了捕获长距离依赖,输入视频片段由已看过的和未看过的视频中采样得到。
ConvLSTM
这类方法是用CNN提取每帧图像的特征,之后用LSTM挖掘它们之间的时序关系。
J. Y.-H. Ng, et al. Beyond short snippets: Deep networks for video classification. CVPR'15.
J. Donahue, et al. Long-term recurrent convolutional networks for visual recognition and description. CVPR'15.
Ng等人在深度特征上,用5层隐层结点数512的LSTM来提取深度特征,每个时刻都进行输出。训练时,一个片段从第1帧到最后一帧输出层获得的梯度分别乘以0.0-1.0的权重,用以强调后面帧的重要性。测试时,计算这些帧输出的加权和。Donahue等人也提出了类似的工作。此外,Ng等人和Donahue等人还利用了光流输入。把x、y两个方向的光流缩放到[0, 255]作为光流图像前两个通道,把光流的大小作为第三个通道。
W. Du, et al. RPAN: An end-to-end recurrent pose-attention network for action recognition in videos. ICCV'17.
Du等人利用人体姿态估计辅助动作识别。
3D卷积
把视频划分成很多固定长度的片段(clip),相比2D卷积,3D卷积可以提取连续帧之间的运动信息。
在视频动作识别中最早提出3D卷积的是
M. Baccouche, et al. Sequential deep learning for human action recognition. HBU Workshop'11.
S. Ji, et al. 3D convolutional neural networks for human action recognition. TPAMI'13.
Baccouche等人使用第一层卷积核时间方向大小为5。Ji等人使用第一、二层卷积核时间方向大小为3,第三层卷积时由于时间维度大小很小,所以采用2D卷积。
此外,为使网络获得更多先验信息,Ji等人使用了两个技巧:(1). 同时使用原始图像、图像梯度、和相邻帧光流作为输入。(2). 让网络额外地学习运动信息接近手工运动特征。
D. Tran, et al. Learning spatio-temporal features with 3D convolutional networks. ICCV'15.
Tran等人提出C3D,其将3×3卷积扩展到3×3×3卷积,2×2汇合扩展到2×2×2汇合。输入片段16帧。实验中发现,时域方向卷积核大小为3效果最好。相比2D CNN,3D CNN的参数量很大,训练变得更困难,且需要更多的训练数据。相比其他类型的方法,C3D一次处理多帧,所以计算效率很高。
L. Sun, et al. Human action recognition using factorized spatio-temporal convolutional networks. ICCV'15.
Sun等人把3D卷积分解为空间方向2D卷积和时间方向1D卷积。
J. Carreira and A. Zisserman. Quo vadis, action recognition? A new model and the Kinetics dataset. CVPR'17.
Carreira和Zisserman提出I3D,把two-stream结构中的2D卷积扩展为3D卷积。由于时间维度不能缩减过快,前两个汇合层的卷积核大小是1×2×2,最后的汇合层的卷积核大小是2*7*7。和之前文章不同的是,two-tream的两个分支是单独训练的,测试时融合它们的预测结果。
Z. Qiu, et al. Learning spatio-temporal representation with pseudo-3D residual networks. ICCV'17.
Qiu等人提出P3D,用一个1×3×3的空间方向卷积和一个3×1×1的时间方向卷积近似原3×3×3卷积。通过组合三种不同的模块结构,进而得到P3D ResNet。P3D ResNet在参数数量、运行速度等方面对C3D作出了优化。
D. Tran, et al. A closer look at spatio-temporal convolutions for action recognition. CVPR'18.
Tran等人提出ResNet (2+1)D,把一个3D卷积分解成为一个2D卷积空间卷积和一个1D时间卷积,注意这里的参数量和原3D卷积相同。相比P3D有三种形式,(2+1)D和P3D-A最接近。
C. Lea, et al. Temporal convolutional networks for action segmentation and detection. CVPR'17.
受WaveNet启发,Lea等人提出一个编码-解码网络,并使用空洞卷积和短路连接,以捕获长距离依赖。实验中发现,这种结构效果优于RNN。
L. Wang, et al. Appearance-and-relation networks for video classfication. CVPR'18.
Wang等人希望利用3D卷积显式地学习类似two-stream的结构。Wang等人通过不同帧之间的乘性关系度量不同帧之间的关系。
K. Hara, et al. Can spatio-temporal 3D CNNs retrace the history of 2D CNNs and ImageNet? CVPR'18.
Hara等人尝试了多种3D网络结构。
X. Wang, et al. Non-local neural networks. CVPR'18.
可以看作是3D卷积的一个扩展。3D卷积的感受野是有限区域,而non-local旨在解决长距离依赖问题。Non-local的响应是所有空间和时间位置特征的加权平均
其中,
用于度量相似性,
计算响应,
用于归一化。当
时,non-local操作退化为全连接层;当
时,non-local操作
退化为self-attention。实验中发现non-local block加在底层比加在高层效果要好,加多个non-local blocks会有效果提升但不是很明显。
这类方法的弊端是只能考虑比较短的时间片段的运动信息,参数量?
Two-stream
K. Simonyan and A. Zisserman. Two-stream convolutional networks for action recognition in videos. NIPS'14.
采用两个分支。一个分支输入单帧图像,用于提取图像信息,即在做图像分类。另一个分支输入连续10帧的光流(optical flow)运动场,用于提取帧之间的运动信息。由于一个视频片段中的光流可能会沿某个特别方向位移的支配,所以在训练时光流减去所有光流向量的平均值。两个分支网络结构相同,分别用softmax进行预测,最后用直接平均或SVM两种方式融合两分支结果。
此外,为了加速训练,Simonyan和Zisserman预先计算出光流并保存到硬盘中。为了减小存储大小,他们将光流缩放到[0, 255]后用JPEG压缩,这会使UCF101的光流数据大小由1.5TB减小到27GB。
L. Wang, et al. Action recognition with trajectory-pooled deep-convolutional descriptors. CVPR'15.
Wang等人结合了经典iDT手工特征和two-stream深度特征,提出TDD。经典手工特征计算时通常分两步:检测图像中显著和有信息量的区域,并在运动显著的区域提取特征。TDD将预训练的two-stream网络当作固定的特征提取器。得到两者特征之后,TDD使用时空规范化以保证每个通道的数值范围近似一致,使用通道规范化以保证每个时空位置的描述向量的数值范围近似一致,之后用trajectory pooling并用Fisher向量构建TDD特征,最后用SVM分类。
C. Feichtenhofer, et al. Convolutional two-stream network fusion for video action recognition. CVPR'16.
Feichtenhofer等人研究如何融合两分支的深度卷积特征。他们发现级联两个特征到2D维再用1×1卷积到D维的融合方法效果最好,之后再经过3D卷积和3D汇合后输出。
C. Feichtenhofer, et al. Spatio-temporal residual networks for video action recognition. NIPS'16.
Feichtenhofer将ResNet作为two-stream的基础网络架构,用预训练网络的权重初始化新的3D网络:w(d, t, i, j)=w(d, i, j)/T。此外,有从光流分支到图像分支的信息传递。此外,网络输入不是连续的,而是步长5到15帧。
L. Wang, et al. Temporal segment networks: Towards good practices for deep action recognition. ECCV'16.
由于相邻的帧信息冗余度很高,对视频密采样是不必要的。Wang等人提出TSN结构,其对视频进行稀疏采样,在避免冗余信息的同时可以处理长距离依赖。TSN把输入视频分成K段,每段随机选择一个视频片段(snippet),之后用two-stream结构提取特征再融合。TSN取得了ActivityNet 2016年竞赛的冠军。
此外,除RGB和光流图像输入外,TSN还尝试了RGB difference和warped光流两种输入,最终发现RGB+光流+扭曲(warped)光流的效果最好。
Z. Lan, et al. Deep local video feature for action recognition. CVPR'17.
由于不是视频中每帧都包含有用信息,Lan等人首先用TSN提取局部特征,之后再进行聚合。
R. Girdhar, et al. ActionVLAD: Learning spatio-temporal aggregation for action recognition. CVPR'17.
类似于NetVLAD,Girdhar等人用two-stream提取特征,之后用VLAD得到视频的表示。实验中发现,图像和光流两个分支单独处理效果最好。
C. Feichtenhofer, et al. Spatio-temporal multiplier networks for video action recognition. CVPR'17.
Feichtenhofer等人发现,two-stream网络在外观分支容易过拟合。Feichtenhofer等人加入了两个分支之间的信息交互,并发现乘性的信息交互效果最好。
G. A. Sigurdsson, et al. Asynchronous temporal fields for action recognition. CVPR'17.
Sigurdsson等人利用全连接时序CRF对视频的时序关系进行推断。
W. Zhu, et al. A key volume mining deep framework for action recognition. CVPR'16.
一段视频中并非所有的帧都对识别任务同等重要,如果把它们同等看待,有价值的帧信息会淹没在其他无关的帧中。借助多示例学习思路,Zhu等人交替优化关键帧挖掘和分类两个目标。网络输入N个视频片段,输出每个片段对应每个类别的分数。如果该类别对应真实标记,采用随机汇合,否则是maxout汇合,其中响应最强的视频片段即为得到的关键帧。
Y. Wang, et al. Spatio-temporal pyramid network for video action recognition. CVPR'16.
Wang等人利用双线性汇合融合两个分支的特征。
A. Diba, et al. Deep temporal linear encoding networks. CVPR'17.
Diba等人对不同帧/片段的深度卷积特征逐元素相乘,再通过精简双线性汇合得到最终的特征表示。
R. Girdhar and D. Ramanan. Attentional pooling for action recognition. NIPS'17.
将双线性汇合用于TSN的图像分支。在得到深度卷积特征
之后,经典双线性汇合会计算输入属于第k个类的分数
。Girdhar和Ramanan对参数矩阵
做了一个秩-1近似
实验中, Girdhar和Ramanan将224大小的HMDB-51缩放到450大小,以确保最后的深度卷积特征大小不会太小(14×14)。当特征大小太小时,效果不显著。另一方面,Girdhar和Ramanan只用了图像分支来处理视频,总体性能和state-of-the-art还有很大差距。
I. C. Duta, et al. Spatio-temporal vector of locally max-pooled features for action recognition in videos. CVPR'17.
Duta等人研究如何聚合不同特征。
P. Weinzaepfel, et al. DeepFlow: Large displacement optical flow with deep matching. ICCV'13.
Dosovitskiy, et al. FlowNet: Learning optical flow with convolutional networks. ICCV'15.
E. Ilg, et al. FlowNet 2.0: Evolution of optical flow estimation with deep networks. CVPR'17.
由于经典光流算法很慢,因此有工作致力于使用深度神经网络计算光流。DeepFlow在不同粒度上进行聚合和匹配,FlowNet基于类似于视觉跟踪的思路使用互相关滤波综合两张图的深度特征最终生成光流。由于标记数据不足,FlowNet使用人工合成Chairs数据集进行训练。FlowNet 2.0的贡献有三点。(1). 发现如何进行训练对结果影响至关重要,先在简单的Chairs数据集上训练、再在更真实的Things3D上训练会比混合两个数据集一起训练效果更好。(2). 多个子网络堆叠,并用中间光流结果对图像进行扭曲输入中间子网络。(3). 有一个子网络专注于微小运动。
其他视频理解任务
时序动作定位(temporal action localization) 在一段未剪辑的视频中找到动作开始和结束的时间,并对动作进行分类。
Z. Shou, et al. Temporal action localization in untrimmed videos via multi-stage CNNs. CVPR'16.
Shou等人提出SCNN,用不同大小的滑动窗产生视频片段,之后用3D候选区域网络判断该视频片段是前景/背景,用3D分类网络判断K+1个类别的分数(包括背景),最后用定位网络判断开始/结束时间。后处理使用非最大抑制(NMS)。
J. Gao, et al. TURN TAP: Temporal unit regression network for temporal action proposals. ICCV'17.
思路类似于Faster R-CNN。
H. Xu, et al. R-C3D: Region convolutional 3D network for temporal activity detection. ICCV'17.
以C3D网络为基础,借鉴Faster R-CNN,对输入视频片段先提取特征,再生成提取候选时序,最后RoI汇合后进行检测。
Z. Shou, et al. CDC: Convolutional-de-convolutional networks for precise temporal action localization in untrimmed videos. CVPR'17.
类似于语义分割问题的思路,为了得到对应于每一帧的分类预测分数,Shou等人在3D卷积层之后提出CDC卷积,在空间方向用卷积进行下采样,在时间方向上用转置卷积进行上采样。
L. Wang, et al. UntrimmedNets for weakly supervised action recognition and detection. CVPR'17.
分类模块用于对每个视频片段进行分类,而选择模块用于给出不同视频片段的重要性。选择模块的实现包括hard selection和soft selection。训练时端到端联合优化。
Y. Zhao, et al. Temporal action detection with structured segment networks. ICCV'17.
Zhao等人提出SSN,讲视频分为三个部分,最终构成全局特征。分类时有动作性分类器和完整性分类器。
异常检测(anomaly detection) 通常用于判断监控视频中出现的异常事件。
W. Sultani, et al. Real-world anomaly detection in surveillance videos. CVPR'18.
由于训练时只知道一段视频中有/没有异常,而异常事件的种类和发生时刻未知,Sultani等人利用多示例学习,将异常检测问题转化为一个回归排序问题,让异常样本的排序值高于普通样本,训练时让正负样本之间的距离尽可能远。
视频摘要与视频浓缩(video summarization and video synopsis) 视频摘要是从原始视频中提取有代表性的关键帧,而视频浓缩将多帧视频合并成一帧。
M. Gygli, et al. Creating summaries from user videos. ECCV'14.
X. Li, et al. Surveillance video synopsis via scaling down objects. TIP'16.
“看视频说话”(video captioning) 基本思路和看图说话一致,用编码网络提取视频信息,用解码网络生成文字描述。
S. Venugopalan, et al. Sequence to Sequence–Video to Text. ICCV'15.
第一视角视频(first-person video) 研究第一视角视频可以用于自动驾驶、机器人导航等。
T. Yagi, et al. Future person localization in first-person videos. CVPR'18.
Yagi等人提出行人位置预测任务,即根据行人历史信息,预测下一帧行人的位置。Yagi等人用1D时域卷积来融合不同帧的特征。
视频生成(next frame generation) 有工作利用生成式模型对视频进行生成。
M. Mathieu, et al. Deep multi-scale video prediction beyond mean square error. ICLR'16.
C. Vondrick, et al. Generating videos with scene dynamics. NIPS'16.
目标跟踪(object tracking) 给定视频第一帧中目标的位置(以包围盒的形式),我们需要预测其他帧中该目标的包围盒。目标跟踪类似于目标检测,但目标跟踪的难点在于事先不知道要跟踪的目标具体是什么,因此无法事先收集足够的训练数据以训练一个专门的检测器。一种研究思路是利用孪生网络,一支输入第一帧包围盒内图像,另一支输入其他帧的候选图像区域,通过互相关操作(卷积),得到二维的响应图,其中最大响应位置确定了需要预测的包围盒位置。
L. Bertinetto, et al. Fully-convolutional siamese networks for object tracking. ECCV'16 Workshop.
M. Danelljan, et al. ECO: Efficient Convolution Operators for tracking. CVPR'17.
E. Valmadre, et al. End-to-end representation learning for correlation filter based tracking. CVPR'17.
可能的未来方向
- 利用多示例学习进行视频分析。未剪辑视频中有很多无关内容,并非视频中所有的帧都对应于该视频标记,这符号多示例学习的设定。虽然Zhu等人在CVPR'16和Kar等人在CVPR'17的工作中对这方面已有一些探索,但仍有后续精进的空间。
- 精度与效率。Two-stream和3D卷积的方法相比,大致来说前者的效果更好,但前者需要逐帧图像前馈网络,而后者一次可以处理多帧,因此前者效率不如后者,尤其是预先计算并保存光流是一个很繁重的负担。如何能同时利用两者的优点是未来一个可能的研究方向,Feichtenhofer等人在CVPR'16已有初步的工作。LSTM能捕获的长距离依赖程度有限,并且更难训练,速度也更慢,因此ConvLSTM的方法在视频分析中用的不多。
- 资源受限下的视频分析。相比图像数据,处理视频数据需要更大的计算和存储资源。现实应用中很多是资源受限的,如何在这种场景下进行视频分析是一大挑战。将视频解压为能输入网络的一帧帧图像也需要不小的资源开销,Wu等人在CVPR'18提出直接利用原始视频输入,并利用视频压缩编码中的运动信息。
- 更大、更通用数据集。哪种方法更好和用什么数据集(解决什么任务)有很大关系。如果视频本身就比较静止,或者单帧图像已经包含了足够的信息,那么用逐帧单独处理的策略已经可以取得很好的结果。
- 视频=图像+音频。视频是一种多模态的数据形式,能否利用音频信息辅助视频分析呢。Aytar等人在NIPS'16的工作中利用图像辅助音频分析。
Y. Aytar, et al. SoundNet: Learning sound representations from unlabeled video. NIPS'16.
最后列出一些相关的综述文章。其中Tran等人实验研究了不同采样步长、不同输入大小、不同网络配置等对性能的影响。
Z. Wu, et al. Deep learning for video classification and captioning. arXiv: 1609.06782.
D. Tran, et al. ConvNet architecture search for spatio-temporal feature learning. arXiv: 1708:05038.
M. Asadi-Aghbolaghi, et al. A survey on deep learning based approaches for action and gesture recognition in image sequences. FG'17.
S. Herath, et al. Going deeper into action recognition: A survey. IVC'17.
作者简介
张皓:南京大学计算机系机器学习与数据挖掘所(LAMDA)硕士生,研究方向为计算机视觉和机器学习,特别是视觉识别和深度学习。个人主页:goo.gl/N715YT