《Flow Guided Recurrent Neural Encoder for Video Salient Object Detection》学习笔记

提出了一种基于流引导的递归神经编码器(FGRNE)的端到端学习框架,用于解决视频显著对象检测问题。该框架能够有效提高帧间特征表示的时间连贯性,通过光流估计和特征变形补偿物体运动的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

近年来,随着GPU运算能力的日渐提升,深度学习(DL,Deep Learning)技术被广泛运用到了计算机工程的各个领域之中,尤其是在计算机视觉(CV,Computer Vision)方向。作为刚刚入门DL技术的新人,我通过对这篇文章的细读与总结,将其与之前学习到的机器学习知识进行有机结合,收获颇丰。在这里,我将从最基础的名词解释入手,由浅及深地剖析本文章的主旨与脉络。

一、显著性物体检测
1.1 概念

一个图像中检测出最能引起人的视觉注意的物体的区域的计算机视觉处理过程。

1.2模型评估:

一般认为,良好的显著性检测模型应至少满足以下三个标准
1)良好的检测:丢失实际显著区域的可能性以及将背景错误地标记为显著区域应该是低的;
2)高分辨率:显著图应该具有高分辨率或全分辨率以准确定位突出物体并保留原始图像信息;
3)计算效率:作为其他复杂过程的前端,这些模型应该快速检测显著区域。

二、LSTM神经网络
2.1 概念:

长短时记忆网络(Long Short Term Memory Network, LSTM),是一种改进之后的循环神经网络,可以解决RNN无法处理长距离的依赖的问题,目前比较流行。

2.2 思路

原始 RNN 的隐藏层只有一个状态,即h,它对于短期的输入非常敏感。
再增加一个状态,即c,让它来保存长期的状态,称为单元状态(cell state)。
在这里插入图片描述
把上图按照时间维度展开:

在这里插入图片描述

在 t 时刻,LSTM 的输入有三个:当前时刻网络的输入值 x_t、上一时刻 LSTM 的输出值 h_t-1、以及上一时刻的单元状态 c_t-1;
LSTM 的输出有两个:当前时刻 LSTM 输出值 h_t、和当前时刻的单元状态 c_t.
(该部分参考博客:[深入浅出] LSTM神经网络

三、FCN

一个一般的网络其实就是在计算一个一般非线性方程。如果一个网络只有卷积操作来计算一个非线性滤波器,那么这个网络我们就叫做全卷积网络(FCN),全卷积网络接受任意大小的输入,生成对应大小的输出。
(更详细的内容可以参考FCN以及全卷积网络

四、文章剖析
4.1 面临问题:

相比于图像显著性检测,视频显著性检测存在一些难点:物体或相机的运动以及视频中对比度的剧烈变化;与静止图像中的显着性检测相比,由于有效的时空建模的高度复杂性和缺乏大规模注释的视频数据集,检测视频显着对象更具挑战性。

4.2 方法简介:

基于以上问题,这篇文章的作者提出了流引导的递归神经编码器(FGRNE):一种用于视频显著对象检测的精确的端到端学习框架。它通过利用光流来获取信息,用LSTM网络来进行时序特征的演化编码,以此来增强每帧特征间的时间相干性。它可以被视为将任何基于FCN的静态显着性检测器扩展到视频显着对象检测的通用框架。

FGRNE(Flow Guided Recurrent Neural Encoder)

FGRNE架构由三个模块组成:运动计算和更新、运动引导特征变形以及时间相干特征编码。(如下图所示)

**FGRNE架构**
该架构首先利用FlowNet进行光流特征提取,然后逆序输入K帧至特征提取模型(DSS模型)对提取的特征进行修正。最后将修正后的特征送到另一个LSTM网络进行时间相干特征编码,最后进行回归分类即得显著性图。

运动计算和更新

作者将ConvLSTM与基于CNN的FlowNet结合起来,共同学习流动图并以相反的顺序重新定义。ConvLSTM的输出隐藏状态根据其自己的输入以及来自其先前输入的编码过去状态进行更新,其被表述为:
在这里插入图片描述
帧之间的流图映射计算ROi->j
在这里插入图片描述
其中C是ConvLSTM在其先前时间步骤的记忆单元状态。之后,ConvLSTM模块由输入门、忘记门和输出门组成,整体更新方程可以在(2)中列出,其中’*'表示卷积运算符,'◦’表示Hadamard产品和a(·)代表sigmoid函数。
在这里插入图片描述
为了用ConvLSTM更新光流场,LSTM层展开用于k流场的窗口,隐藏状态的大小设置为与输入流图相同。我们以相反的顺序依次将k初始运动流提供给ConvLSTM单元 。

运动引导特征变形

特征修正:将帧上的特征映射Nfea 变形为参考帧。补偿了由对象或相机运动引起的特征偏移。
在这里插入图片描述
其中WarpF i->j是指从第j帧到第i帧扭曲的特征映射。W(·)是双线性变形函数,适用于要素图的每个通道的所有空间位置。它被实现为Nfea (Ij)的双线性插值,位于光流ROi->j的所需位置。

时间相干特征编码

上述操作仍未能解决视频连续动态演化以及时域中外观对比度的演变等问题,因此,作者利用了另一个ConvLSTM进行顺序特征编码。有基于此,式(1)中的状态更新功能可以重新写为:
在这里插入图片描述
其中,最后一个时间k+1的隐藏状态就是我们最终的特征编码。

4.3 实验结果

作者在Freiburg-Berkeley运动分割(FBMS)数据集和DAVIS数据集上进行了方法的评估。将整个SegTrackV2,FBMS和DAVIS的训练集合作为训练集,并在DAVIS和FBMS的测试集上评估训练的模型。
在这里插入图片描述

4.4 结论

在本文中,作者提出了一个准确的端到端框架,用于视频显著对象检测。该框架旨在改善深部特征表示的时间相干性。它可以被认为是将任何基于FCN的静态显着性检测器扩展到视频显着对象检测的通用框架,并且可以从未来基于图像的显着对象检测方法的改进中容易地获益。

五、创新部分

本文的创新部分有:
1)引入了流引导的递归神经编码器(FGRNE)框架来增强每帧特征表示的时间相干性建模,并且可以利用它来将任何基于FCN的静止图像显着性检测器扩展到视频显着对象检测。
2)在FGRNE框架中结合光流网络来估计每个帧的运动,这进一步用于特征变形以明确地补偿对象的运动。
3)在FGRNE中利用ConvLSTM进行顺序特征编码,这可以捕获时域中外观对比度的演变,并且与特征变形相辅相成,以改善视频显着对象检测的性能。

