CTAP算法详解

文章地址:CTAP: Complementary Temporal Action Proposal Generation
代码地址:https://github.com/jiyanggao/CTAP

该文章发表于ECCV2018。

现在tempporal action proposal任务主流的有两种方式。一种是采用滑窗方式,但这种方式得不到精确的边界。一种是采用基于grouping的方式,这种方式相对于划窗方式能得到更为精确的边界,但是这种方式召回会低于前者。为了解决两种方式的缺点,文章提出采用两种方式一起作为proposal的方法,加上文章提出的PATE和TAR模块来得到高召回且边界更为精确的proposals。

一、方法分析

1.png

如上图所示,对于滑窗方式(SW+R&A,即sliding window + ranking & adjustment),虽然使用了边界回归的方式,但是边界还是不准,而且只有在大量的proposals提出的情况下才能获得较高的召回率(如上图中的A圈所示)。

对于grouping方式(TAG),也就是先对每个snippet估计是否为actionness,然后按照一定的方式将这些结果组合成一个个的proposal,这种方式可以得到较准确的边界。但是会存在将背景判断为动作的情况,这种情况会导致产生错误的proposal,也会存在因为动作的得分较低而产生漏检的情况。这些情况最终会导致得不到很高的召回率的情况,如上图中的B圈所示)。

上述两种方式的融合可以互补,有下如优势:

  1. 采用grouping的方式能得到更精确的边界,采用滑窗的方式是通过global context information获得的proposal分数所以更有利于区分出动作片段与背景片段
  2. grouping的方式召回较低,加上滑窗方式可以提高proposal的召回

先采用TAG方式获得proposal,再经过R&A,这种方式在获取少了proposal的情况下召回会比之前两种方式分开要高,但是召回还是有上限,如上图中的C圈所示。

经过分析本文提出 Complementary Temporal Action Proposal (CTAP)方法,该方法由三个模块组成:

  1. 第一个模块是利用上述的两种方式产生两种类型的proposal。grouping方式输出的proposal定义为actionness proposals,滑窗方式输出的proposal定义为sliding-window proposals
  2. 第二个模块将grouping可能遗漏的proposal用sliding-window proposals补充,从而提高proposal的召回率
  3. 第三个模块是筛选出最终的高质量的proposal

二、网络结构

如上所述,网络有三部分组成,如下图所示


2.png

2.1 视频预处理

对于一个未裁剪的原始视频,将每连续的几帧定义为一个snippet单元,一个视频就可以拆成多个snippet的组合,每个snippet再经过已训练好的特征提取器得到对于的特征。本文采用的是双流网络来提取snippet特征。特征用公式表示为其中为特征提取器。

2.1 Initial Proposal Generation

2.1.1 actionness proposals获取

文章使用两层的一维时序卷积作为二分类网络,对每一个输入的snippet特征进行分类,判断该snippet是背景还是动作。
该过程公式表示如下:

输入的x的维度为。维度为,表示每个snippet的概率。表示一维时序卷积,这里的维度为,的维度为,k表示卷积的kernel size。表示非线性激活函数,表示sigmoid函数。

该网络的loss函数采用的是交叉熵,如下式所示:

式中表示对应的这个snippet的标签。

推断时得到视频所有snippet的预测结果后,采用文章《 Temporal action detection
with structured segment networks》中的 watershed algorithm来获取proposal。大概流程就是,根据已有的snippet概率,当概率大于阈值时,则定义为action snippet,然后将连续的action snippet合并为proposals。如果合并出的proposal时长与视频时长的比例大于预设的阈值,则保留。这里和有多个值,将所有的和对产生的proposals作为候选的proposal,接着利用nms选出最终的proposals,用集合表示。

2.1.2 sliding-window proposals获取

本文的滑窗方式采用《TURN TAP: Temporal Unit Regression Network for Temporal Action Proposals》文章的提到的方式。简单来讲就是将每个提取好的snippet特征看成是一个anchor点,然后一anchor点为中心设置一系列anchor的长度和滑动的间隔,这样就可以得到一系列的proposals了。proposal对应的特征送入网络得到对于的回归结果和分数作为sliding-window proposals的结果。

2.2 候选框补充过滤器(Proposal Complementary Filtering)

前面讲到,采用actionness方式容易遗漏一些候选框,可以通过滑窗的方式的增加候选框的召回率,但是滑窗产生的候选框太多了,需要选择一些被actionness方式遗漏的加入进来就可以了,其它的不需要。所以为了选择出滑窗方式中被actionness方式遗漏的候选框,设计了这个过滤器。过滤器的全称为Proposal-level Actionness Trustworthiness Estimator,为了方便下面采用缩写PATE表示。

2.2.1 PATE的训练

对于训练样本,groundtruth segments用符号表示,当一个与actionness获取到的某个proposal 的tIoU大于预设的阈值时,定义该的label为。如果与所有的proposal 的tIoU都没达到阈值,则定义该的label为。将所有的在snippet feature上取对应的特征,然后利用mean pool获得对应gt的特征。PATE输入就是上述的gt特征,输出为该gt是否能被actionness 方式获取到。PATE的结构就是两个全连接层,用下式表示:

其中,,,都为训练参数。

该网络的loss也采用的是交叉熵,如下式所示:

2.2.2 候选框补充过滤(Complementary filtering)

使用sliding-window 获取到的proposals 对应的snippet特征输入到PATE中,输出的分数表示这个proposal是否是actionness方式容易遗漏的。对于一个滑窗获得的proposal ,如果低于预设的阈值表示该proposal可能会被actionness方式遗漏,所以将这个proposal加入下一个阶段的流程中。最后将actionness和滑窗proposal经过PATE过滤的proposal的集合用符号表示。

2.3 候选框的排序与边界精确定位(Proposal Ranking and Boundary Adjustment)

文章定义了一个叫TAR(Temporal convolutional Adjustment and Ranking)的网络,该网络使用两层的时间维度的卷积,类似于actionness proposals获取中的卷积结构。

2.3.1 TAR的结构
对于一个proposal , 它的开始和结束的unit边界为和,在这两个units之间均匀采样可以得到新的特征我们称为proposal units用符合表示为。分别在start和end边界采样个特征,采样范围为和,这样得到的新特征我们称为boundray units,用符号表示为和。

将proposal units和boundary units分别送进三个独立的网络中,proposal units可以得到当前proposal 是action的概率,boundary units分别回归出边界的偏移量。用公式表示如下:



其中表示起始边界的偏移量,表示结束边界的偏移量,表示当前proposal的概率。其它符号同2.1.1部分。

这里要注意的是本文的偏移量是没有经过归一化的

2.3.2 TAR的训练方式

训练TAR之前先定义好输入的正样本,文章将滑窗得到的所有proposals与gt去匹配,如果符合下面的任意一个条件则将proposal定义为正样本:

  1. 当前的proposal与某一个gt的IoU最大时,则这个proposal为正样本
  2. 当前的proposal与任意一个gt的IoU大于0.5时,这个proposal为正样本

对于proposal的分类采用的是标准的交叉熵,公式同2.2.1中的交叉熵。
回归网络采用L1 Loss,如下所示:

上式中,表示预测的开始点的偏移量,同理表示预测的结束点的偏移量,和分别表示开始点和结束点gt的偏移量,在样本为正样本时为1,否则为0。表示正样本的个数。

详细实验结果和参数细节请参考原文。

你可能感兴趣的:(CTAP算法详解)