读书笔记28:Compressed Video Action Recognition(CVPR2018)

http://openaccess.thecvf.com/content_cvpr_2018/papers/Wu_Compressed_Video_Action_CVPR_2018_paper.pdf

本文的摘要分两段,第一段介绍背景和动机,背景是在video数据上训练robust的representation比在image上要困难得多,一部分原因是原始的video的size是变化的,并且在temporal上有很多冗余信息,而这些冗余信息通过视频压缩算法可以得到消减,最好的情况下,这种压缩可以将视频的大小降低两个数量级,这就启发了作者,是否能够在压缩后的video上训练深度网络,得到video的representation呢?

摘要的第二段简介了模型的特点,包括信息密度更大、训练更容易等等,之后还简介了实验情况。

现在主流的的video压缩算法都会将一个video分成I-frames(intra-coded frames)和P-frames(predictive frames),有时还会有B-frames(bi-directional frames)。I-frames就是正常的原始图片,压缩后不变;P-frames以上一帧为基础,记录本帧的变化值,P-frames分两个部分,一个部分是motion vector,表示为source frame(应该指的是作参考的frame)到t时刻的target frame的像素区块(block of pixels)的移动,用表示,这个motion vector表示的是粗略的移动,因此source frame加上motion vector之后并不能得到和target frame完全一样的结果,和target frame真实值之间的差距,称为residual difference,用标记。

综上,t时刻的P-frame只包含motion vector和一个residual,这样,就得到了每一帧RGB图像的递归表示

i表示某一个pixel,表示t时刻的RGB图像。得到motion vector和residual之后,这两部分就被输到discrete cosine transform(DCT)并且进行entropy encoded(并没有详细讲解这是什么操作)

B-frame可以看做是一种特殊的P-frame,motion vector是双向计算的,有可能会以future frame作为基准(只要没有循环依赖,这一帧依赖于下一帧,但下一帧又依赖于这一帧这种情况)。和P-frames一样,B-frames也是只抓取video中的变化值。本文关注只依赖于历史帧得到的encoded video,也就是只有I-frames和P-frames。下图给出了p-frames等概念的示意

读书笔记28:Compressed Video Action Recognition(CVPR2018)_第1张图片

得到了I-frames和P-frames之后,很自然的就会分别使用深度学习模型对这两个信息进行处理,然后通过某种方式合并起来,但是作者尝试了各种合并的方法,结果都不令人满意,分析之后认为原因是单独的P-frame并不能携带完整的信息,因为P-frames都是基于I-frames的信息的。因此很自然的就会想到在使用每一帧P-frame的时候都同时使用一下前一帧的信息,但是这样熊果也不好,因为这样一帧一帧的向前递归导致这个依赖链太长了,最后,解决方案是计算每一个P-frame的时候都基于第一帧也就是I-frame进行,而不是P-frame之间还有一帧一帧的依赖关系,如下图所示。

读书笔记28:Compressed Video Action Recognition(CVPR2018)_第2张图片

举例来讲,t帧的位置i的像素,用代表前一帧的参考位置(referenced location),对于k

也就是第t帧的第i个像素在之前的第k帧是什么位置,其实这个位置我觉得不一定能找到,就像optical flow一样,某一个像素点表示的物体并不一定总是在图像中的。

由此可以得到accumulated motion vector和accumulated residuals,第t帧的表示如下

至此,每一个P-frame都有了新的依赖关系

读书笔记28:Compressed Video Action Recognition(CVPR2018)_第3张图片

新的依赖关系中,accumulated motion vector和residual可以包括更加长程的信息。

读书笔记28:Compressed Video Action Recognition(CVPR2018)_第4张图片

有了新的表示之后,模型的识别过程由上图所示,I-frame和P-frame是分开处理的,用三个CNN(P-frame由两部分组成,使用两个CNN)

读书笔记28:Compressed Video Action Recognition(CVPR2018)_第5张图片

图中画了两个P-frame,每一个都相应画了两个CNN,但其实所有的P-frame都是共享CNN的,这三个CNN分别得到score之后,又可以选择不同的方式将其聚合起来,但最终作者发现简单的相加是最好的方法,表现最好。

最后作者介绍了一点内容,由于I-frame是包含信息最多的一帧(I-frame就是t=0的一帧,整个compressed video的第一帧),因此处理I-frame的网络结构要复杂一些,而处理P-frame的结构就要简单一些。

看完本文后有一个疑惑,那就是P-frame有那么多,这个时序的关系是怎么处理的呢?模型是怎么输入数据并输出结果的呢?是所有的按顺序输进去得到一组score还是怎么的,有些糊涂。

你可能感兴趣的:(读书笔记28:Compressed Video Action Recognition(CVPR2018))