【视频理解】论文串讲

本文概述了视频理解领域的关键论文,从早期的CNNTwo-stream结构(如DeepVideo、EarlyFusion、LateFusion和SlowFusion)到3DCNN(如C3D和I3D),以及注意力机制(Non-local)的应用。文章详细介绍了不同方法的尝试和改进,强调了I3D对3D网络的推动和R(2+1)D的成本效益分析。
摘要由CSDN通过智能技术生成

这是一篇综述,综述里讲了将近200篇视频理解领域的论文,是一篇不错的综述,朱毅老师仿照这样的顺序串讲了视频理解领域的一些比较关键的论文。

主要分四个部分讲

  1. Hand-crafted——CNN
  2. Two-stream
  3. 3D CNN
  4. Video transformer

1、Deep video CVPR2014

论文名:Large-scale Video Classification with Convolution Neural Networks

总结:贡献点是提供了数据集,论文作者团队后续也提出了视频理解新的数据集;其次是做了很多尝试。early fusion、late fusion、slow fusion以及多分辨率的尝试,虽然效果并不好,甚至可以说是失败了,但是为视频理解领域做了很好的铺垫

在这篇文章之前也有神经网络来做的,但是在AlexNet出现之前,使用数据集比较小,网络也比较浅。

这篇文章算是深度学习时代使用卷积神经网络去处理视频理解的最早期的工作之一

第一种方法是比较直接的,想法就是如何将卷积神经网络从图片识别应用到视频识别里面,视频和图片的区别就是多了一个时间轴,有更多的视频帧而不是单个的图片,所以自然是有几个变体是需要尝试的

1、Later-Fusion在网络输出层面做的一些结合

在视频中随机选几帧,每一帧单独通过一个神经网络,这两个神经网络是权值共享的,然后把得到的特征合并一下,通过FC层最后做一下输出,这个做法的本质还是单帧经过神经网络得到一个特征,像图片分类,但是最后把特征合并起来了,所以稍微有一点时序上的信息在里面

2、Early Fusion:在输入层面做了融合,具体做法就是把五个视频帧在RGB的channel上合起来,变成15个channel,这意味着网络的结构需要有一点改变了,第一个卷积层接收输入的通道数要变为15,之后的网络跟之前保持不变,这种做法,可以在网络的刚开始输入的层面感受到时序上的改变,希望能学到一些全局的运动时间信息

3、Slow Fusion:结合Late Fusion和Early Fusion

希望能够在网络学习的构成中的特征层面做一些合并会更好一些,具体做法是每次选择10个视频帧的视频段,然后每4个视频帧经过一个神经网络抽取特征,刚开始的层全局共享,抽取最开始的特征之后,由最开始的四个输入片段合并成两个片段,再做一些卷积操作获得更深层的特征,然后把特征交给FC做最后的分类,整个网络从头到尾都在对视频的整体进行学习,按道理结果应该是最好的,事实上也是最好的

结果四种方法的结果都差别不大,即使是在100万个视频上做了预训练之后,在UCF101上做迁移学习时还比不上之前的手工特征

另外一条思路,多分辨率卷积神经网络结构

把输入分成两个部分,一个是原图,另外一个从原图的正中间抠出一部分变成一个输入,因为对于图片或者视频来说最有用的或者物体都会出现在正中间,所以把上面的分支交fovea(人脸视网膜里最中心的东西,对外界变化最敏感的区域) stream,下面分支叫contex stream(图片整体信息),作者想通过这个操作既获得图片中间最有用的信息,又能学习到图片整体的理解,看看这样能不能提升对视频的理解,两个有两个网络权值共享,可看成早期对注意力使用的方式。

其实这个架构也可以理解成是一种双流结构,因为它也有两个网络,但是这两个网络是全值共享的。然后这种架构也可以理解成早期对于注意力的一种使用方式,它强制性的想让这个网络去更加关注图片中心的区域

sports-1M数据集上和UCF101上:使用那么多预训练数据和大规模网络之后,迁移结果还不如手工特征(87%)

       那总之一顿操作下来,虽然这个多分辨率卷积神经网络有一定的提升,比如说跟这个单帧的这个 baseline 比,这个单帧加上这个多尺度之后,这个效果还是有一定提升的,但是这个提升相对来说是比较小的。

2、Two-stream   

       双流网络就是将时序和空间分开处理。空间流网络其实就是在学一个从 RGB 图像到最后的这个分类的映射,而下面的这个时间流网络就是学一个从光流图像到最后的分类的这么一个映射,这两个卷积神经网络都不用去学习这种时序信息了,他只需要去学习这种对应的映射就可以了,一下就把问题给简化了,而且两个网络各司其职,谁也不干扰谁,相对而言优化起来就轻松许多

