A persuit of Temporal Accuracy in General Activity Detection

算法的主要作用


  • 建立完整动作的边界(temporal boundaries)

  • 检测片段的相关性和完整性(relevance and completeness)

算法的主要步骤:(proposal+classification)


  1. 构造proposals(generating temporal proposals )
  • 构造一堆未分类的片段,这些片段有可能是潜在的代表一个action的区域

  • TAG(Temporal Actionness Grouping),使用卷积神经网络分辨Action和Background,在这个项目中就是精彩片段和非精彩片段。

  • 构造Temporal region proposals:

  1. extract snippets:
  • 对一个video,等距抽取一些帧,一个snippet由这个帧的图像以及又它生成的Optical flow field组成,所以一个snippet不仅是某个时刻的图像(appearance),而且还带有运动信息(motion)
  1. evaluate snippet-wise actionness
  • Actionness代表一个snippet是一个action实例的概率

  • 所以在一个片段中如果有很多Actionness高分的snippets,就说明这一个片段很可能属于一个Activity

  • 这样我们就得到了一个video中,所有snippets的actionness分数,这个分数介于0-1之间,现在我们可以拿这些分数做什么呢?

  1. finally group them into region proposals.
  • 得到了所有snippets的actionness分数之后,我们的初步的想法是将分数高的snippets连续片段划分为一个Activity区域,但是因为高分的snippets并不连续,所以这样的零容忍做法会导致划分出的区域断断续续,数量多而且十分分散。我们需要采取一些具有容忍性的方法,允许Activity区域包含一些低分的snippets,但是数量不能超过一定的比例。所以我们可以采取如下的做法(设定阈值[图片上传失败...(image-e6e3d2-1515753117264)] ):

(1) 第一步,根据得到的snippets的actionness分数,我们可以通过设定阈值[图片上传失败...(image-e77116-1515753117264)] 或其它值来将actionness的概率值转化为0-1分布,例如如果actionness>0.5,则转化为1,如果actionness<0.5则转化为0,这样我们就将一个video中抽取出的snippets转化为只包含0,1的序列。

(2) 第二步,设定阈值[图片上传失败...(image-3805bc-1515753117264)] ,它表示一个区域中(高分的snippets数量) / (总的snippets数量)的最低值。算法从遇到的第一个1开始,不停向前包含snippets,只要上述比率还高于阈值[图片上传失败...(image-9b526c-1515753117264)] ,就继续向前囊括新的snippets,直到上述比率跌到阈值[图片上传失败...(image-207b9e-1515753117264)] 以下,停止寻找新的snippets,并退回最后一个值为1的snippets,这样便生成了一个activity区域。

  1. 分类(classifying proposed candidates )
  • 检查这些proposals中哪些是真的action片段并分类(activity classification and completeness filtering.)

两个步骤:

  • Activity Classification:

Activity Classification是基于TSN来构造的。这个分类器会对每一个snippet打分,判断一个proposals属于那一类action或者不属于任何action取决于这个proposals包含的所有的snippet 的分数(Classification Score),在这个步骤中我们保留哪些可能是action的proposals,丢弃那些被判定为不是action的proposals。经过筛选被留下来的proposals还需要经过下一步筛选。

  • Completeness Filtering:

Completeness Filtering的作用检测上个步骤筛选保留下来的proposals中是否存在不完整(incomplete)或者包含太多多余信息(over-complete)的proposals。那么如何来做这样的检测呢?仅仅通过观察一个proposal中的所有snippets是无法检测这个proposal是否完整的,我们必须通过观察下面两点:
(1)这个proposal内部的差异性
(2)这个proposal前后发生了什么
为此我们设计一个简单的特征表示,这里需要重新利用到之前计算过的每个snippet的Classification Score,这个特征表示包括三个部分(以一个proposal为例):
(1)使用一个pool来提取这个proposal中的所有snippets的Classification Score特征
(2)将这个proposal分成两个部分,并分别使用一个pool来提取这两个部分中snippets的Classification Score特征
(3)在这个proposal前后各取一小段区域,并分别使用一个pool来提取它们包含的snippets的Classification Score特征
接下来将这三者构成的特征数据输入到SVM分类器(使用Hard negative mining)中,最终可得到一个分数Sc,分数代表该proposal是恰好包含整个action的概率,结合该proposal属于某action的概率Pa,可以得到最终的分数:SDet = Pa × exp(Sc)

你可能感兴趣的:(A persuit of Temporal Accuracy in General Activity Detection)