视频深度学习(第二部分):双流架构的兴起

用于视频理解的双流架构

本文是视频数据深度学习系列的第二篇文章。本系列文章概述视频深度学习的发展历程,为有志于从事该领域的研究人员或从业人员提供相关背景知识。在本系列的第一篇文章中,我概述了视频深度学习的早期研究——使用 3D 卷积从视频中提取可学习的特征。

本文将概述视频深度学习的下一个关键阶段:双流网络架构的引入和普及。用于视频识别的双流架构由两个独立的卷积神经网络(CNN)组成—— 一个处理空间特征,一个处理时间/运动特征。这些独立的 CNN 通常被称作双流架构中的“空间”和“时间”网络。这些独立网络组件的输出结合在一起,可以形成一个时空视频表征。双流架构在视频动作识别方面的性能有大幅提升,所以在一段时间内,双流架构成为视频深度学习的标准方法。

本文首先会概述双流架构的基本信息,如双流架构的定义/说明和之前的研究的局限性。然后,我将概述双流网络架构的相关文章,包括最早提出该架构的文章以及关于该架构的复杂变体的后续文章。文章的最后会探讨同时期出现的其他视频理解方法,并概述双流网络的局限性和改进方法。


前言

在概述视频深度学习的双流方法之前,我们先讨论几个基本概念——2D/3D 卷积的定义、视频数据的结构以及双流架构出现以前的视频深度学习方法,建议大家在阅读本文之前先查看本系列的第一篇文章。尽管大家可能已经了解了这些基本概念,但本文会尽量地提供所有相关信息,便于缺乏基础知识的读者理解其中的概念。

我们要解决的问题是什么?

人体动作识别问题描述

本文提到的大多数方法研究的都是基于视频的人体动作识别(HAR)问题。HAR 数据集包含许多可变长度的视频,每个视频都有一个关联的语义标签,该语义标签对应视频正在执行的动作。通常情况下,数据集内的视频关注的是正在执行相关动作的单一实体,且不会关注该动作执行前后较远的内容。所以,底层模型的目标是预测输入的视频的语义动作标签。目前,HAR 是双流网络架构时代最常研究的视频理解问题。

为什么需要新方法?

本系列的一篇文章概述了视频深度学习的几种方法。这些方法采用 3D CNN 模型(由非线性激活层分隔的多个连续的 3D 卷积层),将原始视频或手工制作的视频特征(如光流方向梯度)以输入的形式传给这些模型,并根据分配给每个视频的语义标签,通过反向传播来进行监督训练。问题是,既然我们已经有了这么多视频深度学习方法,为什么还要探索新方法呢?

答案非常简单:这些模型的性能都不好。事实上,早期的 HAR 深度学习方法没有手工制作的启发式算法效果好,其效果与使用单个帧作为输入的深度学习模型差不多(完全忽略视频的时间维度)。深度学习在图像识别领域非常巨大成功,所以很多人对它在视频深度学习领域的表现非常失望。于是,很多人开始思考如何才能优化深度学习在视频领域的性能。

早期的 3D CNN 架构表现不佳,主要是因为缺乏可用于视频理解的大型的有监督数据集。例如,当时最常用的 HAR 数据集 UCF-101HMDB-51 分别只包含 13320 和 7000 个标记的视频片段。相比之下,ImageNet(广泛使用的图像分类基准)包含大约 130 万个训练实例。虽然有人提议对 HAR 使用更大的数据集(如 Sports1M),但这些数据集通常是自动收集的,并且相当混杂,导致整理过较小的数据集的使用率更高。3D CNN 包含的参数比 2D CNN 多,因此需要从大量的数据中学习有意义的、有区别的表征。因此,当时的小规模数据集是不够的,我们需要更多的数据或不同的学习范式来优化性能。

双流网络架构

