早期的视频深度学习(第一部分)

本系列文章将探讨视频数据的深度学习。在先前研究的基础之上,我概述了深度学习方法大规模普及之前对视频数据的处理方式,并历数了视频深度学习的演变。本文通过概述视频深度学习的发展历程,为视频深度学习领域的研究或从业人员提供相关的背景知识。

本文主要概述早期的视频深度学习。这一时期首次提出利用 3D 卷积从视频数据中提取可学习特征,不再使用手工制作的图像和视频特征描述。使用这些方法的实例有:将手工制作的视频特征传递到 3D 卷积层的两部分架构;基于 3D 卷积的无监督学习技术;以及直接在视频数据上运算的 3D 卷积网络。

本文主要分为三个部分。首先,我会提供相关的背景信息(比如,3D 卷积如何工作、3D 卷积之前的方法、如何实现视频数据的结构化)。然后,我会概述相关文章,对视频深度学习的早期方法进行深度而全面的解读。最后,我会探讨这些方法的局限性,提出性能更好的方法。


前言

在深入分析相关文章之前,大家需要了解几个概念。我知道大家应该对卷积运算以及计算机视觉应用中的图像数据的典型结构有一定的了解,但本文依然尽可能地提供所有相关信息,便于不了解基础知识的读者理解其中重要的概念。


如何实现视频数据的结构化?

图像和视频数据结构的比较

在开发视频的深度学习应用时,大家的第一个疑问可能是如何实现视频数据的结构化(与图像相比)。图像的结构化较容易实现。图像大多以 RGB 格式输入(即每张图像有三个颜色通道),且有特定的高度和宽度。

例如,上图中输入的图像有三个颜色通道,每个通道的高度和宽度为 5。因此,输入到图像的深度学习模型中的通常是一个大小为 3 x Height x Width张量。几个图像堆叠成一个小批量,就形成了一个大小为 Batch x 3 x Height x Width 的张量。

视频的数据结构与图像的数据结构大同小异。视频是图像按时间顺序排列的集合,我们称之为帧。当我们按照正确的时间顺序观看图像时,这些帧就显示了随着时间的变化的场景,也就形成了视频。与图像类似,每一帧通常都是 RGB 格式,且具有相同的空间分辨率(即所有帧都具有相同的高度和宽度)。上图显示的视频由三个帧组成,每个帧有三个颜色通道,高度和宽度都为 5。

同一个视频中的所有帧可以合并成一个单独的文件集,将所有帧“堆叠”在一起,形成一个大小为 3*Frames X Height X Width 的张量(帧也可以聚合成一个大小为 Frames X 3 X Height X Width 的张量,具体取决于应用程序)。将几个视频合并成一个小批量时必须谨慎,因为每个视频内的帧数可能不同,且形成了不同的视频张量。所以,我们可以把不同的视频分成相同数量的连续帧(或采用填充法),形成大小相同的视频,然后把这些视频组合在一起,形成大小为 Batch x 3*Frames x Height x Width 的小批量。


数据集有哪些?

本文评估的主要数据集包括:TRECVIDKTHHollywood2UCF101YouTube Action。这些数据集关注的都是人类动作识别(HAR)——根据视频片段中的人类的动作,为视频片段分配类别标签。HAR 在自动驾驶和监控等问题领域有许多应用,是视频深度学习早期研究最广泛的应用。尽管之后研究了其他更复杂的应用,但 HAR 至今仍是大家普遍关注的问题。有趣的是,研究表明,在视频帧上独立运算的图像模型在 HAR 上表现良好,所以,只需少量的时间推理,就可以找到合理的解决方案。


从 2D 到 3D

在介绍视频深度学习的方法之前,我们可以考虑一下如何将图像深度学习的结构应用到视频领域;尤其要考虑如何将 2D 卷积——卷积神经网络(CNN)的主力——应用到视频。CNN 是非线性分隔的平行卷积运算的简单序列,一直成功应用于常见的图像任务,如图像分类、物体检测和关键点估计等。 因此,早期的视频深度学习试图将这种成功的方法扩展到视频数据上。下面是一个 2D 卷积运算。

RGB 图像上的 2D 卷积运算

由此可见,在 2D 卷积运算中,一个横跨所有输入通道(即上图中的三个颜色通道)的单一卷积核被移动到输入的每个空间位置,以单独计算相应的输出元素。将输入元素中的正确空间位置的像素值与内核中的相应权重相乘,再将所有乘积相加,就可以得出输出元素。注意,我们讨论的是最简单的 2D 卷积(RGB 输入,没有跨度等)。大家可以阅读这篇文章,了解 2D 卷积的更多细节。

