视频理解2-I3D

  • I3D
  1. 简介

视频的模型,最好要在视频的数据集上进行预训练。

I3D模型在现有的数据集上,效果不错。(在本数据集上训练,然后微调,结果很好)

在视频中间选一帧,然后做动作分类。效果已经很好了。

视频理解2-I3D_第1张图片

  1. 摘要

(1)提出了新的数据集

以前的数据集太小,因此无法区分算法的优劣。因此重新构造了数据集。

每个视频clip有10s,并且精准的切割(标注)。

在此大规模上训练过的数据集,在小数据上有很大的提升。

(2)提出了新的模型

I3D :双流扩展的3D网络。其来自2D网络的扩展,将已经训练好的2D网络,将其中的3*3的kernel变为3*3*3.

好处,不用专门设计视频理解的网络。

并且,可以拿2D网络的参数,做3D网络的初始化。

  1. 引言
    1. imagnet 不仅仅可以训练深度神经网络,还可以对其他任务进行迁移学习。
    2. 目前有的数据集,才1w左右。因此,作为提出新的数据集KINECT
    3. Kinect400 有400个类别,每个类别有400以上的视频。
    4. 拿最新的模型,在此数据集上进行benchmark,测试数据集的难易程度。
    5. 3D虽然已经拿到的时间信息,但是不够好,因此还是增加了two-stream
  2. CNN + LSTM

视频理解2-I3D_第2张图片

最后一个时间戳上的结果,加上fc,softmax,进行分类。

结果:效果不好。已经被抛弃。

  1. 3D-ConvNet

把一个视频,分成一个个视频段。

每个视频段是1-k张图像,作为一个volume。然后把此视频扔给网络。

视频理解2-I3D_第3张图片

然后此网络就是要进行时空学习,不仅要处理二维的外观特征,还要处理时间流信息。

因此,此处的所有的卷积,池化,都是3*3*3.

导致参数量很大。需要大数据才能学习。

最后返回一个特征,然后在特征上进行全连接层,进行分类。

  1. Two-steam

视频理解2-I3D_第4张图片

只需要学习 光流 到 动作的映射关系。

  1. 3D-Fused Two-stream

视频理解2-I3D_第5张图片

加权平均,用3DCONV替代了。之前是late fusion,现在是early fusion,在没有出结果的时候,将特征融合在一起。

此处的融合,也可以用lstm做,但是效果不好,因此还是用3dconv做。

先用3d后用2d,还是先用2d,后用3d效果好么?结论:先2d,后3d效果最好。

好训练,结果也好。

  1. Two-stream 3D-ConvNet

视频理解2-I3D_第6张图片

 有足够数据集上,3d效果,明显比2d效果好。

但是3dcnn也不是万能的,还是有一些东西学不到。

如果用光流帮助她以下,效果会更好。

因此,作者还是采用双流的网络,但是每一个分支都是3D的卷积。

既然每一分支都是3d卷积网络,因此也不存在late fusion 或者early fusion。

因此,就直接加权平均,出结果。

  1. Inflating 2D TO 3D

直接把2d网络直接转化为3D。

  1. Bootstraping 3d filter from 2d filters

验证迁移学习的参数初始化对不对,直接采用相同的输入,相同的参数,得到输出。看输出是否相同。

现在:直接将图像重复,合成视频;将参数沿时间维度重复,进行初始化。

输入为NX,参数为NW,则输出为N份的WX。

如果想要输出一致,则需要将结果除以N。

这样在往后面传递的时候,后面的参数,也不会有违和感。

《文字看不懂的时候,就看代码》

视频理解2-I3D_第7张图片

  1. Inflated inception – V1

时间维度,不做下采样。

即:输入4帧,输出也是64帧。这个也就1-2s,对于描述动作来说,也就不要下采样了。

但是在后面的维度上,做了下采样。

视频理解2-I3D_第8张图片

  1. 结果

视频理解2-I3D_第9张图片

视频理解2-I3D_第10张图片

视频理解2-I3D_第11张图片

视频理解2-I3D_第12张图片

你可能感兴趣的:(基础算法,深度学习,cnn,lstm)