SCNN论文笔记

Temporal action localization in untrimmed videos via multi-stage cnns论文笔记

Temporal action localization in untrimmed videos via multi-stage cnns是Zheng Shou发表在在CVPR2016上的论文,主要解决视频识别中的两个问题:

  • Action Recognition:目的为判断一个已经分割好的短视频片段的类别。特点是简化了问题,一般使用的数据库都先将动作分割好了,一个视频片断中包含一段明确的动作,时间较短(几秒钟)且有唯一确定的label。所以也可以看作是输入为视频,输出为动作标签的多分类问题。常用数据库包括UCF101,HMDB51等。
  • Temporal Action Location:不仅要知道一个动作在视频中是否发生,还需要知道动作发生在视频的哪段时间(包括开始和结束时间)。特点是需要处理较长的,未分割的视频。且视频通常有较多干扰,目标动作一般只占视频的一小部分。常用数据库包括THUMOS2014/2015, ActivityNet等。

这篇文章主要解决Temporal Action Localization的问题。SCNN指segment based CNN,即基于视频片段的CNN网络。

SCNN主要包括三个部分:

  1. 多尺度视频片段生成
  2. 动作分类网络
  3. 分类网络微调

阅读论文之前可以阅读iDT论文

网络模型

使用的每一段视频标注为Ψ={(ψm,ψm,km)}m=1M\Psi = \lbrace { (\psi_m, \psi_m^{'} , k_m ) } \rbrace_{m = 1}^M,其中ψm\psi_m为动作起始时间,ψm\psi^{'}_m为动作终止时间,kmk_m为该动作的id。km{1,2,...,K}k_m \in \lbrace { 1,2,...,K } \rbraceKK为动作的种类。在训练过程中共有两种视频,一种是修剪过的视频XTX \in \mathbb{T},对于修剪过的视频ψm=1\psi_m = 1ψm=T\psi_m^{'} = TM=1M=1;另一种是未修剪的视频XUX \in \mathbb{U}

多尺度视频片段生成

第一步为生成候选的视频片段,作为下一阶段网络的输入。

首先将每一帧视频resize到171128171*128像素大小,对于未修剪过的视频,使用滑窗的方法产生视频片段,包括多个长度帧的片段:16,32,64,128,256,512。视频帧的重复度为75%。对于每一个未修剪视频,得到一系列视频片段:Φ={(sh,ϕh,ϕh)}h=1H\Phi=\{ (s_h, \phi_h, \phi_h^{'} ) \}^H_{h = 1},其中HH是滑窗的个数,ϕh\phi_hϕh\phi_h^{'}是第hh个片段shs_h的起始时间和终止时间。

在得到视频片段后,对其进行平均采样16帧视频,从而使得输出的segment的长度均为16。

C3D网络

C3D网络来自于learning Spatiotemporal feature with 3DConvolutional Networks这篇文章,前面的博客介绍过C3D网络及特征。

Proposal Network

在生成训练数据时,同时还记录和segment和ground truth instance之间的最大重叠度(IoU)。对于proposal网络来说,将最大IoU大于0.7的标记为true,最大IoU小于0.3的标记为背景。以及类别(即如果存在多个重叠的ground truth,取重叠度最大的那个)。

将得到的所有片段输入到C3D网络中,经过fc8后分为两类,即判断是否为背景,训练时将IoU大于0.7的作为正样本(动作),小于0.3的作为负样本(背景),对负样本进行采样使得正负样本比例均衡。采用softmax loss进行训练。proposal network的主要作用是去除一些背景片段。

Classification Network

经过Proposal Network后,背景被去除,对剩下的数据进行KK个类别的动作分类。

和Proposal Network类似,经过fc8后输出K+1K+1类,其中一类是背景,这个网络被用来初始化localization network, 仅在训练阶段使用,在测试阶段不使用。训练时同样将IoU大于0.7的作为正样本(K类动作),小于0.3的作为背景类,对背景类动作进行采样使得背景类动作的数量和K类动作数量的平均值相近。训练时同样采用softmax loss。

Localization Network

在估计动作的起始位置时,需要抑制与groundtruth重叠部分很小的片段,增强重叠部分大的片段,如下面图中的B片段才是真正需要保留的,AC应该去除。

为了达到这样的目标,在loss function增加了overlap的损失。在一个minibatch中,有N个训练样本$\{ (s_n, k_n, v_n) \}_{n = 1}^N$,对于第n个片段,fc8的输出向量为$O_n$,经过softmax后得到的预测结果为$P_n$,计算方式为: $$ P_n^{(i)} = \frac{e^{O_n^{(i)}}}{\sum_{j=1}^N e^{O_n^{(i)}}} $$ 新的loss function为: $$ L = L_{softmax} + \lambda \cdot L_{overlap} $$ 其中softmax损失函数为: $$ L_{softmax} = \frac{1}{N} \sum_n(-log(P_n^{k_n})) $$ 是动作分类的损失函数,overlap的损失函数为: $$ L_{overlap} = \frac{1}{N}\sum_n(\frac{1}{2} \cdot (\frac{(P_n^{k_n})^2}{(v_n)^\alpha} -1) \cdot [k_n > 0]) $$ 这里的$k_n >0$表示$[k_n >0] = 1$时,该片段是动作,$[k_n >0] = 0$时,该片段是背景。$L_{overlap}$主要是为了增强与GT有很大重合度的片段的得分,抑制重合度较低的片段。

LsoftmaxL_{softmax}求导:

LsoftmaxOn(i)={1N(Pn(kn)1)i=kn1NPn(i)ikn\frac{\partial L_{softmax}}{\partial O_n^{(i)}} = \left\{\begin{matrix} \frac{1}{N} \cdot (P_n^{(k_n)} - 1) & i = k_n\\ \frac{1}{N} \cdot P_n^{(i)} & i\neq k_n \end{matrix}\right.

LoverlapL_{overlap}求导:

LoverlapOn(i)={1N((Pn(kn))2(vn)α)(1Pn(kn))[kn>0]i=kn1N((Pn(kn))2(vn)α)(Pn(i))[kn>0]ikn\frac{\partial L_{overlap}}{\partial O_n^{(i)}} = \left\{\begin{matrix} \frac{1}{N} \cdot (\frac{(P_n^{(k_n)})^2}{(v_n)^{\alpha}}) \cdot (1-P_n^{(k_n)}) \cdot [k_n > 0] & i = k_n\\ \frac{1}{N} \cdot (\frac{(P_n^{(k_n)})^2}{(v_n)^{\alpha}}) \cdot (-P_n^{(i)}) \cdot [k_n > 0] & i\neq k_n \end{matrix}\right.

这里ikni \neq k_n的情况不知道是怎么得到的

  • 如果当前片段属于背景,则Loverlap=0L_{overlap} = 0,此时的损失函数为L=LsoftmaxL = L_{softmax}
  • 如果当前片段为动作,则LL达到最小值时,取λ=1\lambda = 1,可计算得到$P_n^{(k_n)} = \sqrt{(v_n)^{\alpha}} $,因此惩罚两种情况:
    • 由于误分类,导致Pn(kn)P_n^{(k_n)}很小;
    • Pn(kn)P_n^{(k_n)}很大,超过目标(vn)α\sqrt{(v_n)^{\alpha}}
  • LL随着vnv_n的减小而增大,表示与GT重叠部分小的片段不可靠,因为其可能包含很大的噪声。在特殊情况vn=1v_n = 1时,损失函数仅为softmax损失,随着Pn(kn)P_n^{(k_n)}从0变为1,损失函数从++ \infty变为0。

预测阶段

预测时,滑动不同长度的时间窗,生成一组视频片段,输入到Proposal Network中,得到proposal的置信度得分PpropP_{prop},保留Pprop>0.7P_{prop} > 0.7的片段,将保留的片段通过Localization Network,得到动作类别及置信度PlocP_{loc},基于PlocP_{loc}进行NMS去冗余检测。

Author: NYY
Link: http://yoursite.com/2018/12/24/computer_version/SCNN/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.