《End-to-end Video-level Representation Learning for Action Recognition》论文解读之DTPP

paper: DTPP

code:DTPP

  End-to-end Video-level Representation Learning for Action Recognition

用于动作识别的端到端视频级表示学习

概要

    从帧/剪贴式特征学习到视频层表示构建,动作识别的深度学习方法近年来得到了快速发展。然而,目前的方法受到部分观测训练或没有端到端学习的困扰,或局限于单一时间尺度的建模等。在本文中,我们基于双流法卷积神经网络,提出了一种基于时间金字塔池(DTPP)的深层网络,一种端到端视频级表示学习方法,来解决这些问题。具体地说,首先,RGB图像和光流堆栈要在整个视频中进行稀疏采样。然后利用时间金字塔池层来聚集由空间和时间线索组成的帧级特征。最后,该模型具有紧凑的视频级表示,具有多个时间尺度,具有全局和序列感知。实验结果表明,DTPP在UCF101和HMDB51这两个具有挑战性的视频动作数据集上,无论是通过ImageNet pre-training还是Kinetics pre-training,都达到了最先进的性能。

1. Introduction

    近年来,人类行为识别在人机交互、行为分析和监控等领域的应用越来越受到人们的关注。从传统基于手工提取的特征的方法〔1, 2〕3, 15)到深度学习方法〔4, 5, 6、19, 20, 24、25〕;从小型视频数据集(11, 12)到大规模视频数据集〔28, 32〕,在人类行为识别领域已经取得了相当大的进展。

    然而,对于基于深度学习的视频表示构建,仍然存在一些有待解决的挑战,其中之一是长时间结构建模〔6, 19, 20,24〕。由于图像不会像视频那样随时间而演化,因此可以用图像级标签作为监督[14]安全地表示它。在给定的视频中,早期的方法试图学习框架特征(4)或剪辑级别特征[17 ],在测试时,帧级预测被平均得到视频级预测[4]。而剪辑级的特性被聚合为支持向量机分类的视频表示。最近发现,通过视频1的单帧或短视频剪辑训练的分类器在不同类别的视频(13,20)中遇到与外观相似的帧/片段时,会使自己混淆,如图1所示。为了克服部分观测训练造成的混乱,一些作品一直试图学习视频级别的表示[13、10、16、19、20、24、50]。它们主要遵循两个不同的流水线:(1)将两个流结构的框架特征合并成固定大小的视频级表示[13, 19, 20,24, 50 ],其采用复杂的编码方法[22, 23, 52,53 ];2)对长期输入帧进行三维卷积,学习时空表示[10,16]。然而,他们的表示是用不充分的(例如,3)帧/栈的采样[19],或者没有端到端训练[20,24],或者限制到单时间尺度建模[20,50],因此可能不够有鉴别性,并且是次优的。一些方法的表示是非常高维的[13,24],这使它们很难训练和部署。此外,与2D卷积相比,长期的3D卷积[16]必须减少输入帧的空间分辨率,以减少内存消耗,从而更容易丢失更好的信号。

为了解决这些问题,本文提出了一种新的视频级表示学习方法,称为时间金字塔池深度网络(Deep networks with Temporal Pyramid Pooling, DTPP),如图2所示。我们的方法旨在用足够的帧在视频上进行稀疏采样,以端到端的方式构建视频级表示。训练后的模型具有视频级表示,可以在训练和测试中进行视频级预测,而不像以前的两流方法那样对帧级预测进行聚合[4,5,6,25]。时间金字塔池层用于将帧级特征编码到具有多个时间尺度的固定大小的视频级表示中,使用粗到细的架构来捕获视频中人类动作的时间结构。

    我们的方法建立在双流方法的基础上,其中空间流和时间流分别作为输入RGB图像和光流堆栈。主要的不同之处在于,我们的方法旨在学习视频级的表示,而不是帧级的特性。通过对视频级表示和预测之间的映射,可以避免两流模型由于局部观测训练而容易出现的错误。我们的方法也类似于一些动作识别中的局部编码方法[20,26,27]。不同的是,他们的方法没有经过端到端的训练,或者仅仅局限于单个时间尺度的学习.

    总之,我们的贡献包括:(a)我们提出了一种用于动作识别的端到端视频级表示学习方法,称为时序金字塔池(DTPP)的深层网络;(b)使用时间金字塔池层将帧级特征聚合到固定大小的视频级表示中,以多尺度方式捕获视频的时间结构;(c) DTPP通过ImageNet [48] pre-training或Kinetics [28] pre-training,在UCF101[12]和HMDB51[11]上均达到最先进的性能.


    在本文的其余部分中,第2节讨论了相关的工作。第3节描述了我们提出的方法。在第4节中,我们的方法在数据集上进行评估。最后,第五节给出结论。

2. Related works

Hand-crafted video representation. 

    在深度学习热潮之前,手工制作的特征在动作识别中占主导地位,如时空感兴趣点[2]、长方体[29]、轨迹[3,30]。其中,改进的密集轨迹(iDT)[3]是目前最先进的手工制作方法的基础,它通过聚集密集轨迹上的丰富描述符和补偿相机的运动来明确地考虑运动特征。然后通过像BoW, Fisher vector这样的编码方法,将描述符聚合到视频级表示中。基于CNN的一些分类流仍然建立在iDT上,例如,轨迹池的深度卷积描述符(TDD)[31]。

Frame-level feature by deep learning.基于深度学习的帧级特征

Simonyan等等。[4]设计了双流卷积网络,将ImageNet预训练用于空间流和光流用于时间流的输入。在训练过程中,它从每个视频中抽取一个RGB图像或光流堆栈。时间段网络(TSN)[5,6]是利用深度CNN和交叉模式预训练对两流对流进行扩展。在训练过程中,它将几个(3或7)帧级的预测聚合成一个全球视频预测,并最终超过了iDT[3]。C3D[17]在一个连续帧(通常为16)的短视频剪辑上应用了3D卷积。然而,所有这些方法都构建框架/剪贴层特性,而不是视频层表示,因此会受到部分观察训练造成的混乱。最近LSTM在序列建模方面的成功所激励。也有尝试在视频动作识别中使用LSTM[38,39,40,41]。Ng等人对LSTM进行了训练,将CNN特性作为输入,将所有时间步长的预测通过线性加权融合到视频级预测中。LSTM还被用于学习视频在无监督设置[38]中的序列特征,学习注意模型[40]。然而,由于其附加的参数以及视频帧与语音、文本[41]之间的差异,LSTM还没有显示出它的动作识别能力。

Video-level representation by deep learning. 深度学习的视频级表示

研究人员发现,由于单帧或短视频剪辑的训练造成的错误标签分配问题[5,6,19,20]。在深度学习的基础上,近年来出现了几种视频层次表示学习方法。Varol等人探索了长期的时间卷积来学习视频级表示。然而,由于3D卷积的大量参数[16,17],他们不得不降低视频帧来减少内存消耗,因此是次优的。Diba等人[19]提出了深度时间线性编码(Deep Temporal Linear coding, TLE),通过双线性编码实现高性能[23,22]。但是,由于在训练过程中只对3帧或流堆进行了采样,因此视频层表示的小标题包含了一个给定视频的不足信息。我们的方法在训练过程中取样了更多的框架/堆栈。

还有一些扩展[13,24]将传统的内编码方法插入到深度CNN中,如Fisher vector[52]和VLAD[53]。它们被设计成将整个视频中CNN的时空特征聚合成几个集群。这些方法的表示要么是非常高维的,例如对于ActionVLAD[13]来说是32,768-D,对于深度量化[24]来说是131,072-D,或者没有端到端的训练,比如深度量化[24]。

虽然我们的方法的表示维度低于他们的方法,也就是7168-D,而且它也被训练到endto-end。此外,我们的方法明确考虑了多时间尺度的视频表示构建,这是单时间尺度的方法所缺乏的,例如深度局部视频特征(DOVF)[20]和动态图像网络

    

3. End-to-end video-level representation learning

3.1. Overall architecture 总体结构