处理视频数据时,卷积运算的输入就发生了变化,因为我们现在不只有一个图像,而是有多个帧的视频。输入的不再是单一的 RGB 图像,而是叠加在一起的 RGB 图像(一个具有多个通道的输入)。为解释输入中的多个帧,卷积运算不仅必须跨越空间维度(例如,上图中的 2D 卷积在高度和宽度上跨越三个像素),而且还要跨越时间维度。也就是说,一个内核在计算相应的输出时必须考虑输入的多个帧。我们把这种接触算法叫作 3D 卷积运算,如下所示。

在三个 RGB 帧上的 3D 卷积运算

如上所示,3D 卷积有一个内核,在输入中横跨两帧。就前两帧而言,这个内核在每个空间维度上移动,以计算相应的输出元素(采用与 2D 卷积类似的乘积累加运算)。在移过一定的空间维度后,3D 卷积在时间上发生了变化,移到了下一个帧跨度,并重复这个穿越空间维度的过程。上图中的 3D 卷积最初处理的是视频中的前两帧,然后继续计算与第二和第三帧对应的表示。如果视频中有更多帧,3D 卷积将继续这种方式。

3D 卷积是一种时空运算,既要考虑每个单独输入的帧的空间特征,又考虑连续帧的时间特征。尽管 3D 卷积并不是从视频数据中学习特征的唯一方法,但它是早期视频深度学习方法利用的主要变化。因此,3D 卷积是本文的主要关注点。


在深度学习之前使用什么?

尽管 CNN 在图像领域的应用非常成功,但将其扩展到视频领域需要时间,尤其是在缺乏用于训练的大型的、多样化的视频数据库(与图像数据集的规模和多样性相比)的情况下。那么,在深度学习的动作识别系统普及之前,HAR 有哪些解决方案。

最初的 HAR 系统从视频数据中提取固定的、手工制作的特征(例如,使用运动历史图像、SIFT 描述符、HoG 特征、 模板匹配、滤波器库等)来帮助分类。通常情况下,视频会先被分割成关键点(从背景中剪出人的较短片段)。然后,从这些关键点中提取固定的特征(由裁剪过的帧组成),并用机器学习模型(如支持向量机)进行分类。 这种方法后来被扩展,形成更复杂的系统,通过交替应用手工制作特征和子采样,分层次地学习特征。

虽然手工制作的方法效果较好,但很难在不同的数据集上归纳特征,也很难适应不同的传感器领域(视频或雷达)。此外,手工制作的特征往往会对基础数据的分布进行简化(例如,固定视角,让人在画面中心等),从而降低了其在真实应用中的性能。因此,研究人员开始寻找可以直接从数据中学习的其他特征提取方法。因为 CNN 可以从图像中提取有用的特征,使用 2D/3D 卷积从视频数据中学习特征很快就成为一个重点关注领域。


视频深度学习的早期方法

现在我将概述相关的早期方法,这些方法开创了使用 3D 卷积从视频数据中提取可学习特征的先例。本文涉及的文章大致可以分为这几类:将可学习特征提取与固定特征提取结合的方法,将可学习特征提取直接应用于视频数据的方法,以及学习视频中时空特征的无监督方法。


混合方法:手工制作特征和学习特征的结合

尽管 CNN 在对大型图像数据集进行训练时能够学到有意义的、有辨别力的特征,但 CNN 在视频领域的早期扩展通常是将 3D 卷积与固定特征提取相结合,而不是将 3D 卷积直接应用于原始视频数据。特别是,视频数据要先被一个固定特征提取器预处理,例如通过计算光流或原始视频帧的垂直和水平梯度。然后将预处理之后得到的数据表示传递给 3D 卷积,用来提取用于分类的可学习特征。

这种方法被应用于 TRECVID 监控数据集的初始 HAR 系统所采用。这种方法不直接在原始视频数据上运算,而是计算输入视频的光流方向梯度。然后将这些手工制作的特征与原始视频帧串联起来,传递给 3D 卷积层,这些 3D 卷积层由采样运算和非线性激活函数分层。在这些 3D CNN 架构中,每个数据模式(包括光流、方向性梯度和正常帧)都由单独的 3D 卷积核独立处理。然后,3D CNN 的输出被用于分类,可以使用支持向量机或全连接的线性模块。这些成果为 HAR 探索了几种不同的 CNN 架构,结论是,结合几种独特的 3D CNN 架构的输出能产出最佳的性能。

这些方法在当时非常成功的,甚至超过了 HAR 中的单帧 CNN(一个强大的基准线方法)和几乎所有利用手工制作特征的基准线。但这种方法本质上仍依赖于预处理阶段计算的光流和梯度特征的质量。这些特征是无法学习的,所以无法在不同的数据集或应用中使用,于是人们就开始探索完全不需要提取固定特征、不依赖任何手工制作的、提取完全可学习的特征的方法。


用 3D CNN 提取可学习的视频特征

