《Qua Vadis, Action Recognition? A New Model and the Kinetics Dataset》论文解读之Two-Stream I3D

本文是CVPR 2017的一篇文章

Paper:Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset

github: kenetics-i3d

  • 在一个规模更大的新video数据集Kinetics上,重新评估了当下state-of-the-art的模型结构,并和在小数据集上训练的结构进行比较
  • 提出一个新模型I3D,在Kinetics上预训练后,在HMDB-51数据集上取得了80.2%的准确率,在UCF-101上取得了97.9%的准确率

图片来自电影'Quo Vadis'(拉丁语, 何去何从)(1951)。

在发生什么? 这些演员正要亲吻对方,还是已经这样做了?

《你往何处去?Quo Vadis?》, 这部完成于一八九六年的著作,史诗般的重现了使徒时期罗马皇帝尼禄残害基督徒,基督教经过殉道后而兴起的历史。大师显克维奇也因此书在历史小说中的卓越贡献,1905年力挫大文豪托尔斯泰获得诺贝尔文学奖。

 

本文的idea*

  • 根据之前3D-ConvNets的缺点(1. 参数多;2. 无法利用在ImageNet上预训练过的2D网络),提出一种benefit from ImageNet 2D ConvNet design and their learned parameters的方法,并探究了在时间维度上的感受野要如何设置
  • 吸收了之前state-of-the-art的模型,把双流的思想加到3D-ConvNet当中来,取得优异的效果(作者认为既然现在有了大数据集,那么3D ConvNet原先因为参数多而难训练的缺陷可以被大幅度改进。因此作者使用了3D ConvNet,同时双流这个思想还是很有用,因此这个新模型使用双流+3D ConvNet)
  • 验证了视频模型的迁移学习同样有效,即在Kinetics上进行预训练能够提升模型效果

Abstract

  • 在一个规模更大的新video数据集Kinetics Human Action Video dataset(包含大量数据,有400个动作分类,每个分类有超过400个实例,来源于YouTube,更有挑战性)上,重新评估了当下state-of-the-art的模型结构,并在该数据集上预训练后查看在小数据集上训练的结果提升
  • 提出一个新的模型Two-Stream Inflated 3D ConvNet (I3D)。该模型在Kinetics上预训练后,在HMDB-51数据集上取得了80.2%的准确率,在UCF-101上取得了97.9%的准确率

Introduction

  • 有大量成功的事实证明:在ImageNet上训练过的架构可以有效地用在其他地方(即迁移学习)。但在视频领域,不知道是否在一个量较大的数据集上进行训练也可以有助于提升性能
  • 本篇论文就是基于这个目的,重新实现了各种代表性的模型,并发现在大数据集上进行预训练确实能够提升性能,但提升幅度取决于具体模型类型
  • 基于上述发现,提出一个新模型I3D,能够充分发挥预训练的效果。它是基于当下最先进的图像分类模型,但把其中的卷积核以及pooling核都扩张成3D的形式
  • 一个基于Inception v1的I3D模型效果远超之前最好的方法
  • 本文没有把传统方法一起纳入比较,如bag-of-visual-words

Action Classification Architectures

  • 目前针对于video的模型架构还不明确,主要集中于以下几个问题

    卷积核是2D还是3D
    输入网络的是原始RGB视频还是预计算得到的光流
    对于2D的ConvNets来说,不同帧之间的信息是使用LSTM还是feature aggregation

  • 比较的范围有三类对象

    2D ConvNets with LSTM on top
    Two-stream networks
    3D ConvNets

  • 下列是本文重新实现的5种代表性模型结构

  • 之前由于缺乏数据,所使用的3D ConvNets模型都比较浅,最多只有8层。本文使用了如VGG、Inception等非常的网络,并导入这些预训练网络的参数(除了C3D,因为没法导入,卷积核之类的都少一维),将这些网络扩展成时空特征描述子。同时,作者发现,这样的情况下,双流(two-stream)依然有用

  • 本文使用的CNN结构是Inception v1加上BN

ConvNet + LSTM

  • 由于图像分类网络效果特别好,因此人们总想尽可能原封不动地把模型应用到视频上,如Karpathy做的那篇early/late/slow fusion的文章,但这样就会导致模型忽视了时序结构(如不能分辨开门与关门)
  • 因此,可以在模型后面加上LSTM来处理时序问题
  • 模型细节:把LSTM和BN加在Inception v1的最后一个average pooling层后面(即分类器之前),有512个节点。在模型最顶部加一个全连接层用于分类;The model is trained using cross-entropy losses on the outputs at all time steps. During testing we consider only the output on the last frame;输入帧是在25帧/s的视频流中每5帧取1帧,根据表1给出的信息,作者应该是从数据集的video中选取了5s的视频片段,所以总共是5s * 25帧/s * 1/5 = 25张rgb图像

