一、摘要
本文主要是针对视频显著性检测遇到的两个问题:
①在进行基于深度学习的视频显著性检测时缺少足够多的已经标记的像素级数据。
②如何提高加快视频显著性检测和训练。
针对这两个问题有相应的解决方案:
①提出一个网络,该网络有两个模块分别提取空间信息和时间信息。动态显著性模型可以合并静态显著模型的显著性估计,直接产生时空显著性推断而不需要耗时的光流计算。
那么该方案如何实现?
A:研究卷积神经网络在动态场景中端到端训练和像素显著性预测
B:提出一个能够训练合成视频数据的新型训练方案,把静态和动态显著性信息都编码到一个统一的深度学习模型中。(成功学习静态和动态显著性特征,直接学习帧之间的内在关系,摆脱耗时的光流计算)
②提出一种数据增强技术,该技术可以从已经注释的图像数据集中模拟视频训练数据。(利用大量图像训练数据合成视频数据)
二、整体模型框架图
这里可看出,该模型分为两个模块,分别同时捕获空间和时间显著性信息。下面的模块将单个的帧作为输入并输出静态显著性估计;上面的模块将一对帧作为输入,并将下面模块输出的静态显著性估计作为先验学习动态显著性,从而产生最终的时空显著性图。
- 静态显著性检测模块
可以看出,静态显著性检测模块,输入一帧的图片(由于使用的是全卷积网络,因此该网络可以输入任意大小的图像进行操作,并且保留了空间信息),会先进行多层卷积将输入图像转换为多维特征,之后用一些反卷积网络对卷及网络提取的特征进行上采样。最后,用一个卷积核为1×1,sigmoid为激活函数的全卷积网络输出一个与输入图像大小相同的概率图,该图中值越大,显著性越高。
- 动态显著性检测模块
可以看出,我们输入的是真实的视频数据或者图像数据集合成的一对连续帧(It,It+1)以及静态显著性模块的输出,一起级联输入到动态显著性检测模块。这个动态网络有类似于静态网络的全卷积网络结构,动态网络捕获动态显著性,同时考虑了静态显著性,因此可以直接生成时空显著性估计。
那么这种结构有什么优点呢?
①将动态显著性和静态显著性明确的插入到动态显著性网络中,而不是针对时空特征训练双流网络,也不用专门设计时空特征融合网络。
②该模型代替以前使用光流图像的方法直接从相邻两帧之间提取时间信息,因此该模型有更高的计算效率。
三、合成视频数据
我们都知道,直接从一张图像导出视频序列是不可能的。因此我们可以用一对帧作为输入,而不是直接输入整个视频序列,这样的话我们就可以利用已经标记好的图像数据去模拟一段非常短的视频序列(长度只有两帧)。
那么如何进行模拟呢?
首先我们知道相邻两帧的视频序列是比较连续的,因此我们也不能随意的从已经标记好的图像数据集中抽取两张,所以作者想到一个方法:就是对一张图片 I 进行各种变形或平滑变换,得到一帧图片 I’ 以此来模拟一组相邻帧的视频序列。
3.1合成视频数据图
我们首先考虑实际序列中的各种运动特性来初始化合成光流场(c),最终生成更加平滑并且更好模拟真实运动模式的光流场(f),根据f,可以从a和b中变形得到d和e。(生成不同的光流场图结合原来的图像生成不同的图像组合视频帧对)
从模拟 I 和 I’ 直接的对应关系开始是比直接推断相邻帧 I’ 容易的。设X=(x,y)表示点的位置,***那么 I 和 I’ 之间的对应关系就可以通过光流场V=(u,v)用 I(X) = I’ (X + V(X))***来表示。
光流场V能直接表示相邻帧之间的像素运动信息,因为每个像素移动后都有一个水平位移v和垂直位移u,这里设置这两个位移的方法比较像,因此就只介绍如何设置垂直位移。
过程
将图片 I 分割成一组超像素 R,根据实际标签G可以进一步把R分为前景F和背景B,为了模拟背景的运动模式,可以随机从B中选出10%的背景区域S,他们会在-d,d]中随机移动,(d=h/10),B中其他区域设置为0(其余背景不移动)。前景区域的运动比较紧凑,但不同前景区域的移动幅度也不同(例如一个人向前运动,但胳膊和腿可能运动不一样)。因此可以直接从[-d,d]中取m作为前景区域的主要运动模式,之后在[m-d/10,m+d/10]中随机移动,这样就可以体现出前景区域之间的差异,确定运动矢量。
四、总结
本论文巧妙的利用视频序列是由图片组成,因此可以用已经标记好的图片数据集对其中的图片进行运动修改,得到另一张图片与原图组成一对两帧的视频序列。
本文把静态模块得到的显著性特征作为输入到动态模块,在动态模块,由于我们是根据一定的运动得到一对视频帧,因此可以不需要光流计算,得到它们的运动信息;并且静态特征也输入到了动态模块,因此在该模块可以获得动态特征和静态特征。