双流架构是 HAR 深度学习超越启发式算法和单帧法的开始,开启了视频理解的新时代。这个架构将动作信息直接编码到网络输入中。即使没有足够的监督数据,也能实现高性能的视频理解。现在,我将概述双流架构的基本内涵和外延,为本文其余部分的研究提供背景。

双流网络架构 [2] 源于生物学的人类视觉皮层的双流假说 [4]——大脑有分别识别物体和动作的路径。用于视频理解的双流网络架构仿照大脑的两个路径,使用两个独立的网络组件,分别处理空间和动作信息。换句话说,双流架构将物体识别和动作理解两个任务分别委托给不同的网络组件,形成了不同的空间和时间路径。

输入双流架构的数据通常是视频的单个帧,输入的视频会被直接传入网络的空间流(不考虑相邻的帧)。以作为空间流输入的帧为中心,选择 L 个连续帧,作为时间流输入。然后为输入的每一帧计算水平和垂直光流,形成一个大小为 H x W x 2L 的输入(HW 是原始图像的高度和宽度)。然后,这个光流堆栈以固定的大小传入网络的时间流。

自此,空间流和时间流开始使用结构类似的独立卷积网络处理帧和光流输入。这两个网络的唯一区别是,时间流可以接收具有更多频道的输入( 是 2L 频道,不是 3 个频道)。当每个流的输出被计算出来后,流的表征就会被融合在一起,形成一个单一的、用于预测的时空表征。后期的双流架构在两个流之间使用了更复杂的融合策略,但现在我们先假定一种简单的、“后期”的融合策略。这种双流结构的表征具体如下。

基本的双流网络架构图解

如上所示,双流架构的输入只包含空间流的单个帧和时间流的固定大小的光流图组。有人可能会认为这种方法有局限性,因为它只学习了视频中一个固定大小的不完整部分,但如果我们从底层视频中抽出几个固定大小的片段,并平均其输出结果来产生最终的预测,就可以解决这个问题。此外,可以根据跨度来对双流结构的输入片段进行采样(不对相邻的帧进行采样,而是对连续间隔两帧、三帧、四帧等的帧进行采样),这样网络就可以考虑更大的时间范围的底层视频。

为什么有效?

介绍了基本的双流网络架构之后,大家可能会想,为什么这样的架构会比 3D CNN 效果更好呢。毕竟,3D CNN 具有非常高的表征能力(大量的参数),它学习空间和时间特征的效果应该很好。

上文提到过,双流架构被提出时,用于视频理解的监督数据非常有限。因此,双流架构具有的优势使其超过了 3D CNN 的性能。首先,光流被直接作为输入传递给时间流,这样,基于动作的特征更容易被学习,因为与动作相关的信息(即光流)可以直接作为输入进行传递,而不是被学习后再传递。此外,因为空间流只是一个在单个帧上运行的 2D CNN,它可以在大型图像分类数据集(如 ImageNet)上进行预训练,有强大的性能优势。双流架构和 3D CNN 的区别如下。

双流和 3D CNN 网络的区别

虽然 3D CNN 把空间和时间表示为等效维度(这与生物学中的双流假说矛盾),但双流架构能实现更好的性能,因为:1)动作信息直接编码在输入中(不再需要从数据中学习);2)有大量的可用来训练空间网络的图像分类数据。在低数据体制下,与手工制作的启发式视频理解方法相比,这个基础的双流架构在性能方面超越了一大步。


双流架构的演变

上文已经介绍了双流架构等基本信息,接下来我将综述一些关于视频理解双流架构的出现和发展的文章。我会先探讨一些早期文章,然后概述后期出现的一些高级的架构变体(双流方法)。

早期的方法

背景流和 Fovea 流 [1]。这篇文章中简单探讨了双流架构的概念,作者为输入的数据创建了两个独立的处理流:上下文流和 Fovea 流。这两个独立的流共享相同的网络架构,并选择相同数量的帧作为输入。

