视频显著性检测----《Flow Guided Recurrent Neural Encoder for Video Salient Object Detection》

        本文将重点与大家探讨和分享发表于CVPR2018上的视频显著性检测文章–《Flow Guided Recurrent Neural Encoder for Video Salient Object Detection》,在讨论之前,先带领大家简单回顾一下什么是显著性检测,目前图片显著性检测的常用方法,以及将显著性检测从图片过渡到视频有哪些不同点或难点,希望可以给像我一样刚接触显著性检测的同学一点点帮助。

1. 什么是显著性检测

        简单的说,显著性检测就是模仿人眼机制,在一副图片或一段视频中,找到那些会一下吸引住我们眼球的区域,这些区域就是显著性区域,这个过程就是显著性检测。
视频显著性检测----《Flow Guided Recurrent Neural Encoder for Video Salient Object Detection》_第1张图片
        对上面这幅图片,我们是不是一眼看到的就是那个红色的苹果,因为苹果的形状,颜色与周围背景形成了鲜明的对比。这就是我们人眼对显著性的检测。用计算机视觉技术实现显著性检测同样,关键也还是在图像对比度的分析上。

2. 图片显著性检测

        显著性检测方向在静止图片上的研究吸引了众多学者的研究热情,目前也发展的相对成熟。
阶段I:
        常规传统方法,包括:
        自底向上的检测方法,利用低水平的图像特征;
        自顶向下的检测方法,利用高水平的图像特征;
阶段II:
        深度学习方法
        目前深度学习方法已经深入到计算机视觉技术的各个领域。在显著性检测方向,深度学习技术的发展也与其他领域表现出了极大的相似性。目前主要的方法主要分为2种:
        1是将图片分成众多小区域,对每个独立区域做特征提取后进行显著性推断;太耗费时间和计算量。
        2是直接对原始输入原始图像进行特征学习,经过网络回归得出显著图预测结果。

        看到这样的技术演变,大家有没有联想到目标检测领域的发展?从最初RCNN这样分候选区依次判断的两阶段方法,到直接对原始图回归出目标类别和位置的单阶段方法,是不是有相似的地方?可以说,计算机视觉各领域其实是融会贯通的。

3. 视频显著性检测

        前面的讨论,相信大家都对显著性检测有了大体的了解。目前对图片的显著性检测也确实达到了比较高的水平。然而,将该任务从静止图片过渡到视频却依旧是一个不小的挑战。
首先,大家简单想,视频相对于图像,究竟有什么区别?很显然,视频是连续的,流动的,而图片是静止的;
图片展示的内容是固定的,比如是一个人在哭,但同样是一个人在哭的画面,放到视频里,就有可能是喜极而泣,也有可能是悲伤而哭。所以,视频的理解是需要上下文信息的。

总结下:
二者的不同点:
        对图片来说:显著性检测的关键是对图片区域对比度的分析。
        对视频来说:显著性检测的关键是对连续画面的对比度变化进行分析。
视频问题具体难点包括:
        (1) 镜头或镜头中物体的移动对检测造成干扰
        (2) 视频中连续画面对比度的剧烈变化同样加大了检测的难度

        那些在图片显著性检测上表现良好的网络模型和算法,使用在视频上往往会有效果上的退步(如下图)。究其原因,还是因为针对图片的检测方法,没有考虑到上述两个难点。
视频显著性检测----《Flow Guided Recurrent Neural Encoder for Video Salient Object Detection》_第2张图片
        后来,陆续有学者针对视频方向,在原有的静止图像显著性检测上做出了改进。如下图所示,该篇论文作者使用两个模块完成检测任务。通过将单一视频帧经过静止图片显著性检测模块的输出结果,与视频连续帧图片对的图像做连接,共同作为输入进动态显著性检测网络,该网络的输出就为最终检测结果。
视频显著性检测----《Flow Guided Recurrent Neural Encoder for Video Salient Object Detection》_第3张图片
参考文献:《Video Salient Object Detection via Fully Convolutional Networks》
https://arxiv.org/pdf/1702.00871.pdf

创新点:
        该网络模型加入了连续的视频帧图片,使网络不再将每帧图像当作独立静止个体看待,而是利用了连续时间的上下文特征,让网络具备了一定的对空间和时间显著性线索的学习。一定程度上缓解了难点2—视频中连续帧画面的对比度变化。
不足之处:
        (1) 难点1—镜头或物体运动造成的检测干扰没有被处理。
        (2) 连续帧画面的显著性特征学习不充分,因为普通卷积神经网络没有记忆模块。(提到对时间序列的记忆,是否想到自然语言处理中常用的RNN,LSTM模型?)

        ok,至此,我们已经大致了解了视频显著性检测的难点,以及现存部分方法的一些不足,而这,也是我们本篇博客重点介绍论文的研究动机。让我们一起来看下是如何解决这些问题吧。

