欢迎光临散文网 会员登陆 & 注册

I3D 论文精读【论文精读】

2022-04-02 22:50 作者:小清舍  | 我要投稿


I3D

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

论文地址:https://openaccess.thecvf.com/content_cvpr_2017/papers/Carreira_Quo_Vadis_Action_CVPR_2017_paper.pdf

贡献点:

  1. 提出了1个新模型:一个inflated 3D network(I3D),把2D模型扩张到3D模型,这样就不用专门设计一个视频理解的网络了,可以使用2D里已经设计好的网络,比如VGG、ResNet直接把它扩张到3D就可以了,甚至利用一些巧妙的方式把预训练模型利用起来,这样不仅设计简单,而且可以省掉很多预训练的麻烦
  2. 提出了一个新的数据集——Kinetics数据集,刚开始提出的时候只有400类,后面又推出了kinetic 600/700,分别对应600类和700类,视频的数量也从最开始的30万涨到了50多万,最后60多万,类比均衡,难度适中,不算特别大,很多人玩得动,一经提出就得到了广泛的使用,一直到现在,只要是做视频分类的,那基本一定要在这个数据集上出一个结果,你不出,审稿人也会问你要,是逃不掉的
  3. 论文主要卖点就是新的模型和数据集



Quo Vadis由来:是一个1951年的电影,Where is going?借此图表达意思是如果你只通过一张图片来看的话是不能区分很多动作的,比如不知道这两个演员是要亲对方,还是他们已经亲过了,更重要的一个问题是不论他亲过还是没亲过,接下来的动作该如何发展呢?这些问题我们通过单一的一张视频帧都是无法回答的,只有看到了视频理解了上下文的含义,才知道这些动作发生了什么,以及未来有可能会发生什么,然后作者说视频领域缺少这么一个大的视频数据集,所以导致现在大家也不能很好的去研究这个视频理解的框架,本文中,作者证实了这个视频的模型,最好还是要在视频上去预训练。具体来说就是本文提出了一个又大又好的数据集,然后在这个数据集之上,他们训练了一个新的模型交I3D模型,然后这个模型在现有的这些视频数据集上,都取得了巨大的这个效果提升。比如在kinetics数据集上预训练之后,然后再在UCF101这个数据集上去做微调,最后的结果就直接刷到98了,直接就宣告了UCF101数据集的终结,以及kinetics数据集的崛起,从这篇论文之后,大家不仅刷不动UCF101这个数据集了,即使有一点提升,审稿人也是不会放过你,一定会问你为什么不跑kinetics数据集。所以从这个角度来说I3D这篇论文开启了一个新时代,但是比较讽刺的是现在大家还是觉得这个数据集非常的special heavy,就是从这个视频里选最中间的那一帧,然后对这一帧做一个图像分类,他的准确度就已经很高了,完全不需要太多的上下文信息,也完全不需要模型具备这种太强的时序建模能力,所以跟这篇论文达到的目标还是有一段距离。

大家到现在还不能找到一个很好的方式去构建一个很好的视频数据集,从而能让学到的模型,真的能关注这种时序上的信息,真的能去处理这种长时间的复杂的视频,而且真的能够拓展到生活中的方方面面的领域里去,所以视频理解的道路还非常漫长



团队介绍:1作推动了kinetics这个数据集的发展

去年做了一个工作perceiver

论文大概

这篇论文没有related work因为这些相关工作和他们要说的内容非常的相关,读者必须对这些行管工作有一些了解,才能欣赏到这篇论文的必要之处

过去非常流行的视频理解方法

  1. 先有一个卷积神经网络,后面跟一个lstm,卷积神经网络用来抽取特征,让LSTM来处理时序信息
  2. 直接训练一个3D网络
  3. 双流网络

本文选自arxiv版本是2018年2月份最后一次更新的

