参考链接:https://blog.csdn.net/qq_40760171/article/details/103705046
https://blog.csdn.net/better_boy/article/details/109336894
https://zhuanlan.zhihu.com/p/355870299
代码链接:https://github.com/sujoyp/wtalc-pytorch
原文链接:https://openaccess.thecvf.com/content_ECCV_2018/papers/Sujoy_Paul_W-TALC_Weakly-supervised_Temporal_ECCV_2018_paper.pdf
W-TALC: Weakly-supervised Temporal Activity Localization and Classification论文总结
一、任务背景
- 当时的文献大多是基于完全监督来做的,但获取精确的逐帧信息需要巨大的人工劳动,可能导致其无法有效地扩展到更多应用场景。
- 相比来说,一个人提供几个标签来封装视频显然要容易得多。互联网上大量带标签的视频可以作为弱监督训练数据的丰富来源。
- 向弱标签学习可能是减少这种人工标注工作量的潜在解决方案。
二、研究思路
- 在W - TALC中,整个视频的标签需要一次处理,在精细的时间粒度上处理长视频可能会有相当大的内存和计算需求。另一方面,粗略的时间处理可能导致检测粒度的降低。因此,在性能和计算之间存在折衷。
- 在过去的几年中,在ImageNet上训练的网络和在Dynamics上训练的网络在一些应用中被使用。基于这些文献的进展和前述的权衡,作者提出了这样的问题:是否可以利用这些网络作为特征提取器,开发一个只学习任务特定参数的弱监督活动定位框架,从而扩展到长视频并在精细的时间粒度上进行处理?
- 为了解决这个问题,本文提出了一个弱监督的时间活动定位和视频分类框架( W-TALC ),该框架通过基于注意力机制的成对视频相似性约束和多示例学习来只学习任务特定的参数。
三、研究内容
- 本文提出了W - TALC,一个只使用视频标签的弱监督时序活动定位和分类框架。提出的网络可以分为两个子网络,即基于双流的特征提取器网络和一个弱监督模块,通过优化两个互补损失函数来学习。
-
流程:将RGB和光流的特征向量拼接后,进行全连接- ReLU - Dropout操作,得到每个时刻2048维的特征。然后通过标签投影模块获得类别上的激活。利用这些激活,计算两个损失函数,多示例学习损失和协同活动相似性损失,联合优化两个损失函数以学习网络权重。
-
特征提取
- 问题1:同时处理长视频的标签信息需要考虑到GPU内存的限制
- 思路:视频分块或许可行,应用时间池化技术将每个块的长度减少到单个表示向量,然而,这会在表示向量中引入不需要的背景活动特征。因为视频中活动的开始和结束阶段不会与大多数视频中预定义的块重叠。
- 本文方法:长视频采样。如果视频长度小于预定义的长度T,则处理整个视频。如果视频的长度大于T,随机抽取一个连续帧长为T的视频片段,将整个视频的所有标签分配给抽取的视频片段。(这可能会在标签中引入一些错误)
- 问题2:微调的计算代价会很大。视频采样策略引入的误差会随着预定义长度T的减小而增大。(所以不能让T太小)如果在训练弱监督模块的同时联合微调特征提取器,那么T可能很小。虽然可以通过同时使用多个GPU来提高T的值,但这可能不是一个可扩展的方法。而且,训练两个模块的时间可能都很高。
- 本文方法:不对特征提取器进行微调,只从头学习任务特定的参数。这样做的优点:弱监督模块在参数数量方面是轻量级的,因此可以用更少的时间来训练,并且它显著增加了T,从而在采样长视频时减少了标记误差。(采样造成的误差,它通过在gpu限制内增加T的方式来减少这种带来的误差)
-
弱监督层
-
全连接层(+ReLU+Dropout)
- 其中D表示Dropout,kp表示其保持概率,⊕表示与广播算子的加法, W f c W_{fc} Wfc 和b是从训练数据中学习的参数,Xi是整个视频的输出特征矩阵。
-
标签空间投影
- 将 Xi投影到标签空间。使用全连接层,并沿时间轴共享权重。其中Wa,ba是待学习参数。这些类激活表示在每个时间活动的可能性。这些激活用于计算之后的两个损失函数。
-
-
K - Max多示例学习
-
MIL多实例学习:个体样本被分为两个袋子,即正袋和负袋。一个正包至少包含一个正实例,一个负包不包含正实例。使用这些包作为训练数据,我们学习到的模型,除了对包进行分类之外,它还能够区分每个实例是正的还是负的。
-
在本文的WTAL任务中:将整个视频看作是一个包,包中有许多个实例,其中每个实例在某一时刻用一个特征向量表示。为了计算每个包(视频级)的损失,需要用每个类别的单个置信度来表示每个视频。对于给定的视频,我们计算特定类别对应的激活分数,作为该类别在时间维度上k - max激活的平均值。
-
在本文中,袋子中元素的数量千差万别(即视频长度不同),设定k与元素数量(不同视频的长度)成正比。
-
- 式中s为设计参数。
-
- 对第i个视频的第j类的类别置信度得分可以表示为
s
i
j
s_i^j
sij :
- 其中,Ml表示集合M中的第l个元素。然后,应用softmax非线性得到所有类别上的概率质量函数 p i j p_i^j pij 。为了计算MILL,我们需要将这个pmf与每个视频的标签的真实分布进行比较。由于每个视频可以有多个活动发生在它,我们表示一个视频的标签向量,如果该活动发生在视频的位置,否则为零。然后,我们对这个基本真值向量进行归一化处理,将其转换为合法的pmf。MILL是预测的pmf pi和真实值之间的交叉熵。
- 对第i个视频的第j类的类别置信度得分可以表示为
s
i
j
s_i^j
sij :
-
- 其中 y i = [ y i 1 , … , y i n c ] T y_i=[y_i^1,…,y_i^{n_c}]^T yi=[yi1,…,yinc]T为归一化的真值向量。
-
-
co-activity相似性
-
目的:识别相似类别视频之间的相关性。
-
定义第j个类别的特定类别集合为Sj,即集合Sj包含训练集的所有视频,其中活动αj作为其标签之一。理想情况下,在学习到的特征表示式Xi中,可能需要以下性质:
- 属于集合Sj的视频对应该在活动αj发生的视频部分具有相似的特征表示。
- 对于同一个视频对,一个视频中αj发生的部分的特征表示应该不同于另一个视频中αj未发生的部分的特征表示。
-
引入Co - Activity相似性损失,将所需属性嵌入到学习到的特征表示中。由于没有帧级的标签,使用得到的类级激活Ai确定所需的活性部分。损失函数的设计有助于同时学习特征表示和标签空间投影。首先使用softmax非线性将每个视频的类激活值沿时间轴进行归一化,如下所示:
-
其中t表示时间时刻。将其称为注意力,因为它们关注视频中某个类别活动发生的部分。某一类别的注意值越高,表明该类别出现的概率越高。
-
为了构造损失函数,首先定义高、低注意力区域的类特征向量如下:
-
其中,Hf,Lf分别表示视频i对于类别j的高、低注意力区域聚合特征表示。可以注意到,在公式中如果视频包含一定的活跃度和特征向量个数,即li = 1,则不定义低关注特征。这在概念上也是有效的,在这种情况下,我们无法计算CASL。使用余弦相似度来获得两个特征向量之间相似程度的度量,可以表示如下:
-
为了加强上述两个性质,使用ranking hinge loss。给定一对视频xm,xn∈Sj,损失函数可以表示为:
-
其中,δ为边缘参数,在实验中设置为0.5。损失函数中的两项在意义上是等价的,它们表示两个视频中的高注意力区域特征应该比一个视频中的高注意力区域特征和另一个视频中的低注意力区域特征更相似。
-
整个训练集的总损失可以表示如下:
-
优化:为了学习弱监督层的权重,需要优化的总损失函数可以表示如下:
-
其中网络中需要学习的权重被集中到W。实验中取λ = 0.5,α = 0.0005。使用批处理大小为10的Adam优化上述损失函数。以一种方式创建每个批次,使得它至少有三对视频,使得每一对至少有一个类别相同。在所有实验中都使用10 - 4的恒定学习速率。
-
分类与定位。在学习网络的权重后,我们使用它们对未修剪的视频进行分类,并在测试时间内定位其中的活动。
- 分类:给定一个视频,得到类别置信度得分 s i j s_i^j sij 。通过softmax得到可能类别上的pmf .然后,通过阈值pmf将视频分类为包含一个或多个活动类别。
- 定位:采用两阶段阈值化方案。首先,将置信度得分 s i j s_i^j sij低于一定阈值的类别舍弃。此后,对于剩余的每个类别,我们在A中沿时间轴对相应的激活施加一个阈值以获得定位。值得注意的是,由于li一般小于视频的帧率,我们对激活进行上采样以满足帧率。
-
-
实验结果
- 活动定位:不同特征和损失函数组合的结果。
- 活动分类:分类结果的mAP。
- 损失函数上的相对权重:本文联合优化了两个损失函数MILL和CASL。为了研究损失函数对检测性能的相对贡献,作者使用I3D特征,以不同的λ (数值越大表明MILL上的权重越大)值进行实验,并在Thumos14数据集上展示了检测结果。如下图(a)。
-
从图中可以看出,当λ = 0.5,即当两个损失函数具有相等的权重时,所提出的方法表现最好。仅使用MILL,即λ = 1.0,与在损失函数中同时赋予CASL和MILL等权重相比,mAP降低了7 - 8 %。这表明,与使用I3D特征和MILL相比,本文引入的CASL对框架的性能有很大的影响。(赋予不同损失函数不同的权重来探究损失函数的加入对模型性能的影响)
- 对序列最大长度的敏感性:对于长视频,本文使用一种简单的采样策略,来保持一个批次中视频的长度小于预先定义的长度T,以满足GPU内存约束。
- -优点:首先,可以从长视频中学习。其次,如果视频的长度≥T,该策略将作为一种数据增强技术,沿着时间轴随机裁剪,使其成为固定长度的序列。同时较低的T值减少了计算时间。
- -缺点:在该采样方案中,训练批次的标签会引入误差,该误差可能随着长度> T的训练视频数量的增加而增加。上述因素导致了性能和计算时间之间的权衡。这在图3b中可以看到,在图的初始部分,随着T的增加,检测性能提高,但计算时间增加。然而,检测性能最终达到一个平台,表明T = 320s是该数据集的合理选择。
- 定性结果。前4个例子来自Thumos14和ActivityNet1.2数据集。后两个来自YouTube上随机收集的视频。’ Act . ‘表示从网络的最后一层获得的时间激活,’ Det . ‘表示阈值化激活后获得的检测,’ GT '表示真实值。
四、创新点
1 .提出了一种新的弱监督时间活动定位和视频分类方法,无需对特征提取器进行微调,只学习任务特定的参数。在训练时不考虑视频中标签的任何排序,并且可以在相同的时间内检测多个活动。
2 .我们引入协同活动相似性损失,并与多示例学习损失联合优化,学习弱监督任务特有的网络权重。通过实证表明这两个损失函数在性质上是互补的。
五、我的问答
1.这篇文章时间比较早了,基于现在来看,可以学习的方面?
- 对于问题的分析和解决思路讲解的很细致,比如为什么要进行长视频采样,为什么不微调特征提取器。
- 对于损失函数的讲解很细致
- 第一个引入定量分析
2.协同活动相似性损失(CASL)部分应该怎么理解?
- 目的:学习和识别相似类别视频之间的相关性。
- 灵感来源:基于一对至少有一个共同活动类别(如骑自行车)的视频,在对应该活动的时间区域应该具有相似特征。同一对视频在不对应的动作区域,特征也应当不同。
3.标签投影什么作用?
标签投影,通过让网络学习W和b,给出类激活A,表示在每个时间**有动作发生的可能性,**在归一化之后可以当作注意力来计算损失函数,充当弱时间标签来计算CASL。
4.为什么说两个损失函数在性质上是互补的?
- 通过实验,对两个损失函数的权重进行调整,当λ = 0.5,即当两个损失函数具有相等的权重时,所提出的方法表现最好。仅使用MILL,即λ = 1.0,与在损失函数中同时赋予CASL和MILL等权重相比,mAP降低了7 - 8 %。
5.不考虑视频标签中的排序是对的吗?
不知道……
6.“Untrimmednets在训练时考虑了固定数量的片段,而不考虑视频的长度,这可能导致定位粒度的降低。此外,他们只使用MILL,这可能不足以在细时间粒度上定位活动。”——这是什么意思?
- 为了引出本文对于视频采样方法和新的损失函数CASL的研究,本文提出的方法会提高定位精度。
7.“论文还展示了一种简单的机制来处理长视频,在高粒度下进行处理。”这里的高粒度和简单的机制分别指什么?
- 提出长视频采样方法
- 定位精度的提高(?不知道这个理解对不对)
8.特征处理部分,1帧和5帧分别通过RGB流和光流是什么意思?
- 指路UntrimmedNets中的相关描述 (Paul 等, 2018, p. 5)
9.整理每个部分每层的维度计算,画图表示。
10.高低注意力的特征向量什么意思?
- 包含动作j发生的高可能区域的类特征向量,低可能部分的类特征向量。计算时以包含相同类别动作的视频对为单位。
11.余弦相似度?
-
两个向量夹角的余弦值,代表两个向量之间的差异
-
表示的是相对差异,不受维度影响
-
第二项是余弦相似度,取值范围是[-1,1]
-
整个式子表示的是余弦距离,取值范围是[0,2]。余弦距离的定义dist(A,B)=1-cos(A,B)
-
余弦距离VS欧式距离
- 欧式距离的数值受到维度的影响,余弦相似度在高维的情况下也依然保持低维完全相同时相似度为1等性质。
- 欧式距离体现的是距离上的绝对差异,余弦距离体现的是方向上的相对差异。
12.ranking hinge loss?
-
Ranking Loss 的目的是为了预测输入样本间的相对距离。
-
该设置会用到正样本对和负样本对训练集,正样本对包含锚样本 x a x_a xa 和正样本 x p x_p xp , x a x_a xa和 x p x_p xp相似,负样本对由锚样本 x a x_a xa和负样本 x n x_n xn 组成,在度量中它和 x a x_a xa不相似。对于正样本对,目标是学习它们的表达,使它们之间的距离d越小越好;而对于负样本对,要求样本之间的距离超过一个边距m。
-
这个loss的三种情况:
-
Easy Triplets:d(ra,rn)>d(ra,rp)+m,
- 相对于正样本和锚样本之间的距离,负样本和锚样本的距离已经足够大了,此时 loss 为 0,网络参数无需更新。
-
Hard Triplets:d(ra,rn)<d(ra,rp)
- 负样本和锚样本的距离比正样本和锚样本之间的距离还近,此时 loss 为正,且比m大。
-
Semi-Hard Triplets:d(ra,rp)<d(ra,rn)<d(ra,rp)+m,
- 锚样本和负样本之间的距离比和正样本大,但不超过边距 ,所以 loss 依然为正(但小于 m)。
-
训练 Triplet Ranking Loss 的重要步骤就是负样本的选择,选择负样本的策略会直接影响模型效果,很明显,Easy Triplets 的负样本需要避免,因为它们的 loss 为 0。第一策略为使用离线 triplet 采样,意味着 triplets 在训练之前就准备好。另外就是在线 triplet 采样,它在训练的每个 batch 内定义 triplets,这种方式的训练效率比较高。
-
-
Hinge Loss:也称作最大化边距目标,常用于训练分类的 SVM 。它有类似的机制,即一直优化到边距值为止。
-
本文中的公式是使用余弦距离的Triplet Ranking Loss,
-
在本文的公式中,我们需要学习是,**视频对(m和n)**中都是高注意力部分的相似性,以及高低之间的差异性。希望一组视频对中相同动作特征的部分相似距离越小越好,不同动作特征的部分距离要超过一个边距,这里边距就是的δ。