作者:Monica Alfaro、Albert Aparicio、Francesc Guitart、Marc Junyent、Pablo Pernias、Marcel Porta 和 Miquel Àngel Farré(前高级技术经理)

引言

迪士尼媒体与娱乐发行 (DMED) 的诸多职责之一,就是管理和分发大量媒体资产,包括新闻、体育、娱乐和专题片、系列节目、市场营销和广告等。

我们的团队作为 DMED 技术内容平台小组的一部分,专注于媒体标注。在日常工作中,我们会自动分析各种内容,这不断挑战着我们机器学习工作流程的效率和模型的准确性。

我们的一些同事最近讨论了通过切换到使用 PyTorch 的端到端视频分析流水线所实现的工作流程效率,以及我们如何处理动画角色识别。我们邀请您阅读上一篇文章以了解更多信息。

虽然转换为端到端 PyTorch 流水线是任何公司都可以从中受益的解决方案,但动画角色识别是迪士尼独有的概念和解决方案。

在本文中,我们将重点讨论活动识别,这是跨行业普遍存在的挑战——但在媒体制作领域应用时,则具有一些特定的机会,因为我们可以结合音频、视频和字幕来提供解决方案。

多模态实验

处理多模态问题会增加通常训练流水线的复杂性。每个示例包含多种信息模态意味着多模态流水线必须有特定的实现来处理数据集中的每种模态。通常在此处理步骤之后,流水线必须合并或融合输出。

我们最初的多模态实验是使用 MMF 框架完成的。MMF 是一个用于视觉和语言多模态研究的模块化框架。MMF 包含最先进的视觉和语言模型的参考实现,并且也为 Meta AI Research 的多个研究项目提供了支持(如 PyTorch Ecosystem Day 2020 上展示的这份 海报 所示)。随着 TorchMultimodal(一个用于大规模训练最先进多模态模型的 PyTorch 库)的最新发布,MMF 凸显了对多模态理解日益增长的兴趣。

MMF 通过模块化管理流水线中的所有元素来解决这种复杂性,它提供了一整套针对特定模块的不同实现,从模态处理到处理后信息的融合。

在我们的场景中,MMF 是尝试多模态的绝佳切入点。它允许我们通过结合音频、视频和隐藏字幕进行快速迭代,并使用某些多模态模型在不同规模级别进行实验,从单个 GPU 转移到 TPU Pods。

多模态 Transformer

基于 MMF 的工作台,我们最初的模型是基于对每种模态特征的串联,并演变为包含基于 Transformer 的融合模块的流水线,以结合不同的输入模态。

具体来说,我们使用了与 Meta AI Research 团队合作开发的名为 MMFTransformer 的融合模块。这是基于 VisualBERT 的实现,并添加了必要的修改以使其能够处理文本、音频和视频。

尽管 MMFTransformer 的开箱即用实现取得了不错的结果,但我们离目标仍有差距,而且基于 Transformer 的模型需要比我们可用的更多数据。

寻找对数据需求较低的解决方案

为了寻找对数据需求较低的解决方案,我们的团队开始研究 MLP-Mixer。谷歌大脑团队提出了这种新架构,它为计算机视觉任务中常用的事实标准架构(如卷积或自注意力)提供了一种替代方案。

MLP-Mixer

混合变体背后的核心思想是用多层感知机 (Multilayer Perceptrons) 替换 Transformer 中使用的卷积或自注意力机制。这种架构变化有利于模型在高数据状态下的性能(尤其是相对于 Transformer),同时也引发了一些关于卷积和自注意力层中隐藏的归纳偏差的问题。

这些提议通过将图像分成块、将这些块展平为一维向量并将它们通过一系列 Mixer 层,在解决图像分类任务方面表现出色。

受到基于 Mixer 的架构优势的启发,我们的团队寻找了与我们在视频分类中试图解决的问题类型(特别是,我们有一组需要分类的帧,以及作为新模态的音频和隐藏字幕)的相似之处。

重新解读 MLP-Mixer 的活动识别

我们的提议采纳了 MLP-Mixer 的核心思想——在序列和转置序列上使用多个多层感知机,并将其扩展到多模态框架,使我们能够使用相同的架构处理视频、音频和文本。

对于每种模态,我们使用不同的提取器,这些提取器将提供描述内容的嵌入。给定每种模态的嵌入,MLP-Mixer 架构解决了决定哪种模态可能最重要的问题,同时还衡量了每种模态对最终标签的贡献程度。