一旦双流网络证明了它的成功,迅速就有很多工作跟进了。我们其实单从这个图里就能看到有几个比较容易能想到的想法。

2.1  2015-CVPR-Beyond Short Snippets Deep Networks for Video Classification

这篇论文就是基于双流网络,将其光流和图像特征不直接融合,而是采用LTSM进行了fusion,但是效果一般,提升不大。当然论文也有其他的贡献点,这里按下不表。

2.2 2016-CVPR-Convolutional Two-Stream Network Fusion for Video Action Recognition(最后效果很好,1、消融实验非常扎实,做了很多铺垫和尝试 2、使用了3Dpooling,推动了3D发展)

这个作者后面写了slowfast、X3D、MViT、MViT2

说完了 LSTM 这个方向,接下来就该说 Early Fusion 这个方向,这篇是 CVPR 2016 的一篇论文,叫做 Convolutional Two-Stream Network Fusion for Video Action Recognition。它其实就把双流网络题目给颠倒了一下,双流网络叫做 Two-Stream Convolutional Networks for Action Recognition in Videos,它叫 Convolutional Two-Stream。

 其实关键词只有一个,就是这个 Fusion。这篇文章非常细致地讲了一下到底如何去做这种合并。比如说时空之间的fusion和具体如何fusion以及在哪一层fusion等。

所以说作者就从这 3 个方向分别回答了这几个问题,从而最后得到了一个非常好的一个 Early Fusion 的网络结构,能够比之前直接做 Late Fusion 的这种双流网络效果也好不少。

2.3 2016-ECCV-Temporal Segment Networks Towards Good Practices for Deep Action Recognition

我们刚才在回顾双流网络的时候,也提到了几个可以改进的方向,刚才已经说完了 LSTM,而且也说完了 Early Fusion,最后该说一下如何处理更长时间的视频问题了,其实方法特别简单,就是把长视频截成很多段。

接下来要说的这篇论文叫做 TSN(Temporal Segment Networks),是一篇 ECCV 2016 的中稿论文。这篇论文在视频理解领域里的贡献完全不逊色于双流网络或者是 I3D 网络,这个里程碑式的工作不仅通过一种特别特别简单的方式能够处理比较长的视频,而且效果特别好。而且它更大的贡献是确定了很多很好用的技巧,也就是他写进题目里的这些 “Towards Good Practices for Deep Action Recognition” 所谓的这些 Good Practices 好用的技巧,这些技巧包括怎么去做这种数据增强、怎么去做模型的初始化、到底该怎么使用光流、到底使用哪个网络、到底该如何防止过拟合,这篇论文全都给出了非常好的答案,它里面的很多技巧沿用至今。

好用的技巧包括但不限于:image预训练可以给光流使用、partial BN有效改善过拟合、data agumentation。

3、3D卷积网络

3D不需要光流,这样就可以节省时间和空间

3.1  C3D    2015-ICCV-Learning Spatiotemporal Features with 3D Convolutional Networks

整体上来看,其实 C3D 的这个效果并不突出,那 C3D 为什么会这么火,它的接受度又这么高呢?其实我认为是作者抓住了一个机会,他没有把这篇文章的卖点放在这个网络训练上,而是把这个卖点放在这个抽特征上,而且他还给出了 Python 和 Matlab 的实现,这个在当时 15 年的时候是非常关键的,这个时候 C3D 的作者其实也发现了,他训练 C3D 网络当时花了一个月,也就是以 Facebook 这个算力,他训练这么一个网络都要花一个月的时间,对于很多人来说肯定是训练不动了。所以他知道如果大家想在这个视频理解,或者在对应的其它领域里去应用这种视频的特征,或者视频模型的话,Fine-tune 这个模型在当时并不是一个好的选择,抽特征才是。所以作者就提供了一个 Python 还有一个 Matlab 的接口,也就是说,你给我一个视频输入,你也可以用 OpenCV 读进来,Matlab、Python 都可以,然后我就返还给你一个 1×4096 的特征,中间的细节你通通都不用管,你就拿这个特征去做你其他的下游任务就可以了

总之,C3D 这篇论文它的意义还是非常巨大的,不光是通过这种抽特征的方式让更多的研究者能够把深度学习时代更好的这个视频理解的特征用作其它的下游任务,同时他还系统的研究了这种 C3D 卷积神经网络,以及如何使用到这个视频理解的任务上来,从而为后续的这一系列 3D 工作做了一个铺垫。

3.2  I3D     2017-CVPR-Quo Vadis, Action Recognition A New Model and the Kinetics Dataset

