I3D (inflated 3D)是什么?

目录

0.简介

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

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


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遍,那么就得到了w*Nx,那么最后再进行缩放,除以N,那么就得到了w*x,具体实现见gluon-cv/i3d_resnet.py at ab03ca04c588342be5cd659c3f96011c0146ac4f · dmlc/gluon-cv · GitHub

3.3 具体的实现细节

虽然前面所说的,pooling的时候 3*3对应的转为3*3*3,但在实现上,还是稍微有点区别的,时间维度上最好不要做下采样,所以前面2个max pooling层对应的kernel是1*3*3,stride是1*2*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

  • 10
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
i3d_features是一种用于视频动作识别和行为分析的特征表示方法。"i3d"代表了"inflated 3D",指的是将充气的二维卷积网络(Inception)拓展到三维空间中。 i3d_features主要侧重于对视频中的动态信息进行建模。对于每一帧的图像,我们首先通过一个预训练的二维卷积模型提取图像特征。然后,将提取的图像特征应用于3D卷积模型,以获得视频中的动态特征。这样,我们可以捕捉到视频中的运动、动作和时空上的变化。 与传统的基于二维卷积神经网络的方法相比,i3d_features具有以下优势。首先,通过在三维空间中建模视频动态,我们可以捕捉到更加丰富的运动和动作信息。其次,在预训练的二维卷积模型的基础上,在新视频数据上进行微调可以更好地适应新任务。最后,i3d_features在计算效率上也有一定优势,因为它可以共享相同的二维卷积特征计算。 i3d_features被广泛应用于视频动作识别、行为分析以及视频处理领域。通过提取视频中的动态特征,我们可以实现动作识别、行为分类、动作生成等任务。同时,i3d_features也可以用来进行视频内容理解、视频检索和视频压缩等方面的研究。它具有较高的灵活性和可拓展性,可以应用于不同的视频分析场景。 综上所述,i3d_features是一种用于视频动作识别和行为分析的特征表示方法,通过在三维空间中建模视频动态,可以捕捉到视频中的运动、动作和时空上的变化。它在图像特征提取、任务适应性和计算效率等方面具有优势,并广泛应用于视频处理领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值