摘要:目前数据集太小比如UCF-101和HMDB-51,分别有101个类别和51个类别,视频数量UCF13000个视频,HMDB是7000多个视频,在笑的数据集上很难发挥深度学习的威力,所以在CVPR16,ECCV16的时候,很多方法在这两个数据集上的表现都很相似了,作者说,这些方法肯定有强有弱,但因为数据集太小,已经无法让他能够去识别好这种视频网络架构了,于是提出新数据集

,也把之前最好的网络结构在这个数据集上试了一遍

k400数据集,每个视频10秒,按动作标注好了

clip就是一小段视频

卖点迁移学习,在这个大数据集上预训练过的模型,在小规模的数据集上能有多大的提升

第二段提出双流的inflated 3D 网络,比如将ResNet的网络拿过来,把里面所有的这种3*3的kernel或者pooling全都变成3*3*3的,然后一个针对视频理解的网络结构就生成了,不用专门设计针对视频理解的网络架构了

UCF和HMDB上准确率不凡,给判了死刑,只能座位辅助实验或者自监督学习特征的一个衡量标准,而不能作为有监督学习下的衡量标准

引言

ImageNet这个数据集所带来额好处不光是说可以训练深度神经网络,而且是说在这种大规模数据集上进行预训练之后,我们可以直接从这个网络里抽特征,比如之前的做法就是把fc6或者fc7就是倒数那两层的全连接层特征抽出来,可以非常有效的迁移到其他任务上去,比如可以在pascal voc分类或者检测的任务上都能取得很好的效果

从ImageNet训练这种网络结构开始,深度学习逐渐把别的任务也控制了,比如分割,深度估计、姿态估计和动作分类这些任务

在视频领域,其实这种现在大规模数据集上去做预训练然后迁移到小数据集上这种范式呢,其实还没有被证实有效,因为视频领域还没有这么一个好用的,可用的大规模数据集,目前有的数据集其实只有1万个视频左右,相对于其他任务或者其他领域来说数据量实在太小了,于是提出了Kinetics数据集,远比HMDB和UCF大

k400有400个类别,每个类别超过400个样本,并且每个样本都来自一个独一无二的youtube视频

拿之前最好的方法来跑一下进行benchmark,这样可以看一下之前的方法有哪些优点,有哪些缺点,他们之间有哪些相似或者不同的特性,也可以验证一下新数据集的有效性,因为有的时候新手机的数据集可能会有一些他自带的特性或者Bias导致它会过于简单或者过于难,就没有人会去用这个数据集,构建数据集的意义也就消失了

数据集在3种网络(卷积+LSTM、双流、3D)上表现的参差不齐,作者取其精华去其糟粕就提出了他们的Two-Stream I3D

方法

首先讲在2D图像分类领域其实已经有这种主导的神经网络结构了,之前可能是VGG、Inception现在是ResNet,大家都会去用也没有什么意义,但是在视频领域到2017年大家还没有一个定论,到现在为止视频领域也没有一个定论,到底用2D还是3D还是甚至去使用transformer也还没有一个固定的结论

使用2D网络预训练的参数作为初始化之后,I3D网络也不需要很多的视频数据去训练了,

本文使用的网络结构是从inception V1经过一些改造得来的,为什么使用Inception 而不是Resnet是因为2016年很多论文做过消融实验,发现至少在当时的视频分类上inception的结构要比ResNet稍微好一点,由于ResNet太具有统治地位了,一年之后在Non local那篇论文,作者就已经把I3D网络用ResNet进行实现了,自从那个时候,大家在说I3D其实很多时候也指的是ResNet基础的I3D网络

方法对比

第一种:卷积神经网络后面跟一个LSTM,这种方式呢,还是把视频更多看成图像分类的任务,一张一张图片去过神经网络,抽特征的过程是完全分开的,抽完所有特征之后扔给一个LSTM网络,因为LSTM是可以进行时序建模的,因此可以把每个时间戳上的这个特征,糅合起来看看整个视频到底在说些什么,经过一些计算把最后一个时间戳上出来的结果,后面加上一个全连接层,然后就去做这种分类任务了,这种方式其实是一种非常合理的方式,大家之前也是这么想的,图片分开做,然后用一个LSTM这种网络去模拟这个时序信息,但可惜,这种方法在之前至少这些数据集上,他的表现并不是非常好,所以很快这种方式就被抛弃了,基本留下来的就是两个主流框架

