使用时间循环一致性学习 (TCC) 理解视频内容

文 / Debidatta Dwibedi, Google Research 副研究员

过去几年里,视频理解领域有了重大进展。例如,监督式学习和 功能强大的深度学习模型 可用于对视频中可能出现的大量动作进行分类,并使用单个标签总结整个视频片段。

但在多数情况下,我们需使用多个标签总结整个视频片段。例如,在机器人向杯中倒水时,仅识别出“倒入液体”这个动作并不能充分预测何时会斟满整杯。为此,有必要逐帧跟踪倒水过程中水量的情况。同样,在比较投手的不同姿势时,棒球教练希望从投手投出球的那一瞬间开始获取逐帧视频。为了实现这类情况,我们需利用模型来理解视频的每一

然而,如果使用监督式学习理解视频的每一帧,学习成本会十分高昂,因为需要为视频中感兴趣动作的每一帧添加标签。标注者为每个视频中的每一帧手动添加明确的标签,从而为视频应用细粒度标签。只有这样,您才能针对单个动作训练模型。在训练新动作时,您需要重复这一过程。从机器人技术到运动分析,随着对细粒度标签的需求不断增长,我们也日渐需要可扩展的学习算法,使其理解视频却无需繁琐地打标签过程。

我们提出了一种采用自监督学习的可行方案,称其为 时间循环一致性学习 (Temporal Cycle-Consistency Learning, TCC)。这种新方法通过相似顺序过程示例间的联系来学习表征,此类表征尤其适用于对视频进行细粒度时间理解。我们还公布了 TCC 代码库,以便终端用户能够在各种新应用中使用我们的自监督式学习算法。

基于 TCC 的表征学习

无论是从嫩芽到参天大树的植物生长,还是起床、上班、回家的日常生活,又或是倒水的简单动作,这些都是按特定顺序发生的事件。针对相同过程的不同实例,捕获此类过程的视频会提供时间上的对应联系。例如,倒水时,人们会先伸手去拿一壶茶、一瓶酒或一瓶水。所有倒水视频均包含关键时刻(例如,首次接触装水容器或将容器从桌面拿起),并且不受很多变化因素(例如倒水时视角、水量、容器样式或速度的视觉变化)的影响。TCC 会尝试使用循环一致性原理(此原理已成功应用于 计算机视觉 领域内的诸多问题),通过调整视频来学习有用的视觉表征,从而在包含相同操作的视频中找到这种对应关系。

此训练算法旨在使用任一图像处理网络结构(例如 ResNet)来学习基于帧的编码器。为此,我们将待对齐视频的所有帧传入编码器,以产生对应的嵌入信息。接着,我们选择两个视频进行 TCC 学习,分别为 视频 1 (参考视频)和 视频 2。参考帧取自 视频 1 ,而离其最近的相邻帧 (NN 2) 取自 视频 2 ,您可以在嵌入空间(非像素空间)中找到该相邻帧。然后,我们会在 视频 1 中找到离 NN 2 最近的相邻帧(称为 NN 1),从而进行循环。如果表征循环一致,则返回 视频 1 中最近的相邻帧 (NN 1) 到起始参考帧。

image

我们使用起始参考帧与 NN 1 之间的距离作为训练信号来训练嵌入器。训练的过程中,嵌入过程会针对正在执行的动作,加强其前后环境中每个视频帧的语义理解,从而提升循环一致性,减少其损失。

image

通过 TCC,我们通过对齐相关视频来学习嵌入对动作的时间细粒度理解

TCC 的学习内容

如下图所示,利用 TCC,我们展示了针对 Penn Action 数据集的视频(关于人体深蹲练习)训练的模型。左图的每个点对应帧嵌入,对于亮度较高的点追踪当前视频帧的嵌入。尽管姿势、光线、身体和目标类型存在许多差异,但请注意嵌入整体的移动方式。TCC 嵌入会对不同下蹲阶段进行编码,且无需为其提供明确的标签。

image

右图:深蹲练习的输入视频。左上角为参考视频。其他视频显示其他深蹲视频的最近相邻帧(位于 TCC 嵌入空间中)。左图:对应的帧嵌入随动作而移动

TCC 的应用

经学习的每帧嵌入促成了一系列有趣的应用:

小样本动作阶段分类

在训练较少的标记视频时(即 小样本 情境下),TCC 表现优异。事实上,TCC 只需使用一个标记视频即可对不同动作的阶段进行分类。如下图所示,针对小样本情境,我们比较了 TCC 与其他监督式和 自监督式学习 方法的分类效果。我们发现,如要实现相同的精确度,监督式学习需要大约 50 个视频,并且需标记每一帧,而自监督方法只需一个完整标记的视频。

image

小样本动作阶段分类的自监督式学习和监督式学习比较

无监督式视频对齐

随着视频数量的增加,手动对齐或同步视频变得异常困难。借助 TCC,我们无需对视频进行额外标记,只需选择离参考视频中每一帧最近的相邻帧,从而将众多视频对齐。如下图所示。

针对投掷棒球视频,利用 TCC 空间中帧之间的距离所获得的无监督式视频对齐结果。左上面板中显示了用于对齐的参考视频

视频的标签或形态迁移

正如在嵌入空间中对最近相邻帧进行搜索找到相似的帧一样,TCC 还可将一个视频中与任何帧相关的元数据迁移至另一个视频中的匹配帧。这类元数据的格式可以是时间语义标签或其他形式(如声音或文本)。在下方视频的两个示例中,我们可以将液体倒入杯中的声音迁移至另一个视频。

逐帧检索

借助 TCC,视频中的每一帧均可用作相似帧检索的查询,方法是在经学习的嵌入空间中查找最近相邻帧。嵌入功能强大,可以区分非常相似的帧,例如保龄球离手前后的帧。

我们可以对视频执行逐帧检索,即可以在大量视频中使用任一帧来查找相似帧。检索到的最近相邻帧表明,模型会捕获场景中的细粒度差异

代码库

我们即将发布 代码库,其中包含大量先进的自监督式学习方法(包括 TCC)的实现。此代码库非常适用于视频理解领域的研究人员。此外,对于那些希望使用机器学习来对齐视频,从而创建同步移动的人类、动物和物体马赛克的艺术家来说,此代码库亦大有用处。

致谢

本项目的参与人员包括 Yusuf Aytar、Jonathan Tompson、Pierre Sermanet 和 Andrew Zisserman。感谢 Alexandre Passos、Allen Lavoie、Anelia Angelova、Bryan Seybold、Priya Gupta、Relja Arandjelović、Sergio Guadarrama、Sourish Chaudhuri 和 Vincent Vanhoucke 为本项目做出的贡献。项目中所用的视频均来自 PennAction 数据集。感谢 PennAction 的创建者制作出如此有趣的数据集。

原文:Video Understanding Using Temporal Cycle-Consistency Learning
中文:谷歌开发者公众号