【CV论文阅读】Rank Pooling for Action Recognition
这是期刊论文的版本,不是会议论文的版本。看了论文之后,只能说,太TM聪明了。膜拜~~
视频的表示方法有很多,一般是把它看作帧的序列。论文提出一种新的方法去表示视频,用ranking function的参数编码视频的帧序列。它使用一个排序函数(ranking function)主要基于这样的假设:帧的appearance的变化与时间相关,如果帧vt+1在vt后面,则定义;此外,假设同一动作的视频帧序列,学习到的排序函数的参数,应该的大致一致的。但实际上,后面的假设并没有给出严格的证明,只能说实验的结果证明了这样的想法。
参数定义
假设输入的原始帧为x,则一个视频的帧序列为。把原始帧序列经过smooth操作,得到新的序列。但实际上,这个新的序列,可以是与原始帧有同样大小的image,也可以是原始帧的特征向量。视频的实际动态信息为D,而使用一个线性排序函数编码视频的动态信息为,u是函数的参数,也就是需要学习的对象,并用它来表示一个视频。那么,学习的目标就是
Rank pooling
Rank pooling 的方法是使用一个RankSVM的学习排序算法计算的。整个Rank pooling的学习过程可以总结如下:(1)输入的数据为处理过的帧序列V,由于RankSVM实际上是有监督学习,所以序列的顺序是知道的(2)如上定义了序列的先后顺序,定义正例样本为,其中时间ti在tj之后,反例样本为它的相反数。(3)可以通过SVM的学习算法,学习如下的凸优化问题
(4)如果学习到的参数为u,则一个vi的score定义为,并且有。
Rank pooling方法的优点
(1)与其他的pooling方法对比,如max pooling,average pooling对比,它的鲁棒性更好。
(2)训练的过程是一个最优化问题,所以它的参数可以很好地表达数据的隐含结构。
其他参数化的视频表示方法
论文在这里主要介绍了一种PCA的方法,提取k个特征向量,达到降维的目标,这k个主成分同样反映了视频序列的结构。
Smooth操作
这里使用的smooth的操作是time varying mean vector,定义一个mean为,则smooth后的image为。使用time varying mean vector学习RankSVM之后的向量u,计算每一帧的score,如下图
可以看到,它几乎是有序严格上升的,这表明可以很好地区分出帧的先后顺序。从另一个方面而言,这种方法可以看到它刻画了帧与时间的关系。
非线性的rank pooling
通过对输入应用一个非线性映射来获得。由于RankSVM其实也是学习SVM,所以可以应用一个非线性的核,论文选用的是Hellinger核:
训练的过程
(1)对输入的每一帧,计算它们的特征向量(HOG、HOF、MBH、TRJ)(2)对特征向量进行smooth,然后通过学习RankSVM得到参数u(3)通过训练数据来类别的SVM。
对于第1、2步的提取特征向量一步,似乎并不是必要的,个人认为。