Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks论文学习

Abstract

CNN 在图像识别领域是非常有效。但是用一个CNN学习时空视频特征就没那么简单了。有一些研究指出了,3D卷积在获取视频时空维度信息上是有帮助的。但是,3D CNN 要是非常深的话,就会非常消耗算力和内存。那么为什么不在3D CNN中使用现成的2D卷积呢?这篇论文针对残差网络设计了 bottleneck 构建模块的多个变体,在空间域用1×3×31\times 3\times 3卷积滤波器(与2D CNN等价)加上3×1×13\times 1\times 1卷积来模拟3×3×33\times 3\times 3卷积,在时域相邻的特征图上构建时间连接关系。此外,作者提出了一个新的网络结构,叫做 Pseudo-3D 残差网络(P3D ResNet),在ResNet的不同位置使用了不同的残差模块变体,这是因为网络结构越深、越多样,网络的性能就越好。相较于3D CNN和基于帧的2D CNN,P3D ResNet 在 Sports-1M 视频分类数据集上取得了明显的提升,分别是5.3%5.3\%1.8%1.8\%。作者进一步在5个不同的基准和3个不同的任务上验证了P3D ResNet预训练模型的泛化能力,证明了它的性能非常优秀。

在这里插入图片描述

1. Introduction

今天的数字内容是多媒体的:文本、语音、图像、视频等。因着移动设备的兴起,图像和视频在互联网用户之间成为一个新的交流方式。这就促进了多媒体信息理解的技术的发展。这些技术发展的基础就是特征学习。最近CNN的崛起展现了其在图像领域非常强的视觉特征学习的能力。例如,在ImageNet测试集上,残差网络的集成方法取得了3.57%3.57\%的top-5错误率,甚至要比人的5.1%5.1\%还低。但是,视频是一个时间帧序列,变化和复杂度都比较高,造成时空特征学习比较困难。

对视频中的时空信息进行编码,一个自然的方法就是将2D卷积核扩展至3D卷积,训练一个新的3D CNN。这样,网络就不仅可以接触到每帧画面里的视觉样貌,也可以接触到连续帧中的时间变化。但是3D CNN 的训练非常消耗算力,与2D CNN相比模型大小也呈指数增长。以11层的C3D CNN为例,模型大小是321 MB,这甚至比152层的2D残差网络(235 MB)还要大,使得它的训练极其困难。更重要的是,在Sports-1M数据集上对ResNet-152直接进行微调,效果要比在视频上训练的C3D还要好,如图1所示。另一个产生时空视频特征的方法就是在RNN上对多帧特征使用池化策略,这些特征通常是2D CNN中最后一个池化层或全连接层的激活。但是,这类方法只在高层级特征之间构建了时间联系,而没有充分利用低层级之间的联系,如角点和边缘信息。

本文证明,通过设计bottleneck构建模块,使用时间和空间卷积滤波器,上述问题就可以得到缓解。每个模块的核心组建是一个1×3×31\times 3\times 3卷积层和一个3×1×13\times 1\times 1卷积层的组合,它们可以是平行结构,也可以是级联结构,用它来代替标准的3×3×33\times 3\times 3卷积层。这样模型大小就大幅度缩减了,而2D CNN在图像领域的优势也可以得到充分发挥,用2D CNN中的3×33\times 3卷积来初始化1×3×31\times 3\times 3卷积核。作者提出了一个新的 Pseudo-3D 残差网络(P3D ResNet),在网络的不同位置上摆放不同的残差模块,增强网络的结构多样性。这样在 P3D ResNet 层与层之间就构建了时间联系,学到的视频特征包含了与目标物体、场景和动作相关的信息,使之对不同的视频分析任务更加通用。

本文主要贡献是,提出使用bottleneck构建模块来模拟3D卷积,节省算力和资源,也可以看到作者是如何放置不同的残差模块来学习更深的网络。此外作者也提出了P3D残差网络来学习视频特征。

2. Related Work

视频特征学习方法主要可以分为两类:人工方法和基于深度学习的方法。

人工特征学习方法通常一开始就检测时空兴趣点,然后通过局部特征来描述这些兴趣点。在这个体系中,人们先后提出了 Space-Time Interest Points, Histogram of Gradient and Histogram of Optical Flow, 3D HOG和SIFT-3D,延伸图像领域的特征表示,表示三维中的时间维度。最近Wang等人提出了密集轨迹特征,在不同的尺度上对每一帧的局部区块进行密集采样,然后在密集的光流场上追踪它们。

深度学习模型是视频特征学习中最新的方法。Karparthy等人将基于CNN的帧特征表示堆叠起来,然后利用时空卷及来学习视频特征。在[25]中,提出了 two-stream 结构,在画面帧和光流上分别使用CNN结构。这个结构后来又被进一步拓展,人们使用了 multi-granular 结构、卷积融合、key-volume mining和时间分割网络等来学习视频特征。Wang等人[35] 提出的方法,在时空tube上对local ConvNet responses进行池化,作为视频描述器,responses的中心为目标的轨迹。然后使用 Fisher vector 将这些视频描述器编码为全局视频特征。最近 LSTM-RNN网络也有用于对视频时间的动态进行建模。在[9,37]中,使用了时间池化和stacked LSTM网络将帧级的特征(光流图像)组合起来,发现其中的长期时间关系,学习更加鲁棒的视频特征。Srivastava等人[28]进一步将视频特征学习任务表示为一个 autoencoder 模型,基于LSTM的 encoder和decoder。

可以发现,上述基于深度学习的方法将视频作为一个帧/光流图像序列来学习视频特征,而连续帧之间的时域变化并没有得到完全利用。为了解决这个问题,Ji等人提出了3D CNN,直接学习短视频的时空特征。Tran 等人设计了一个11 层 3D CNN(C3D),利用大规模监督视频数据集,在16帧的视频片段上学习视频特征。但是,3D CNN 结构的算力消耗和内存使用过高,很难去有效训练一个3D CNN。本文方法与之不同,提出用2D空间卷积加上1D时域联系来模拟3D卷积,更加节约算力和内存,以此来学习视频特征。

3. P3D Blocks and P3D ResNet

这部分,作者首先介绍了用于视频特征学习的3D卷积,它可以自然地解耦为2D空间卷积来编码空间信息,和1D时域卷积滤波器。然后在残差网络中设计了bottleneck构建模块,叫做Pseudo-3D(P3D),它使用了空间和时间卷积滤波器。最后,作者提出了一个新颖的Pseudo-3D 残差网络(P3D ResNet),在不同位置有不同的P3D模块,结构类似ResNet,并通过大量实验,将其与多个变体进行了性能和时间效率在这里插入图片描述的比较。

3.1 3D卷积

给定一个大小是c×l×h×wc\times l\times h\times w的视频片段,c,l,h,wc,l,h,w分别是通道数、片段长度、每帧的高度和宽度。对时空信息进行编码的最自然的方式就是使用3D卷积。3D卷积同时对空间信息进行建模,和2D滤波器一样,然后在帧之间构建时间联系。为了简洁,作者将3D卷积滤波器大小表示为d×k×kd\times k\times kdd是卷积核时域的深度,kk是卷积核空间大小。因此,假设我们的3D卷积核大小是3×3×33\times 3\times 3,它可以自然地解耦成1×3×31\times 3\times 3卷积核和3×1×13\times 1\times 1卷积核,前者等价于空间域上的2D CNN,后者类似时域上的1D CNN。这样一个解耦的 3D 卷积可以看作为Pseudo 3D CNN,它不仅大幅度降低了模型大小,而且可以在图像数据上预训练2D CNN,使得Pseudo 3D CNN能够更充分地使用图像中的环境和目标信息。

3.2 Pseudo-3D Blocks

受残差网络的启发,作者设计了多个新的构建模块,叫做Pseudo-3D(P3D)模块,代替2D残差单元,对视频进行时空编码。然后,作者回顾了残差单元的基本设计。最后介绍了每个P3D模块的bottleneck构建结构。

残差单元。残差网络由多个残差单元构成,每个残差单元可以由xt+1=h(xt)+F(xt)x_{t+1} = h(x_t) + F(x_t) 给定,其中xtx_txt+1x_{t+1}表示第tt个残差单元的输入和输出,h(xt)=xth(x_t)=x_t是恒等映射,FF是非线性的残差函数。因此上述等式可以重写为:

(I+F)xt=xt+Fxt:=xt+F(xt)=xt+1(I+F) \cdot x_t = x_t + F\cdot x_t := x_t + F(x_t) = x_{t+1}

其中,FxtF\cdot x_t 表示在xtx_t上进行残差函数FF。残差网络的思想就是利用单元的输入xtx_t作为参照,学习残差函数FF,它通过短路连接实现,而不是没有参照地直接学习非线性函数。

P3D Blocks Design 为了将ResNet的 2D 残差单元改造为编码时空视频信息的3D结构,作者遵循了3.1节中提到的Pseudo 3D的原则,对残差网络中的残差单元进行修改,设计了多个Pseudo 3D模块。但有两个问题我们需要考虑。首先,空间维度上的2D滤波器和时间维度上的1D滤波器应该直接还是间接地发挥影响。两类滤波器直接影响的意思就是,空间2D滤波器的输出作为时域1D滤波器的输入(以级联的方式)。间接影响就是每类滤波器都有一个单独的path(即平行的结构)。第二个问题就是,这两类滤波器是否应该直接影响最终的输出。这样,直接影响就是每类滤波器的输出直接连接到最终的输出。

基于这两个设计问题,作者设计了3个不同的P3D模块,如图2所示从P3D-A到P3D-C。其结构的细节比较如下:

在这里插入图片描述

(1) P3D-A:将时域1D滤波器(T)放在空间2D滤波器(S)之后,以级联的方式堆叠结构。因此,这两类滤波器能够直接影响到彼此,因为它们在同一条path内,而只有时域1D滤波器是直接连接到最终输出的,

(I+TS)xt:=xt+T(S(xt))=xt+1(I+T\cdot S)\cdot x_t := x_t + T(S(x_t)) = x_{t+1}

(2) P3D-B:第二个设计与第一个相似,只是在两个滤波器之间采用了间接影响,它俩在不同的pathways上,以平行的方式。尽管SSTT之间没有直接的影响,最终的输出是将这两个直接汇总得到,可以表示为:

(I+S+T)xt:=xt+S(xt)+T(xt)=xt+1(I+S+T)\cdot x_t := x_t + S(x_t) + T(x_t) = x_{t+1}

(3) P3D-C:最后一个设计是上述两个的折中,在S,TS, T和最终的输出之间同时建立直接的影响。为了让SS和最终的输出之间有直接联系,作者在SS和最终输出之间建立了一个短路连接,这样

(I+S+TS)xt:=xt+S(xt)+T(S(xt))=xt+1(I+S+T\cdot S)\cdot x_t := x_t + S(x_t) + T(S(x_t)) = x_{t+1}

Bottleneck 结构。在2D残差单元里面,我们用 bottleneck 设计来降低计算复杂度。如图3(a)所示,它没有用空间2D滤波器(3×33\times 3卷积),而是用了三层的残差单元,包含1×1,3×3,1×11\times 1,3\times 3,1\times 1卷积,第一个和最后一个1×11\times 1卷积层分别用于降低和还原输入样本的维度。这样的设计将中间的3×33\times 3卷积作为bottleneck,输入和输出的通道都较小。因此,作者延续了这个简洁的方法,在P3D 模块中也借鉴了 bottleneck 设计。和它本质相似,对于每个只含有一个空间2D滤波器(1×3×31\times 3\times 3卷积)和一个时域1D滤波器(3×1×13\times 1\times 1卷积)的P3D模块,作者在path的两端各增加了一个1×1×11\times 1\times 1卷积,分别用于降低和还原维度。这样我们就减少了空间2D和时域1D滤波器的输入、输出维度。P3D模块的所有 Bottleneck 的细节结构如图3所示。

3.3 Pseudo-3D ResNet

为了验证这三个P3D模块的优势,作者首先设计了三个P3D 残差网络的变体,即 P3D-A ResNet, P3D-B ResNet, P3D-C ResNet,将一个50层 ResNet 里的残差单元全部替换为某一个 P3D 模块。标准ResNet-50和三个变体之间的性能和速度比较后面会给出。然后作者提出了一个P3D ResNet 的完全版本,为了增加结构多样性,作者将三个P3D模块混合使用,替换所有的残差模块。

在这里插入图片描述

P3D ResNet 变体之间的比较 该比较是在UCF101 视频动作识别数据集上进行的。ResNet-50 在UCF101视频数据上进行了微调。输入大小是224×224224\times 224图像,进行了随机裁剪至240×320240\times 320视频帧。而且,作者冻结了除第一层之外所有的 Batch Normalization 层的参数,增加了一个 dropout 层,dropout rate 为0.9,降低过拟合。微调好 ResNet-50之后,网络会对每一帧预测一个分数,然后将一个视频里的所有帧的分数加起来,求得的平均值就是该视频的分数。3 个 P3D ResNet 变体都用 ResNet-50 初始化,除了时域卷积,它是在UCF101上做了进一步的微调。对于每个P3D ResNet 变体,输入视频片段的维度被设为16×160×16016\times 160\times 160,它是从16×182×24216\times 182\times 242的不重叠的视频片段上随机裁剪得到的。每一帧/视频片段都做了水平翻转,进行数据增强。在训练阶段,每个mini-batch 是128帧/视频片段,它是通过多GPU并行实现的。网络的参数通过标准SGD优化的,初始学习率为0.001,每3000个迭代就除以10,。训练一共进行了7500个迭代。

表1列出了 ResNet-50和Pseudo-3D ResNet变体在UCF101上的性能和速度。与ResNet-50相比,三个P3D ResNet变体都展现了更优的性能,模型大小要稍微大一些。该结果基本显示了利用时空信息的P3D模块是有优势的。而且,P3D ResNet变体在速度上要更快,可以达到每秒8.69.08.6\sim 9.0个视频片段。

混合不同的P3D模块。受结构多样性的启发,作者设计了一个P3D ResNet 的完全版本,在结构中混合使用不同的P3D模块,增强结构多样性,如图4所示。作者将残差单元替换为一系列的P3D模块,顺序是P3DAP3DBP3DCP3D-A \rightarrow P3D-B\rightarrow P3D-C。表1详细介绍了完全版本的性能和速度,它的准确率要比三种变体分别高0.5%,1.4%,1.2%0.5\%,1.4\%,1.2\%,表明增加结构多样性可以有效提升网络性能。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章