六、学习体会

本文通过引入框架FGRNE来增强时间相干性,结合光流网络来补偿物体运动产生的影响,在FGRNE中利用ConvLSTM进行顺序特征编码来改善由视频中对比度的剧烈变化产生的影响。
从思路上来讲,本文从图的显著性检测到视频显著性检测增加了时间信息,将以前常用的FCN换为LSTM来引导运动特征提取,并且在结合之前成果----FlowNet的特征提取以及光流计算----的基础上,提出了用第二个LSTM网络来增强时间一致性。

参考文献:
  1. 《Flow Guided Recurrent Neural Encoder for Video Salient Object Detection》
  2. 显著性检测综述(完整整理)
  3. [深入浅出] LSTM神经网络
  4. FCN
  5. 全卷积网络
### 密度图引导的目标检测方法概述 密度图引导的目标检测是一种有效的方法,尤其适用于处理高密度场景中的目标检测问题。这种方法的核心在于通过生成一张描述目标分布的密度图来辅助后续的对象检测过程[^1]。具体来说,密度图可以提供关于目标位置及其相对密集程度的信息,从而帮助模型更好地聚焦于潜在的目标区域。 #### 方法实现的关键步骤 以下是基于密度图引导的目标检测方法的主要组成部分: 1. **密度图生成** 使用特定算法(如卷积神经网络或其他回归技术),从训练数据集中生成目标的密度图。这些密度图通常是一个二维矩阵,其值反映了每个像素处目标的数量或概率[^4]。对于航拍图像而言,由于可能存在大量小型目标(如车辆、行人等),因此精确建模目标的空间分布尤为重要。 2. **聚类区域生成** 基于生成的密度图,采用一种由密度映射引导的聚类区域生成算法,将输入图像分割为若干子区域。此过程中会考虑对象的实际尺寸以及它们之间的距离关系,确保裁剪出的子区域内包含合理数量和规模的目标。这种策略不仅能够减少计算复杂度,还能提升对小目标的检测能力。 3. **多尺度特征提取与融合** 针对不同大小的目标,设计专门的网络结构以增强模型捕获多尺度信息的能力。例如,在某些研究中提到过增加高级语义特征的感受野并细化空间细节的做法可以帮助改善多尺度目标检测的效果[^3]。此外,还可以借鉴其他工作提出的ScaleNet组件动态调整感兴趣区域(ROI) 的形状参数,进一步优化最终预测质量。 4. **后处理阶段——结果融合** 完成上述各步之后,需把来自各个局部窗口的结果重新拼接回原图坐标系下形成全局范围内的检测框集合。与此同时也要注意解决可能存在的重复标记问题 (Non-Maximum Suppression),保证输出干净整洁无冗余。 #### 示例代码片段 下面给出一段简单的伪代码展示如何利用预估得到的density maps来进行object proposals generation: ```python import numpy as np from skimage import measure def generate_proposals(density_map, threshold=0.5): """ Generate object proposal regions based on the density map. Args: density_map (numpy.ndarray): A 2D array representing the estimated number of objects per pixel. threshold (float): Threshold value to binarize the density map into foreground/background masks. Returns: list[tuple]: List of bounding box coordinates [(xmin, ymin, xmax, ymax)]. """ binary_mask = density_map > threshold # Find connected components in the mask label_image = measure.label(binary_mask) props = [] for region in measure.regionprops(label_image): minr, minc, maxr, maxc = region.bbox props.append((minc, minr, maxc, maxr)) return props ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值