CoLA: Weakly-Supervised Temporal Action Localization with Snippet Contrastive Learning
北京大学电子与计算机工程学院
鹏城实验室
Abstract
弱监督时序动作定位(WS-TAL)旨在仅凭视频级标签在未裁剪的视频中定位动作。大多数现有模型遵循“通过分类进行定位”的过程:确定对视频级分类贡献最大的时间区域。一般来说,这些模型将每个片段(或帧)单独处理,从而忽视了丰富的时间上下文关系。在此出现了单一片段的误分类问题:“困难”片段过于模糊,无法被准确分类。本文提出,通过比较学习可以帮助识别这些困难片段,我们提出了片段对比学习以进行动作定位(CoLA)。具体而言,我们提出了一种片段对比损失(SniCo Loss)来优化特征空间中困难片段的表示,从而引导网络感知准确的时间边界,避免时间间隔的中断。此外,由于无法获取帧级标注,我们引入了一种困难片段挖掘算法来定位潜在的困难片段。大量分析验证了该挖掘策略有效地捕捉了困难片段,并且SniCo Loss能够提供更具信息量的特征表示。
1. Introduction
图1中,所选的两个片段(#2, #3)分别属于哪个类别?在独立评估时很难判断,它们在基准模型中实际上被错误分类(我们绘制了CliffDiving的一维T-CAS以及阈值化结果)。相比之下,通过比较学习有助于识别它们:#2片段(人正在下落)通过与#1“易动作”(CliffDiving动作的不同摄像机视角)的对比被推断为动作片段;#3片段的推断也在与#4“易背景”片段的比较后得到了修正。
在缺乏帧级标签的情况下,WS-TAL 面临单一片段误分类问题:难以区分的片段容易被误分类,影响定位性能。为了说明这一点,我们以图 1 中的 CliffDiving 为例。当单独评估时,两个选定的片段(#2、#3)似乎模糊且被误分类:
1)#2 片段被错误分类,从而打破了时间间隔;
2)#3 片段在基线中被错误识别为动作,导致动作区间边界不准确。如何解决单一片段误分类问题?让我们重新审视图 1 的情况。通过将感兴趣的片段与那些可以轻松分类的“简单片段”进行比较,可以更容易地区分动作和背景。例如,#2 片段和 #1 简单动作片段是“CliffDiving”中一个人跌倒过程的两个不同视角。#3 片段类似于 #4 简单背景片段,可以被轻松分类为背景类。因此,我们认为,通过上下文比较来定位动作提供了一种强大的归纳偏差,帮助区分困难片段。基于上述分析,我们提出了一种直观的替代方法来解决单一片段误分类问题——通过对困难片段进行对比学习来定位动作,简称 CoLA。为此,我们引入了一种新的片段对比损失(SniCo Loss),以在更具区分性的简单片段指导下优化困难片段的特征表示。在这里,这些“误分类”片段由于其模糊性被称为困难片段。
然而,这种解决方案面临一个关键挑战,即如何在我们的弱监督设置下识别合理的片段。由于没有特定的注意分布模式,困难片段的选择并非易事。例如,在图 1 的基线中,#3 难片段的响应值较高,而 #2 的响应值较低。考虑到模糊的困难片段通常出现在动作实例的边界区域,我们提出了一种边界感知的困难片段挖掘算法——一种简单而有效的重要性采样技术。具体而言,我们首先对 T-CAS 进行阈值处理,然后通过膨胀和腐蚀操作在时间上挖掘潜在的困难片段。由于困难片段可能是动作或背景,我们选择通过其相对位置来区分它们。对于简单片段,它们位于最具区分性的部分,因此选择 T-CAS 分数最高/最低的片段分别作为简单动作/背景片段。此外,我们形成两个困难-简单的对比对,并通过提出的 SniCo Loss 进行特征优化。
2. Related Work
完全监督动作定位利用帧级标注来定位和分类长未裁剪视频中的动作实例时间区间。现有的大多数工作可以分为两类:基于提案的方法(自上而下)和基于帧的方法(自下而上)。基于提案的方法 [35, 47, 40, 7, 5, 33, 19, 17, 44, 16] 首先生成动作提案,然后对这些提案进行分类并进行时间边界回归。相反,基于帧的方法 [18, 2, 22, 46] 直接预测帧级的动作类别和位置,然后进行一些后处理技术。
对比表示学习利用数据内部模式学习嵌入空间,在该空间中,相关信号被聚集在一起,而无关信号则通过噪声对比估计(NCE) [8] 进行区分。CMC [37] 提出了一个对比学习框架,通过最大化同一场景不同视角之间的互信息来实现视角不变表示。SimCLR [6] 通过使用小批量中其他项目的增强视角来选择负样本。MoCo [9] 使用一个动量更新的旧负样本表示记忆库,以摆脱批量大小限制并实现负样本的一致使用。据我们所知,我们是首个将噪声对比估计引入 WS-TAL 任务的研究。实验结果表明,CoLA 优化了困难片段的表示,从而有利于动作定位。
3. Method
一般来说,CoLA(见图 2)遵循特征提取(第 3.1 节)、动作性建模(第 3.2 节)和困难与简单片段挖掘(第 3.3 节)流程。优化损失项和推断过程的详细信息分别在第 3.4 节和第 3.5 节中给出。
图2展示了所提出的CoLA框架,其包括四个部分:(a) 特征提取与嵌入,用于获取嵌入特征 XnE;(b) 动作性建模,用于收集与类别无关的动作可能性 Anness;(c) 难易片段挖掘,用于选择难片段和易片段;(d) 由动作损失和片段对比(SniC o)损失驱动的网络训练。
3.1. Feature Extraction and Embedding
假设我们给定了一组 N 个未裁剪的视频 {Vn}Nn=1 和它们的视频级标签 {yn}Nn=1,其中 yn ∈ RC 是一个多热向量,C 是动作类别的数量。按照常见做法 [27, 28, 14],对于每个输入的未裁剪视频 Vn,我们将其划分为多个不重叠的 Ln 片段,即 Vn = {Sn,l}Lnl=1。由于视频长度的变化,我们从中抽取固定数量的 T 个片段 {Sn,t}Tt=1。然后,分别使用预训练的特征提取器(如 I3D [4])提取 RGB 特征 XRn = {x^Rt}Tt=1 和光流特征 XOn = {xOt}Tt=1。其中,xRt ∈ Rd 和 xOt ∈ Rd,d 为每个片段的特征维度。之后,我们对 XRn 和 XOn 的拼接应用一个嵌入函数 fembed,以获得提取的特征 XEn ∈ R{T × 2d}。fembed 通过一个时间卷积层实现,并随后应用 ReLU 激活函数。
3.2. Actionness Modeling
我们引入了“动作性”(Actionness)的概念,用于表示每个片段包含一般动作实例的可能性。在具体说明动作性建模过程之前,让我们回顾一下常用的时序类别激活序列(T-CAS)。
给定嵌入特征 XEn,我们应用分类器 fcls以获得片段级别的 T-CAS。具体而言,该分类器包含一个时间卷积层,随后是 ReLU 激活函数和 Dropout。这可以表述为: An=fcls(XEn;ϕcls), 其中 ϕcls表示可学习的参数。获得的 An∈RT×C 表示在每个时间片段处的动作分类结果。
在建模动作性时,一种常见的方法是对每个片段进行二分类,这不可避免地带来额外的开销。由于生成的 T-CAS An∈RT×C 已经包含了片段级别的类别特定预测,我们仅需沿通道维度对 T-CAS 进行求和(fsum),然后应用 Sigmoid 函数以获得类别无关的聚合,并用它来表示动作性 Anessn∈RT:
Anessn=Sigmoid(fsum(An)).
此时只有一个类别属性。
3.3. Hard & Easy Snippet Mining
回想一下,我们的目标是先使用容易发现的片段作为先验来消除有争议的片段的歧义。我们系统地研究了难片段和易片段的对比对构建过程。
3.3.1 难片段挖掘
直观地,对于大多数位于动作或背景区间内的片段,它们远离时间边界,噪声干扰较少,并且具有相对可靠的特征表示。然而,对于接近边界的片段,它们的可靠性较低,因为它们处于动作和背景之间的过渡区域,从而导致检测模糊。
基于上述观察,我们认为边界相邻的片段可以作为弱监督设置下的潜在难片段。因此,我们构建了一种新颖的难片段挖掘算法,以从边界区域中挖掘难片段。然后根据它们的位置,将这些挖掘出的难片段分为难动作和难背景片段。
首先,我们对动作性分数进行阈值处理,生成一个二进制序列(1 表示动作位置,0 表示背景位置):
Abinn=ϵ(Anessn−θb),
其中 ϵ(⋅)是 Heaviside 阶跃函数,θb 是阈值值,即当 Anessn≥θb时,Abinn为 1,否则为 0。
图3展示了难片段挖掘算法。左侧:通过使用不同的掩码对序列进行腐蚀后相减,得到内部区域(绿色);右侧:通过使用不同的掩码对序列进行膨胀后相减,得到外部区域(粉色)。
然后,如图 3 所示,我们应用两个级联的膨胀或腐蚀操作,以扩展或收缩动作区间的时间范围。不同膨胀或腐蚀程度的差异区域被定义为难背景或难动作区域:
其中 (⋅;∗)+和 (⋅;∗)−分别表示带掩膜 ∗ 的二进制膨胀和腐蚀操作。内区域 Rinnern定义为用较小掩膜 m和较大掩膜 M 进行腐蚀序列之间的不同片段,如图 3 左侧部分(绿色)。类似地,外区域 Routern 计算为用较大掩膜 M 和较小掩膜 m 进行膨胀序列之间的差异,如图 3 右侧部分(粉色)。根据经验,我们将内区域 Rinnern视为难动作片段集合,因为这些区域具有 Abinn=1。类似地,外区域 Routern被视为难背景片段集合。然后从 Rinnern 中选择难动作片段 XHAn∈Rkhard×2d:
其中 Iinnern是 Rinnern 内的片段索引集。Iactn 是 Iinnern的一个子集,大小为 khard(即 ∣Iactn∣=khard),khard=max(1,⌊T/rhard⌋) 是控制选择的难片段数量的超参数,rhard是采样比率。考虑到 khard>∣Iinnern∣的情况,我们采用带替换的采样机制,以确保总共可以选择 khard 个片段。类似地,从 Routern 中选择难背景片段 XHBn∈Rkhard×2d:
XHBn={XEn;t∣t∈Ibkgn,Ibkgn∈Ioutern} ,
其中符号定义类似于公式 5,为了简洁我们省略了定义。
3.3.2 简单片段挖掘
为了形成对比对,我们仍然需要挖掘具有判别性的简单片段。基于训练好的全监督 I3D 特征,我们假设具有最高 k 个和最低 k 个动作性分数的视频片段分别是简单动作片段 XEAn∈Rkeasy×2d和简单背景片段 XEBn∈Rkeasy×2d。因此,我们基于公式 2 中计算的动作性分数进行简单片段挖掘。具体过程如下:
其中 SDESCn和 SASCn分别表示按降序和升序排序的 Anessn的索引。keasy=max(1,⌊T/reasy⌋),reasy 是表示选择比率的超参数。注意,我们移除了硬片段区域 Rinnern和 Routern中的片段,以避免冲突。
3.4. Network Training
基于挖掘的难片段和简单片段,我们的 CoLA 引入了额外的片段对比(SniCo)损失 Ls,并在基线模型的基础上取得了显著的改进。总损失可以表示为:
Ltotal=La+λLs,
分别表示动作损失和 SniCo 损失,λ是平衡因子。我们对这两个项进行详细说明如下。
3.4.1 动作损失
动作损失 La是预测视频类别与真实类别之间的分类损失。为了获得视频级别的预测,我们对在公式 1 中计算的片段级别分类分数进行聚合。按照 [39, 30, 14] 的方法,我们采用了 top-k 均值策略:对于每个类别 c,我们选取 keasy 个具有最大类别特定 T-CAS 值的片段,并计算它们的均值作为视频 Vn的类别 c 的视频级别分类分数 an;c。在获得所有 C 个类别的 an;c 后,我们在类别维度上应用 Softmax 函数以获得视频级别的类别可能性 pn∈RC。动作损失 La然后通过交叉熵形式计算:
其中 yn∈RC 是标准化的真实标签。
3.4.2 片段对比(SniCo)损失
对比学习已在图像或补丁级别应用 [1, 10]。对于我们的应用,考虑到提取的特征嵌入 XEn,对比学习在片段级别上进行。我们将其命名为片段对比(SniCo)损失 Ls,旨在细化难片段的片段级特征,并获得更具信息量的特征分布。考虑到难片段被分类为难动作和难背景,我们在 Ls中相应地形成了两个对比对,即“HA 细化”和“HB 细化”,其中 HA 和 HB 分别代表难动作和难背景。 “HA 细化”旨在通过在特征空间中紧密地驱动难动作和简单动作片段来转换难动作片段特征,而“HB 细化”则类似。
形式上,查询Q x∈R1×2d,正例 x+∈R1×2d,和负例 x−∈RS×2d 从预挖掘的片段中选择。如图 2(d) 所示,对于“HA 细化”,x∼XHAn,x+∼XEAn,x−∼XEBn;对于“HB 细化”,x∼XHBn,x+∼XEBn,x−∼XEAn。我们将它们投影到归一化的单位球上,以防止空间的坍缩或扩展。设置一个 (S + 1) 维分类问题,使用交叉熵损失来表示选择正例的概率高于负例的概率。按照 [9] 的方法,我们计算查询与其他示例之间的距离,温度尺度 τ=0.07:
其中,xT是 x的转置,提出的 SniCo Loss 表达式如下:
其中,S 表示负样本片段的数量,xs−∈R2d 代表第 s 个负样本。通过这种方式,我们最大化了同一类别(动作或背景)中易识别片段和难识别片段之间的互信息,从而有助于细化特征表示,并缓解单个片段欺骗问题。
3.5. Inference
给定一个输入视频,我们首先预测其片段级别的类别激活,以形成 T-CAS,并根据第 3.4.1 节中描述的 top-k 简单分数来聚合,从而获得视频级别的预测。然后,选择得分高于 θv 的类别进行进一步的定位。对于每个选定的类别,我们对其对应的 T-CAS 进行阈值处理(使用 θs),以获得候选的视频片段。最后,将连续的片段组合成提议,并应用非极大值抑制(NMS)来去除重复的提议。