当前位置: 首页 > news >正文

关于新闻管理的网站建设报告怎么申请百度网盘免费空间

关于新闻管理的网站建设报告,怎么申请百度网盘免费空间,中卫网站制作公司报价,南宁有本地租房做网站吗1 为什么研究者这么想把这个双流网络替换掉#xff0c;想用3D 卷积神经网络来做#xff1f; 大家好#xff0c;上次我们讲完了上半部分#xff0c;就是 2D 网络和一些双流网络以及。它们的。变体。今天我们就来讲一下下半部分#xff0c;就是 3D 网络和 video Transformer…1 为什么研究者这么想把这个双流网络替换掉想用3D 卷积神经网络来做 大家好上次我们讲完了上半部分就是 2D 网络和一些双流网络以及。它们的。变体。今天我们就来讲一下下半部分就是 3D 网络和 video Transformer 在视频理解领域里的应用。那上次其实我们也讲了很多工作了他们的这个效果也都不错而且用上这种光流以后听起来。也很合理。一个网络去学习这种图像特征另外一个网络去学习这种运动特征各司其职互不打扰最后结果也非常好。那为什么研究者这么想把这个双流网络替换掉想用这个 3D 卷积神经网络来。做其实主要原因就在这个光流抽取这一块。比如说大家之前常用的一种算光流的方法叫 TVL one这种。算法。它如果我们使用一种 GPU 的实现的话它只需要零点儿零六秒就能处理一个视频帧的一个。对你乍一听可能觉得 0. 06 秒挺快的但是如果你想一下这个视频数据集它有多大你就会发现提前抽取这个光流是一个非常耗时的事情。那我们先拿一个比较小的数据集 UCF 101 来说的话它就有1万个视频。那 UCF 101 它这个平均视频长度大概是 6 秒如果我们按这个帧率 30 f p s 来算的话那最后这个 UCF 101 数据集大概就有 180 万张这个视频帧。那如果我们把这个 180 万和这个 0. 06 秒去一乘你就会发现如果你只有一个GPU而且不做什么优化的话你最后需要 1. 5 天的时间去抽取这个光流那现在如果我们换到一个稍微大一点的数据集就是大家常用的这个 K400 数据集它里面有 24 万个视频那这个时候 K400 的平均视频长度大概是 10 秒如果我们还按这个帧率 30 IPS 来算的话它最后就有 7200 万个视频帧。那这时候你再跟这个 0. 06 秒一乘了你就会发现你如果你只有一个GPU而且不做任何优化的话最后你要抽 50 天。当然一般做视频也不可能只有一个GPU而且因为这个 TVL one 算法它很省内存所以一个 GPU 也可以同时跑好多个对所以最后肯定是花不到 50 天的。但是对于一般实验室来说抽个一两个礼拜还是很正常的。那这也就意味着每当你想尝试一个新的数据集你都要先去抽取这个光流然后才能做这种模型的开发。那在这抽光流的一两个礼拜时间里你什么也干不了。就这个预处理实在是太耗时了而且它也很占空间。即使是按照双流方法里那样把这个光流存成这个 PG 图片那对于 UCF 101 数据集来说大概也需要 20 多 g 的这个存储空间去存储。然后对于 K400 来说大概是需要 500G 的存储空间去存储。那你有可能会想这个存储空间一点都不贵很便宜现在都是 4 个 t 8 个 t 的硬盘 500G 根本不算什么。但是你还要考虑到这个运算的时候的IO如果你的训练数据集这么大的话那训练的时候是很容易卡 IO 的。而且抽取光流不光是说对训练有着一定的影响它对这个推理也是有影响的因为你不论用在哪个场景里你都要先去抽取这个光流。那假设我们就用 TVL one 这种算法去抽光流的话那它处理一个视频对呢大概是花 0. 06 秒那你 1 / 0. 06你换算过来它的这个帧率就是 15 IPS那这个 IPS 是低于这个实时要求的因为实时的处理一般是需要 25 IPS 或者30。FPS。那这也就意味着你什么模型都没用你光抽光流你就已经不是实时了。那你再加上模型那就肯定更不是事实了。但可惜视频理解一般的应用很多都是需要实时处理的所以说其实后面的很多工作都是针对这些缺点去攻击这些基于光流的方法比如说双流网络就尽量想避开使用双流网络如果我能直接从视频里进行学习那该多好。 所以这也就有了从 2017 年到现在这个 3D 卷积神经网络的。火热。因为 3D 卷积神经网络它按道理来说你就是想去学习一个这个时空特征就它既有这个special又有这个 Tempo 上的信息它是一起学习的所以你没有必要单独的再去对这个运动信息或者时序信息进行单独建模了也就意味着你不需要这种光流了。但事实上我们回头也可以看到因为这个 3D 网络越做越大或就说这个 video Transformer 也越做越大所以说其实这个效率上的问题并没有得到解决大部分模型也都不是。事实的。而且如果你给这些 3D 网络或者给这些 video Transformer 去加上这种光流输入的话其实它们都还能继续提高性能也就意味着光流这个东西其实还是很好的。一个特征。 2 C3D 给你一个更好的特征用于下游任务 那我们直接进入正文今天要说的第一篇论文就是 ICC V15 的这篇 C3D 网络题目就是用 3D 卷积神经网络去学习这种时空上的特征。作者团队来自 fair 和达特茅斯但其实 Loranzo 后面也已经去了fair所以说其实就都是 fair 的工作。我们从摘要的第一句话其实就可以看出来这篇文章的主要贡献是什么其实作者已经说了他们就是提出了一个简单但是有效的方法去学习视频中的这种时空特征用什么工具就是用一个简单的这个 3D 卷积神经网络就可以了但他们的贡献主要就是用了一个更深的 3D 卷积神经网络而且是在一个特别大的这个数据集上去进行训练。而这个数据集就是我们上回讲的 DIFF video 那篇论文里提出来的 Sports one million就是有 100 万个视频的那个数据集。 2.1 效果不错 然后作者其实在这个引言部分也已经提到了就是他们并不是第一个用这个 3D 卷积神经网络来做视频理解的其实之前这个 15 和 18 这两个工作也都是用 3D 卷积神经网络来做的没有什么区别最主要的区别就是 C3D 这篇论文就是他们这篇论文是在用了大规模的这个数据集去训练模型而且用了这种现代的这种深度学习其实就是更深的网络从而能在一系列的任务上得到了非常好的结果。所以站在我们现在的角度再去回看这篇论文的话它的想法上还是很简单的所以我们直接来看这个效果和这个模型。总览图。 那首先作者把他们的这个最后结果放到这个表一里直接就放到这个论文的第二页因为这算是他们论文的一个卖点就是说在这四个数据集上他们都取得了最好的这个结果。然后在这两个数据集上他们也取得了不错就是competitive。的结果。 2.2 模型结构 那接下来我们直接看模型的结构在这里作者其实是用一个简略图框画出来的而不是一个特别fancy特别好看的一张图。那大体的这个网络结构就是你有这个 count 1PU1然后 count 2PU2 count 3A3B PU 3还有 COUNT 4A4B 扑4 COUNT 5A5B 扑5然后最后还有两层FC最后还有一个分类层 FC 8。所以说整体来看这个网络结构是有 11 层的。至于所有这个 3D 卷积层里的这个卷积核是怎么构造作者这里也说了其实就是把所有的这种 3 * 3 的卷积核都变成了这个 3 * 3 * 3。那其实我们看到这儿你就会发现唉这个网络怎么跟 VGG 这么像呢那其实说白了它其实就是一个 3D 版本的 VGG 网络。那如果我们回顾一下 VGG 16 那个网络的话其实在 count 一这块它是有两层count然后一层pulling然后又有两层comb一层。pulling。然后从第 345 这三个 block 来说它是三个 comb 加一个pulling三个 column 加一个pulling。所以说相当于 C3D 网络就是把 VGG 网络每一个 block 里面都减少了一层conv然后把所有的 CONv kernel 都从 3 * 3 变成 3 * 3 * 3 了所有的改动其实就是这些。所以这也就是为什么作者说他们的这个方法设计非常简单而且。直观。是因为确实很简单也没有像 Inception net 那种 Multipass 就是多路径的那种结构而且当时也还没有Resnet所以说也没有残差连接所以就是简简单单的这种卷积操作的堆叠。就是。convpulling。 2.3 前向过程 那现在我们给定一个输入然后走一遍这个模型的前向过程就能更好地理解这个模型是怎么运作的了。那在这篇论文里它的输入是 16 * 112 * 112就说明有 16 个视频帧也就是时序上你的这个维度。是16。然后你的这个空间上是 112 * 112之所以没有用这个 224 * 224是因为这个 GPU 内存塞不下。作者后来也实验了一下发现 12 乘 12 其实效果也一样因为一般对于分类任务来说其实这个图片大小不是那么的重要所以这个 3D 网络的输入就是 16 * 12 * 12 了。 然后过完一层 CONV 和 pooling 之后因为第一层的这个pooling他们这里写的是 1 * 2 * 2就是在这个时序上它不做这个下。采样。因为想尽可能的多的再保留一下时序上的这个信息那所以说这个时序上 16 还是16但是这个空间上就降了一半就变成 56 * 56 了。 然后再做一层 count pulling那接下来所有这个 pulling 操作也都是 2 * 2 * 2 了所以说不仅是时间上从 16 变成8空间上进一步降低变成 28 * 28 然后再过了第三层这个 count 之后就变成 4 * 14 * 14然后过了第四层 count 之后就变成 2 * 7 * 7然后在过了第五层 count 和 pulling 之后最后在 FC 这一层这个特征维度就变成一个 1 * 4696就变成一个一维的一个向量了也就是我们最后抽取的这个特征。当然了 FC 7 也是 4096 乘4096然后最后一层 FC 8 分类层就是 4096 乘101就是101。类了。 但是在这篇论文里作者当时发现这个 fine tuning 这个网络其实最后的结果也不是很好而且又费时费力。对其实作者每次都是抽取特征他最后选择了就是从 FC 6 这层去抽取这个 4096 的。特征。拿出来然后再去训练一个 SVM 的这个分类器去做这个分类任务又快效果又好。那其实这篇文章的名字C3D其实更多时候指代的就是这个 C3D 特征也就是 FC 6 抽出来的这个特征叫 C3D 特征那模型上其实就是这些能讲的并不是很多 2.4结果 那接下来我们就直接看结果首先在这个表 2 里作者就表展示了一下在这个 Sports one meaning 这个数据集上的结果。那前两行这个就是 deep video CVPR 14 的那篇论文也是第一次提出 Sports one million 这个数据。集的。我们可以看出来 C3D 这个工作如果也是在 Sports one million 这个数据集上去从头训练的话它的这个效果大概是446084所以比原来对应的这个版本这一行还是要高一些的所以说证明了 C3D 这个网络的有效性。那如果把这个 C3D 网络在更大的数据集上去做预训练也就是他这里说这个 S380K 其实是 Facebook 自己一个从来没有 release 过的一个 Instagram 的视频。数据集。在这个上面去做这个预训练之后他发现这个效果就更好了这也就是这篇作者在这个摘要里还有在引言里反复强调了就是他们认为这种 3D 的直接学习时工特征的方法是比使用 2D 网络要好的。因为这个 deep video 这个方法其实还是可以看作成是一个。2D。网络它里面虽然有一些这个什么二 diffusion 或者 slow fusion但是终归而言它还是用这个 2D 网络去抽特征只不过是在后面做了一下这个合并那这个 C3D 才是真真正正从头到尾都是一个 3D 卷积神经网络从头到尾都是在做这种时空学习。所以作者就得出了说这个 3D 网络要比 2D 网络要更优或者说更适合这个视频理解这个任务。 那接下来我们看一下这个表3也就是在 UCF 101 这个数据集上 C3D 的表现到底如何我们这里也可以看出来就是 C3D 这个网络其实如果你只用一个网络的话它的结果只有八十二三。如果你训练了三个网络把它们这个 assemble 起来它最后的这些结果才有 85. 2。这么高。但其实85。 2 这个效果是远低于同期其他工作的。我们之前说过这个之前最好的手工特征都有88双流网络也有88然后用 LCM 网络的也有 84 或者 88 这么高而且其实比它更早就是 CVP R15 发出来的一篇论文就王立斌老师在 TDD 每篇论文其实已经在 UCF 上有 91. 5 的这个。结果了。是比它这里的90。 4 还要高的。 2.5整体上来看其实 C3D 的这个效果并不突出那 C3D 为什么会这么火他的接受度又这么高 所以说整体上来看其实 C3D 的这个效果并不突出那 C3D 为什么会这么火他的接受度又这么高其实我认为是作者抓住了。一个机会。他没有把这篇文章的卖点放到这个网络训练上而是把这个文章的卖点放在了这个抽特征上而且它还给出了对应的这个 Python 和 MATLAB 的实现这个在当时 15 年的时候是非常关键的。那这个时候 C3D 的作者其实他也发现了因为当时开会的时候跟他聊过他训练这个 C3D 网络当时花了一个月也就以 Facebook 这个算力他训练这么一个视频模型都要花一个月的时间那对于大多数人来说肯定是训练不动了所以他知道的如果大家想在这个视频理解或者在对应的其他领域里去用这种视频的特征或者视频模型的话 fine tuning 这个模型在当时不是一个好的选择抽特征才是最好的选择。所以说作者就提供了一个Python还有一个 MATLAB 的接口也就说你只要给我一个视频输入你也可以用 Opencv 读进来MATLAB Python 都可以。然后我就返还给你一个 1 * 4696 的特征中间的细节你通通都不用管你就拿这个特征去做你其他的下游任务就可以了。所以很快其他任务纷纷都用起 C3D 这个特征了比如说 video detection 或者 video captioning都可以直接抽取一个特征然后就去做它的下游任务。这个其实跟现在我们大家用 Transformer 也是一个套路因为 Transformer 训起来太贵了很多人也训练不动微调都训练不动。所以说大家在做多模态的时候往往是把这个 transformer 去抽一个特征然后抽完特征以后在特征上再去做这种特征的融合或者做这种多模态的学习这个训练起来的代价就小很多了。 所以说从这个角度上来看做研究也不光要成天去考虑这种新意度的问题更主要的是要考虑一下你这个东西到底有没有用如果你做出来的这个东西真的能够推动整个领域的进步那其实才是真的好的真的有用的研究工作。 总之 C3D 这篇论文它的意义还是非常巨大它不光是通过这种抽特征的方式让更多的研究者能够把深度学习时代更好的这个视频理解的特征用作其他的下游任务同时它还系统性地研究了这种 3D 卷积神经网络以及如何使用到这个视频理解的任务上来从而为后续的这一系列的这个 3D 工作做了一个铺垫。 3 I3D降低了网络训练的难度提出了一个很好很大的数据集效果很好 那接下来就不得不提一下 I3D 这篇论文的意义就是降低了网络训练的难度提出了一个很好很大的数据集而且它在标准这些 Benchmark 上的结果都比之前 2D 或者双流的方法要好从而奠定了 3D 网络的这个地位。我们也可以看出来这个 C3D 是发表在 SCV 15 上的而这个 I3D 是发表在 CVPR 17 上这中间将近过了两年的时间所以说明这个 3D 网络的一个调试和这个模型的迭代还是非常。困难的。这也就更进一步地体现出了 I3D 这片网络的意义。如何能通过这种 Boost drapping 的形式降低网络训练的难度那鉴于之前我们已经精读过 S3D 这。篇论文了对这里我就快速的过一下。 那其实 I3D 这篇论文最大的亮点其实就是在这个字母 i 上也就是这里这个。inflated。扩充的膨胀的一个 3D 网络。那之所以作者想到这么做其实主要是看到 C3D 这个网络在这么大的数据集上去做过预训练之后的效果不太行所以 I3D 的作者就坚信就是我们这里一定要有一个类似于 Imagenet 这样一个预训练的模型我们要有一个好的。初始化。从而接下来这个训练变得更简单。那之前 image net 预训练的模型全都是。2D 的。那你现在如果是一个 3D 网络那怎么把一个 2D 变成 3D 呢这也就是这里的膨胀的意思它就是要把一个 2D 的网络扩充成一个 3D 的网络而这个网络整体的结构是并不改变。那在这里我们用这个图 3 做个leads它这里也就是把一个 2D 的一个 inception 网络给扩充成了一个 3D 的I3D。网络。那对于一个 2D 的 exception V1 网络来说其实这里也就是看我pulling然后接下来都是这种 inception module也就意味着说这个 2D 的 inception 和这个 3D 的inception它这个网络结构没有改变那只是这里的这些卷积核从 3 * 3 变成了 3 * 3 * 3或者刚开始这 7 * 7 变成 7 * 7 * 7然后像这个 pulling layer那刚开始有 1 * 3 * 3后面有 3 * 3 * 3然后最后还有2 *。2 *2。就是都是由 2D 变成了3D。那这样一个好处就是说因为你 2D 网络和 3D 网络共享了一个同样的一个 Meta 结构就是总体架构一样那这样你就能想到一种比较简单的方式那么把 2D 预训练好的参数移植到 3D 的模型上来那这个对于 C3D 网络它就做不到。 C3D 网络虽然我们之前说过它有点像 VGG 十六基本上就是按 VGG 那个网络的这个设计理念来设计的但是因为它每一个 block 里面都少了一层卷积页所以导致它没法很简单的把这个 VGG 的 2D 网络参数移植到这个它的 3D C 3D 网络中来这也就导致了他们没法使用这种 image net 预训练的参数从而导致了他们很难优化很难得到一个更好的结果。所以说 SND 这篇论文最大的亮点就是这个 inflation 这个操作不仅不用设计一个网络直接把一个 2D 网络扩充成 3D 就可以了而且还能利用 2D 网络预训练好的模型参数从而简化这个。训练过程。最后也能利用更少的训练时间达到。更好的效果。 那如果我们快速看一下 I3D 网络在 UCF 101 和 h m d b 51 这两个数据集上的结果我们就可以发现它的这个结果是远远比之前的方法都要高的。那如果我们就拿 3D 网络之间做对比我们可以看到这个 RGB I3 d 的这个结果就比对应的这个 C3D 用 RGB 的结果高了大概是三个点所以说这个提升是相当显著的。而且 s and d 这篇论文还有另外几个意义所在第一个意义就是它还是做了这种 RGB SND 和 flow SND就是即使它是一个 3D 网络它还是。用了光流。这就我们之前说的即使你是一个 3D 网络你用了光流之后的你的这个效果还是会很好所以光流不是没用只是计算代价。太高而已。 那第二个意义就是说 S3D 网络通过简单的这种膨胀过钟的这个操作能大幅提高这个实验结果从而把这个 UCF 101 和 HMDB 51 这两个数据集基本上都刷爆了。所以在这之后大家基本也就不用这两个数据集转而去用他们提出的新的这个K400。数据集了。它相当于是以一己之力把整个这个视频理解领域从双流变成了 3D 网络而且把这个做测试的数据集也从 U4F101 变成了 K400 数据集。 I3D 论文带来的第三个影响就是说它证明了从这个 2D 网络迁移到 3D 网络的这种有效性。所以在 I3D 网络把 2D 的 Inception net 转成 3D 的 inception net 之后很快就有其他的工作就跟进了。那比如说在 CVPR 18 的时候大家就把这个 Resnet 就全都变成这个Resnet。3D 了。然后 ECCV 18 的时候就一篇论文把 Resnet 的思想应用过来变成了叫 multifiber network也就是。MF net。然后来大家又把 2D 的这个 SE net 里这种 channel attention 的思想借鉴了过来然后变成了 CPR 19 的一篇 STC net 的文章所以说是非常里程碑式的。一个工作。 那说完了 C3D 和I3D那基本上 3D 网络的这个基本结构就定好了接下来就是做各种各样的改进了。那对于视频问题来说大家更关心的肯定是时序上该怎么去建模或者说我怎么能处理好更长的这个时间序列呢 4 Nonlocal Neural Networks 那对于之前的这个传统方法或者对于 2D 网络双流方法来说大家就是在后面加一个LSTM。就行了。 那 3D 这边当然也可以在后面加一个LSTM。没问题。但是在 3D 网络火起来的同时在 NLP 领域发生了一件巨大的事情那就是 Transformer 这个模型出来了也就是说 self attention 自助力这个操作被提出来了而且效果。特别的好。那自助力操作我们也知道它本身就是用来学习这种远距离。信息的。正好跟这个 LSTM 的作用不谋而合。所以说 non local 的作者可能就想了一下那我为什么不把这个 self attention 拿来替代一下LSTM看看这个自助力在视觉里到底应用的好不好结果证明把自主寓意用到视觉领域效果还是非常不错的。所以说在 snow local 这篇论文出来之后很快视觉的别的一些下游任务比如说检测和分割全都是把 non local 这个算子应用到别的这个网络之中了。尤其是对于分割而言 2019 年简直都卷疯了。不知道有多少论文把这个自助力尝试加到分割各种不同的这个网络结构里然后做各种不同的变体或者说加速或者说提点总之是。五花八门。然后再后面就有了 vision consumer然后又有了Transformer现在在 CV 这个领域里大杀死崩总体而言就是自助力这个操作真的有效那在摘要里作者就说无论是这个卷积操作还是递归的这种操作它每次处理都是在一个很局部的区域里进行处理的那如果我们能看到更长或者更多的这个上下文肯定是对各种任务都会有帮助的。所以在这篇论文里作者就提出来了一个不是局部操作也就这里说到 non local 的一个算子它是一个可以泛化的而且可以即插即用的一个 building block就是一个模块而这个模块的作用就是用来建模这种长距离的信息的。然后作者接下来说他们是受到这个 CV 里的之前有一个方法叫做 non local means 的方法所以才想到用这个 non local 这个算子去做这种长距离建模的然后作者最后就说因为这个模块是一个即插即用的模块所以我可以把它运用到各种任务里去。首先我们在视频这边就取得了不错的效果其次我们还在这个检测分割还有这个姿态检测全都取得了。很好的效果。这也可以说是凯明或者说菲尔这个工作一系列的这风格就是实验非常的详尽每次基本上就是把能做的任务全都给你。做了个遍。让审稿人无话可说。那具体这篇论文提出的这个 non local block 到底长什么样其实它就画在这个。图 2 里。而且它这个图 2 里画的是一个 space time 的 NON logo block 就是一个时空的算子也就是用来做视频理解的但是我们先不管它是做 3D 的还是做 2D 的如果我们只看这个结构其实我们一眼就发现它就是一个自助意义操作先是一个特征进来然后通过这个KQV对吧key query 和 value network 得到三个特征那这三个特征全都是由自己变来的然后 key 和 query 去做一下这个 tension 操作就得到了一个自助力然后再拿这个自助力去和这个 value 做这个加权。平均。然后得到最后的这个值之后再有一个这个残差连接最后得到最后的输出。所以说完全就是一个标准的自助力的模块这里只不过是为了适配这个视频理解所以把这个 2D 的操作全都变成了3D。那鉴于我们这个论文精读系列之前已经讲过Transformer而且也讲过 vision Transformer所以对自助力大家应该都不陌生那这里我就不再过多复述了。那我们先来看一些消重实验其实这个消重实验很重要因为这也体现了作者是怎么一步一步设计出来这个网络结构的。比如首先第一步就是这个自助力该怎么算那作者就在这个表 a 里就列出了几种方式比如说到底是用高兴还是用 dot product还是直接 concat 一下那最后发现用 dog product 这个效果是。最好的。但其实 Transformer 默认的也就是。dot product。接下来确认使用 dot product 来做这个自助力之后那接下来一个问题就是说我们怎么把这个 non local block 插入到这个已有的这个网络结构之中那像之前作者在摘要里已经说了因为这是一个 Plug and play 的就是即插即用的一个网络结构所以你插在哪儿都可以。那作者这里先做了简单的尝试就是我先加一层这个 non local block我先试一试把它加到哪最好它就在每一个这个 residual block 后面因为对于一个 Resnet 来说它有四个blockResso、2345、四个block它就尝试要么在这个 2 后面加一个要么就在 3 后面加一个看看到底加在哪一个 block 上这个效果最好。然后作者就发现加在这个 234 上这个效果不错加在 5 上这个效果不太行作者觉得这个加在 5 上不行的原因是因为 5 的这个特征图太小了它已经没有多少这个空间信息在里面了所以也没有什么远距离的特征你可以学那这个 non local 的这个操作就起不到它应有的作用。然后又因为刚才说的这个自制力操作比较贵所以作者也不想在这个 rise 2 就是特别早的腾出的时候去做这个 non local 操作所以作者最后就决定就在这个 rise 3 和 rise 4 上去做这个 non local。的操作。那接下来又有新的问题了那之前你是给整个网络里就加了一个 non local block那这个 non local block 肯定是加得越多越好因为就相当于你在每一层你都去做这种远距离的建模所以作者这里的问题就是说我到底加多少好所以他就试了一下加一个block、加 5 个 block 和加 10 个block那这里十个 block 的意思其实就是说在 rise 3 和 rise 4 这两个阶段之中所有的这个卷积后面都加了一个 non local block。因为我们也知道这个 rise 50 这个网络它的这个层数分别是3463所以中间这个 rest 3 和 rise 4 对应的是 4 和6所以它一共就有 10 个卷积。层。所以也就是说对应的这 10 个卷积层后面都有一个 non local那最后就是有 10 个 non local block那这个五个 non local block 那就是隔一个来的所以说就刚好。是五个。那对于 rise 101 来说虽然它后面两层的这个层数更多但它就是隔得多一点那它还是五个 block 和。10 个block。那作者就发现确实是更多的。这个脑 local block 带来的效果提升更多也就意味着说自助力这个操作真的是有用尤其是在这个视频里面这个长距离的建模是更有帮助的。那接下来这个消融实验主要是为了证明作者新提出的这个 space time nonlocal 到底有没有用因为有的人可能会质疑这个 self attention 本来提出就是在这个特征图上去做的有可能只在 special 上做这个 self attention 就可以了你没有必要做这种 space time 上的这个 self attention那所以作者这里就把它拆分开来了就是如果我在光在空间上去做自助力会怎么样如果光在时间上去做自助力怎么样那或者我在这个时空上去做自助力又会怎么样然后作者就会发现时间和空间上作者自助力一样重要有的时候甚至在时间上做这种自助力比在空间上做更有效。如果你在两个上面都做就是这个 space time 上都做它的结果是最好的所以就证明了这篇论文提出的这个时空自助力才是对视频理解更有效的方法。那最后我想大概提一下的表格其实也就是这里的表格 g 了也就是利用更长的这个视频输入会怎么样因为它这篇论文从头到尾讲的就是说如果我能有更长的上下文效果会不会更好那如果你这个 non local 的目的就是为了抓住更长的上下文之间的。信息。那如果你的输入只有 16 帧或者 32 帧那也就是 1 秒的话其实也不长你也没什么长距离的信息可以抓住的。所以作者这里就说我一定得找一个更长的这个时间序列输入来证明一下脑 logo 到底有没有用。而事实上对于这个 128 帧的一个输入也就大概 4 秒多那 NON local 这个方法还是能够持续地提高这个波形的性能而且提升还是非常显著的也从侧面说明了 NON local 是对这种长距离的这种时序建模更有好处的。那说完了消重实验最后我们就来看一下结果那因为这个时候已经是 s and d 之后了所以说大家主要的结果都是在 K400 这个数据集上去做比较那我们可以看到这里这个表 3 其实非常的小总共对比的方法也就只有S3D就是7还有之前的另外一篇论文。3。为什么呢因为之前讲过的那么多方法 2D 的或者说双流网络的方法他们的结果全都是在 UCF 101 和 HMDB 51 上做的他们都没有 K400 上的这个分所以作者也没法比总不能把之前所有的方法全都复现一遍吧所以说这里能比的也就只有这两种方法了。那我们这里可以看到如果拿这个 non local 的 SMD 去跟这个 SMD 去做对比的话它有两个区别一个就是它把这个 backbone 给换了是把 exceptionate 换成了这个Resnet这个改变大概带来了一个点的提升然后加上 non local 之后又带来了两三个点。的提升。对最后从 72. 1 到 76. 5大概就有四个多点的提升也是非常显著的。而且我们可以看到用上 non local 之后它的这个结果甚至比之前这个双流 SMD 的结果还要好一点。这其实也就给做 3D 网络的人了信心就说我不用光流我照样效果能很好。然后 non local network 如果换成了 rust 101当这个 backbone 它的最后结果就有 77. 7 这么高已经是非常的高了。我们可以看到比之前这个 3 里面的方法它不仅用了 Inception Resnet VR 就一个更好更强的结构而且还用了三个模态就是说 RGB 图像、 flow 图像和这个音频。信息。那全都用了的情况下也就是77。7。所以说明 non local 这个操作真的非常。有效。那这篇论文的贡献就是把这个自助力操作引入到了视觉领域而且针对这个视频理解的任务它还把这个 space 自助力操作变成了 space time就时空上的这个自助。力操作。而把这个视频理解上几个任务的分都刷得很高也证明了它的有效性。那在这篇论文之后就更少有人去使用 LSTM 了因为在 NRP 那边大家也是使用 Transformer 而不是使用。LSTM 了。那在 CV 这边自从有了 non local 算子大家也不用 LSTM 了那作者的愿望其实也实现了。作者最后说他们希望这个 non local 这个层能够成为一个重要的这个神经网络的组成部分之后的这个网络结构都能用到它。那确实不管是在之后的这个网络设计上还是在这个下游任务上那 non local 这个算子是有巨大的影响力的。那说完了 non local 这篇论文那接下来我们讲一篇同期的也是 C v P R E 8 的另外一篇论文就是 r 加ED。论文的题目就是说对于这个动作识别来说他们做了一个详尽的调查那调查的是什么呢就是这种时空的卷积到底该怎么做好到底用 2D 还是用3D还是 2D 加3D还是怎么串联一下或者并联一下总之是一篇非常实验性的论文。那作者在摘要里其实也说了他们这篇论文的研究动机是什么就是说他们发现如果就用这种 2D 的这个网络然后在视频上这个一帧一帧去抽特征或者说一帧一帧这么做结果也很好至少是在这个视频动作识别领域里来说他们的这个结果还是表现得相当不错的并没有比 3D 网络低多少。那这篇论文的作者就想那既然 2D 网络表现也真不好那如果能用一下 2D 或者部分用一下这个 2D 卷积其实也是不错的毕竟 2D 卷积比 3D 卷积便宜太多了所以这篇文章整个就是在测试各种各样的结构。一会我们在这个图里也可以看到到底是先 2D 在 3D 还是先 3D 在2D还是说把这个 3D 拆分成 1D 加2D。的结构。那最后作者发现把这个 3D 卷积拆分成这个空间上的 2D 和这个时间上的1D最后能得到更好的效果而且这个训练也简单了很多然后在得到了一个更优的结构之后他们在很多数据集上都取得了很好的结果。那包括比较大的这个 Sports one million 和K400以及之前的小一些的这个 UCF 101 和HMDB。五幺。那具体来说作者就是在这几个方式上去做了这个消融实验看看到底哪种组合最好那首先第一种就是纯 2D 的网络R2D那他的意思就是视频中的每一帧这么过去抽特帧或者做训练完全是一个 2D 网络。那对于第二种这个 MCX 方法来说这个头重脚轻的方法就是说我先有一个视频 clip 进来然后我通过这个 3D 卷积去做先在这个底层上学一学这个时空特征然后到上层我换成这个 2D 的然后把这个计算复杂度降一下但因为 2D 比较便宜所以我说它是头重脚轻。那很显然那第三种结构这个 r m c x 来说那就肯定就是说头轻脚重了。那就是说我先刚开始的时候把一个视频 clip 拆分成每一帧然后我一帧一帧输入这个 2D count然后在得到这些 2D count 出来的特征之后我再用这个 3D 看 5 去做一些这个融合最后出这个结果。那第四种当然就是说全部都是都使用 3D 网络了那这也就是C3D、 S3D 这一系列的网络做法包括 C a P R E 8 的时候还有一篇叫 RR 3 d 的网络就是纯粹使用 Resnet 的一个。3D 版本。那最后这个 e 这个 RR 加 ED 结构就是这篇论文提出的。结构。也就是说他把这个 3D 卷积拆分成了两个。卷积。就是先做一个 2D 上的 special 上的卷积然后再做一个 1D 的这个时间上的这个卷积那作者发现其实他们的这种效果是。最好的。那接下来我们就具体来看一下这个结果看看到底哪一个设置会更好。那首先我们看一下这个参数量从参数量上来看那如果纯用 2D 的这个网络肯定是更便宜的所以我们可以看到它的这个参数量都明显小。很多。但是其他用了 3D 网络的明显这个参数量就上去了。第二个就是我们从这个实验结果上来看那实验结果上明显如果只用 2D 网络的这个结果是。最差的。那纯用 3D 网络的结果也不咋样反而是这种 2D3D 混合用的结果还不错如果是头重脚轻就有 50 多头轻脚重也有将近 50 的效果都比前面单纯使用 2D 或者 3D 的效果要好一些。那最后就是这篇论文提出的 r 加ED就是这种拆分结构的形式它的参数量是目的是为了和之前的这个 3D 网络保持一致但是效果好了非常多无论是在短一点的视频上还是长一点的视频上它的效果都比所有的之前这些设计。都要好。那其实对于网络结构的这种设计的探索其实也不光是 r 加 ED 这一篇论文在做那之前也有 P3D 这篇论文在做然后它之后也有 S3D 和 ECO 这两篇论文也都是用类似的方法在做的尤其是 S3D 和ECO他们都提出了这种头重脚轻或者头轻脚重的这种设计方式然后去做这种消重实验所以说大家的想法其实也都是差不多的那可能读到这儿很多同学还是不知道什么是 r 加ED到底什么叫拆分。那作者这里其实在图 2 里就大概画了一个简单的示意图那意思就是说你用了一个 t 乘 d 的一个卷积核当然你可以是 3 * 3 * 3 了但式你这个时间上和空间上可以是不一样。然后 r 加 1D 的方式就是说把这个 3D 给拆分了。我现在空间上做这种 2D 卷积就是在时间这个维度上是一就什么操作都不做然后在空间上去做这个 d 乘 d 的这个卷积然后中间作为一层这个特征投射就是把这个维度。变化一下。那这里之所以变换这个维度是想让这个 r 加 ED 最后的这个网络参数和这个 R3D 这个纯 3D 网络的网络参。数保持一致这样子更能够做这种公平的对比来显示这个 r 加 ED 网络的这个优越性。那至于这里这个维度 MI 是怎么算的其实它在多文论文里也在这里展现出来了用这个公式去算的能够尽可能的逼近这个 R3D 的这个网络。参数。那一旦做完这个特征投射之后它接下来就做了一个 t 乘 1 * 1 的一个直序上的一个卷积那这里只在时间上做了一次卷积那后面是空间上就是 1 * 1还没有做什么操作的所以就是通过这种方式把一个 3D 的卷积拆分成了一个顺序的先做空间再做时间的卷积形式那作者这里也说了两点就是说这种拆分的形式为什么比原来这个纯使用 3D 网络好的。原因。一个就是增强了网络这个非线性。因为你原来如果只有一个 3D com 的话你后面就只接了一个 value 激活层所以你只做了一次非线性操作。但是你现在做了两次卷积那你每个卷积后面都有一个 value 激活层所以你就有两次非线性的变换你这个模型的非线新能力就加强了那他的学习能力也就增加了。那第二个好处也就是从优化的角度来看如果你直接去学一个 3D 卷积的话是不好学的那如果你把它拆分成一个 2D 和 1D 来说它就相对容易优化。一些。那作者在右边的这个图 3 里也展示一下训练和测试的这个。错误。就是拿 r 加 1D 和这个 r 二 3D 做了一个对比。我们可以看到不论是对浅一点的网络就是 R3D 18 或者 r 加 ED 18就是只有 18 层。还是说对于一个深一些的网络就 R 3D 34 和 r 加 1D 34 来说它的这个结论都是统一的就是你用上 r 加 1D 这种拆分式的结构之后你不论是训练的这个误差还是测试的时候误差都比原来这个 R3D 是要低一些的。这也就证明了这既不是过拟合也不是欠拟合这就简单地证明了模型是更容易训练。那说完了 r 加 ED 到底是怎么做拆分的也做完了这个形容实验那最后就是看一下结果我们首先来看一下这个 K400 上的这个结果对比那同样的因为 r 加 1D 这篇论文也是 CVPR 18所以说在它之前其实只有 S3D 这一篇工作在 K400 上数据集有这个分数所以说它就只能跟 I3D 去比。那这里面其实还是有一个比较有意思的现象就说 r 加 ED 不论是在 RGB 上还是在 flow 上它它的这个结果都比对应的这个 SMD 是要高一些的。但是当你最后做这个 late Fusion就是当你把这两个结果加权平均之后你会发现这个 SMD 的提升非常明显反而是这个 r 加 ED 没什么提升所以导致这个双流 r 加 ED 的结果还不如双流 SMD 的结果不过这个作者也没有给出。解释。另外我们可以看一下这个在 UCF 101 和 HMDB 51 上的这个结果同样我们可以看出 r 加 1D 表现还是不错的但是如果跟 I3D 去比还是比较怪的现象就是它虽然在 RGB 上比这个 I3D 的 R7B 要高但是它在 flow 上就已经比 S3D 的 flow 要低了然后再把这两个加起来之后它的这个结果就更低了。那作者这里可能觉得这不行那在 K400 上已经比 I3D 低了那如果在 UCF 101 会是 MDB 上再低这就不好给审稿人交代了。所以他这里还在题目里稍微解释一下他说我们的这个模型是光在 K400 上去做预训练的但是上面这个 SND 模型是在 Imagenet 加 K400 上去做这个预训练的他们比我多用了 Imagenet 这个预训练所以说他们比我高这是理所当然的。但是事实上这句话可能不太成立因为我们之前如果精读过 S3D 那篇论文我们就会知道 S3D 那篇论文里也做了就是单独用 K400 去预训练模型的。结果。而且事实上最后这里的结果应该是97。8而这里应该是 80. 9所以是丝毫不比这个用了 image net 要差的反而有可能在 h NGB 上是更好的。所以这也就意味着其实 R2 加 ED 这个模型至少在 R U C F 101 和 HMD 51 这两个数据集上效果是不如 SMD 的当然这个我觉得其实是情有可原的因为毕竟 r 加 ED 它用的这个输入是 112 乘112它是比原来这个 SND r 24 * 24 要小一倍的所以效果低这么一点也没什么关系。而且 r 加 ED 这种拆分的模式确实有助于这个模型的训练确实有助于降低这种过拟合。而且它不需要借助于 Imagenet 这个预训练模型它是可以从头自己开始训练的而不是像 S3D 一样借助了 2D 模型也借助了 2D 模型的这个预训练参数才导致这个比较。好优化。所以说 r 加 ED 这个网络本身的结构也是非常值得学习的。那在前两年对比学习或者说自监督学习在视频领域里也比较火的时候很多人都是采用 r 加 ED 当做这个网络的白克崩去做这种视频的自监督训练的一个很重要的原因也是因为它比较好优化而且它的一个输入是 112 乘 112 也比较小对 GPO 内存比较友好。然后接下来我们还会讲到 time Sommer 这篇论文其实也是 r 加 ED 这篇论文里有些。作者写的。想法上也非常类似就是把一个 special temporal 的一个 Transformer 拆分成了在空间上和时间上分别去做这个自助。利益操作。这样子就大大简化了对显存的要求从而在视频上也能训练起一个vision。Transformer。总之 r 加 ED 这篇论文当你读完以后你就会发现它是一个纯实验性的论文它主要的贡献就在于它的这个消融实验以及它带给你的各种这种观察和见解从而能够帮助你理解视频领域里不同架构之间的这个区别和联系以及到底应该怎么去构建一个适合于视频理解的这个模型框架。那 3D 网络的最后我们来看一下 slow fast 这篇论文那作者又是我们熟悉的一帮人这篇论文其实是 3D 网络里结合这个精度而且这个效率结结合的比较好的一个工作。他的想法很简单也非常有意思其实有点借鉴了双流网络的思想但是并没有用光流作为这个模型的输入它还是一个单纯的 3D 网络。作者在文章中其实说他们的这个研究动机来源于说人的这个视觉系统有两种细胞一个叫 p 细胞一个叫叫 m 细胞 p 细胞数量比较多占到这个视觉细胞的80%它主要是负责处理这个静态图像的就是说现在当前这个图像里这个场景是什么信息它要描绘得非常具体 p 细胞是干这个的 m 细胞是处理这个运动信息的它能处理这种高频率的这个运动信息它只占这个视觉细胞的大概20%。的数量。所以作者想了想他觉得这个诶跟这个双流系统也有点像就是有一只是处理这个动态信息一只是处理这个静态信息。那 3D 这边其实我也可以这么设计一下所以就有了 slow fast 的这个网络。 slow fast 顾名思义就是有一支网络是 slow 的有一支网络的。是fast。具体怎个 slow 和fast。法那假设说我们现在有一个视频那这个视频有 64 帧就说大概两。秒多。那如果我们现在先用很低的这个帧率就比如说每隔 16 帧取一帧取出来 4 帧的话这一支就叫慢分支。它就像那个 p 细胞一样主要是学习这个静态图像主要是学习这个场景信息的因为 p 细胞它占了整个视觉细胞的30%所以这里面作者觉得这个静态图像的这个描绘也比较难所以说他也想把大部分的这个模型参数给这个慢分支所以说这个慢分支的这个网络结构其实是比较大的。简单地说其实它就是一个 SMD 网络但是因为给这个大 SMD 网络的输入只有 4 帧所以说相对而言它这个计算复杂度不是太高。然然后就到了底下这个快分支那快分支就是假如说你有 64 帧那我现在每隔 4 帧取一帧就我用这个很快的帧率现在去取样最后我就取得到 16 帧然后我把这个 16 帧输入给这个块分支那现在因为你这个输入变多了我为了维持整个这个模型的计算开销还是比较小所以我就要让这个块分支的网络尽可能的小。这样就模拟了这个视觉里这个 m 细胞它只占整体的20%主要就是描述运动信息因为你描述运动信息所以你需要更多的这个帧然后这样能快速地看出来它们之间的改变所以说听起来是非常合理的。所以整体上来看 slow fast 也是一个 2 分支的结构跟双流网络一样然后上面是这个慢分支下面是这个快分支慢分支用小输入但是大网络快分支用大输入和。小网络。然后这两个分支之间还用这种 lateral connection 把它们都结合了起来。所以它们之间的这些信息是可以互相交互的从而能够更好地学习到这个时空特征最后达到了一个比较好的这个精度和速度的这个结合。那看完图一之后其实大家基本上已经知道 slow fast 这个网络到底是什么结构了那接下来我们就具体来看一下这个表一从头到尾走一遍这个前向过程看一看这个输入输出的大小就能更形象地了解这个网络了。首先这个是慢分支这个是快分支然后这个是他们这个输出的大小。首先我们来看一下网络的话我们刚才也说了这个慢分支其实就是一个标准的 SND 网络这里也就是一个Resnet我们也可以看到有RESR345有四个stage然后这里面就是 rise 50所以有 3463 这么多这个。residual block。所以说这个慢分制本身就是个I3D是非常标准的作者这里也没有过多的强调。然后对于这个块分支作者其实就把这几个数字变成这个黄色了那它之所以变成黄色它就是想让你看一下这个慢分支和快分支的这个通道数的对比。我们可以看到这个快分支的通道数是远远小于这个慢分支的这个通道数的也就意味着这个快分支是非常轻量。但是整体结构这个快分支跟慢分支也是一样的也是一个残差网络也是 3463 这么多。residual block。那看完网络结构之后我们就来过一下这个。前线过程。那首先这个输入是 64 帧这个帧是 24 * 24 这么大那对于慢分支来说就像我们刚才说的一样每隔 16 帧取一帧所以说这个慢分支的输入只有 4 帧但是块分支它这里其实是每隔一帧就取了一帧所以说一个还取了 32 帧比我刚才说的 16 帧还要多一倍。所以说这个快分支的输入是相当大的这也就是为什么作者一定把这里的通道数要减小的原因否则这个计算开销实在是受不了。然后我们可以看到这个 slow fast 跟之前这个 I3D 网络或者 r 加 ED 网络都一样它们在这个时序上其实都是没有进行下采样的。你的输入是 4 帧那接下来都是 4 帧 4 帧一直到最后。也是 4 帧。你的这个快分支输入是32你到最后还是32所以它在这个时间的维度上始终不做下采样因为它想尽可能地保持这么多帧去学习更好的这个时序信息。因为本身就不多它这个下载项全都是在这个空间纬度上做的从刚开始的24然后降到11256然后2814然后到。最后的7。那最后再接一个这个全局平均池化然后再接一层这个 FC 就可以直接做输出了。值得一提的就是这每一个 residual block 后面都有一个这个 letter connection 其实就是一个简单的连接能让这两个分支之间进行简单的信息交互从而更好地学习时空上的特征。因为 slow fast 这篇论文的想法确实比较直截了当所以我们这里就直接看结果了。当然 slow fast 它还做了这个视频分类视频检测还做了好几个数据集它的结果都是非常好的。那我们这里就简单看一下 K400 上的效果。就可以了。我们直接来看这个表2那到 SCV 19 的时候其实 K400 已经提出有两年了所以说我们可以看到这里面之前的工作也有很多在 K400 上这个汇报了分数。我们首先可以看到作者把上面这个区域给灰色化了因为作者觉得这里这些模型全都是利用了这个 Imagenet 预训练模型它没办法从头训练。但是对于接下来的这些模型比如我们刚才讲过的 r 加ED还有新的这个slofaas它都是可以重头训练不需要任何的这个预训练模型的。当然了它训练的这个 epoch 数量会非常多需要 196 个epoch训练时长也非常长 8 卡的机器也要训练十几天所以说不用这个 image net 预训练参数也不见得是个好事那接下来我们看一下结果。那 slow fast 这篇文章不光是迈这个精度它更主要的是想说他们这个模型非常的有高效所以我们可以看到他们这里还加了一列就是专门做 g Flops那像它最小的这个 slow fast 4 * 16 rise 50 这个模型它的这个 g flops 就只有 36. 1如果我们跟上面这些 3D 模型去比的话发现它是非常小的。而且 slow fast 随着使用的这个帧数越来越多而且用的这个模型越来越大或者说也用了这个 non local block 之后它这个性能一直会增长一直到最后的这个 79. 8这个也是比之前的这些方法通通都要。高的。而且这个基本也算是 3D 网络在 K400 这个数据集上最好的表现了那 3D 网络这部分我们就算过完了了还有很多优秀的 3D 网络的工作我们没有时间去设计。而且还有一些有趣的工作它既不用光流它也不用 3D 网络也能比较好的高效地把这个视频理解。做了。比如我之前就有一篇论文叫 hidden to stream network就是把这个光流的学习融入到网络之中了这样不论是在训练的时候还是在推理的时候我们都不需要去抽取这个光流抽光流这个步骤就在网络之中了所以是比较高效的。然后还有另外一篇论文 TSM temporal shift module S C V E 9 的一篇论文它是把 shift 这个操作用到了这个视频理解里能让一个 2D 网络就能媲美一个大的 3D 网络而且在很多任务上效果都非常的好而且因为是 2D 网络所以比较方便。去部署。作者在官方代码还提供了一些手势检测的Demo非常有意思感兴趣的同学也可以去。试一下。总之 3D 网络从 17 年 I3D 火了之后就一直霸占这个视频理解领域一直到 2020 年然后自从有了 vision Transformer大家这个注意力又全都转移到这上面了所以说就到了我们今天要讲的第四个部分就是 video Transformer。怎么把在图像上用得比较好的这个 vision Transformer 能移植到视频领域里来做一个视频的 vision Transformer那 video consumer 这篇我们就准备讲一篇这个timesqmer也是最早的一篇把 vision consumer 用到视频理解领域的一篇论文它这个题目也是让人一看就懂时空注意力是不是 all you need这个就跟 2017 年 Transformer 的原文是一样的自助力是不是 all you need那这篇论文我们之前在讲 r 加 ED 的时候也说过是跟 r 加 ED 的作者团队差不多的。那这篇论文也是一篇比较实验性的论文就是探索了一下怎么把这个 vision Transformer 从这个图像领域迁移到视频领域里来。那具体来说作者就尝试了这五种结构那第一种结构 space attention 就是只在这个空间特征图上去做这种自助力那这个其实就是图像里这个 vision Transformer 用的这个自制为例意思就是说你一个这个特征进来做一次这个空间自制为例然后再接一个MLP然后通过残差连接最后。得到这个输出。那这个就属于是图像上的一个 baseline 了。那接下来就是说怎么用到这个视频上那首先视频上第一个就是我暴力地去使用对吧那我就是给一个视频那我就在这个视频三个维度上通通去做这个自注意力我一起做也就是他这里说的这个 joint waste time attention。那这样呢一个输入进来过这个时空司注意力然后再过一个MLP然后通过残差连接就得到最后的输出了。但是这种方式其实我们肯定就能想到这个 GPU 内存肯定塞不下那图像那边 vision consumer 都快塞不下了那更别提你现在把这个视频 30 帧 60 帧扔给一个 vision Transformer你在三个维度上去算这个自助力它肯定是塞不下的。所以你一旦这个 GPU 内存塞不下那该怎么办那其实就像 r 加 ED 做的一样你 3D 塞不下不就把你拆分了嘛我就把你拆成 2D 和 1D 就行了。那这里呢其实还是同样。的套路。那你既然一个 3D 的这个时空的自助力你做不动那我就在时间上先做自助力然后再在空间上再做自助力不就行了吗所以说就按照这个 r 加 e d 的方式作者就提出了他们这篇论文里的这个 divided space time attention 就是把这个时空分开来做这里他没有用 factorize 这个词他换了一个词换成divided但其实都是。一个意思。具体做法就是你一个特征近了我先在这个时间维度上给你做一下自助运力残差连接然后我再在空间上做一下这个自助运力然后最后过一个MLP最后得到输出。这样这个计算复杂度就大大降低了因为你每一个这个序列长度都变得。很小。当然了除了这种时间和空间上的这种拆分之外你还可以有很多别的拆分方式那比如之前大家常用的就是这种 local global 的形式就是既然你全局的这个序列长度太长你没法算那我就先在局部算好以后我再在这个全局。上去算。这个其实就有点这个 swing transfer 的意思我在一个局部的一个小窗口里去算这个四处余力它这个计算复杂度也会变得。很低。所以说这里就是说我先一个特征进来我先局部。算特征。然后我再去全局算特征那这个复杂度也就会降低。最后一种也就是这个 Excel attention就是说我只沿着你特定的这个轴去做attention。这个之前我们在讲 vision Transformer 的时候也。提到过。就是说我一个特征进来我先沿着这个时间轴去做自主运力然后我再沿着这个横轴就是这个图像的宽去做 4 除以力然后再沿着这个图像的高度这个竖轴去做 4 除以力。那意思就是说把一个三维的问题拆成了三个一维的问题那这个复杂度一下又会降得很低很低。但总之你一看这个图你就会立马联想起来跟 r 加 ED 这篇论文。的联想。r 加 ED 也画了 5 个图分别讲了讲这个 2D 和 3D 该怎么融合到底哪种结构好。那这篇 Timesformer 他们也是画了 5 个图讲了讲这个微症 Transformer 怎么能用到。视频里来。套路是非常相似的。然后反正是实验性论文可以写的这个方法部分并不多所以作者为了让这个读者更好理解所以把刚才那 5 个图又用可视化的方式展现了出来形象的告诉你这 5 种自注意力的方式到底是怎么做的。这个图确实画。的也很好。首先我们来看就是单纯用这种图像上的这种空间自注意力那意思就是说如果我们有前一帧那 frame t 减一中间这一帧 frame t 和下一帧 frame t 加一的话如果我们拿这个蓝色的 patch 当基准点那其实它会跟谁去算这个自助力它只会跟它当前的这一帧去算。自助运力。因为它就是一个图像的自助运力它不牵扯这个时间轴上的所以说它看不到前后这两帧它只是跟本帧上所有的别的 patch 去做这个自主。引力操作。那接下来的这四种方法就全是跟视频有一些关系了那比如说接下来的这个在时空上一起做自助力的方式那这个当然是最好了因为我们可以看到如果拿这个蓝色的 patch 当基准点前一帧这一帧和后面一帧所有的这个 patch 它都要去做自制自主一力效果肯定应该是最好的但是这个复杂度也是你承受。不起的。那我们就来看看后面三种这个简化方式是。怎么做。那第三种也就是他们这篇论文中主要提出的方法这个 divided space time 自助力那同样我们还是以这个蓝色的 patch 作为基准那先做这个时间上的自助力也就是说他先做这个 patch 对应的前一帧的这个 patch 上他去跟这个 patch 去做自助力然后同样在下一帧同样的位置上这个 patch 上去做自助力也就是这个他们在做这个自助力操作它跟前一帧剩下所有的这些 patch 和下一帧所有这些 patch 都是不做主。自主义力的没有关系。那做完了这一步这个时间上的自助力接下来就该做空间自主义力了。那这个空间自助力就跟第一个这个 2D 的空间自助力。是一样。的它跟这个图像里的所有的别的 patch 都会去算一下自助力。那接下来第四种方式这种先局部再全局的方式就是说首先我先去算这个局部小窗口里的自注意力那如果我们拿这个蓝色 patch 当这个基准点那对于当前帧来说我们就算这个小窗口里那前一帧也是这个小窗口后一帧也是这个小窗口。那当算完了所有这个小窗口之后接下来就该算这个全局的了那全局为了减少这个计算量它就得变得非常的稀疏所以也就是。这些点。是要去做这个自助力操作的。那最后就到了这个轴自助力那也就是说把一个三维问题变成了三个一维问题。这里也非常形象就是说如果这个是基准 patch 的话它的时间上是跟前后这两层绿色去做自主义力那它在横轴上是跟这个黄色的去做。自主力。在竖轴上是跟这个紫色去做自主义力。那其实这个 x attention也就是这个 divided space time attention 的一个极端情况就说为了进一步地减少这个消耗那在当前帧上也不做所有 patch 的这个自助运力而是专门去选这个轴。上去做。那这个效果肯定是会有 trade off 的。总之作者就是详尽的把这些设计方案全部都试了一遍看看到底哪个设计方案最后的效果最好。最后就依据中间的这个 divided space time attention 提出了他们这个Times。former 的架构。我们简单来看一下这个消重实验那消重实验这个表一里就是把刚才说的这五种设计方案全对比了一下那从结果上来看这个 divided space time 确实取得的效果是。最好的。那在 K400 上单纯用这种 2D 的这种自注意力效果也不错或者说这种 joint 的这种时空自助力效果。也不错。但是单纯用 2D 的这个自助力之所以效果好是因为 K400 这个数据集是一个比较偏重这个静态图像的那如果我们换到这个 something 数据集上我们就可以看到光用这个 2D 的这个自注意力效果一下就下降了很多我们还是要把这个时间维度考虑上。所以说唯一表现比较好的就剩下这个 joint space time 和 divided space time 这两种方式。但是我们之前也说过这个 joint 的这种时空的自助力它的这个内存消耗是非常巨大作者也就在这个图 3 里画了一下就是如果我们把这个视频帧的大小变大从 224 变成 336448 或者更大它们这个 Timeformer 这个计算量的增长是基本呈线性的但是这个 joint 的自注意力就会增长得非常快尤其是后面这个灰色部分其实就已经是 GPO out of memory 就已经报显存了其实是没法进行训练的。同样的道理如果我们把这个输入加长从 8 帧变成 32 帧一直到最后的 96 帧我们可以看到这个 joint space time attention 其实从 32 帧开始就已经爆显存了对你也是没法训练的。所以最后总结下来就是说即使这个 joint space time它的这个结果也不错而且它这个参数量稍微少一点但是因为它这个占用的 GPU 选存实在是太大了我们根本训练不动。那最后最好的方案就只剩下这个 divided space time attention 了。那最后我们来看一下结果。首先我们来看一下这个表2作者这里就是对比一下 Transformer 和之前的这两种 3D 网络 I3D 是最经典的 slow fast 是最新的所以说它就跟这两种去做了一个对比。那其实我们这里可以发现如果单纯从这个准确度的角度上来说这个 times former 不是太行虽然他这里用这个 78 黑体了说他们是最高的但我们也知道这个 slow fast 如果你换成 rise 101 或者换成 non local 之后它这个准确度已经到。80 了。那作者这里为了突出使用这个 region consumer 的。好处。作者这里就发现他的这个训练的时间和这个做推理的这个 flops 都变低了。那比如说训练时间的话 slow fast 一个 rise 50 就要训练 6000 多个小时但是他们这个 times former 只需要训练 400 个小时。这个微声 transformer 拿来做微调这个确实效果非常好。那推理上因为 transmer 需要的这个输入更少所以说他推理时候用的这个 t flops 也。更低。也就是说从效率角度而言 time sqmer 是优于之前的这个 3D 网络的。但是大家也知道 CV 领域的人一般只认这个效果不太认这些效率这些东西所以说作者肯定还是得再刷一刷分的。那作者就是把这个 time former 变得更大用了 time former large然后又用了 image net 21K 去做预训练最后还是把 K400 刷到这个上 80 了。那这样子的话就别人无话可说了这个效果确实是最好的在 something 上这个结果也是不错。总之作为第一篇把这个 vision consumer 用到视频理解领域来本文的结果其实已经算不错了。接下来很快我们组这边也有一篇VIDTR也是用类似的思想去做 video Transformer 的然后 Facebook 那边还有另外一篇 MVIT Multi skill vision Transformer也是做 video Transformer 的效果会更好。然后 Google 那边还有一个 VI VIP想法都差不多都是把这种时空自注意力拆分只不过用了拆分的方式不太一样所以其他的这些工作我这里就不讲了。那最后我们来总结一下这篇论文那其实作者在这里也总结说他们的这个 Timeformer 有 4 个好处第一个就是想法非常的简单第二个就是效果非常好在好几个这个动作识别的这个数据集上都取得了最好的。效果。第三个就是不论是训练还是在做推理的时候它这个开销都是非常小的这点对于视频理解来说还是非常具有。吸引力的。然后最后其实我并没有讲就是说这个 Timeformer 可以用于处理超过一分钟的视频也就意味着说我们之后可以做这种长时间的这个视频理解了这个其实视频理解里非常重要的一个部分但是之前很少有工作做因为确实这个训练成本各方面都非常的高这个任务也比较困难而且也没有合适的一个数据集去做这种测试。所以说综合以上这些优点而且 vision Transformer 在视觉这方面大杀四方这个扩展性、稳健性都这么的好我觉得接下来 video consumer 确实是大有可为而且更主要的是视频本身就是一个多模态的信号它可可能会有字幕这种文字信息然后它可能会有这种音频信息。然后你如果从中抽取这种光流或者抽取这种深度图它就是属于别的这种多模态信息它自己就是一个非常丰富的这个输入来源从中可以设计出各种各样的这个自监督信号。如果我们在和这个 Transformer 结合起来很有可能就能达到 CV 里面像 NLP 那样的这个 Bert GPT 时代。那说完了最新的这个 video Transformer最后我们就来把之前讲过的所有东西大概再。串一下。首先就是从 14 年开始最早的在 Alex net 之后把这个卷积神经网络用到视频领域里来就是 deep video 这篇论文。但是 deep video 没有很好的利用这种运动信息所以说它刚开始的效果不是很好它还没有这种手工特征 IDT 的效果好。所以说这个双流网络的作者就想了一下那为什么不把 IDT 里用的这种运动特征加进来所以说这两个方法结合起来就造就了这个双流。网络。所以双流网络的结果就变得很高那从此就开始了用这个深度学习做这个视频理解的时代。那因为双流网络证明了它的这个有效性所以说接下来大家就在它之上去做各种各样的改进那首先最常见的一个改进就是说对视频来说我们想要更长的这种时序理解的能力所以说我们加上这个LSTM就有了这个 C V P R E 5 的 beyond short snippet 这篇论文。然后因为这个双流网络又是做的这种 late Fusion就在最后把这个结果加做了个加权平均那所以肯定就会有人想我们能不能做一下 early Fusion那于是就有了这个 CVPR 16 的这个 early Fusion。这篇论文。然后因为双流方法里只是简单地利用了这个光流并没有真的根据光流的这个轨迹去做这种视频特征的叠加。所以说在双流网络的基础上 C V P R E 5 的 TDD 这篇论文就按照轨迹去直接加特征得到了非常好。的效果。那最后一点就是对于视频我们想要处理这种长时间的视频信息而且要让它变得更加的这个高效这就有了 ECCV16 的这个 TSN 这篇论文。 Tempo segment networks 就是把一个视频打成几个段然后每一段里去做这个分析最后把这个分析取一个合并。那因为 TSN 这个做的比较简单所以很快在 TSN 的基础上大家又纷纷地去做各种改进和尝试就是把之前传统学习里的这种全局建模已经加了进来比如说全局建模已有这个 feature vecting coding、 VR ad encoding 这些方法那像这个 DOVF 就是把这个 feature VC encoding 用了进来这个 TLE 就是把这个 by Linear encoding 用了进来。那这个 action Vlad 其实顾名思义就是把 Vlad 给。用了进来。那基本到这个阶段其实这个 2D 的双流网络就已经把 UCF 101 和 HMD B51 基本给刷得非常高了也没有什么太多可以做的了。同时也就是在 2017 年这个 S3D 这个网络就。出来了。那所以我们现在再来看 3D 网络这条线。那在这个 deep video 提出这个 Sports y million 之后这个很多人就想那既然这个视频是一个 3D 的输入我们为什么不用一个 3D 的网络来处理它呢那用一个 3D 的卷积神经网络来学习肯定听起来是一个更合理的事情所以很快就有人做了这个C3D就是纯粹的用一个 3D 神经网络来学习视频而且因为有了 Sports one million 这么大一个数据集他觉得它还是能训练出来一个非常好的网络的。那事实上这个网络抽取特征效果还可以但是如果在一些刷分比较厉害的这个数据集上它跟别的方法效果还是差。得比较远。的。那接下来大家就想那为什么 3D 就是训练不好可能还是因为初始化做的不好那如果我能把这个初始化做的再好一点这个训练这个优化就会变得更简单。于是就有了 I3D 这篇论文就是 inflated 3D network它可以借助这个 2D 网络的初始化和 2D 网络的这个结构很快就能得到一个很好的结果所以说 I3D 把 UCF 101 和 HMDB 51 这两个数据集直接就给刷爆了在那之后大家就开始用这个 K400 去汇报结果。所以说在 3D 网络这边基本上所有的这些工作都是在 K400 或者说 something 这几个数据集上去汇报结果。那在 3D 网络这边一旦证明了这个 S3D 网络的有效性那接下来就有几个方向。那首先第一个方向就是说那你这个 I3D 是从一个 2D 的 exceptionat 搬到 3D 的那其实我也可以把别的 2D 网络搬过来那所以说把一个 2D 的 Resnet 搬过来就成了R3D把一个 2D 的 Resnet 搬过来就是 MF net 那如果把一个 2D 的 SE net 搬过来那就是STC。那第二个思路就是说这个 2D 网络表现。也不错。而且 2D 比 3D 要便宜很多那我们能不能把这个 2D 和 3D 结合起来使用所以这也就有了接下来几个工作就是 S3 D r 加 EDE code 和这个P3D。他们的想法都很像基本都是把这个 3D 给 p 成 2D 和 1D 了准确度上没什么降低但是这个计算效率和训练速度上都有了。大幅度的提高。那第三个方向当然跟 2D 或者双流网络也一样我想去尝试这种LSTM或者尝试这种 TSN 去处理更长的这种时间序列。所以说也有对应的一系列工作比如说这个 LTC 就已经使用了 120 帧。左输入。还有接下来这个T3D、nonlocal、 V4D 这些工作通通都是为了能处理更长的这个时序信息而设计的。那最后一个方向就是做这种高效率的比如说这种CSN就是 channel separate。network。还有我们今天刚才说过的这个 slow fast还有通过这个 auto ML 搜出来的是X3D这个网络非常小但是效果。也很好。然后因为 X3D 使用了这种 auto Mo 的方式去搜索这个网络所以说搜出来的这个网络不仅效果好而且参数量特别的小那基本上就很难再有人能打过它了。那正当大家发愁这个视频理解该怎么往下做的时候大救星来了被人 Transformer 出现了对大家迅速就抛弃了 3D 网络全去搞被帧Transformer因为反正 3D 网络我也刷不动。那在短短几个月的时间里在 2 月份就有了 time swarmer 3 月份有了VIVIT然后 4 月份我们的 VIDTR 和这个 Facebook MVIT 也就都放出来了。基本上方法都差不多就说这个 joint space time attention 这种合并起来的这个时空自注意力太贵了这个视频里直接做这种 Transformer 做不起所以我们就要拆分它那要我先做一下时间再做一下空间就跟 r 加 ED 一样在这个维度上去拆分。要我就是先做一下局部再做一下全局就是在用小窗口大窗口之上去。拆分一下。总之 vision Transformer 在视频理解里的应用还是比较初级的我能想象到的方向就是利用 Transformer 这种长时间序列建模的能力去做这种长时间的视频理解而且还有就是这种多模态的学习还有这种自监督的学习。总之虽然我关注了视频 a 学习这么多年但我觉得视频领域还是处在一个非常初级。的阶段。接下来有太多太多可以做的而且有太多太多需要做的任务了。我虽然不知道真实的这个视觉应用里到底有多少需要这种视频理解但是我非常赞同 Andrej capacity 之前在 Twitter 上说过的一句话如果想训练一个非常强大的这个视觉模型拿视频数据做输入可能才是比较合理的做法。
http://www.hkea.cn/news/14515061/

