Semi-Supervised Video Salient Object Detection Using Pseudo-Labels 论文详读

Semi-Supervised Video Salient Object Detection Using Pseudo-Labels ——使用伪标签的半监督式的重要目标(显著目标)检测。

abstract

       虽然近些年基于深度学习的视频目标检测方法与无监督学习的方法相比效果有着长足的进步,但是这些数据驱动的方法依赖大量被详细标记的视频数据来区分每一个目标的类别。

       本文基于refinement网络和光流信息,提出一个利用稀疏的标记帧生成像素级伪标签的方法。通过利用这些伪标签和部分手动标记的数据,突出目标检测器从中学到空间和时间信息并进行对比推断和相关的增强,从而产生准确的突出图。

       经过在VOS、DAVIS和FBMS三个标准进行对比发现,本文算法比其他的全监督方法相比性能更好。

Introduce

       突出目标(Salient Object)也就是对于人来说,在视觉观感上与其他目标区别最大的、最易注意到的目标。

       与人眼注视预测(eye fixation prediction)相比,突出目标检测(salient objection detection)主要关注的是精确的分割出大部分突出目标的轮廓,其检测结果可以被用来进行目标分割、视觉跟踪、视频压缩和视频概况(video summarization),而eye fixation prediction的关注点在于定位人眼聚焦的位置。

       近些年由于深度学习的发展使得突出目标检测得到长足的发展,但是深度学习方法需要大量被逐帧标记的数据,这是非常耗时耗力的,另一方面,因为视频片段中会有很多帧的内容非常相似,为了消除标记噪声的影响,标记者需要仔细检查标记前后的连续性和一致性。由此标记的质量很难被保证。

       尽管现有的大量无监督学习方法不需要大量的训练样本,仅使用手动制作的低维特征(颜色、梯度、对比度等),但是这些算法的准确率和效率都不够高。

       Weakly supervised salient object detection using image labels中提到了无监督学习方法的缺点,并指出了基于深度学习的方法缺少标记数据的问题(随后会针对该篇论文更新博文),他们尝试结合粗糙的激活图(activation map)和显著性图(saliency map)来作为像素级的标记数据用于训练(其中activation map由分类网络产生,saliency map由无监督方法产生)。但是该方法不适用于视频突出目标检测任务,因为视频中目标的运动和外观的改变主要需要关注的是人类注意力的改变而不是目标类别的变化。除此之外,在缺少时间线索的稀缺的标记帧的情况下,为了生成具有时间一致性的saliency map而训练视频突出目标检测器是非常困难的。

提出本文算法的原因

       通过观察,发现视频的邻近帧在高采样率下存在微小的不同。所以推测不需要对所有的帧进行标记,因为一些帧的标记信息可以利用运动信息估计得到。并且最新的研究成果表明,训练好的CNN模型可以修正一些存在于训练样本中的手动标记所产生的错误。

       因为上述的原因提出一个利用带有伪标签的无标记帧和少量标记帧、半监督的视频突出目标检测算法。使用根据少量标记帧生成的伪标签,为saliency map训练一个具有时空一致性的、基于视频的卷积网络。

模型

       首次提出一个基于残差链接的细化网络RCRNet来提取空间信息,并通过一系列基于细化操作的上采样生成一个具有高分辨率的saliency map。

       然后RCRNet网络装备了一个非本地增强循环模块来增强其结果saliency map的时空一致性。

       为了生成伪标签,使用一个预训练的FlowNet 2.0网络在标记帧和非标记帧之间进行运行估计,并把邻近帧的标记传播给不含标记的帧。

       与此同时,另一个RCRNet网络接收多通道数据(包含RGB通道、运动估计、传播的正确标记)作为输入,生成连续像素的伪标签。使用上述数据作为输入是因为少量的含标记数据中时间信息较为匮乏。
在这里插入图片描述

       可以看出本文的算法可以生成合理和连贯的伪标签,甚至可以提升边缘细节、克服帧之间标记模棱两可的情况(如b中所示,GT mask邻近帧之间对同一个物体的划分并不相同,而本文算法不存在这个问题)。

