Approximated Bilinear Modules for Temporal Modeling
文章来自ICCV2019,做的视频的行为识别。
作者说两个问题:
1.时间上的线索都是精细颗粒度的。
2.序列模型需要推理。
对此,作者提出:
1.一个近似双线性的操作,并起可以reusing pretrained parameters.(第一次读到这里,其实不明白和精细颗粒度有什么关系,后面有解释。。。)
2.将帧特征分为静止和动态的两种,提高效率(思考一下,分成两种就比较高效,这种高效潜藏一种推理。)
看一下为什么双线性操作可以解决fine-grained问题:
这里给出的原因就是在 细分类任务当中,这个双线性操作很有用,所以我们可以用这种方法来捕捉这种精细的信息。
记下来就是第二个点,这个推理是不是我自己猜测的那样呢?答案是否定的。
先翻译翻译:
“VQA是一个需要文理和视觉推理的任务,当前最先进的技术解决这类办法就是双线性模型,所以这就启发我们去用双线性模型来做时间序列的推理。”
嗯。。。。
好像也没毛病?
不过看到这里还是好奇具体操作是啥?会不会和普通的双线性有什么区别?还是有期待在里头。
相关工作中再次提到将双线性操作融入到普通的卷积当中。
我们来看看怎么做的,先看传统的双线性:
上述过程就很清晰明了,两个向量直接做外积,会得到一个矩阵,拉成向量,最后再权重映射,搞定。
那么本文是如何近似的呢?看下面的定义:
就是拆解一下,先做两个映射,然后对应元素相乘,最后再映射。
一个很妙的解释:
利用约束去除y的影响,加入非线性就是两层的多层感知机,相当于ABM是对感知机的推广,感知机是ABM的特例,这种解释特别招人喜欢。
操作清楚了,接下来就简单了,因为是时间序列嘛,怎么双线性呢?可以相邻两个做(ABM-S),也可以相邻好几个拼在一起做(ABM-C),还可以把每一帧的内容分为静态和动态之后拼接去做。前两个好理解,第三个怎么说呢?
先看这个假设:
完了之后去除静态信息,就是保留一份静态信息,因为假设三份信息是相同的,那只保留中间的,前后的只保留动态信息。
到这里,如何在序列里用双线性其实已经结束了。
但前面提到过,还有一个reusing pretrained parameters.
这个到底怎么弄呢?
先回忆一下前面讲过的,多层感知机那个约束,放开加了的约束就是双线性,那保留之前的权重,再加一个结构相同的模块,然后对应元素相乘,最后继续操作就是了。这个思路我觉得是我没想到,且有意思的地方。
这也解释了作者为什么要和感知机联系起来,并且解释约束
视频帧抽取的技巧吧算是,先切割,完了每部分取一个,作者认为这样损失信息太多,那就在每一部分多取几张: