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

article/2025/10/12 8:58:13

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

1. 什么是显著性检测

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

2. 图片显著性检测

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

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

3. 视频显著性检测

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

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

        那些在图片显著性检测上表现良好的网络模型和算法,使用在视频上往往会有效果上的退步(如下图)。究其原因,还是因为针对图片的检测方法,没有考虑到上述两个难点。
使用图片显著性检测模型DSS测试视频检测效果
        后来,陆续有学者针对视频方向,在原有的静止图像显著性检测上做出了改进。如下图所示,该篇论文作者使用两个模块完成检测任务。通过将单一视频帧经过静止图片显著性检测模块的输出结果,与视频连续帧图片对的图像做连接,共同作为输入进动态显著性检测网络,该网络的输出就为最终检测结果。
双模块实现视频显著性检测
参考文献:《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,对两张图片分别做特征提取之后在进行特征融合,最终预测光流场。
FlowNet 两种结构
两种结构都使用了修正模块。如下图所示:
FlowNet修正模块
参考文献:《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的发展。但其核心思想始终保持一致。也是通过输入门,输出门和遗忘门控制特征的学习。每个节点都有记忆状态和隐藏状态,隐藏状态的值取决于当前输入,记忆存储内容和上一状态的编码值。
        最终的结果就是最后一个隐藏层的输出结果。
LSTM
参考文献:《Convolutional LSTM Network: A Machine Learning Approach for Precipitation Nowcasting 》https://arxiv.org/abs/1506.04214v1

4.3 论文中具体实现

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

5. 总结

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


http://chatgpt.dhexx.cn/article/PBbEyaQI.shtml

相关文章

计算机视觉——图像视觉显著性检测

目录 系列文章目录 零、问题描述 一、图像显著性检测 1.定义 2.难点 二、常用评价标准和计算方法 1.综述 2.ROS曲线详述 2.1 混淆矩阵 2.2 ROC曲线简介 2.3 ROC曲线绘制及其判别标准 2.4 ROC曲线补充 三、Fast and Efficient Saliency (FES) 1.算法简介 2.项目导…

显著性检测后处理

将显著性检测图像后处理,绘出一个矩形框,方便使用 先通过边缘检测,然后通过opencv接口实现 结果如下: # --coding:utf # -8-*- import osimport cv2 as cv import numpy as np# canny边缘检测 def canny_demo(image):t 50cann…

基于深度学习的视频显著性检测学习(入门)

一、传统的视频显著性检测 什么是视频显著性检测呢? 我的理解是检测某一段视频的每一帧图片的显著性区域,那这样理解的话就相当于多个图片的显著性检测,所以他是依赖于输入视频帧的对比度、梯度以及纹理来进行相关计算。但既然是视频显著性检…

显著性检测—学习笔记

视觉显著性旨在模仿人类视觉系统选择视觉场景的某个子集的能力。而显著性物体检测(SOD)则侧重于检测场景中吸引最多注意力的物体,然后逐像素的提取物体的轮廓。SOD的优点在于它在许多计算机视觉任务中均有广泛的应用,包括&#xf…

显著性检测

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_32493539/article/details/79530118 转载请附链接,注明出处。 显著性对象检测综述…

在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具

最近发现一个超好用的“在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具”。 链接在此奉上:在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具 很好的一点就是我们只要QQ登录后,就可以记住请求地址,包括请求参数,包括请求co…

https协议的接口测试

用jmeter测试https接口: 和传统的http协议套路不太一样. 注意细节: 1、取样器正常选择http请求,端口号:为443(具体根据接口文档我刚开始用的80端口所以错了) 2、请求方法,一定一句接口文档&…

接口测试HTTP请求

一、Get请求与Post请求的区别 1.get请求没有请求体,post请求有请求体 2.get请求的参数(需要传递的数据)要放在URL中发送。大小有限制 post请求的参数可以放在URL后传递,也可以放在请求体中(大小不受限制&#xff09…

Jmeter进行http接口测试,这一篇就搞定

jmeter-http接口测试脚本 jmeter进行http接口测试的主要步骤 (1.添加线程组 2.添加http请求 3.在http请求中写入接口的URL,路径,请求方式,参数 4.添加查看结果树 5.调用接口,查看返回值) 针对接口添加…

http接口测试——Jmeter接口测试实例讲解

一、测试需求描述 1、 本次测试的接口为http服务端接口 2、 接口的主要分成两类,一类提供给查询功能接口,一类提供保存数据功能接口,这里我们举例2个保存数据的接口,因为这两个接口有关联性,比较有代表性;…

http接口测试工具-Advanced-REST-client

非常好用的http接口测试工具 相信作为一个java开发人员,大家或多或少的要写或者接触一些http接口。而当我们需要本地调试接口常常会因为没有一款好用的工具而烦恼。今天要给大家介绍一款非常好用、实用且方便的http接口测试工具。本人认为这是目前我用过的最好http…

http接口测试:了解协议、请求方法、响应状态码

http接口测试:了解协议、请求方法、响应状态码 接口在各个系统间的重要性无需重申,主要体现在外部系统与系统之间以及内部各子系统之间的交互点。通过这些特定的交互点和一些特殊的规则标准(协议)来进行系统数据之间的交互&#…

如何用postman进行http接口测试?好好看好好学

目录 优点: 1、什么是POSTMAN 2、新建一个项目 2、新增一个用例 3、添加请求信息 4、post请求参数 5、添加头信息 6、预处理和结果检查 7、全局变量与环境变量 8、导出用例为代码 9、批量执行用例 HTTP的接口测试工具有很多,可以进行http请求…

如何用postman进行http接口测试,这篇文章绝对会颠覆你的认知

目录 前言 优点: 1、什么是POSTMAN 2、新建一个项目 2、新增一个用例 3、添加请求信息 4、post请求参数 5、添加头信息 6、预处理和结果检查 7、全局变量与环境变量 8、导出用例为代码 9、批量执行用例 前言 HTTP的接口测试工具有很多,可以进…

http接口测试工具

http接口测试工具 工具图形界面特点postmanY图形界面,功能齐全curlN可用于下载,但更侧重于模拟各种http请求,与网站API的交互wgetN专注于下载,支持断点,支持递归(可用于全站下载)httpieN采用Pt…

接口测试——HttpClient

这里写目录标题 Get请求Post请求HttpClient设置代理FastJson的应用示例常用的代码块正则表达式(提取)封装后的一个demo HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包…

jmeter之接口测试(http接口测试)

基础知识储备 一、了解jmeter接口测试请求接口的原理 客户端--发送一个请求动作--服务器响应--返回客户端 客户端--发送一个请求动作--jmeter代理服务器---服务器--jmeter代理服务器--服务器 二、了解基础接口知识: 1、什么是接口:前端与后台之间的…

http post请求接口测试

http post请求接口测试 单纯的http post请求,请求参数为json格式的接口测试总结。 方法一Postman(推荐): 最简单的方法是用Postman (可做post请求模拟工具用)。真的超级简单,下面是操作方法&…

秒懂HTTPS接口(接口测试篇)

文章目录 一、前言二、具体实现1、引包2、采用绕过证书验证测试HTTPS接口3、采用设置信任自签名证书测试HTTPS接口4、验证数据库 三、完整项目结构 一、前言 下面我们来测试下我们秒懂HTTPS接口(实现篇)写的HTTPS接口(Java版) 技术选型&…

postman进行http接口测试

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。 HTTP的接口测试工具有很多&a…