例如,在检测笑声时,关键信息有时在音频或帧中,而在某些情况下,我们在隐藏字幕中也有很强的信号。

我们尝试分别使用 ResNet34 处理每一帧并获得一系列嵌入,以及使用称为 R3D 的视频专用模型,它们分别在 ImageNet 和 Kinetics400 上进行了预训练。

为了处理音频,我们使用预训练的 ResNet34,并去除最后的层,以便从音频频谱图(对于 224x224 的图像,我们得到 7x7 的嵌入)中提取 2D 嵌入。

对于隐藏字幕,我们使用预训练的 BERT-large,所有层都冻结,除了嵌入层和 LayerNorms 层。

一旦我们从每种模态中提取了嵌入,我们就将它们连接成一个单一序列,并通过一组 MLP-Mixer 块;接下来,我们使用平均池化和分类头来获得预测。

我们的实验是在一个用于活动识别的定制手动标注数据集上进行的,包含 15 个类别,我们通过实验得知,这些类别很难,并且仅使用单一模态无法准确预测所有类别。

这些实验表明,使用我们的方法显著提高了性能,特别是在中低数据状态(75K 训练样本)下。

在使用纯文本和音频时,我们的实验表明,与在最先进骨干网络提取的特征之上使用分类器相比,准确率提高了 15%。

使用文本、音频和视频时,与使用 Meta AI Facebook 的 MMF 框架(该框架使用类似 VisualBERT 的模型结合更强大的最先进骨干网络来组合模态)相比,准确率提高了 17%。

目前,我们已将初始模型扩展到覆盖多达 55 个活动类别和 45 个事件类别。未来我们期望改进的挑战之一是包含所有活动和事件,即使是那些频率较低的活动和事件。

解释 MLP-Mixer 模式组合

MLP-Mixer 是多层感知机的串联。粗略地讲,这可以近似为一个线性操作,因为一旦训练完成,权重是固定的,输入将直接影响输出。

一旦我们做出这个近似,我们也就假设对于由 NxM 个数字组成的输入,我们可以找到一个 NxM 矩阵,它(当元素相乘时)可以近似 MLP-Mixer 对某个类别的预测。

我们将这个矩阵称为模板(stencil),如果我们能够访问它,我们就可以找到输入嵌入中哪些部分负责特定的预测。

你可以把它想象成一张带孔的打孔卡,孔位于特定位置。只有这些位置的信息才能通过并促成特定的预测。因此,我们可以衡量这些位置的输入强度。

当然,这是一种过度简化,并且不存在一个唯一的模板能够完美地表示输入对某个类别的所有贡献(否则就意味着该问题可以用线性方式解决)。因此,这仅应用于可视化目的,不能作为精确预测器。

一旦我们为每个类别获得了一组模板,我们就可以毫不费力地衡量输入贡献,而无需依赖任何外部可视化技术。

要找到一个模板,我们可以从一个“随机噪声”模板开始,然后通过仅通过 MLP-Mixer 进行反向传播来优化它,以最大化特定类别的激活。

通过这样做,我们可以得到许多有效的模板,然后可以使用 K-means 将它们聚类到相似的模板中,并对每个聚类进行平均,从而减少模板数量。

使用 Mixer 获得两全其美的效果

MLP-Mixer 作为没有卷积层的图像分类模型,需要大量数据,因为缺乏归纳偏差——这是模型整体上的优点之一——但在处理低数据领域时是一个弱点。

当它被用作组合由大型预训练骨干网络先前提取的信息(而不是作为完整的端到端解决方案)的一种方式时,它们表现出色。Mixer 的优势在于找到不同输入之间的时间或结构连贯性。例如,在视频相关任务中,我们可以使用强大的预训练模型从帧中提取嵌入,该模型能够理解帧级别发生的情况,并使用 Mixer 以序列方式理解它。

这种使用 Mixer 的方式使我们能够在有限的数据量下工作,并且仍然比使用 Transformer 取得更好的结果。这是因为 Mixer 在训练期间似乎更稳定,并且似乎会关注所有输入,而 Transformer 倾向于崩溃并只关注某些模态/序列的部分。

致谢:我们要感谢 Meta AI Research 和 Partner Engineering 团队的合作。