I3D: A New Model and the Kinetics Dataset

    之前也看过动作识别的论文,但居然没有看一下I3D这么经典模型的论文,感觉自己没有计划,没有规划,这样下去,吃枣药丸。问题:在I3D的Mixed_5c的输出是2048,单个RGB和单个光流的输出是1024,在论文中是怎么分开的?又能怎么合到一起?也就是说怎么做到只输入RGB,网络能同时提取光流,并行处理RGB和光流?

背景:

    UCF-101和HMDB-51两个动作分类数据集不够大,作者提出新的数据集Kinetics Dataset。有400个人类动作类,每个类有400多个clip。提出了一个新的Two-Stream Inflated 3D convNer(I3D)双流3D网络,是基于2D convNet inflation。很深的分类卷积层的filter和pooling kennel被扩展到3D。这使从视频种学习时空特征提取器成为可能。

1、Introduction

    引入一个新的model,该model能在Kinetics上预训练,并实现高性能,即I3D。I3D是建立在sota的图像分类体系结构上,但把filter和pooling的kernel扩张成3D,产生一个spatio-temporal classifier。

2、动作分类体系结构

    当前视频体系结构的一些主要区别是使用2D kernel(基于图片)还是3D kernel(基于视频)。网络的输入是只有RGB视频还是包括预先计算的光流。  如果使用2D convNet,信息是如何在帧之间传递的,可以使用temporally-recurrent layers 比如LSTM或随时间推移的特征聚合。

这些model除了C3D之外,都有预训练好的Imagenet模型作为子组件,作者实验策略是假设一个通用的Imagenet上预训练好的图像分类器作为base,这里采用的是Inception-v1,并以不同的方式对其进行变形。作者期望在这个base下,找到最有利与动作分类的变化。

2.1 The Old I: ConvNet + LSTM

    使用2D ConvNet从每个帧独立提取特征。在Inception-v1的最后一个average pooling layer之后,加上一个LSTM和BN,有512个隐藏单元。再最后加一个fc用来分类。使用交叉熵损失函数来训练,提取帧的时候是每5帧提取一帧特征。

2.2 The Old II: 3D ConvNets    

改进的C3D:有8个卷积层,5个池化层,2个全连接层。该模型的输入使短的16帧的clip,112x112分辨率。与C3D不同的是,在所有的卷积层和fc之后都使用了BN。也就是说每16帧,就提取16帧的特征组成一个clip的特征?。另一个不同的地方是,再第一个pooling中,使用步长是2而不是1,这减少了内存占用,并允许更大的batches————这对于BN很重要(尤其是再fc之后的BN,这些layer没有权重绑定)。这样的话,每个标准GPU每个batch可以训练15个videos。

2.3 The Old III: Two-Stream Networks

    LSTM对来自卷积最后一层的特征可以模拟high-level variation,但可能无法捕捉fine low-level motion。

    Simonyan等人提出一种不同的,实用的方法,通过对单个RGB帧和10个外部计算的光流(其实是5个,每个都有x和y两个方向的运动特征)的预测进行平均,对视频的短时间快照进行建模。可以通过再imagenet上预训练好的两个网络来分别处理rgb和光流。

     最新的方法是再嘴和一个卷积层融合空间流和光流。使用了Inception-v1,输入时间隔10帧采样的5个连续的RGB帧,以及相应的光流片段。时间和空间feature先经过512x3x3x3 的3D卷积层,接着是3x3x3 的3Dmax-pooling,最后是fc,之后两个特征进行融合,即经过average pooling layer of Inception-V1(5x7x7的特征网络,对应时间,x和y维度)。

2.4 The New: Two-Stream Inflated 3D ConvNets

    虽然3DconvNet可以直接从RGB流中学习到时间信息,但通过包含光流,仍可以大大提高性能。

Inflating 2D ConvNets into 3D: 已经有了很好的图像分类模型,作者建议简单地将图像分类器(2D)转换为3D ConvNets。这可以从2D架构开始,通过膨胀filters和pooling的kernel---这是通过赋予它们一个额外的时间维度来实现的。filter通常是正方形NxN,膨胀成NxNxN。

Bootstrapping 3D filters form 2D Filters:从预训练的ImageNet模型中引导参数。也就是沿着时间维度,复制2Dfilter的权重N次,并通过除以N来重新缩放它们。

在空间,时间和网络深度上调节感受野的growth:


    Two 3D Streams:分别训练RGB和光流网络,并在测试的时候进行平均。

你可能感兴趣的:(I3D: A New Model and the Kinetics Dataset)