为了提高计算效率,在把帧作为输入提供给每个流之前,要将其缩小至其原始面积的 50%,区别是上下文流和 fovea 流采用不同的方法来缩小输入的大小。上下文流中的帧只是被调整了大小,而 fovea 流中的帧则被从中心裁剪。简单地说,这种方法可以确保上下文流和 fovea 流分别接收低分辨率和高分辨率的输入——一个网络在低分辨率下看完整的帧,而另一个网络在全分辨率下只看每个帧的中间部分。

注意,与原来为双流架构不同,这种方法没有明确将动作和空间识别为独立的处理流。而是为每个流赋予一组相同的原始帧(相对于单个帧和光流堆栈)作为输入(只是调整大小/裁剪不同),并将这些帧通过相同但独立的网络架构传递。然后,在预测之前将这两个流的输出合并。请看下图。

用于视频理解的上下文和 Fovea 流

因为这两个流都要检测空间和时间特征,所以我们必须确定如何在流中更好地融入时间信息。我们不能只在每个流内采用 2D CNN,因为这样无法考虑到相邻帧之间的关系。为了确定空间和时间信息融合的最佳方案,作者测试了每个流的 CNN 架构的可能性:

  • 早期融合:将每个流的第一个卷积层改为 3D 卷积。
  • 晚期融合:对每个流使用 2D CNN,并计算相隔 15 帧的两个帧的输出,然后合并每个流内的两个帧的最终输出。
  • 慢速融合:与早期融合相比,将每个流中的所有卷积层改为时间范围较小的 3D 卷积(内核在时间上较小)。

作者发现,慢速融合一直表现最好。因此,最终的网络架构采用了松散的双流方法,每个流是一个 3D CNN,将一组帧作为输入。这些流的唯一区别是它们的输入——帧在上下文流中调整大小(较低的分辨率),在 fovea 流中被中心裁剪(较高的分辨率)。虽然与之前的 3D CNN(减少了输入图像的维度)相比,这种方法有效且性能不错,但它在 HAR 上的表现只比单帧的 2D CNN 略好,并且经常被手工制作的启发式算法所超越。因此,必须对这种方法进行扩展和改进。

最初的双流架构 [2]。不久之后,前言部分提到的双流架构就出现了。该架构首次在单个流中分别处理空间和时间特征,即把一帧或光流堆栈图分别作为输入传给空间和时间流。因此,双流架构是最早在底层视频中捕捉动作信息的架构之一。通过采用后期融合,把空间和时间网络的输出结合起来,形成极其稳健的时空特征。

双流架构是第一个在 HAR 方面取得了持续效果的深度学习方法(与单帧和启发式基准法相比)。因此,它是视频理解的一个标准,被后续的研究者大量研究、利用和扩展。双流架构需要手工制作的光流特征作为输入,这种依赖和之前讨论过的架构设计的其他方面能在数据有限的情况下实现不错的性能,但这种依赖对架构设计来说是一种限制。

最佳实践 [5]。除了最初提出和探索双流网络架构的主要文章外,后续文章采用了这种架构,并探索了实现最佳性能的实践。[5] 探索了双流架构的更深层次的变体,发现在架构的每个流中使用具有更多层次的 CNN 主干网络(例如 VGG 和 inception-style 网络),如果训练得当,就可以产生显著的性能优势。作者认为,性能得到改善的原因是底层网络的表示容量增加了,表示容量对 HAR 这样的复杂任务是有益的。

为了产生最好的性能,空间流和时间流都分别使用图像分类和光流数据(图像识别数据集中产生的数据)进行预训练(与只预训练空间流不同)。然后,该模型以低学习率和高水平的数据增强和正则化来训练模型,最终性能比双流架构好。

高级变体

双流架构提出后,一些研究者提出了该架构的变体,性能得到了大范围的改进。这些更先进的变体采用相同的网络架构和输入模式,但在网络中增加了补充模块或连接,以改善时间信息的表征。这样的修改是因为原来的双流网络严重依赖空间信息,不能很好地表示时间数据。