为了解决手工制作特征这个方法的限制,后来的视频深度学习方法将原始输入数据(即多个帧的组)直接输入由池和激活层分隔的 3D 卷积层。这样的 3D CNN 在结构上与基于图像的 CNN 相似,不同点在于包含 3D 卷积。通常,这些方法从完整的视频中提取一个小的帧集,对帧集中的帧进行裁剪,重点关注每一帧中的人,然后将子采样和裁剪好的集传递给 3D CNN,来进行分类。有趣的是,即使使用更小的网络,这个方法也比混合 3D CNN(结合了手工制作和学习特征的 CNN)的性能好。

值得注意的是,由于这类方法将基础视频分割成较短的片段(例如,包含 10-15 个帧),这些片段被传递到 3D CNN 中,最终的分类并没有考虑完整视频中较大或时间上较靠后的帧组之间的关系。为解决这一缺陷,研究者将上述方法与递归神经网络——特别是长短期记忆(LSTM)网络——结合起来,用 3D CNN 从视频的每个片段中提取信息。视频首先被分割成较小的帧组,这些帧组被再次传入 3D CNN 以提取特征。然而,不是对这些特征进行单独分类,而是将与每个视频片段相关的特征按时间顺序传递给 LSTM,由 LSTM 进行最终分类。事实证明这种方法考虑了整个视频的上下文,能够明显改善 HAR 的性能。

使用 3D CNN 直接从视频数据中提取特征是一个开创性的成就,为深度学习成为视频学习任务的主导方法铺平了道路。这些研究摆脱了传统的视频学习方法,并遵循深度学习文献中关于图像识别的方法,让所有特征以可学习的方式获得。因为不再需要为每个数据确定最佳的手工制作特征,视频学习任务的系统(例如 HAR)变得不再那么依赖领域,视频相关的研究发展的更快。但是,这种方法仍存在一个主要的局限性——它们的性能完全依赖于基础任务的标记数据的质量和丰富程度。


视频的无监督表示学习

尽管 3D CNN 模型创造了非常高的价值,但它们的性能受到了可用于训练的数据量的限制。特别是在深度学习的早期,可用的标记视频数据的很少。由于缺乏足够的数据,用 3D CNN 模型学习高质量特征的能力一直受到限制。这种限制促使了无监督的深度学习方法的发展,它可以提取有意义的视频特征。

第一种用于视频的无监督学习方法是利用门控、限制性波尔兹曼机(GRBM)架构来学习视频中相邻的帧的特征。最初的 GRBM 架构不能处理高分辨率的图像(计算成本太高),因为在将图像传递给模型之前,要先将其压缩成一个矢量。为了缓解这个问题,GRBM 被修改为使用卷积运算,实现了以较低的计算成本处理更高分辨率的图像。然后,这个卷积 GRBM 模型可以以无监督方式对相邻的视频帧进行训练,以学习有用的空间和时间信息,从而可以从视频中提取高质量的特征,而且不需要标记数据。从卷积 GRBM 中提取的特征可以被传递到一个 3D CNN 中,以解决与 HAR 类似的任务,GRBM 的无监督预训练性能得到了较大的提升。

尽管卷积式 GRBM 在性能方面有了较大提升,但无监督的预训练过程的计算效率非常低,于是,另一种替代无监督的视频学习方法出现了,其灵感来自独立子空间分析(ISA)。ISA 是一种受生物启发的稀疏学习方法,基于独立成分分析,以前被用来从静态图像中提取有用特征,可以以无监督的方式训练。与 GRBMs 类似,ISA 的计算效率太低,无法应用于高分辨率的图像。为解决这个问题,有人提出首先对视频帧中较小的图像斑块进行 ISA 训练(以无监督的方式)。这样,使用主成分分析(PCA),初始帧补丁的 ISA 输出维度可以被降低至能够通过另一个 ISA 模块。然后,这些模块的输出可以被送入 3D CNN,以提取特征来进行分类。这种方法极大地提高了视频无监督表示学习的效率,并在几乎所有的 HAR 数据集上展现了最佳性能。


总结和展望

本文概述了早期利用 3D 卷积运算从视频中提取可学习特征的方法。最初,人们采用了混合方法——手工制作特征,并与 3D CNN 的可学习特征混合。随后,所有手工制作的部分被去掉了,通过直接将 3D CNN 应用于原始视频数据,视频特征就可以被以完全可学习的方式提取出来,同时提出了几种学习有效视频特征的无监督方法,减轻了解决普通学习任务(比如 HAR)时对标注视频数据的依赖。

尽管早期的视频深度学习方法效果还不错,但其效率相当低,与深度学习在图像任务上的性能相差甚远。本文概述的方法只勉强超过了单帧基准线模型,偶尔还会在某些数据集上被手工制作的基准线方法所超越。因此,我们需要一种性能更强的方法,来保持或提高本文概述的 3D CNN 方法的计算效率。这种需求最终促使了双流 3D CNN 架构的提出,具体细节我会在下一篇文章中概述。

非常感谢你的阅读!本文是我研究的一部分,希望能对你有所帮助。


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