本文的几个contribute:

  1. 使用结合NER的RCRNet可以生成具有时空一致性的saliency map;
  2. 进一步提出了一个基于flow-guided的伪标签生成器,可以捕获视频中帧内的连续性,并基于少量的含标记帧生成伪标签;
  3. 利用伪标签和少量手动标记的帧,本文的方法可以达到当前较为顶尖的效果。

相关工作

显著目标检测Salient Object Detection

       因为近些年深度学习的发展,使得显著目标检测技术得到长足的发展,全连接网络FCN及其衍生的各种方法因为其具有的端到端的特征学习及其计算的高性能,成为目标检测的主流方法。但是FCN因为没有考虑到时空信息、帧之间的运动和外观信息,所以并不适用于视频目标检测。

       因为FCN的不足,近些年开始使用CNN来解决视频目标检测问题,但是这些方法都需要依赖大量被标记的数据,而大部分方法没有去减少对密集标记数据的依赖。

视频目标分割

       视频目标分割可以分为两类——一类是半监督的视频目标分割,其目标是追踪给定的目标对象,另一类是无监督视频目标分割,其主要目标是自动检测整个视频中最主要的目标。

       需要指出的是,无论是监督的目标分割还是半监督的目标分割,其训练过程都是全监督的,两者的区别只存在于测试过程中。

       本文中半监督方法的主要目的是为了减少对密集标记数据的依赖,这一点与无监督目标分割很类似。近些年的无监督目标分割方法,如双流结构(two-stream architecture)、FCN、RNN等主要依赖深度学习,并会因为全监督的训练过程需要大量密集标记的数据。

本文算法细节及实现

本文算法包含三个主要部件:

  1. 一个残差链接的细化网络,其主要作用是提供一个显著特征(salient feature)提取器和一个像素级(pixel-wise)的分类器,用来从原始输入图像中提取空间显著特征,并通过低维特征连接到高维特征来把特征编码为像素级的saliency map;
  2. 一个非本地增强的循环模块,其主要作用是增强特征的时空一致性;
  3. 一个流引导伪标签生成模型(FGPLG——flow-guided pseudo-label generation model),其中包含一个改进的RCRNet(基于残差链接的细化网络 residual connected refinement network)和一个现成的FlowNet 2.0模型,主要用来在稀疏标记的视频帧之间生成伪标签。

       利用含有大量的伪标签和少量稀疏标记的数据,包含NER模块的RCRNet可以捕获时空信息,并且可以为连续的输入帧生成准确的saliency map。

残差链接的细化网络 Residual Connection Refinement Network

       通常的深度卷积神经网络可以根据图像中的低维特征如颜色、纹理等,利用堆叠的卷积层和下采样操作,提取出高维特征。下采样操作可以通过卷积层,逐渐增加接收域最终获取到抽象的特征表示,但是很多的空间细节损失了,导致像素级的预测方法对边缘细节和小型对象的处理结果较差。

       受 Instancelevel salient object segmentation的启发,使用一个细化结构来吸收低维信息,以实现在解码过程中进行像素级的显著性目标预测(saliency inference)。