改进后的双流架构的融合 [8]。大家最初对双流架构的批评是,现有的说明没有正确地综合空间和时间信息。换句话说,由于时间和空间特征只在两个流的输出层融合,该模型没有学会正确利用时间信息,主要依赖空间信息来产生正确的分类。此外,双流架构的时间“规模”是有限的,原因是它只把固定大小的帧的子集作为对时间流的输入(与完整的视频不同)。

为了优化双流架构中的时间信息的融合,[8] 的作者探讨了融合双流架构中空间流和时间流的特征表示的多种方法。与 [5] 的建议一样,采用较深的 VGG 网络作为两个流的主干。然后,作者探讨了下列融合类型:和、最大、连接、卷积(即连接特征图,然后与一组 1x1 的滤波器组卷积)和双线性(计算每个像素的特征的矩阵外积和像素位置的和,输出一个单一向量)。作者在双流网络的不同层测试了这些融合类型,发现在 VGG 网络的最后一个卷积层后(即 ReLU 之前)采用卷积融合与时间池运算相结合的方法,可以产生最佳性能。

除了在双流网络中开发更好的融合方法外,作者还提出了一种采样方法,使底层网络能够考虑整个视频的帧。作者对在视频中几个不同的“片段”进行采样,每个片段的时间跨度不同,如下图。通过在视频中的许多不同位置选取片段进行采样,并同时使用小的和大的跨度,尽管双流架构的输入尺寸是固定的,但能够考虑到底层视频中的大量帧。把这种采样方法与之前提出的架构改进相结合,作者能够在 HAR 基准中设置新的最先进的性能。

从不同时间跨度的底层视频中进行片段采样

残差双流架构 [9]。改进后的融合技术提出后不久,双流架构被调整为在每个流中使用 ResNet 式 CNN 架构。这个改变的原因是 ResNet 系列的 CNN 架构在图像识别方面取得了不错的成效 [10],它目前仍是广泛使用的架构系列。然而,除了 ResNet 架构之外,还出现了许多使用 CNN 架构在图像识别方面获得最佳性能的实践(例如,批量归一化 [11]、接收视野最大化、避免信息瓶颈等),但这些都还没应用到视频深度学习。因此,[9] 的作者试图将这些改进(包括 ResNet 架构)引入到双流网络中。

[9] 中用于空间和时间流的 ResNet 架构与其最初的说明略有不同:1)在空间流和时间流之间增加补充的残差连接(作者认为这种连接有助于空间和时间信息的融合);2)在时间流中被处理的相邻帧之间(通过转换网络流中的许多卷积层来利用 3D 卷积来实现)增加补充的残差连接。因为这些补充的残差连接,所以最终产生的架构有很大的时空接受视野(在空间和时间上把视频的全部范围考虑在内)。

有趣的是,两个网络流的参数都是使用来自 ImageNet 的预训练权重初始化的。然后,3D 卷积使用与中心帧的原本对应的 2D 卷积相同的权重来初始化,但通过时间(只是一个身份运算)与 3D 卷积的接受视野内的每个相邻帧形成残差连接。事实证明,这种残差的双流架构(包括流之间和时间跨度上的补充残差连接)可以学习和提取更能代表空间概念在时间跨度上的演变特征,从而进一步优化之前的 HAR 方法的性能。


还尝试了什么?

虽然双流架构是视频深度学习的普遍选择,但并不是所有关于视频理解的研究都使用了这种方法。与双流架构同时开发的还有很多有趣算法,尽管这些算法使用的是完全不同的方法,但却能够在 HAR(或其他视频理解基准)上获得非常不错的效果。

