论文题目:UntrimmedNets for Weakly Supervised Action Recognition and Detection (CVPR 2017)

介绍

Motivation:现有的行为识别方法严重依赖于剪切过的视频数据来训练模型,然而,获取一个大规模的剪切过的视频数据集需要花费大量人力和时间。因此,我们提出了弱监督的网络结构UntrimmedNets,它能直接使用未剪切的视频进行学习,而不需要时序标注。
1.jpg
弱监督行为识别与检测:在训练时,只使用不含时序标注的未剪切视频进行训练;在测试时,训练好的模型能对未剪切的视频进行行为识别与检测。

方法

2.jpg
UntrimmedNets的pipeline如图所示:首先生成clip proposals,即从视频中采样出较短的clips集合。然后将这些clip proposals输入到预训练好的网络中进行特征提取。之后,使用一个分类模块来对每个clip proposal进行行为识别,以及一个选择模块来检测或排序重要的clip proposals。最后,结合分类模块和选择模块的输出来产生视频级别的预测。

Clip sampling

给定一个包含$T$个帧的未剪切视频$V$,生成一个clip proposals集合$C=\left\{c_{i}\right\}_{i=1}^{N}$,其中$N$是proposal的个数,$c_{i}=\left(b_{i}, e_{i}\right)$表示第$i$个proposal的起止时间。

我们使用两种方法来生成proposals:

  • Uniform sampling:基于一个行为的持续时长应该较短的假设,我们将一个长视频分成$N$个等长的clips,即$b_{i}=\frac{i-1}{N} T+1$,$e_{i}=\frac{i}{N} T$。
  • Shot-based sampling:首先,提取每一帧的HOG特征,并计算相邻帧之间的HOG特征的区别。然后使用这个区别值来计量视频内容的变化,如果大于某个阈值,即检测到了一个shot change。在每个shot内部,如果该shot的时间过长,则将其分割为等长的clips,每个clip的长度为$K$帧($K=300$)。

UntrimmedNets

UntrimmedNet由3个模块组成:特征提取模块、分类模块和选择模块。

特征提取模块

给定一个视频$V$以及clip proposals集合$C=\left\{c_{i}\right\}_{i=1}^{N}$,我们为每个proposal提取特征表示$\phi(V ; c) \in \mathbb{R}^{D}$。UntrimmedNet是一个通用的弱监督行为识别与检测框架,不依赖于任何特定的特征提取网络。在实践中,我们尝试了两个结构:Two-stream CNN和Temporal Segment Network,spatial stream的输入是1个RGB帧,而temporal stream的输入是5帧TVL1 optical flow。

分类模块

分类模块根据提取出的特征$\phi(c)$对每个clip proposal进行行为类别分类。假设有$C$个行为类别,学习一个线性映射$\mathbf{W}^{c} \in \mathbb{R}^{C \times D}$,计算出score向量$\mathbf{x}^{c}(c)$:

$$ \mathbf{x}^{c}(c)=\mathbf{W}^{c} \phi(c) \in \mathbb{R}^C $$

可以使用一个softmax层对该score vector进行转化:

$$ \overline{x}_{i}^{c}(c)=\frac{\exp \left(x_{i}^{c}(c)\right)}{\sum_{k=1}^{C} \exp \left(x_{k}^{c}(c)\right)} \in \mathbb{R}^1 $$

其中$x_{i}^{c}(c)$表示$\mathbf{x}^{c}(c) \in \mathbb{R}^C$的第$i$个维度的值。

为了清晰,对于一个clip proposal $c$,使用$\mathbf{x}^{c}(c)$表示原始分类score,$\overline{\mathbf{x}}^{c}(c)$表示softmax分类score。原始分类score含有原始的class activation信息,能反映该clip含有一个行为类别的程度。如果不包含行为,则它在每个类别上的值都会很小;softmax分类score由于经过了normalization操作,不能正确表示不含有任何行为的情况。

选择模块

选择模块的目标是选择出最有可能包含行为的clip proposals。我们使用两种选择方法:hard selection(基于multiple instance learning,MIL)和soft selection(基于attention机制)。

对于hard selection方法,我们尝试为每个行为类别识别出$k$个clip proposals子集合。我们选择$k$个具有最高分类score(注意此处是用的是原始分类score)的proposals并求平均。使用$x_{i}^{s}\left(c_{j}\right)=\delta\left(j \in S_{i}^{k}\right)$表示行为类别$i$对于proposal $c_j$的选择结果编码,其中$S_i^k$表示在类别$i$上具有最高分类score的k个proposal的下标集合。