在这里插入图片描述

       如图所示,RCRNet包含一个空间特征提取器 N f e a t N_{feat} Nfeat和一个像素级的分类器 N s e g N_{seg} Nseg,两者中间使用位于不同层次的三个连接层进行连接。具体的计算过程为: S = N s e g ( N f e a t ( I ) ) S=N_{seg}(N_{feat}(I)) S=Nseg(Nfeat(I)),其中 I I I为输入帧。

  1. 空间特征提取器基于ResNet-50模型,使用ResNet-50中的前五组layer,并且删除第五组的下采样操作以减少空间信息的损失(前文中提到了,随着卷积层的增加,接收域随之增加,部分空间信息也损失了)。

    为了获得相同大小的接受域,使用比率为2的膨胀卷积操作(dilated convolution)取代第五组layer中的卷积层。

    然后在第五组layer上附加一个多孔空间金字塔池化模块(ASPP atrous spatial pyramid pooling 出自Rethinking atrous convolution for semantic image segmentation一文,后期会对该论文进行概述),从而获取图像级的全局上下文信息和多分辨率的空间上下文信息。

    最后,该空间特征提取器生成一个256通道、原始输入分辨率1/6的特征。

  2. 像素级分类器由三个级联的细化模块构成,每个模块通过一个连接层与空间特征提取器链接,其作用是缓解下采样过程中造成的空间信息损失所带来的影响。

    每个细化模块把前一个自下而上的输出特征图及其自上而下流链接的特征图作为输入,这两个特征图的分斌率要一致,所以必要的时候需要进行非线性插值的上采样操作。

    细化模块首先将特征图进行级联,然后将其传入一个128通道的3×3的卷积层。

    残差瓶颈结构(residual bottleneck architecture或残差跳跃连接层residual skip connection layer)作为连接层来连接低维和高维特征图。它对低维特征图进行下采样,使得通道数由 M M M下降为 N = 96 N=96 N=96并且为细化模块提供更多的空间信息。

    残差学习使像素级的分类器与预训练的空间特征提取器可以在不破坏双方原有结构的前提下进行连接。

非本地增强的循环模块non-locally enhanced recurrent module

       对于输入的连续视频帧 I i , i = 1 , 2 , . . T I_i,i=1,2,..T Ii,i=1,2,..T,视频显著目标检测的目的是对每一帧生成对应的显著性图 S i , i = 1 , 2 , . . T S_i,i=1,2,..T Si,i=1,2,..T。即便RCRNet针对空间显著性学习进行了加强,但其仍旧缺乏对视频帧的时空建模。所以提出了非本地增强时态模块(怎么翻译都感觉怪怪的,原文为non-locally enhanced temporal module),其中包含两个non-locally模块和一个ConvGRU(Convolutional Gated Recurrent Unit,其中GRU是2014年提出的,是RNN的一种,其作用与LSTM类似,效果也类似,但是更易计算)模块,主要目的是提高高维特征的时空一致性。

在这里插入图片描述

       首先把提取自输入连续帧 I i , i = 1 , 2 , . . T I_i,i=1,2,..T Ii,i=1,2,..T的特征 X i , i = 1 , 2 , . . T X_i,i=1,2,..T Xi,i=1,2,..T合并为X( X i = N f e a t ( I i ) X_i=N_{feat}(I_i) Xi=Nfeat(Ii)),然后把合并特征X传入non-locally模块,non-locally模块将某个位置的响应计算为输入特征图所有位置的加权和,它可以在输入视频帧之间建立时空连接。

       另一方面,当一个视频序列是由按时间顺序捕获的一系列场景组成时,对时间领域外观对比度的顺序变化进行描述是非常必要的。所以使用ConvGRU模块对特征的顺序变化进行建模。

       ConvGRU是传统全连接GRU的拓展,在input-to-state(输入到状态)和state-to-state(状态到状态)之间的连接中添加卷积结构。把 X 1 , X 2 , . . X t X_1,X_2,..X_t X1,X2,..Xt作为ConvGRU的输入, H 1 , H 2 , . . H t H_1,H_2,..H_t H1,H2,..Ht表示其隐藏状态(hidden state)。一个ConvGRU包括一个reset gate R t R_t Rt和一个update gate Z t Z_t Zt,通过这两个gate,可以实现选择性的记忆和遗忘,ConvGRU中所有的更新操作如下:

在这里插入图片描述

       其中 ∗ * 表示卷积操作, o o o表示矩阵的Hadamard product(哈达玛积), σ ( ⋅ ) \sigma(·) σ()表示sigmoid函数, W W W表示可学习权重矩阵。堆叠两个分别为前向和后向的ConvGRU模块来增强两个方向时空信息的交换。这个双向的ConvGRU模块可以记录过去和现在的序列:

在这里插入图片描述

       其中 H t f H_t^f Htf H t b H_t^b Htb表示前向和后向ConvGRU单元的隐藏单元(hidden unit), H t H_t Ht表示双向ConvGRU的最终输出结果。 X t X_t Xt表示non-local模块第 t t t 次输出的特征。

       实验证明添加non-local模块可以获得更好的效果,所以在双向ConvGRU的前后分别放置一个non-local模块来更好的增强时空信息的一致性。