第二种3D卷积神经网络,非常暴力,将视频劈成一个一个的这个视频段,然后每一个视频段里,有从1到K的图片,然后,他把这么多图片当成一个Volume,整个视频扔给这个网络,意味着这个网络可以进行时空学习,就是你的卷积核必须是三维的,不光要处理二维上的图像,还要处理额外的时间维度,所以也就是我们说的这个3*3*3,这就会导致参数量变得很大,相当于所有的参数层都多了一个维度,之前在数据集少的情况下,不是很好训练,效果也一般,但是在这篇论文里,给够数据之后威力可能就显现出来了

第三种:双流网络:提前先把光流抽取好,自身就蕴含了非常准确而且非常强大的物体运动的信息在里面,所以他变相是一种视频里时序信息的一个特征表示,所以只需要先从视频里去抽取这个光流图,然后只需要学习一个映射,从这个光流到最后的这个动作之间的这个映射关系就可以了,而卷积神经网络本身,并不需要知道这个运动是怎么发生的,也不需要有这种时序模拟建模的能力,这些就全交给光流去做了,网络简单,对模型的要求也比较低,所以比较好训练,结果也非常的高,在15、16年的时候,双流网络是完全压着这个3D神经网络的,90%的工作都是基于双流网络,具体的是这个双流网络就是有两个卷积神经网络都是2D不是3D,左边的网络叫做空间流,他的输入是一帧或者多帧,主要负责学习这个场景信息,右边的叫做时间流,他的输入是光流图像,主要为了学习这个物体的这个运动信息,这两个神经网络最后会给一个特征,然后做一个分类的结果,当有一个分类的结果之后,做一个later fusion最后就把这两个logist加权平均一下就可以了


3D-Fused Two-Stream:结合3d和双流网络,刚开始按双流网络做,输入是一个2DCNN,右边也是2DCNN然后输入是光流,最后在还没有出结果的时候把两个特征先融合在一起,然后用一个3D卷积神经网络去处理一下,最后直接得到一个分类结果,这里的3DCNN也可以用LSTM替代的,但是因为效果不好,大家都是用3DCNN做的


I3D细节


Inflate 2D to 3D


Bootstrapping :如何能从一个2D ImageNet已经训练好的模型出发,然后去初始化一个3D模型继续做训练,让他变得更好,这里使用的是,给定同样的输入,用这个输入在原来的那个模型上跑一遍,然后再在我们初始化后的模型上再跑一遍,这两种输出按道理来说应该是完全一样的,因为如果参数搬运一样,这两个模型是完全对等的,那如果是同样的输入同样的模型,那你的输出就应该相等,

这里用同样一张图片反复复制粘贴,最后变成了一个视频,这个视频里全都是同样的视频帧,播放是没有变化的,把所有2D的filter全都在这个时间的维度,也复制粘贴了N次,就跟这个输入视频呢对应起来了,输出相同




具体细节

不做下采样

实验对比



效果最好,对比其他


original没有用K400后面两个用了K400

整体微调的效果会好一些


意味着可以从头训练并不一定要借助ImageNet预训练好的模型了


结论

在大规模数据集上做预训练,然后做迁移学习,得到的效果是非常好的

只是针对了视频分类这个论文里,得到的结论不一定准确,如果接下来能进一步验证,在K400上做预训练,在其他视频任务上,比如视频分割,视频物体检测或者光流计算上,在K400的预训练都能提供帮助的话,那这个数据集就太厉害了,而且这个影响力也会大不少。因为时间和计算的关系,就没有一一去做,最好把数据集开放出来,大家可以一起来探索一下

在模型上的探索也没有做的非常全面,比如没有考虑比较火的action tubes或者attention mechanism

往往写在结论里的future work都是非常好的研究方向,可以在这里找启发,跟进展望

I3D 论文精读【论文精读】的评论 (共 条)

分享到微博请遵守国家法律