那其实 I3D 这篇论文的最大亮点其实就是在这个字母 I 上,也就是这里的这个 Inflated,扩充的膨胀的一个 3D网络。那之所以作者想这么做呢,其实主要是看到 C3D 这个网络在这么大的数据集上去做过与训练之后,它的效果也不太行。所以 I3D 的作者就坚信我们这里一定要有一个类似于 ImageNet 这样一个预训练网络,我们要有一个更好的初始化,从而使接下来的训练变得更简单。那之前 ImageNet 预训练的模型全都是 2D 的,那你现在如果是一个 3D 网络,你怎么把一个 2D 网络变成 3D 呢?也就是这里的膨胀的意思,他就是要把一个 2D 的网络扩充成一个 3D 的网络,而这个网络整体的结构是不能改变的。

那对于一个 2D 的 Inception v1 网络来说,其实这里就是 Conv、Pooling,然后 Conv、Conv、Pooling,而接下来都是这种 Inception Module,也就意味着说这个 2D 的 Inception 和这个 3D 的Inception,它这个网络结构没有变,只是把这里的这写卷积核从 3×3 变成了 3×3×3,或者刚开始的 7×7 变成了 7×7×7,像这个 Pooling 层,刚开始有 1×3×3,后面有 3×3×3,最后呢还有 2×2×2,都是由 2D 变成了 3D。那这样一个好处就是因为你 2D 的网络和 3D 的网络共享了一个 Meta 结构,就是总体架构是一样的,那这样你就能想到一种比较简单的方式,能把 2D 已经训练好的参数移植到 3D 的模型上来。

而且 I3D 这篇论文还有另外几个意义所在:

第一个意义就是它还做了这种 RGB I3D 和 Flow I3D,就是即使它是一个 I3D 网络,它还是用了光流。这就是我们之前说的,即使你是一个 3D 网络,你用了光流之后,你的这个效果还会更好。所以光流不是没用,只是计算代价太高而已。 


那第二个意义就是说 I3D 网络通过这种膨胀扩充的这个操作,能大幅度提高这个实验结果。从而把这个 UCF101 和 HMDB51 这两个数据集基本上就刷爆了。所以在这之后呢,大家也就不用这两个数据集,转而去用他们提出的这个新的 K400 数据集了。他相当于是仅凭一己之力把整个视频理解领域从双流变成了 3D 网络,而且把这个做测试的数据集也从 UCF101 变成了 K400 数据集。


I3D 论文带来的第三个影响就是说它证明了从 2D 网络迁移到 3D 网络的有效性,所以在 I3D 网络把 2D 的 Inception Net 转成 3D 的 Inception Net 之后呢,很快就有其它的工作就跟进了。那比如说在 CVPR 2018 的时候,大家就把 2D 的 ResNet 全部变成了 ResNet 3D 了,然后 ECCV 2018 的时候就有一篇论文把 ResNeXt 的思想用过来变成了叫 Multi-Fiber Network,也就是 MF-Net。然后再后来大家又把 SENet 里的这种 Channel Attention 的思想借鉴过来 然后变成了 CVPR 2019 的一篇 STCNet 的文章。所以说是非常里程碑式的一篇文章。

3.3 Non-local 2018-CVPR-Non-local Neural Networks

那说完了 C3D 和 I3D,那基本上 3D 网络的这个基本结构就定好了,接下来就是做各种各样的改进了。那对于视频问题来说,大家更关心的肯定是时序上怎么去建模,或者说我怎么能处理好更长的这个时间序列呢?那对于之前的传统方法,或者对于 2D 网络双流的方法,大家就是再后面加一个 LSTM 就行了。

但是这个时候Self Attention 自注意力这个操作被提出来了,而且效果特别好。那自注意力操作我们也知道,它本身就是用来学习这种远距离信息的,正好跟这个 LSTM 的作用不谋而合。所以说 Non-local 的作者可能就想了一下,我为什么不把这个 Self Attention 拿来代替一下 LSTM 呢?

这篇文章的实验部分非常扎实:无论是采用什么方式的注意力机制、怎么把non-local插入进去以及到底加多少block、时间注意力还是空间注意力还是时空注意力等等,作者都给出了实验结果,非常的扎实

3.4 R(2+1)D

这篇文章主要是测试尝试把3d和2d进行组装,因为2d比3d便宜,所以作者实验了很多,对比之后发现2+1d效果最好,而且有助于降低过拟合,还方便训练。这里的2+1d具体指的是先做空间卷积再做时间卷积。具体拆分过程论文中给出了数学公式,是计算得到的。

总之呢,R(2+1)D 这篇论文当你读完后就会发现它是一个纯实验性的论文,它的主要贡献就在与它的消融实验,以及它给你的各种观察和简介,从而能够帮助你理解视频领域不同架构之间的区别和联系,以及到底该怎么去构建一个适合于视频理解的模型框架。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值