基于流引导的伪标签生成模型 Flow-guided pseudo-label generation model

       尽管RCRNet加上NER可以产生时空一致性较好的saliency map,但是在仅有少量稀疏标记样本的情况下,其无法获取足够的时间信息,导致时空一致性急剧下降,为了解决这个问题,使用从少量稀疏标记数据获取的稠密的伪标签训练模型。

       对于输入的三个帧 I i , I k , I j I_i,I_k,I_j Ii,Ik,Ij,FGPLG模型的目的是根据ground truth G i G_i Gi G j G_j Gj生成帧 I k I_k Ik的伪标签——首先使用现成的FlowNet 2.0 模型生成由帧 I i I_i Ii I k I_k Ik的光流 O i → k O_{i→k} Oik,使用同样的方法获得光流 O j → k O_{j→k} Ojk,然后根据ground truth G i G_i Gi G j G_j Gj使用warping function获得帧 I k I_k Ik的标签。

       下图可以看出warp得到的结果仍旧含有很多的噪声,不能被用来直接作为监督信息进行训练。

在这里插入图片描述

       为了解决这个问题,使用另一个RCRNet来处理包含7个通道的帧 I k + I_k^+ Ik+(其中包含RGB通道)、两个warp结果 W G i → k WG_{i→k} WGik W G j → k WG_{j→k} WGjk、两个光流的大小 ∣ ∣ O i → k ∣ ∣ ||O_{i→k}|| Oik ∣ ∣ O j → k ∣ ∣ ||O_{j→k}|| Ojk,从而生成伪标签 P G k = N s e g ( N f e a t ( I k + ) ) PG_k = N_{seg}(N_{feat}(I_k^+)) PGk=Nseg(Nfeat(Ik+))

       其中光流大小的计算——先把光流正则化到[-1,1],然后再计算其欧几里得范数,从而获得光流的大小。

       实际的编码过程中,固定帧 I i I_i Ii I k I_k Ik I j I_j Ij I k I_k Ik的帧数为 l l l。综上,通过“三采样”的方法可以在较长的视频中生成大量高质量的伪标签用于训练。

处理过程总结

本文方法总的处理过程如下:

  1. 将视频分为大小为 l l l帧的片段,将相邻的两个片段记为 i → k i→k ik k → j k→j kj
  2. 使用现成的FlowNet 2.0 模型生成光流 O i → k O_{i→k} Oik O j → k O_{j→k} Ojk帧;
  3. 根据 I i I_i Ii I j I_j Ij的ground truth G i G_i Gi G j G_j Gj通过warp生成 W G i → k WG_{i→k} WGik W G j → k WG_{j→k} WGjk
  4. 将7个通道的帧 I k + I_k^+ Ik+(其中包含RGB通道)、两个warp结果 W G i → k WG_{i→k} WGik W G j → k WG_{j→k} WGjk、两个光流的大小 ∣ ∣ O i → k ∣ ∣ ||O_{i→k}|| Oik ∣ ∣ O j → k ∣ ∣ ||O_{j→k}|| Ojk传入包含NER的RCRNet网络进行下一步处理;
  5. 通过RCRNet的空间特征提取器生成一个256通道、分辨率为输入图像分辨率1/6的特征,并传入NER模块;
  6. 把多帧的特征进行合并,然后把合并特征X传入non-locally模块,non-locally模块将某个位置的响应计算为输入特征图所有位置的加权和,并将结果传入双向ConvGRU中;
  7. 双向ConvGRU模块对特征的顺序变化进行建模,得到的结果传入另一个non-locally模块,以便更好的增强时空信息的一致性;
  8. 将空间特征提取器和第二个non-locally模块的到的结果传入像素级分类器;
  9. 通过像素级分类器中的三个级联的细化模块,首先将特征图进行级联,然后将其结果传入一个128通道的3×3的卷积层进行处理,最终得到含伪标签的视频帧。

猜你喜欢

转载自blog.csdn.net/weixin_41963310/article/details/113871231