美文网首页
CTAP算法详解

CTAP算法详解

作者: ce0b74704937 | 来源:发表于2021-05-13 23:32 被阅读0次

    文章地址: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特征。特征用公式表示为x_u = E_v(u)\in R^{d_f}其中E_v为特征提取器。

    2.1 Initial Proposal Generation

    2.1.1 actionness proposals获取

    文章使用两层的一维时序卷积作为二分类网络,对每一个输入的snippet特征进行分类,判断该snippet是背景还是动作。
    该过程公式表示如下:
    p_x = \sigma(t_{conv}(x)), t_{conv}(x)=F(\varphi(x;W_1);W_2)
    输入的x的维度为t_a\times d_fp_x维度为t_a,表示每个snippet的概率。F(\cdot ;W)表示一维时序卷积,这里W_1的维度为d_f \times d_m \times k \times kW_2的维度为d_m\times 1\times k\times k,k表示卷积的kernel size。\varphi(\cdot)表示非线性激活函数,\sigma(\cdot)表示sigmoid函数。

    该网络的loss函数采用的是交叉熵,如下式所示:
    L_{act}=-\frac{1}{N}\sum^{N}_{i=1}[y^T_{i}log(p_{x_i}) + (1-y_i)^T log(1-p_{x_i})]
    式中y_i表示对应的x_i这个snippet的标签。

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

    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用符号\lbrace g_i\rbrace表示,当一个g_i与actionness获取到的某个proposal b_i的tIoU大于预设的阈值\theta_c时,定义该g_i的label为y_i=1。如果g_i与所有的proposal \lbrace b_i \rbrace的tIoU都没达到阈值,则定义该g_i的label为y_i=0。将所有的\lbrace g_i\rbrace在snippet feature上取对应的特征,然后利用mean pool获得对应gt的特征x_{g_i}\in R^{d_f}。PATE输入就是上述的gt特征,输出为该gt是否能被actionness 方式获取到。PATE的结构就是两个全连接层,用下式表示:
    s_i = \sigma(W_4(\varphi(W_3 x_{g_i}+b_3))+b_4)
    其中,W_3\in R^{d_f\times d_m}W_4\in R^{d_m\times 1}b_3 \in R^{d_m}, b_4 \in R都为训练参数。

    该网络的loss也采用的是交叉熵,如下式所示:
    L_{pate}=-\frac{1}{N}\sum^{N}_{i=1}[y_i log(s_i)+(1-y_i)log(1-s_i)]

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

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

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

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

    2.3.1 TAR的结构
    对于一个proposal c_m, 它的开始和结束的unit边界为u_su_e,在这两个units之间均匀采样n_{ctl}可以得到新的特征我们称为proposal units用符合表示为x_c\in R^{n_{ctl\times df}}。分别在start和end边界采样n_{ctx}个特征,采样范围为[u_s + n_{ctx}, u_s - n_{ctx}][u_e + n_{ctx}, u_e - n_{ctx}],这样得到的新特征我们称为boundray units,用符号表示为x_s\in R^{n_{ctx}\times df}x_e \in R^{n_{ctx}\times df}

    将proposal units和boundary units分别送进三个独立的网络中,proposal units可以得到当前proposal 是action的概率,boundary units分别回归出边界的偏移量。用公式表示如下:
    o_s = t_{conv}(x_s)
    p_c = \sigma(t_{conv}(x_c))
    o_e = t_{conv}(x_e)
    其中o_s表示起始边界的偏移量,o_e表示结束边界的偏移量,p_c表示当前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,如下所示:
    L_{reg} = \frac{1}{N}\sum^{N_pos}_{i=1}l^*_{i}(|o_{s,i}- o^*_{s,i}|+|o_{e,i}- o^*_{e,i}|)
    上式中,o_{s,i}表示预测的开始点的偏移量,同理o_{e,i}表示预测的结束点的偏移量,o^*_{s,i}o^*_{e,i}分别表示开始点和结束点gt的偏移量,l^*_i在样本为正样本时为1,否则为0。N_{pos}表示正样本的个数。

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

    相关文章

      网友评论

          本文标题:CTAP算法详解

          本文链接:https://www.haomeiwen.com/subject/viwbhltx.html