3D ConvNet

  • 3D ConvNet看上去是一种很自然的方法,能够直接对于时空数据创建高层表征
  • 但这个模型有两个问题:

    相比于2D,参数更多,也就更难训练(因为数据量不足),所以之前3D ConvNet用的都是浅层的架构
    由于都是三维的核,无法直接用在ImageNet上预训练过的网络,因此只能在video数据集上train from scratch。由于之前的数据集量都太小,因此效果不是太有竞争力。但这种方法可能会比较适用于大数据集

  • 模型细节:是原论文中C3D的变种。8层卷积、5层pooling、2层全连接。与C3D的区别在于这里的卷积和全连接层后面加BN;且在第一个pooling层使用stride=2,这样使得batch_size可以更大。输入是16帧,每帧112*112。

Two-Stream Networks

  • LSTM缺点:能model高层变化却不能捕捉低层运动(因为在低层,每个帧都是独立地被CNN提取特征),有些低层运动可能是重要的;训练很昂贵
  • Two-Stream Networks: 将单独的一张RGB图片和一叠计算得到的光流帧分别送入在ImageNet上预训练的ConvNet中,再把两个通道的score取平均

    这种方法在现在的数据集上效果很好
    训练和测试都十分经济

  • 一个改进(Fused Two-Stream): 在最后一层卷积层之后,使用3D ConvNet把空间流和时间流融合(相比于传统双流是在softmax后才做fusion,把softmax输出的score进行平均)

    在HMDB数据集上提升了效果,测试时间也更短

  • 模型细节:输入是每隔10帧取连续的5帧以及相应的光流。在Inception v1之后,是一个3*3*3的3D卷积层,输出是512个channel,随后是一个3*3*3的3D max-pooling层以及全连接层。这个新的网络是用高斯随机初始化

  • 对于双流网络有两种实现,一种实现是训练时把两个流分开训练,测试的时候在最后把两个流的预测结果做平均;第二种是直接端到端进行训练。在c)和d)的实现中使用的是端到端;而在e)的实现中使用了第一种实现

New*: Two-Stream Inflated 3D ConvNets

  • 结论:3D ConvNets可以受益于在ImageNet上训练过的2D ConvNet模型,并有选择性的使用相应的预训练参数;虽然3D ConvNets可以直接从RGB流中学习到时序信息,但是使用光流还是可以提升效率
  • 区别于之前的几种双流,光流数是RGB帧数的2L倍,这里光流和RGB帧都使用了64帧

Inflating 2D ConvNets into 3D

  • 把一些很成功的2D模型转移成3D,通过把所有卷积核以及pooling核增加时间的一维

Bootstrapping 3D filters from 2D filters

  • 想要利用在ImageNet上预训练好的2D模型的参数:
  • Idea*: 若是把ImageNet中的同一张图片反复复制生成一个序列,那么这个序列就可以当作是一个video来训练3D模型了

    具体实现:把2D模型中的核参数在时间维上不断复制,形成3D核的参数,同时除以N,保证输出和2D上一样;别的非线性层结构都与原来的2D模型一样

Pacing receptive field growth in space, time and network depth (在时间维度上的感受野要如何变化,即conv和pooling的stride怎么选)

  • 在Image模型中,对待水平和垂直两个空间维度往往是一致的,也就是两个维度上pooling核大小以及stride都一样
  • 在时间维度上这样的对称对待未必是最优的(也就是时间维度上的pooling核大小选与空间上的一致是不可取的),因为这取决于帧率和图像大小之间的相对值
  • 具体实现:在Inception v1中,涉及到感受野变化的就是第一个卷积核(stride=2)以及后续4个max-pooling(stride=2),还有最后的一个7*7的average-pooling层。在本文的实验中,作者发现:在前两个max-pooling层上,时间维度上的stride取1;而在别的max-pooling层上使用对称的stride(即时间维度上的stride和空间上的一致);最后的average pooling使用2*7*7的核

Two 3D Streams

  • 作者发现双流还是有价值的,可能因为3D ConvNet只有纯前馈计算,而光流提供了迭代的思想在里面
  • 训练时,分别训练这两个网络,测试的时候在最后把两个流的预测结果做平均

Implementation Details

  • 见原文
  • 注:在训练时都是从原始video采样的,而test的时候是把全部的帧都送入网络。实现细节也可以看代码

The Kinetics Human Action Video Dataset