对于soft selection方法,我们希望结合所有clip proposals的分类score,学习得到重要性权重(importance weight)来对clip proposals进行排序。对每个proposal,我们对它的特征$\phi(c)$使用一个线性映射来获得它的attention weight:

$$ x^{s}(c)=\mathbf{w}^{s} \phi(c) \in \mathbb{R}^1, \mathbf{w}^{s} \in \mathcal{R}^{D} $$

然后将每个clip proposals的attention weight经过softmax层进行转化:

$$ \overline{x}^{s}\left(c_{i}\right)=\frac{\exp \left(x^{s}\left(c_{i}\right)\right)}{\sum_{n=1}^{N} \exp \left(x^{s}\left(c_{n}\right)\right)} \in \mathbb{R}^1 $$

其中$x^{s}(c)$表示clip proposal $c$的原始selection score,$\overline{x}^{s}(c)$表示softmax selection score。需要注意的是,在分类模块中,softmax是对每个的proposal的所有类别的classification score进行操作;而在选择模块中,softmax是对不同的proposal进行操作。

视频预测

我们通过结合classification score和selection score来生成视频$V$的prediction score $\overline{\mathbf{x}}^{p}(V) \in \mathbb{R}^C $。

对于hard selection,我们简单的对选出的top-k instances取平均:

$$ x_{i}^{p}(V)=\sum_{n=1}^{N} x_{i}^{s}\left(c_{n}\right) x_{i}^{c}\left(c_{n}\right) \in \mathbb{R}^1 $$

$$ \overline{x}_{i}^{p}(V)=\frac{\exp \left(x_{i}^{r}(V)\right)}{\sum_{k=1}^{C} \exp \left(x_{k}^{r}(V)\right)} \in \mathbb{R}^1 $$

其中$x^{s}\left(c_{n}\right)$和$x^{c}\left(c_{n}\right)$分别是clip proposal $c$的hard selection indicator和classification score。

对于soft selection,我们简单地计算classification score和selection score的乘积的加权和:

$$ \overline{\mathbf{x}}^{p}(V)=\sum_{n=1}^{N} \overline{x}^{s}\left(c_{n}\right) \overline{\mathbf{x}}^{c}\left(c_{n}\right) \in \mathbb{R}^C $$

训练

使用交叉熵损失进行反向传播从而训练模型各模块的参数:

$$ \ell(\mathbf{w})=\sum_{i=1}^{M} \sum_{k=1}^{C} y_{i k} \log \overline{x}_{k}^{p}\left(V_{i}\right) $$

当视频 $V_i$ 包含行为类别 $k$ 时,$y_{i k}$为1,否则为0;$M$ 是训练视频的个数;weight decay设置为0.0005;如果视频含有多个行为类别,则首先将标签向量 $\mathbf{y}$ 归一化:$\overline{\mathbf{y}}=\mathbf{y} /\|\mathbf{y}\|_{1}$,然后使用归一化后的标签向量计算交叉熵损失。

行为识别和检测

识别

由于UntrimmedNet是建立在two-stream CNN或temporal segment network上的,所以学习出的模型可以看作是片段级(snippet-wise)分类器。根据以往方法的识别流程,我们在未剪切的视频中进行分段评估以进行行为识别。在实践中,我们每30帧采样一帧(或5帧光流叠加)。采样帧的识别分数用top-k pooling(k设置为20)或加权和进行汇总,以得到最终的视频级别预测。

检测

Soft selection模块不仅提供了一个识别分数,同时也为每个片段输出一个attention weight。自然,这种attention weight可以被用于untrimmed videos中的行为检测(时间定位)。为了实现更精确的定位,我们每15帧进行一次测试,并存储每帧的prediction score和attention weight。基于attention weight,我们使用阈值(设为0.0001)来去除背景。在去除背景后,对classification score使用阈值(设置为0.5)来得到最终的检测结果。

实验结果

行为识别结果:
3.jpg
行为检测结果:
4.jpg
5.jpg

参考文献

[1] UntrimmedNets for Weakly Supervised Action Recognition and Detection

[2] Two-stream convolutional networks for action recognition in videos

[3] Temporal segment networks: Towards good practices for deep action recognition

Last modification:August 11th, 2019 at 11:14 pm
如果觉得我的文章对你有用,请随意赞赏