相关文章:

  • 网站留言短信通知中英双语网站程序
  • 简易html个人介绍网页如何把一个关键词优化到首页
  • 网络营销是什么时候提出的seo视频网页入口网站推广
  • 建网站上海开源手机网站模板
  • 做点阵纸的网站陕西省建设资质是哪个网站
  • 地方型旅游网站小程序开发公司排行榜
  • 做搜狗网站关键词排名微信公众平台开发源码
  • 7k7k小游戏网页网站建站 优化推广
  • 如何利用国外网站做自媒体新零售商业模式
  • 聊城做wap网站公司已经有网站了 怎么做app
  • 服务器维护中是什么意思百度推广账户优化
  • 手机派网站腾讯企点怎么解绑手机号
  • 南昌网站备案辽宁建设工程信息网查询系统
  • 广州建设行业网站网站gif小图标
  • 电子商务网站建设汇报PPT广州网站定制开发方案
  • h5响应式网站技术网站开发建设是否需要经营许可
  • 做图网站被告wordpress 音乐播放插件
  • 电子商务网站建设一般流程企业为什么要建立自己的网站
  • 甘肃网站建设推广黄页88网注册
  • 网页设计与网站建设教材安全员资格证书查询网
  • 建站宝盒怎么样怎么搭建论坛
  • 做网站不挣钱保定网站seo技术
  • 购物券网站怎么做网站排名优化原理
  • 如何将别人的网站作为自己的移动网站 图片优化
  • 外贸网站建设课本建设工程其它费计算网站
  • 怎么建设微网站在因特网上建设网站可选择的方案
  • 怎么建设网站规划昌大建设原名叫什么
  • 网站完成上线时间最好看免费观看高清视频了
  • 网站关键词被改怎么给公司注册网站
  • 龙采网站建设案例九洲建设集团网站