0


I3D (inflated 3D)是什么?

0.简介

I3D是除了双流网络视频领域里的另一力作,本文主要的工作有2个方面,一方面就是这个标题名称,inflated,本文提供了一种方法将2D网络膨胀为3D网络,使得视频理解不需要再耗费心神去设计一个专门的网络了,而是可以直接使用图片预训练好的模型甚至是预训练的参数,另一方面是提出了一个Kinetics400数据集(后续还有扩充),大家可以在这个数据集做视频理解的预训练,然后迁移到其他数据集上,也能获得比较好的结果

1.视频理解数据集的对比

数据集yutube 8Msport 1Mucf101hmdb51数据量800万100万1.3万0.7万局限性数据量太大纯运动类,迁移性不好数据量少数据量少
在图像的领域,研究者可以在ImageNet上做预训练,然后在具体任务上做fine tune,一般都可以获得很好的结果,但是在视频领域,缺少这样的一个数据集,本文提出的Kinetics就可以解决这样的问题。Kinetics一共有400个类别,每一个类目有超过400个样本,每个样本均来自于不同的yutube视频,所以视频的多样性是很好的。而在Kinetics上预训练好的模型,在ucf101和hmdb51上都能取得非常好的结果(98%和80%)

2.视频领域里3种方式的对比

在本文发表时,视频理解领域有3种主流的方式:

a)卷积神经网络+LSTM

   用卷积神经网络来对视频的每一帧抽特征,然后再过lstm,非常符合直觉,但是效果并不好

b)3D卷积神经网络

  将视频切分成一个个的视频段,然后再丢给模型进行学习。3D建模导致参数量变得很大,而由于前面提到的数据集的数据量比较少,训练出来的结果也并不理想

c)双流网络

在时间和空间上分别用卷积神经网络,时间上是先抽取光流,然后用卷积神经网络来学习光流到最后动作的一个映射关系,最后再融合(late fusion,做加权平均)起来。

d)3d-fused双流神经网络

其实是b)和c)结合在一起的结果,前半部分和双流网络的结构相同,只是在最后并不是用later fusion将2个网络的结果做加权平均,而是在最后用一个小的3d卷积神经神经网络替代,做early fusion。后续也有结果证明,前面用2d cnn,后面用3d cnn的结果比较好(相比于先3d cnn+2d cnn),也比较好训练。

e) 双流I3D网络

和c)相比就是用3d cnn替代了2d cnn

3.实现细节

3.1 inflate如何实现

2d网络里2d的卷积kernel直接变成3d的卷积kernel,2d的池化层直接变成3d的池化层就好了,剩下的网络结构统统都不变,这样我们就可以选择在图像领域里用过比较好的2d网络结构(vgg,res50 etc.),得到在视频理解领域下可以使用的3d的网络结构。

3.2 bootstrap,如何使用2d预训练的模型参数初始化3d模型参数

将同一张图片反复地复制粘贴得到一个视频,假设视频的长度是N,每一帧的输入为x,将图片的2d filter在时间维度上也复制N遍,那么就得到了wNx,那么最后再进行缩放,除以N,那么就得到了wx,具体实现见gluon-cv/i3d_resnet.py at ab03ca04c588342be5cd659c3f96011c0146ac4f · dmlc/gluon-cv · GitHub

3.3 具体的实现细节

虽然前面所说的,pooling的时候 33对应的转为333,但在实现上,还是稍微有点区别的,时间维度上最好不要做下采样,所以前面2个max pooling层对应的kernel是133,stride是12*2,后续的就kernel和stride就是正常inflate了。

3.4 5种模型结构的参数对比

可以看到,3D卷积的网络参数是最多的,而ConvNet+LSTM和双流网络对应的参数就比较小。

训练:

convNet+LSTM:输入是25帧,一秒是25帧,但是lstm每5帧抽取一帧,所以25帧就需要5秒

双流网络:任选一帧,接下来的10帧去计算光流图,所以是11帧,0.4秒

测试:

为了公平比较,所有模型测试时都覆盖了整个视频10s

4.实验结果

4.1 5种模型结构的结果对比

1)I3D在所有数据集上的表现最好

2)LSTM和3D-ConvNet的效果一般

3)无论算法在图像上的表现结果比光流上的好或者坏,2者结合在一起结果都有大幅度的提升

4.2 使用Kinetics数据集迁移学习的效果

original:使用ucf-101的数据预训练和测试

fix:冻住骨干网络在Kinetics数据集上训练

full-ft:整个网络在Kinetics数据集上微调

可以看到整个网络在Kinetics数据集上微调获得的效果最好

更多模型的对比:

可以看到I3D效果都是非常好的,即便是在只使用Kinetics数据集进行预训练的时候,效果也是相当亮眼的。

后续还诞生了很多基于I3D算法的研究,比如 NonLocal Network,在I3D后面加上了self attention,可以说是开启了3D-conv研究的新潮流。

论文地址:https://arxiv.org/abs/1705.07750

参考:I3D 论文精读【论文精读】_哔哩哔哩_bilibili


本文转载自: https://blog.csdn.net/qq_17246605/article/details/125460683
版权归原作者 薇酱 所有, 如有侵权,请联系我们删除。

“I3D (inflated 3D)是什么?”的评论:

还没有评论