Experimental Comparison of Architectures (模型本身的比较)

  • 在UCF-101和HMDB-51上,I3D取得的效果也要好于之前的。这十分有趣,因为UCF-101和HMDB-51数据集本身比较小,而I3D模型参数非常多,按道理来说训练效果应该不会太好。这说明在ImageNet上预训练的效果可以扩展到3D
  • 在UCF-101上效果最好,miniKinetics次之,HMDB-51最差,这和数据本身的难度、数据量大小都有关系
  • LSTM和3D-ConvNet在miniKinetics上表现的更有竞争力,这是因为这两种方法对数据量的需求比较大
  • 在miniKinetics上,光流要比RGB流效果差,而在其他两个数据集上则相反,这是由于miniKinetics数据集本身有许多相机抖动
  • 相比于其他模型,I3D模型似乎从光流中获益最大,这有可能是因为I3D的时间长度更大(有64帧)

Experimental Evaluation of Features (用在迁移学习中,即把各种模型先在Kinetics数据集上做预训练,预训练得到的网络作为特征提取器,再去别的数据集上训练与测试)

  • 固定预训练的参数,在新数据集上只重新训练一个分类器
  • 整个网络在新数据集上fine-tuning

    固定预训练的参数,在新数据集上只重新训练一个分类器的做法在I3D和3D ConvNet上也有不少提升,但在其他几种方法上几乎没有变化
    整个网络在新数据集上fine-tuning的结果都得到大幅提升,尤其是I3D和3D ConvNet
    迁移学习对于I3D影响最大,这也可能是因为I3D的时间长度更大,在大数据集上预训练就可以学到更好的时间结构
    而迁移学习对于没有使用3D ConvNet结构的影响不大,这可能是因为那些方法的输入都是离散的帧而不是连续的帧,而那些2D方法都用了ImageNet预训练的参数,这些独立的帧其实更像是image而不是video,所以已经在image的数据集上预训练过的结构在video的大数据上进一步pre-train不一定有明显提升

附:行为识别 Dataset

The HMDB-51 dataset(2011)
Brown university 大学发布的 HMDB51, 视频多数来源于电影,还有一部分来自公共数据库以及YouTube等网络视频库.数据库包含有6849段样本,分为51类,每类至少包含有101段样本。

UCF-101(2012)
来源为YouTube视频,共计101类动作,13320段视频。共有5个大类的动作:
1)人-物交互;2)肢体运动;3)人-人交互;4)弹奏乐器;5)运动.

[Sport-1M(2014)] (https://cs.stanford.edu/people/karpathy/deepvideo/)

Sports1M 包含487类各项运动, 约110万个视频. 此外,Sports1M 的视频长度平均超过 5 分钟,而标签预测的动作可能仅在整个视频的很小一部分时间中发生。 Sports1M 的标注通过分析和 youtube视频相关的文本元数据自动地生成,因此是不准确的。

行为识别Dataset
The HMDB-51 dataset(2011)
Brown university 大学发布的 HMDB51, 视频多数来源于电影,还有一部分来自公共数据库以及YouTube等网络视频库.数据库包含有6849段样本,分为51类,每类至少包含有101段样本。

UCF-101(2012)
来源为YouTube视频,共计101类动作,13320段视频。共有5个大类的动作:
1)人-物交互;2)肢体运动;3)人-人交互;4)弹奏乐器;5)运动.

[Sport-1M(2014)] (https://cs.stanford.edu/people/karpathy/deepvideo/)

Sports1M 包含487类各项运动, 约110万个视频. 此外,Sports1M 的视频长度平均超过 5 分钟,而标签预测的动作可能仅在整个视频的很小一部分时间中发生。 Sports1M 的标注通过分析和 youtube视频相关的文本元数据自动地生成,因此是不准确的。

Kinetics-600 (2017)

Kinetics-600是一个大规模,高质量的YouTube视频网址数据集,其中包括各种人的行动。

该数据集由大约50万个视频剪辑组成,涵盖600个人类行为类,每个行为类至少有600个视频剪辑。每个剪辑持续约10秒钟,并标记一个类。所有剪辑都经过了多轮人工注释,每个剪辑都来自单独的YouTube视频。这些行为涵盖了广泛的类别,包括人与物体的互动,如演奏乐器,以及人与人之间的互动,如握手和拥抱。

参考文献:

1.https://dmortem.github.io/2018/03/07/Qua-Vadis-Action-Recognition-A-New-Model-and-the-Kinetics-Dataset/

2.https://www.cnblogs.com/nowgood/p/actionrecognition.html

猜你喜欢

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