图2显示了具有时间金字塔池(DTPP)的深层网络架构。给定一个由t帧组成的视频X,每个帧记为xi,整个视频记为X = {x1, x2,…,xt }。考虑到视频帧的冗余和内存限制,并不是所有的视频帧都用来表示视频。相反,每个视频首先被分成T段,每段时间相等,然后从每段中抽取一个帧。这些帧被输入到一个ConvNet, ConvNet独立计算每个帧的特征。得到的特征向量是{S1, S2, . . . , ST },,, i = 1, 2, . . . , T,d为帧特征维数。为了将多个帧级特性聚合到视频级表示中,在它们之上放置一个时间金字塔池(TPP)层。通过端到端训练,得到了具有多个时间尺度的固定尺寸表示法。

Network architecture.网络结构

将BN-Inception网络[8]作为DTPP的主干。BN-Inception有33层的深度,包括一个完全连接的层。如上所述,独立地为每个视频帧执行转发传播。我们在对每一帧进行全局平均池操作(即1024-维 向量)之后提取最后一个卷积层的特征。时间金字塔池层用于将这些帧级特性聚合为视频级表示,如图3所示。时间池层的金字塔层的数目为K,箱的总数为

                                                          


在每个时间容器中,每个过滤器的响应由一个池化函数 

                                      

平均池化:

              

最大池化:

           

形式上,时间金字塔合并层P的输出是m×d维,它是K金字塔级的视频级表示。

注意,最粗的金字塔级P1覆盖整个视频。每一个较高的金字塔级PI,i=2,。…k由时间顺序对齐的汇集容器组成。因此,所获得的表示是全局序列感知的。以这种方式,DTPP具备了一定程度的序列正则化,这在一些双流风格的方法中是缺乏的,如TLE[19]、TSN[5,6]、Deep Quantization[24]。视频级表示P后面是一个退出层,是对全连接层的输入,它输出给定视频X的视频级预测。

Two-stream ConvNets.

417/5000  
每个输入帧都通过保持长宽比来重新缩放,其较小的边被调整为256像素。RGB图像和光流堆栈分别作为两个独立模型的输入,即空间流和时间流。对空间流,每个输入帧大小是224×224×3。时间流,每个输入帧大小为224×224×10,这是5个连续光流场的堆栈[5 ]。

3.2. Training


  考虑一个包含N个类别的N个视频的数据集

         

我们的目标是优化ConvNets的参数,通过端到端训练建立视频级表示P。在形式上,视频级预测可以直接得到

ϕ是softmax算子,Wc和bc是全连接层的参数。

在训练阶段,结合交叉熵损失,最终损失函数为

     

Model pre-training. 模型预训练

   使用两种预训练:ImageNet[48]预训练和Kinetics[28]预训练。对于第一个,空间流通过预先在ImageNet上训练的模型进行初始化,并通过微调加以调整。为了加快收敛速度,我们借用在视频动作数据集上训练的TSN[5]的时序流来初始化我们的时序模型。对于第二个模型,使用大型视频数据集Kinetics数据集[28]对模型进行预处理。建立了动态数据集[28],探讨了从大规模视频数据到小型视频数据的迁移学习的效果。使用熊[44]提供的预训练的TSN[5, 6]模型,该模型首先适用于我们的DTPP框架,并对小型视频动作数据集进行进一步微调[11,12]。两个流的卷积参数从预先训练的模型中转移,完全连通层被随机初始化。算法1总结了学习过程。


Training detail discussions训练细节讨论

在默认情况下,每段视频中都会对25个RGB图像和光流堆栈进行采样。在后来的消融研究中,也从每个视频中抽取不同数量的帧/堆栈,以探究训练帧数的影响。

3.3. Inference

对于测试期间的每个视频,采样25个RGB图像和光流栈。同时,从4个角和1个中心的剪切,以及它们的水平翻转,从采样帧。从这10种剪切中的一个,获得1个视频水平预测。相应的10个视频级预测被平均以得到最终的预测,所有的预测都是在没有SOFTMax标准化的情况下获得的。
用于融合来自两个流的预测的模型融合,使用加权平均方案,其中每个流的融合权重默认为0.5。在没有SOFTMAX标准化的情况下融合得分。

4. Experiments

。。。。

猜你喜欢

转载自blog.csdn.net/Gavinmiaoc/article/details/81198831