新的 3D CNN 变体 [12]。另一个流行的架构是 C3D 网络,它采用了一个完全由 3D 卷积组成的卷积架构(即每层都有 3x3x3 的内核)。而且,这个网络将一组固定长度的帧作为输入,将它们通过一连串的卷积层和池化层,然后在网络的末端有两个完全连接的层。为了训练这个网络,作者使用了 HAR 的大规模 Sports1M 数据集,使网络能够在一个大的数据集上学习特征(以前在 3D CNN 方面的尝试就是因为缺乏足够的监督数据而性能不佳)。但是这种架构后来被后续的更先进的双流变体所超越,而且 C3D 只考虑视频中有限的时间窗口,这也是被大家批评的地方。因此,C3D 没有双流架构使用广泛。

连体网络 [13]。另外,视频识别研究探索了使用连体网络来模拟视频中的动作。该研究认为,视频中的任何动作都可以由该动作对环境带来的变化来定义。受此启发,作者开发了一种方法,将底层视频分割成“前条件”和“后效果”状态,分别代表动作发生之前和之后的视频部分。然后,这些帧组通过单独的 CNN 架构来提取每个帧的特征表示。一个动作被建模为一个线性转换(矩阵乘法),将预设条件特征转化为效果特征(可以用预测和实际效果特征向量之间的余弦距离来衡量)。有趣的是,整个连体网络结构(包括动作转换)都使用期望最大化程序进行训练,以便在 HAR 基准上获得有较好的性能。

其他:一些关于视频理解的工作研究了 3D 卷积更有效的表征,发现通过将 3D 卷积分为单独的 2D 空间和 1D 时间卷积,并依次应用,可以学习到强大的时空关系。由此产生的架构比相应的 3D CNN架构包含的参数要少得多,因此,在有限的数据体制下可以实现更好的性能。 此外,同时进行的工作超越了 HAR 问题领域,考虑了动作检测的问题,其中动作必须被识别/分类并在底层视频中定位。通过采用一种区域建议和特征提取方法,利用早期的双流架构变体,可以在动作检测基准上取得较好的性能。


总结和展望

虽然同时探索了许多视频理解的方法,但双流方法的良好性能促进了该技术的普及,问题是双流架构的关键仍然是从底层视频中提取手工制作的特征,而且它依赖从底层视频中提取光流图,将其作为输入传递给时间流。尽管这种特征对底层视频的假定最小(只是平滑性和连续性的假设),但它对手工制作的光流特征的依赖依然深受诟病,因此更复杂的架构变体出现了,我会在下一篇文章中探讨这些内容。

非常感谢你的阅读,希望本文能对你有所帮助!如果你有任何反馈或问题,欢迎随时在下方发表评论。


参考文献:

[1]https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/42455.pdf

[2] https://arxiv.org/abs/1406.2199

[3] https://arxiv.org/abs/1803.01164

[4] https://pubmed.ncbi.nlm.nih.gov/1374953/

[5] https://arxiv.org/abs/1507.02159

[6] https://arxiv.org/abs/1409.1556

[7] https://arxiv.org/abs/1409.4842

[8] https://arxiv.org/abs/1604.06573

[9] https://arxiv.org/abs/1611.02155

[10] https://arxiv.org/abs/1512.03385

[11] https://arxiv.org/abs/1502.03167

[12] https://arxiv.org/abs/1412.0767

[13] https://arxiv.org/abs/1512.00795

[14] https://arxiv.org/abs/1510.00562

[15] https://arxiv.org/abs/1411.6031



原文作者:Cameron R. Wolfe
原文链接:https://towardsdatascience.com/deep-learning-on-video-part-two-the-rise-of-two-stream-architectures-f830d5c655d0
推荐阅读
相关专栏
音视频杂谈
159 文章
本专栏仅用于分享音视频相关的技术文章,与其他开发者和声网 研发团队交流、分享行业前沿技术、资讯。发帖前,请参考「社区发帖指南」,方便您更好的展示所发表的文章和内容。