4. 论文解读

        “It works by enhancing the temporal coherence of the per-frame feature by exploiting both motion information in terms of optical flow and sequential feature evolution encoding in terms of LSTM networks.”------引自论文摘要
概括说:在原有静止图片显著性检测的基础上,融入了物体或相机的相对运动信息与时域上的上下文信息。
具体为:
        为了解决难点1,作者使用光流法(FlowNet) 对物体或镜头移动导致的干扰做了补偿。
        为了解绝难点2,作者使用带有记忆模块的LSTM网络结构(ConvLSTM),对视频画面在时间序列上的显著性线索做了充分的学习。
        这两部分相结合,着重加强了每帧图片的时间相关性,在思想上与传统静止图片的显著性检测有了本质的区别,在实现上又很容易在静止图片的检测模型框架上扩展而成(是一个通用的视频显著性检测框架)。

关键词:光流法 LSTM网络结构

该部分的介绍顺序如下,4.1简单介绍光流法,4.2介绍LSTM网络结构,4.3介绍论文中二者的具体结合。

4.1 光流法

        通俗来讲,当我们处于快速行进的汽车中,看到两旁的行人匆匆闪过,这个其实就是光流。

        光流就是运动物体在连续图像序列中相邻帧的像素的对应变化关系,即像素的瞬时速度,通过对上一帧和当前帧像素信息的变化关系,进而可以获得运动物体的运动信息。可有效的描述基于相机,相机中物体或二者的共同作用引起的对象移动。
        光流场:一副图像所有像素的运动的瞬时速度和瞬时方向就构成该图像的光流场。
        到这里,相信大家就明白为什么作者要引入光流这个概念了。那么,光流要如何获得呢?

        光流的计算最初根据图像的梯度等特征信息,后来随着深度学习的复兴,利用神经网络计算光流场的模型结构FlowNet得以提出。FlowNet结构如下图所示:其中FlowNetSimple是一种简单实现,即直接将两张图片堆叠起来作为输入送人网络模型。其二是FlowNetCorr,对两张图片分别做特征提取之后在进行特征融合,最终预测光流场。
视频显著性检测----《Flow Guided Recurrent Neural Encoder for Video Salient Object Detection》_第4张图片
两种结构都使用了修正模块。如下图所示:
视频显著性检测----《Flow Guided Recurrent Neural Encoder for Video Salient Object Detection》_第5张图片
参考文献:《FlowNet: Learning Optical Flow with Convolutional Networks 》 https://arxiv.org/abs/1504.06852v2

4.2 LSTM结构

        LSTM结构的介绍大家可以参考另一篇博文,介绍的很详细,https://www.jianshu.com/p/5e5d821b3844 由于时间关系,我这边就不介绍了。
        CovLSTM是原始全连接LSTM的发展。但其核心思想始终保持一致。也是通过输入门,输出门和遗忘门控制特征的学习。每个节点都有记忆状态和隐藏状态,隐藏状态的值取决于当前输入,记忆存储内容和上一状态的编码值。
        最终的结果就是最后一个隐藏层的输出结果。
视频显著性检测----《Flow Guided Recurrent Neural Encoder for Video Salient Object Detection》_第6张图片
参考文献:《Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting 》https://arxiv.org/abs/1506.04214v1

4.3 论文中具体实现

FGRNE网络结构如下图所示:
视频显著性检测----《Flow Guided Recurrent Neural Encoder for Video Salient Object Detection》_第7张图片
        可以看到,FGRNE网络模型是在静态图像显著性检测DSS的基础上进行拓展。包括:基于LSTM的光流更新模块,基于光流的特征变形模块,基于LSTM的时间相干性特征编码模块。具体为:
        (1) 加入FlowNet获得视频中连续帧图片的光流图
        (2) 逆序传入LSTM结构对光流图进行修正,最后经过1×1大小卷积核得到最终的光流图
        (3) 将光流图与特征提取模块提取出的特征进行整合,对特征做变形处理(根据光流图做特定位置的双线性插值技术)【实现对相机或物体运动的补偿,一定程度解决难点1----相机或物体的相对运动造成的干扰】
        (4)将补偿后的特征送如LSTM结构,最后一步的隐藏层的输出经过后面的解码器后即为显著性检测结果【LSTM的引入实现了网络的记忆功能,更好在时间域捕捉特征对比度演化,增强了特征的时间相干性,一定程度上解决了难点2】

5. 总结

        FGRNE网络是建立在原来图像显著性检测的网络模型基础上的,是对图像显著性检测模型的继承和发展。具体来说,是根据视频问题的特性和难点,加入了针对性的模块。从发现问题,到解决问题,研究动机和思路非常清晰。
        FGRNE网络引入了光流法和LSTM结构,为网络增加了“修正”和“记忆”功能,是从图像显著性检测过渡到视频的通用模型框架。为未来的相关研究奠定了基础,指明了方向。

你可能感兴趣的:(CV--显著性检测)