本文包含如下论文:
Fully Convolutional Networks for Semantic Segmentation(2015)
SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation(2016)
Clockwork Convnets for Video Semantic Segmentation(2016)
Semantic Video CNNs through Representation Warping(2017)
Deep Feature Flow for Video Recognition(2017)
Pyramid scene parsing network(2017)
Semantic Video Segmentation by Gated Recurrent Flow Propagation(2017)
CCNet: Criss-Cross Attention for Semantic Segmentation(2018)
ICNet for Real-Time Semantic Segmentation on High-Resolution Images(2018)
Low-Latency Video Semantic Segmentation (2018)
FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation(2019)
Gated-SCNN: Gated Shape CNNs for Semantic Segmentation(2019)
Every Frame Counts: Joint Learning of Video Segmentation and Optical Flow(2019)
Improving Semantic Segmentation via Video Propagation and Label Relaxation(2019)

文章目录

  • FCN 2015
    • 创新点
    • CNN VS FCN
    • Loss Function
    • 网络结构
    • 缺点
    • 是否End to End
    • 代码
  • SegNet 2016
    • Detail
    • Advantage
    • 结构
    • 代码
  • CCNet 2018
    • Why
    • 优点
    • 结构
      • CA模块原理
      • Affinity操作
      • 对D进行softmax操作
      • Aggregation 操作
      • RCCA ?
    • 代码
  • FastFCN 2019
    • What
    • 现状
    • GO
    • 模型
    • 代码
  • GatedSCNN 2019
    • Background
    • Idea
    • Key Parts
    • 损失函数
    • Dual Task Regularizer
    • Personal thinking
    • 代码
  • Semantic Video CNNs through Representation Warping 2017
    • 设计缘故
    • NetWarp
      • Flow Computation 光流计算
      • 光流的转化
      • 变形的表示 Wraping Representation
      • 表达的整合
    • 总结
    • 代码
  • Deep Feature Flow for Video Recognition 2017
    • Background
    • What
    • 图表
    • Deep Feature Flow
    • Conclusion
    • 代码
  • Low-Latency Video Semantic Segmentation 2018
    • Why
    • What
    • Framework Overview
    • Adaptive Selection of Key Frames
    • Adaptive Feature Propagation
    • 打个总结
  • Pyramid scene parsing network 2017
    • Why
    • Challenge
    • Abstract
    • What
      • Detail
    • Update - Deep Supervision for ResNet-Based FCN
    • 代码
  • ICNet
    • What
    • ICNet
      • 提速方向
      • 网络结构
      • CFF Cascade Feature Fusion
      • Cascade Label Guidance 级联标签指导
    • 代码
  • Every Frame Counts: Joint Learning of Video Segmentation and Optical Flow(2019)
    • Why
    • Background
    • How
    • 语义分割和光流相辅相成
  • Clockwork Convnets for Video Semantic Segmentation 2016
    • Two key observations
    • What
    • 相关工作
    • Key factor: Fast frame and slow Semantics
    • A Clockwork Network
    • Networks in Time
    • 代码
  • Improving Semantic Segmentation via Video Propagation and Label Relaxation 2019
    • Why
    • Abstract
    • Contriubtions
    • Related Work
    • Methodlogy
      • 视频预测
      • 图像-标签联合传播策略
      • 视频重建
      • 边界标签松弛
    • 代码
  • Semantic Video Segmentation by Gated Recurrent Flow Propagation 2017
    • WHy
    • Now
    • 相关工作
    • What
      • Spatio-Temporal Transformer Warping 空间暂时转移Warping
      • Gated Recurrent Units for Semantic Video Seg- mentation
    • 代码

本文按照计算机视觉领域语义分割的相关论文的时间顺序排列

语义分割的两大核心问题:What is this,Where is this?

FCN 2015

创新点

  • 不含全连接的全卷积,可适应任意尺寸输入
  • 增大数据尺寸的反卷积层,能够输出精细的结果
  • 结合不同深度层的结果的跳级结构,同时确保鲁棒性和准确性

CNN VS FCN

对于一般的分类CNN网络,如VGG和Resnet,都会在网络的最后加入一些全连接层,经过softmax后就可以获得类别概率信息。但是这个概率信息是1维的,即只能标识整个图片的类别,不能标识每个像素点的类别,所以这种全连接方法不适用于图像分割。
而FCN提出可以把后面几个全连接都换成卷积,这样就可以获得一张2维的feature map,后接softmax获得每个像素点的分类信息,从而解决了分割问题。

简而言之:FCN和CNN的区别在于FCN把CNN最后的全连接层替换成了卷积层,输出一张label好的图片。

Loss Function

损失函数是最后一层空间维度的总和,它的梯度是它每层空间组成梯度总和,所以在全图上的随机梯度将和基于最后一层的梯度下降结果一样。

网络结构

Combine the final prediction layer with lower layers with finer strides
Combining fine layers and coarse layers lets the model make local predictions that respect global structure

缺点

  • 分割的结果不够精细。图像过于模糊或平滑,没有分割出目标图像的细节
  • 因为模型是基于CNN改进而来,即便是用卷积替换了全连接,但是依然是独立像素进行分类,没有充分考虑像素与像素之间的关系
  • 但是忽略高分辨率的特征图肯定会导致边缘信息的丢失。
  • 除了训练的相关问题之外,解码器中复用编码器特征图的方式使其在测试时显存消耗也很大。

是否End to End

个人任务是黑盒的程度
非end-to-end方法:
目前目标检测领域,效果最好,影响力最大的还是RCNN那一套框架,这种方法需要先在图像中提取可能含有目标的候选框(region proposal), 然后将这些候选框输入到CNN模型,让CNN判断候选框中是否真的有目标,以及目标的类别是什么。在我们看到的结果中,往往是类似与下图这种,在整幅图中用矩形框标记目标的位置和大小,并且告诉我们框中的物体是什么。


这种标记的过程,其实是有两部分组成,一是目标所在位置及大小,二是目标的类别。在整个算法中,目标位置和大小其实是包含在region proposal的过程里,而类别的判定则是在CNN中来判定的。end-to-end方法:
end-to-end方法的典型代表就是有名的yolo。前面的方法中,CNN本质的作用还是用来分类,定位的功能其并没有做到。而yolo这种方法就是只通过CNN网络,就能够实现目标的定位和识别。也就是原始图像输入到CNN网络中,直接输出图像中所有目标的位置和目标的类别。这种方法就是end-to-end(端对端)的方法,一端输入我的原始图像,一端输出我想得到的结果。只关心输入和输出,中间的步骤全部都不管。

代码

FCN tensorflow

SegNet 2016

Detail

用于逐像素的语义分割的深度学习全卷积神经网络结构
编码网络和一个对应的解码网络,并跟随一个像素级别的分类层

Advantage

it improves boundary delineation 边界划分
it redeuces the number of parameters enabling end -to-end training
this form of upsampling can be incorporated into any encoder-decoder architecture

结构


ncoder交替采用conv+pooling,Decoder交替采用deconv+upsampling,用Softmax做像素分类。在Encoder-Decoder过程中,采用Pooling Indices(pooling时的位置信息)转移Decoder,改善了图像分割率。
最大池化可以实现在输入图像上进行小的空间位移时保持平移不变性。连续的下采样导致了在输出的特征图上,每一个像素都重叠着着大量的输入图像中的空间信息。对于图像分类任务,多层最大池化和下采样由于平移不变性可以获得较好的鲁棒性,但导致了特征图大小和空间信息的损失。图像分割任务中边界划分至关重要,而这么多有损边界细节的图像表示方法显然不利于分割。因此,在进行下采样之前,在编码器特征映射中获取和存储边界信息是十分重要的。如果推理过程中的内存不受约束,则所有编码器特征映射(在下采样后)都可以存储。在实际应用中,情况通常不是这样,因此我们提出了一种更有效的方法来存储这些信息。它只存储最大池化索引,即存储每个池化窗口中最大特征值的位置,用于每个编码器特征映射。

  1. 编码网络和VGG-16的卷积层相同
  2. 移除了全连接层
  3. 解码器使用从相应的编码器接受的max-pooling indices来进行输入特征图的非线性upsampling

解码网络中复用max-pooling indics的好处-池化索引:
4. 改善了边界划分
5. 减少了端到端训练的参数量
6. 仅需要少量的修改而可合并到任何编码-解码形式的架构

代码

Segnet Tensorflow

CCNet 2018

Why

远距离像素间具有一定的相关性,将这种上下文的信息融合,可以得到更加有效的feature map,提升模型的语义理解能力。
由于卷积操作只针对感受野内的像素进行操作,具有一定的local特性,常见的FCN网络很难提取到上下文语义信息和全局特征。因此non-local就应运而生。类似于注意力机制,针对每个像素点生成不同的权重值,对feature map进行加权处理。但是这样操作,计算量大大增加。于是本文就提出了一种十字交叉的注意力机制。如下图一所示,(a)即为non-local模块,(b)为criss-cross 注意力模块。其中有绿色的图就表示提取出的注意力机制权重。

为了生成密集的,逐像素的上下文信息,文中提到了一种利用单个特征图中所有其他像素点对目标像素点的响应值进行加权,以生成密集上下文信息的方法,即Non Local Network,但是该方法的计算十分复杂,时间复杂度和空间复杂度都在 O(HW)(H*W) , 其中 H,W 代表特征图的尺寸。在实际应用中,如果 H,W 过大,那么该模型运行过程中消耗的计算资源将会十分可怕。

我们又想获得密集的上下文信息,保持长距离的空间依赖性,又不想引入巨大的计算量,到底有没有这种好事呢?读了这篇文章,我们就知道,是有的。本文使用了两个 CCA 模块( 即RCCA )代替 Non Local 操作,在同样获得了密集上下文信息,保持长距离空间依赖性的同时,将时间复杂度和空间复杂度降低为 O(H+W-1)(HW). Non Local 和 CCA 的对比图如下:

在criss-cross attention module中,重复使用了两次criss-cross注意力机制,因为只使用一次,该像素点的只能与周围呈十字型的像素点进行信息交互,使用两次之后,较远处的像素点同样可以间接作用于该像素点。信息传播大致如下图二所示。相比与non-local,计算量大大减少。

优点

  • GPUmemory friendly
  • HIgh computational efficiency
  • The state-of-the art performance

结构

CA模块原理

RCCA 模块其实就是两个 CCA 模块串联而成。RCCA 作为一个独立的模块,输入和输出的尺寸一致,理论上可以嵌入在网络中的任意位置。实际应用中可以根据需要,结合具体的硬件条件,进行嵌入,是本文在进行分割任务时,嵌入 RCCA 模块后的模型示意图:

其中原始图像经过一个 CNN 基础网络,生成一个名为 X 的特征图,令其尺寸为 (C0 x W xH) , 经过一个11卷积对X进行降维,获得特征图H,其尺寸为(C x W xH) ,以此减少后续RCCA模块的计算量。其中CCA模块的具体结构如下:

H 经过三个 1
1 卷积层,分别生成特征 Q,K 以及 V,其中 Q,K 尺寸均为(C x W xH) ,为了对通道进行降维,减少计算量,使得C 小于 C ; V 的尺寸保持不变,仍然为(C x W xH ; 三个基础特征图准备好了以后,就可以开始 CCA 操作了:

Affinity操作

这个操作的目的是为了获取大小为W x H 的特征图中每一个像素点与其同行同列像素点的关系 ( 注意:这个操作获取的相互关系只跟位置有关,跟通道无关,下面会说明 ),具体操作如下图:


其中Qu 表示特征图 Q 中位置 u 处的特征向量 . Ωiu 表示特征图 Ω中位置 iu 处的特征向量现在对将 [公式] 与 [公式] 分别向量相乘,组成一个维度为 W+H-1 的新向量,对 Q 中的每个位置都进行这样的操作,即可以获得一个新的特征图,该特征图的尺寸为[(W+H-1)WH], 记为 D .

对D进行softmax操作

现需要对 D 进行 softmax 操作,由上知,D 的尺寸为 [公式],即对W+H-1 维度的特征向量进行 softmax . 上面说了,D 记录的是特征图中每个像素点与同行同列像素之间的关系,softmax 操作的目的是对这样的位置关系进行归一化,这样就得到新的特征图 A,使得每个位置的贡献度更明了,好理解的宝贝。

Aggregation 操作

如上,已经获取了位置间的相互关系,现即可生成一个新的通过位置关系加权的特征图。论文中写的感觉不是很好理解,稍加转换后进行说明,具体操作方式见下图:

RCCA ?

经过上面的运算,已经可以捕捉到垂直方向和水平方向长连接的上下文信息,但是这与我们想要的像素级别的密集程度相比,现在还稍显稀疏,针对这种情况,文中指出,只要紧接着 CCA 模块串联着再做一次就可以获得丰富的上下文信息。但是为什么只要再串联一个就可以了呢?文中也给了解释,下面我们可以分析一下。

在criss-cross attention module中,重复使用了两次criss-cross注意力机制,因为只使用一次,该像素点的只能与周围呈十字型的像素点进行信息交互,使用两次之后,较远处的像素点同样可以间接作用于该像素点。信息传播大致如下图二所示。相比与non-local,计算量大大减少。

代码

CCnet Pytorch

FastFCN 2019

What

新的联合上采样叫做联合金字塔上采样通过提取高层特征图信息到联合上采样问题中

现状

FCN
现有方法大多应用了全卷积神经网络(FCN)来完成这一任务,但是全卷积网络的原始网络是为图像分类任务设计的,通过逐步下采样(stride conv和池化层)得到一个富含语义信息但是分辨率很低的特征图,如下图所示,全卷积网络对原始图片进行五次典型的下采样得到原始图片1/32
EncoderDecoder
为了获得最终的高分辨率特征图,一些方法将原始的FCN作为编码器来获取深层语义信息,增加解码器模块以融合来自编码器的多各层次的特征图以获取高分辨率特征图,如下图所示,如Unet,SegNet
DilatedFCN
DeepLab方法一处FCN最后两层下采样操作并引入扩张卷积来保持特征图感受野不变,后跟一个多尺度的语义模块从而得到最终效果,如下图所示,其中扩张卷积在保持最终特征图的分辨率方面作用明显,大大提升了编解码语义分割方法的分割精度,然而正如摘要中提到,扩展卷积大大增加了计算复杂度和内存占用,限制了其在实时问题上的应用
其主要是通过空洞(扩展)卷积的方法来增大模型的感受野,从而达到保留图像更多结构信息的目的。但是这种方法会增大算法的计算复杂度并占用过多的内存空间。

GO

现今的语义分割模型一般会采用两种框架,一种是Encoder-Decoder模型,一种是采用扩展卷积的方法。
Encoder-Decoder模型来说,在Encoder下采样的过程中随着层数的加深,导致高层次的特征丢失了精细的图像结构信息,虽然在Decoder中人们通过不同的上采样方法来减少损失,但是依旧会使特征有丢失。
对采用扩展卷积的方法的模型来说,引入了扩展卷积方法使得模型感受野增大也会保留了图像中精细的图像结构信息,但是引入扩展卷积会使得计算复杂度和内存占用均大大增加,从而限制了其应用在很多实时的任务中。

模型

基于原版FCN作为主干网络,在主干之后,作者提出了新型上采样模块 JPU,该采样模块将最后三个特征图作为输入并生成了高分辨率特征图。然后使用多尺度/全局上下文模块来生成最终标签图。该模型的结构图如下所示:
而对于具体的JPU模型而言如下:

首先将FCN最后的三层特征图输进一个常规卷积块中,其主要目的是为了降低特征维度,使所有特征维度一致可以更好的融合信息并降低计算复杂度。随后将三个特征图进行上采样得到了一个联合上采样之后的特征表示,然后通过一个多尺度语义模块来捕捉不同尺度下的特征信息(其是四个具有不同扩展率的扩张卷积),将其拼接起来得到了多尺度特征表示,随后将其通过一个卷积层得到最终的分割结果。

代码

FastFCN Pytorch

GatedSCNN 2019

目前最先进的图像分割方法形成一个密集的图像表示,包括形状、颜色和纹理,都放入到了CNN网络中用来做识别,但是这可能不是最理想的方法,因为在语义分割任务中,我们需要更加关注物体的边界信息以得到物体的形状,而颜色和纹理信息相对来说就比较低级一点了。所以作者提出了两个流的方法,在常规流的基础之上增加了一个形状流,并通过门控卷积来控制形状流这条分开中只学习有关边界的信息。

Background

语义分割任务是对图像中的每一个像素进行分类,现今SOTA的方法是直接使用一个网络来处理。但是图像中包括颜色、形状、文本等低级语义信息往往会被忽略掉。由于图像中的信息是多种多样的,所以将这些信息输入一个统一的网络会使得分割结果不是最优的。

Idea

因此作者提出了一种新的思路,通过两个并行CNN结构来分别进行常规抽取和抽取图像的边界相关信息。作者将他们分别称为regular stream和shape stream。Regular steam的结构与传统的语义分割模型相似。而Shape stream的主要作用是获取图像中的边界信息,最终将两者信息进行融合,从而得到最终的分割结果。

通过上图可以看处,作者提出的two-steam是并行的,这种架构的关键是一种新型的门,它连接两个流的中间层。具体而言,作者使用regular steam中的较高级特征的激活来控制形状流中的较低级特征的激活,有效地消除噪声并帮助shape steam仅关注处理相关的边界相关信息。这样能够使用非常浅的架构来处理基于图像级分辨率的形状流。

架构的关键是一种新型的门,它允许两个分支相互作用。特别是,用经典流中包含的高级信息来小除形状流早期的激活,使形状流在以完整的图像分辨率计算时,专注于形状信息。对于形状流,使用语义边界损失函数进行监督,在之后使用新性的损失函数,鼓励预测的语义分割与ground truth对齐,从而进一步鼓励融合层利用来自形状流的信息。

通过这样做,形状流只关注于处理相关信息。这使得形状流采用一个非常有效的浅架构,在全图像分辨率上操作。为了实现将形状信息定向到所需的流,我们使用语义边界损失来监督它。我们进一步开发了一个新的损失函数它鼓励预测的语义分割正确地与地面真实的语义边界对齐,这进一步鼓励融合层利用来自形状流的信息。我们称我们的新架构为GSCNN。

Key Parts

Regular Steam
The regular stream can be any feedforward fully-convoutional network such as ResNet [19] based or VGG [44] based se- mantic segmentation network.
Shape Steam
This stream, denoted as Sφ, with parameters φ, takes image gradients ∇I as well as output of the first convolutional layer of the regular stream as input and produces semantic boundaries as output
Fusion Module
融合模型将将Regular steam和Shape steam产生的结果进行融合,最终产生维度为KHW的语义分割图的输出,K表示的是语义类别。作者在融合时使用了多尺度信息融合的方法将两个steam的输出进行多尺度融合最终得到的语义分割结果。
It combines region features with boundary features and outputs a refined seman- tic segmentation output.
We merge the boundary map s with r using an Atrous Spatial Pyramid Pooling.
GCL
We use GCL in multiple locations between the two
streams. Let m denote the number of locations, and let t ∈ 0, 1, · · · ,m be a running index where rt and st de-note intermediate representations of the corresponding regular and shape streams that we process using a GCL.

To apply GCLL, we first obtain an attention map αt ∈ RH×W by concatenating rt and st followed by a normalized 1 × 1 convolutional layer C1×1 which in turn is followed by a sig- moid function σ :首先要将两个steam得到的输出进行拼接,然后利用1*1卷积核和sigmoid函数得到一个注意力分布,其公式如下:
αt = σ(C1×1(st||rt))

针对上一层得到的shape分布将其与得到的注意力分布进行点乘,在加上之前的shape分布(这个就是残差计算部分)最后转置后与通道的权重核进行计算。整个过程可以认为是注意力机制的过程。

损失函数

我们与融合模块以端到端的方式共同学习规则流和形状流。我们在训练中共同监督分割和边界地图预测。这里,边界图是场景中所有物体和物体类的轮廓的二值表示(图6)。我们在预测的边界图s上使用标准的二值交叉熵损失(BCE),在预测的语义分割f上使用标准的交叉熵损失(CE)

Dual Task Regularizer

p(y|r, s) ∈ RK×H×W denotes a categorical distribution output of the fusion module.
ζ ∈ RH×W be a potential that represents whether a particular pixel belongs to a semantic boundary in the input image I
作者为了防止模型过拟合,因此在损失函数中加入了正则化项。输出代表某个像素是否属于某张图片的某个类别,它可以由输出图片的空间的导数计算得到,公式如下:
argmax 代表最大值 那一类的

If we assume ζ^ is a GT binary mask computed in the same way from the GT semantic labels f^, we can write the following loss function:
p+ contains the set of all non-zero pixel coordinates in both ζ and ζ ˆ
作者希望确保当与GT边界不匹配时边界像素受到惩罚,并且避免非边界像素支配损失函数。所以在下面的正则项中利用的是边界预测和在边界区域的语义分割的二元性。

11s ={1 : s > thrs }?corresponds to the indicator function and thrs is a confidence threshold, we use 0.8 in our experiments.

Personal thinking

一分为二,各司其职,散是满天星,聚是一团火,高级低级各有所想

代码

GSCNN Pytorch
GSCNN Tensorflow

Semantic Video CNNs through Representation Warping 2017

设计缘故

直接的单帧提取是OK,但是是不是有点过于憨批了?

主要的设计原理是利用相邻帧的光流来对内部网络表示进行跨时间的扭曲。
The main design principle is to use opti-cal flow of adjacent frames for warping internal network representations across time.
我们的目标是开发一个视频分割技术 利用视频帧的时间相干性,再利用强的单图像分割CNNs。

NetWarp

Flow Computation 光流计算

采用已经的方法在现在帧和上一帧之间进行计算光流,计算出的应该是一个光流矢量,用于两帧之间的映射.本文计算的是DIS-Flow
For- mally, given an image pair, It and I(t−1), the optical flow algorithm computes the pixel displacement (u, v) for every pixel location (x, y) in It to the spatial locations (x’, y’) in I(t−1). That is, (x’, y’) = (x + u, y + v). u and v are floating point numbers and represent pixel displacements in horizontal and vertical directions respectively.

光流的转化

直接使用传统方法计算出的光流可不能不是最优的,于是又放在一个CNN中进行转化. 就是说加了个CNN咯
Correspondences obtained with traditional optical flow methods might not be optimal for propagating representations across video frames. So, we use a small CNN to transform the pre-computed optical flow, which we will refer to as FlowCNN and denote the transformation as Λ(Ft)

变形的表示 Wraping Representation

The FlowCNN transforms a dense correspondence field from frame It to the previous frame I(t−1).
他把从原始图片提取出的光流变化和CNN几次后的上一次的图片做了融合
(t−1) = Warp(z(t−1), Λ(Ft))

  • (t−1) denotes the warped representations, Ft is
  • F(t) the dense correspondence field
  • Λ(·) represents the FlowCNN described above.
    Wrap as a bilinear interpolation of z(t-1)at the desired points。双线性内插法

表达的整合

总结

以光为号,殊途同归,你中有我,我中有你

代码

Code Caffe

Deep Feature Flow for Video Recognition 2017

Background

为什么光流法会出现?
因为大多数卷积占用了太多的计算量,中间层或者和高层的语义特征

What

In this work, we present deep feature flow, a fast and accurate approach for video recognition. It applies an image recognition network on sparse key frames. It propagates the deep feature maps from key frames to other frames via a flow field.(在这项工作中,我们提出了一种深度特征流,一种快速准确的视频识别方法。在稀疏关键帧上应用图像识别网络。它通过流场将深度特征映射从关键帧传播到其他帧。)

图表

k key frame index 关键帧索引
I current frame index 当前帧索引
r per-frame computation cost ratio
l key frame duration length
s overall speed up ratio
Ii,Ik video frames 视频的frames
yi,yk recoginition results 识别结果
fk convolutional feature maps on key frame 关键帧的卷积特征图
fi propagated feature maps on current frame 传播的特征在当前特征图
Mi->k 2D flow field
p,q 2D location
Si->k scale field
N image recognition network
Nfeat sub-network for feature extraction 特征提取网络
Ntask sub-network for recognition result 特征识别网络
F flow estimation function 光流估计函数
w feature propagation function 特征传播函数

Deep Feature Flow

给定图像识别任务和前馈卷积网络N对输入图像I的输出的结果为 y = N(I)。我们的目标是将网络应用于所有视频帧Ii,i=0,…,∞
首先我们将N分解成两个连续的子网络。第一个子网络Nfeat,被称为特征网络,是完全卷积网络,并输出多个中间特征图,f=Nfeat(I)。第二个子网Ntask,被称为任务网络,是根据任务的不同具有的特定结构,在特征图上执行识别任务,y=Ntask(F)

连续的视频帧非常相似,在深度特征图中相似性更强,我们利用相似性来降低计算成本,具体来说使用Nfeat仅运行在稀疏的关键帧上,非关键帧由上一个关键帧传播得到。
Let Mi→k be a two dimensional flow field. It is obtained by a flow estimation algorithm F such as [26, 9], Mi→k = F(Ik, Ii)

它将当前帧i中的位置P投射到关键帧k中的位置p+δp中, δp = Mi→k( p )

As the values δp are in general fractional, the feature warping is implemented via bilinear interpolation

c表示特征图f中的一个通道,q表示特征图中的所有空间位置,G(·,·)表示双线性插值核。

由于流估计错误等造成空间形变计算不准确。为了更好地近似特征,它们的幅度由“尺度场”[公式]来调整,其空间维度和通道维度与特征图相同。“尺度场”通过在两帧上应用“比例函数”[公式]来获得,
SI–>k = S(Ik,II)

最后得到了公式:

Conclusion

视频识别加速的关键之一是何时分配新的关键帧。在这项工作中,我们使用简单的固定关键帧,即关键帧持续时间长度l是固定常数。本文在最后给挖了个坑,它提出图像内容的各种变化可能需要变化的l来平滑的权衡精度和速度。理想情况下,当图像内容发生急剧变化时,应分配新的关键帧。设计有效且自适应的关键帧长度可以进一步提高识别的精度和速度。

代码

DFF MXNET

Low-Latency Video Semantic Segmentation 2018

Why

  • 一方面,与图像相比,视频通常涉及的数据量要大得多。特别是,一个视频通常每秒包含15到30帧。因此,分析视频需要更多的计算资源
  • 另一方面,许多需要视频分割的现实系统,如自动驾驶,对响应延迟有严格的要求,这使得问题更加具有挑战性
    (1) how to select the key frames and
    (2) how to propagate features across frames.

What

  • 一种特征传播模块,它通过空间变化的卷积,在一段时间内快速地融合特征,从而降低了每帧计算的成本 自适应的空间变体卷积的feature propagation module 用来和之前的key frame 融合,减少了per-frame的计算量
  • 一种基于精度预测动态分配计算量的自适应调度器 基于accuracy predictino 的关键帧的自适应调度
  • 文章没有在帧之间引入optical flow 的信息,因为比较难以获得,而是充分利用了low-level feature,low-level 而是 一个使用空间变积来自适应地传播特性的网络和一个自适应调度器来降低总体计算成本和确保低延迟

Framework Overview

我们将网络分为两部分,较低部分的Sl和较高部分的Sh, 由Sl派生的低水平的有限元将用于选择关键帧和控制高水平特征的传播
lower part Sl and the higher-part Sh, Sl提取的low-level feature用来select key frame, 并且控制high-level feature的传播。大致的过程如下:(简言之就是通过low-level feature来判断是否把当前帧作为关键帧,是的话就计算high-level semantic feature, 不是的话就通过一种特殊的卷积直接传之前key-frame的feature)这里也是比较了下后者的时间

Adaptive Selection of Key Frames

根据上述基本原理,判断一个帧是否应该被选择为一个新的关键帧的一个自然的标准是该帧的分割图与前一个关键帧的分割图的偏差。这可以正式定义为语义标签不同的像素的比例。直观地说,较大的偏差意味着重大的变化,因此是时候设置一个新的关键帧了

Greater differences in the low-level fea- tures usually indicate larger deviations.


自适应关键帧选择。当我们进一步远离关键帧时,用蓝点表示的扇形图的预测偏差逐渐增大。在我们的方案中,当偏差超过一个预先定义的阈值时,当前帧将被选择为一个新的关键帧

Adaptive Feature Propagation

为什么不光流了???

(a)光流的计算是昂贵的
(b)点对点映射往往限制太多

使用了translation-invariant convolution 平移不变卷积

W(i,j)的参数是由Fl(k)和Fl(t)作为输入预测出来的。
细节暂时不提了,建议自己看看论文

打个总结

Pyramid scene parsing network 2017

Why

受深度神经网络驱动,场景解析和语义分割这样的像素级预测任务取得了很大的进展。为了扩大网络的感受野,有些文章使用了空洞卷积、带有反卷积的coarse-to-fine等方法。本文的baseline是FCN和DeepLab v1
其他工作主要从两个方面进行:

  • 多尺度特征融合。由于在深层网络中,高层特征包含了更多的语义和较少的位置信息。结合多尺度特征可以提高性能.
  • 基于结构进行预测。例如使用条件随机场(CRF)进行后处理,对分割结果进行细化

Challenge

通过检查ADE20K dataset所提供的FCN baseline的预测结果,我们总结了复杂场景解析中容易出现的几个常见问题:
Mismatched Relationship:上下文关系对理解复杂场景普遍十分重要。某种物体的出现往往具有一些固定的视觉模式。例如,一架飞机很可能在跑道上或者在空中飞行,而不是在道路上。例如图2的第一行,FCN根据外观将黄色方框中的船预测成了一辆“车”。但大家都知道,河水上基本不会出现车。缺乏收集上下文信息的能力增加了错误分类的可能性。
Confusion Categories: ADE20K数据集中有许多类标签对十分难以区分。比如field和earth;mountain和hill;wall, house, building和skyscraper。这几对物体的外表十分相似。在图2的第二排,FCN将框中的对象一部分预测为了摩天大楼,一部分预测为了建筑。我们并不期望出现这种情况,整个对象应该是摩天大楼或建筑,但不应该是两者各有一点。此问题可以通过类别之间的关系来解决。
Inconspicuous Classes:场景中往往包含任意大小的对象/东西。一些小尺寸的东西,如街灯和广告牌往往很难找到,但有时它们可能很重要。相反,大型的对象可能会超过FCN的感受野,从而导致不连续的预测。如图2第三行所示,枕头的外观与床单相似。不考虑全局场景中的类别的话可能会无法解析枕头。为了提高对于非常小或大的物体的性能,我们应该更加注意包含不显眼东西的子区域。

综上所述,许多错误都部分或全部与上下文关系和不同感受野的全局信息相关。因此,一个具有合适全局场景级先验的深层网络可以大大提高场景解析的性能

Abstract

在基于FCN的像素预测框架中,我们提出了一种金字塔场景解析网络
我们为深层的ResNet开发了一种有效的优化策略,基于深度监督的loss
我们为最先进的场景解析和语义分割构建了一个实用的系统,其中包含了所有关键的实现细节

What

  • 首先输入图像经过一个**特征提取网络(Resnet)**提取特征,这部分作者采用的是添加了空洞卷积的ResNet网络,空洞卷积的作用前面也提到过了,主要是增大感受野,提取到的特征(具体而言stride=8)作为后面pyramid pooling模块的输入
  • 在pyramid pooling模块中构建了深度为4的特征金字塔,不同深度的特征是基于输入特征通过不同尺度的池化操作得到的,池化的尺度是可以调整的,这篇文章中给出的池化后的特征尺寸分别是11、22、33和66。然后通过一个1*1卷积层将特征维度缩减为原来的1/4
  • 最后将这些金字塔特征直接上采样到与输入特征相同尺寸,然后和输入特征做合并,也就是concat操作得到最终输出的特征图。特征合并的过程其实就是融合目标的细节特征(浅层特征)和全局特征(深层特征,也就是上下文信息)的过程,这里因为特征提取网络最后输出的特征层感受野足够大,所以有足够的全局信息(虽然网络的深度不算深)

Detail

  • 输入图像后,使用预训练的带空洞卷积ResNet提取特征图。最终的特征映射大小是输入图像的1/8
  • 在特征图上,我们使用©中的金字塔池化模块来收集上下文信息。使用4层金字塔结构,池化内核覆盖了图像的全部、一半和小部分。它们被融合为全局先验信息
  • 在©的最后部分将之前的金字塔特征映射与原始特征映射concate起来
  • 再进行卷积,生成(d)中的最终预测图
  • 红色突出显示的是最粗糙级别的单个全局池化bin输出
  • 下面的金字塔分支将特征映射划分为不同的子区域,并形成针对不同位置的集合表示
  • 金字塔池化模块中不同级别的输出包含不同大小的特征映射
  • 为了维护全局特性的权重,如果金字塔共有N个级别,则在每个级别后使用1×1卷积,将对应级别的通道数量降为原本的1/N
  • 然后通过双线性插值直接对低维特征图进行上采样,得到与原始特征映射相同尺寸的特征图
  • 最后,将不同级别的特征concate起来,作为最终的金字塔池化全局特性

Update - Deep Supervision for ResNet-Based FCN

经过深度预先训练的网络能带来良好的性能,然而,网络深度的增加可能会带来额外的优化难度。
相反,我们提出了一个附加loss,可以监督初始结果,并用后面的最终loss来学习残差。因此,深层网络的优化被分解为两个问题,每一个都更容易解决。

  • 除了使用Softmax loss来训练最终分类器的的主分支外,在第四阶段后再使用另一个分类器,即res4b22残差块
  • 这两个loss同时传播,通过各自前面所有层
  • 辅助loss有助于优化学习过程,主loss仍是主要的优化方向。增加权重,以平衡辅助loss

在测试阶段,放弃辅助分支,只使用优化好的主分支来进行最终的预测。这种对基于ResNet的FCN进行深度监督的训练策略在不同的实验环境下是非常有用的,与预训练的ResNet模型也可以很好结合。体现了这种学习策略的普遍性。

降低了过拟合 同时 类似dropout的思路

代码

PspNet Tensorflow

ICNet

What

ICNet是一个基于PSPNet的实时语义分割网络,设计目的是减少PSPNet推断时期的耗时,论文对PSPNet做了深入分析,在PSPNet的基础上引入级联特征融合模块,实现快速且高质量的分割模型。论文报告了在Cityscape上的表现.

可以看到,许多高质量的分割模型的推理速度远远达不到实时要求。本文的目的是在不牺牲过多分割质量的前提下提高模型推理速度,达到实时要求。本文是在PSPNet的基础上,找了一个accuracy和speed上的平衡点。
论文的主要贡献在于:

  • 综合低分辨率图像的处理速度和高分辨率图像的推断质量,提出图像级联框架逐步细化分割预测
  • 本文提出的ICNet达到了5x以上的加速,并减少了5x倍以上的内存消耗
  • ICNet可以在1024×20481024×20481024×2048分辨率下保持30fps运行

ICNet

提速方向

  • 图像分辨率提升,计算量明显增加
  • 网络的厚度越大速度越慢(输入图像通道数越多速度越慢)
  • 核数量越多速度越慢(输出图像通道数越多速度越慢)

网络结构

根据上述时间预算分析,我们在实验中采用直观的加速策略,包括降采样输入图像、缩小特征图和进行模型压缩。但是效果都不好。

  • 降采样输入图像:降低输入图分辨率能大幅度的加速,但同时会让预测结果非常粗糙
  • 缩小特征图:降低下采样可以加速,但同时会降低准确率,此外,即使在1:32的比例下得到最小的特征映射,系统仍然需要131 ms推理
  • 压缩模型:压缩训练好的模型,但效果不佳。即使只保留四分之一的核,推理时间仍然太长;相应的分割结果也十分糟糕
    结果表明,在推理精度和速度之间很难保持很好的平衡
  • 它使用了级联的图像输入(即低、中、高分辨率图像),采用了级联的特征融合单元,训练时使用了级联的标签监督。
  • 新的架构如图2所示。全分辨率的输入图像,下采样2倍和4倍后,形成级联输入的中分辨率和低分辨率分支
分支 过程 耗时
低分辨率 在中分辨率的1/16输出的基础上,再缩放到1/32.经过卷积后,然后使用几个dilated convolution扩展接受野但不缩小尺寸,最终以原图的1/32大小输出feature map 虽然层数较多,但是分辨率低,速度快,且与分支二共享一部分权重
中分辨率 以原图的1/2的分辨率作为输入,经过卷积后以1/8缩放,得到原图的1/16大小feature map,再将低分辨率分支的输出feature map通过CFF(cascade feature fusion)单元相融合得到最终输出。值得注意的是:低分辨率和中分辨率的卷积参数是共享的 有17个卷积层,与分支一共享一部分权重,与分支一一起一共耗时6ms
高分辨率 原图输入,经过卷积后以1/8缩放,得到原图的1/8大小的feature map,再将中分辨率处理后的输出通过CFF单元融合 有3个卷积层,虽然分辨率高,因为少,耗时为9ms

低分辨率分支来获取语义信息,将原图1/4大小的图像输入到PSPNet中,降采样率为8,产生了原图1/32的特征图。中分辨率和高分辨率的分支进行粗糙预测的恢复和细化,中部和底部分支,获得高质量的分割,可以减少中部分支和下部分支的参数数目。虽然最上面的分支导致了细节缺失和边界模糊,但它已经获得了大部分语义信息。高分辨率分支采用轻加权的CNNs(绿色虚线框,底部分支和中部分支);不同分支输出的特征图采用级联特征融合单元进行融合,训练时接受梯级标签监督

CNet使用低分辨率完成语义分割,使用高分辨率帮助细化结果。在结构上,产生的feature大大减少,同时仍然保持必要的细节

CFF Cascade Feature Fusion

这个单元的输入包含三个部分:
特征映射 F1 ,尺寸 C1X H1 X W1
特征映射 F2 ,尺寸 C2X H2 X W2 , 空间尺寸是 F1的2倍
标签 LABEL ,尺寸 1 X H2 X W2

首先对F1双线性插值,进行2倍上采样,得到与 F2相同的大小。
然后使用C3 X 3 X 3、采样率为2的空洞卷积层对F1上采样后的特征进行细化。生成的特征大小为 C3X H2 X W2
这种空洞卷积结合了原始相邻像素的特征信息。与反卷积相比,只需要较小的核即可获得相同的感受野。为了保持与其相同的感受野,反卷积需要更大的kernel尺寸,计算量更大。

对于特征 F2 ,使用 C3 X 1 X 1 大小的投影卷积,使其输出与F1的输出具有相同的通道数。
使用两个BN层来标准化这两个已处理的特征。
然后使用一个元素相加层和一个ReLU层,得到C3X H2 X W2维度的融合特征F2’。
为了强化F1 的学习,我们对 F1的上采样特征使用了一个辅助的标签指导。

Cascade Label Guidance 级联标签指导

为了提高每个分支的学习过程,采用级联标签指导策略。

在每个分支中添加一个损失权重 入t ,将每个分支变成加权的Softmax交叉熵损失。再优化这个损失函数

测试阶段,不使用低和中阶段的指导,只保留高分辨率分支。这一策略使梯度优化更加流畅,便于训练。由于每个分支具有更强的学习能力,最终的预测图不受任何一个分支的支配。

代码

ICNet Tensorflow

Every Frame Counts: Joint Learning of Video Segmentation and Optical Flow(2019)

Why

现有的视频语义分割方法,是利用前后帧的语义信息预测运动轨迹来分割,这种方法面临两大挑战:

  • 准确率低。视频标注不如图像标注那样每一帧都会标注,一个视频片段往往只标注一帧,现有方法难以利用全部的数据,导致分割的准确率较低。
  • 效率低。由于对前后帧之间进行信息交互往往为模型引入额外的模块,导致视频分割效率低。

提出了一个光流和语义分割联合学习的框架

Background

视频语义分割通过利用前后帧的语义信息,往往有着比图像分割更高的准确率,因此在机器人和自动驾驶领域有着丰富的应用。然而目前的视频语义分割主要面临两个挑战:缺少标注数据和实时性的问题。

一方面由于标注工作耗时耗力,一个视频片段往往只标注一帧,导致很多方法难以利用全部的数据,或者需要使用额外的数据集做预训练;另一方面由于对前后帧之间进行信息交互往往为模型引入额外的模块,导致视频分割效率低。

视频分割大致可以分为两类,第一类通过利用前后帧的时序信息来为视频分割加速,如Clockwork network (Shelhamer etal. 2016) ,Deep Feature Flow (Zhu et al. 2017) 和 (Li,Shi, and Lin 2018) 等,这类模型对前一帧的特征图或者分割结果进行简单处理即可得到下一帧的分割结果了,从而大大减少视频分割中的冗余和加速,但语义分割的准确率会有所降低;

第二类方法如 (Fayyaz et al. 2016) ,Netwarp (Gadde,Jampani, and Gehler 2017),PEARL (Jin et al. 2017) 等通过光流/RNN等模块将前后帧的特征进行融合或添加约束以学习到更强的表示能力,从而提高语义分割的准确率。本文的方法属于第二类。

How

光流作为视频中前后帧之间像素级别的关联,在视频语义分割中一直有着重要的地位。例如 (Li, Shi, and Lin 2018; Zhu etal. 2017; Shelhamer et al. 2016) 通过光流来重新利用前一帧的特征图从而为视频分割加速;(Fayyaz et al. 2016; Jin et al. 2017; Gadde,Jampani, and Gehler 2017; Nilsson and Sminchisescu 2018; Hur and Roth 2016) 通过光流指导的特征融合来获得更好的分割准确率。

然而上述方法面临两个问题:

  • 一方面其往往使用现成的在其他数据集上训练的光流模型(FlowNet),导致了分割效率的降低;
  • 另一方面上述方法往往只利用了标准帧附近的少数帧,没有充分利用整个数据集和发挥光流的作用。

为了解决上述两个问题,作者提出了一个光流和语义分割联合学习的框架,语义分割为光流和遮挡估计提供了更丰富的语义信息,而非遮挡得光流保证了语义分割的像素级别的时序一致性。

本文模型通过在视频中无监督学习光流并且使用光流对前后帧语义分割的特征图施加约束来使得两个任务互相增益并且没有显式的特征融合,这种隐式的约束可以帮助利用数据集中的全部数据并学到更鲁棒的分割特征以提高分割准确率,并且不会在测试阶段增加额外的计算量。


本文提出的联合学习框架,输入图片经过共享编码器后分为两个分支,第一个是光流分支,第二个是分割分支。block代表模型的特征图,灰色的虚线代表时序一致性约束,灰色实线代表遮挡估计模块。

语义分割和光流相辅相成

本论文的语义分割和光流是相辅相成的,语义分割为光流和遮挡估计提供了更丰富的语义信息,而非遮挡的光流保证了语义分割的像素级别的时序一致性
值得一提的是,通过光流施加的约束并没有显式的特征融合,而是隐式约束。在训练网络模型时需要分割和光流,但实际测试、应用的时候只需要分割。

本文使用无监督的方式学习遮挡区域,通过反向光流推测出可能无法对齐的像素位置O(即遮挡区域),模型根据此学习得到O_{est};两帧的分割结果通过光流warp不一致的区域设为O_{seg},O_{seg}应包括遮挡区域和光流估计错误的区域,因此O_{error} = O_{seg}-O_{est}应为光流估计的重点区域

在计算光流估计的损失函数时,作者不考虑遮挡区域(O_{est})的损失而加大重点区域(O_{error})的权重

Clockwork Convnets for Video Semantic Segmentation 2016

Two key observations

  • 虽然像素可能在帧与帧之间快速变化,但是场景的语义内容发展得更慢
  • 执行可以被视为体系结构的一个方面,从而为网络提供适合于特定目的的计算时间表

What

我们定义了一种由固定或自适应时钟信号驱动的新型“时钟系统”,这些时钟信号根据其语义稳定性以不同的更新速率调度不同层的处理。
我们设计了一个流水线调度来减少实时识别的延迟,一个固定速率调度来减少总体计算。最后,我们将时钟调度扩展到自适应视频处理,通过合并可以在unla- beled视频上调优的数据驱动时钟。通过Youtube-Objects、NYUD和Cityscapes视频数据集来评估clockwork convnets的准确性和效率。

相关工作

  • Fully Convolutional Networks
  • Video Networks and Frame Selection
  • Network Acceleration
  • Semantic Segmentation

Key factor: Fast frame and slow Semantics

通过测量帧间特征的相对差异来确定时间更深层次的一致性。考虑一个给定的分数层(从特征中对像素类进行线性预测),∈[K×H×W],其中K为类别数,H, W为层的输出维数,我们可以用一个分数映射距离函数dsm来计算t时刻的差值,该函数被选为一个热编码的汉明距离

While deeper layers are more stable than shallower layers, for videos with enough
motion the score maps throughout the network may change substantially.

We notice that though the intermediate layer (pool4) difference is always larger than the deepest layer difference for any given frame, the pool4 differences are much larger
for the video with large motion than for the video with relatively small motion.

A Clockwork Network

忽略输入的顺序特性不仅会牺牲效率,还会丢弃潜在的时间识别线索。视频的时间相干性表明了之前帧的视觉特征的持久性,这为当前帧的推断提供了依据

We consider both throughput and latency in the execution of deep networks across
video sequences.

定义一个时钟结构有几个选择点。我们定义了一个新颖、通用的时钟结构,能比浅层更慢地预定深层。我们通过对一个convnet的层进行分组来形成我们的模块,以跨越特性层次结构。我们的网络保持状态和跨时间步长的输出。为时间序列的长期依赖建模而设计的时钟周期性网络是我们时钟计算的更一般方案的一个实例,显示了架构和输出随时间的变化在clockwork递归和我们的clockwork之间的差异

Networks in Time

调度与时钟合并到网络中后,我们可以通过更改时钟来优化各种任务的调度。

Pipelining: 为了减少实时识别的延迟,我们将顺序帧的计算类似于处理器中的指令流水线。
Fixed-Rate: 为了减少总体计算,我们限制了阶段的执行速度,并对跳过的阶段跨帧持久化特性。

代码

Clockwork Caffe

Improving Semantic Segmentation via Video Propagation and Label Relaxation 2019

Why

  • 注释质量对于训练更好的模型起着重要的作用。虽然使用注释工具包可以快速地对大的连续区域进行粗注释,但是沿着对象边界对像素进行精细的标记是极具挑战性的,而且常常涉及到固有的模糊像素。
  • 然而,由于合成图像与真实图像之间的区域差距,使得合成数据的模型精度往往不能推广到真实数据

Abstract

该论文提出了一种基于视频帧预测的方法合成训练样本来对训练数据集进行增广以获得精度更高的语义分割网络。具体地,论文利用视频帧预测模型的能力同时获得更多的图像和标注,并且使用联合传播策略来消除合成样本中的误差,另外还设计了新颖的边界标签松弛技术使得训练过程对于合成样本数据和注释的偏差更加鲁棒

通过视频序列来高效合成更多训练样本即图片标签对的方式如下图所示,给定一个序列的视频帧,其中部分帧带有标注,之后利用视频预测模型的能力预测未来帧的标签(标注),具体地有两种方式:
1)标签传播:只为现有的没有标注的视频帧预测标签
2)联合传播:同时预测新的视频帧及其标注,二者偏差具有较大的一致性,这是论文使用的方法。利用视频预测模型的能力是论文提出方法的核心,即通过合成方法生成更多的训练样本,提升视频语义分割的效果

虽然在视频预测方面已经取得了很大的进展,但它仍然容易产生沿目标边界的非自然扭曲。对于综合的训练示例,这意味着沿着对象边界传播的标签应该比对象内部的标签更可信。在这里,我们提出了一种新的边界标签松弛技术,它可以使训练对这种错误具有更强的鲁棒性。我们证明了通过最大化边界上相邻类标签的并集的可能性,训练的模型不仅获得了更好的精度,而且能够从更长的传播中受益。

Contriubtions

  • We propose to utilize video prediction models to propagate labels to immediate neighbor frames.利用视频预测模型为邻帧预测标签
  • We introduce joint image-label propagation to alleviate the misalignment problem. 联合视频帧-标注传播消除图像与标注难以对齐的问题
  • We propose to relax one-hot label training by maximizing the likelihood of the union of class probabilities along boundary. This results in more accurate models and allows us to perform longer-range propagation通过极大似然类别概率和边界来进行标签松弛,比较了论文提出的视频预测方法与基于光流场的方法对于语义分割效果的提升

Related Work

  • Label Propagation 标签推广
    有两种方式,patch-matching和光流法,前者对于基于块匹配与阈值的方法比较有效,某些情况下需要一些先验知识;后者依赖于非常精确的的光流估计结果,这较难以实现,不正确的光流估计会导致标注预测偏差较大。
    论文基于第二种方法进行改进,第一点,使用视频预测模型得到的运动矢量进行传播,(视频预测模型的训练是通过自监督);第二点不同在于,论文使用联合传播方法来消除对齐差
  • 边界处理
    已有方法通过一体化的边缘线索处理边界像素,但有两种缺点,一是潜在的误差传播二是测试阶段的过拟合。也有另外一些方法,联合场,随机游走,标签松弛以及边界神经场。然而没有一个方法能够直接处理边界像素。与论文方法较为相似的是利用贝叶斯网络内部不确定性推理的方法,通过强行使像素点呈高斯分布来减弱不确定性较大时的损失

Methodlogy

I ∈ Rn×W×H and semantic labels L ∈ Rm×W×H, where m ≤ n, we synthesize k × m new training samples (image-label pairs) where k is the length of propagation applied to each input image-label pair (Ii, Li). 其中k是已有的图像标注对的长度

视频预测

视频预测是用于生成未来的帧基于一系列过去的帧,它可以被建模为直接像素合成或学习转换过去的像素的过程,在这项工作中,我们使用一个简单而有效的基于矢量的方来预测一个运动矢量(u, v)来将每个像素(x, y)转换成它未来的坐标

The predicted future frame It+1:
It+1 = T(G (I1:t, F2:t ) It)

G 是一个3D卷积神经网络 根据 输入的帧I1:t和输入帧Ii和Ii-1之间的光流Fi来预测运动矢量 (u,v) 即他这个就是说用3D卷积考虑之前的每一帧的I和每两帧的光流图,之后用T对当前的帧It做一个双线性采样得到结果。

需要注意的是光流向量F和运动矢量不同,前者只对当前帧可见,对下一帧不可见,因此使用光流向量对当前帧进行采样会导致前景目标重复,图像产生小孔或者导致目标边界变形;而运动矢量能够精确的预测下一帧。

图像-标签联合传播策略

Standard label propagation techniques create new training samples by pairing a propagated label with the origi- nal future frame as(II+k, L~ I+k , with k being the propagation length.


例如,当我们看到在图2中,大部分地区的标签传播(第2行)关联与相应的原始视频帧(第1行)。然而,某些地区,像点Pole(红色)和行人的腿(绿色),与原始帧不相符由于错误估计运动矢量

为消除这种不对齐,论文采用了图像标签联合传播策略,即图像和标签样本对都是根据已有图像和标注来得到的,如上图的第三行,图像和标注的对齐差相近。同时作为一种特殊的数据增广方式,而且该方法还反向传播得到更多的数据,论文每一帧生成了±5\pm 5±5共十个训练样本。(另外该方法还能够为一些图像对应的标签缺乏的数据集做"修缮"工作)

我们想指出,我们提出的联合传播有更广泛的应用。它也可以在原始帧和相关标签都很少的数据集中找到应用。这与标签支持不同,仅用于为典型的视频数据集合成新的训练样本,例如Cityscapes[15],其中原始视频帧非常丰富,但只有一小部分帧具有人工标注的标签。

视频重建

因为在我们的问题中,我们知道实际的未来框架,我们不仅可以进行视频预测,还可以进行视频重建来合成新的训练实例。更具体地说,我们可以在过去和未来帧上设置预测模型,以便更准确地重建“未来”帧。这种重新公式背后的动机是,由于未来的帧是由视频重建模型观察到的,因此,一般来说,人们期望它们比只观察过去帧的视频预测模型产生更好的转换参数

边界标签松弛

大多数最难分类的像素位于对象类之间的边界上。具体来说,当输入上下文的一半或更多可能来自不同的类时,很难对接受域的中心像素进行分类。这个问题进一步复杂化了,因为注释在边缘上没有像素那么完美。我们建议对类标签空间进行修改,只在训练时使用,这样我们就可以在一个边界像素处预测多个类。我们将边界像素定义为具有不同标记邻居的任何像素。为了简单,假设我们沿着类A和B的边界对一个像素进行分类。我们不是按照注释提供的目标标签的似然值最大化,而是最大化P(A∪B)的似然值,由于A类与B类是互斥的,我们的目标是最大化A与B的并集:

其中P()为每个类的softmax概率。具体地,设N为一个像素的3×3个窗口内的类集合。我们把我们的损失定义为

代码

Code

Semantic Video Segmentation by Gated Recurrent Flow Propagation 2017

WHy

语义视频分割是一项具有挑战性的工作,因为为了建立精确的模型,需要处理和处理大量的数据。在这篇论文中,我们提出了一种深入的,端到端可训练的视频分割方法,该方法能够利用未标记数据中的信息来改进语义估计。

Now

Therefore, for now some of the existing, pioneering approaches to semantic video segmentation rely on single frame models with corresponding variables connected in time using random fields with higher-order potentials, and mostly prespecified parameters.

相关工作

  • In residual connections are used mak- ing it possible to increase depth substantially.
  • Another success- ful approach is to apply a dense conditional random field (CRF) as a post-processing step on top of individual pixel or frame predictions.
  • More recently proposal methods where multiple figure-ground es- timates or multipart superpixel segmentations are generated at each time-step, then linked through time using optical flow, have become popular.
  • One deep learning method uses two streams to predict actions. The au- thors use images in one stream and optical flow in the other stream, merged at a later stage in order to predict the final action label.

What

模型整合了卷积架构和时空变换递归层从而有能力暂时地传播标签信息通过光流和自适应的门控。视频分割的准确性和时间标记的一致性,不需要额外的标注成本,几乎不需要额外的计算。

Overview of our Spatio-Temporal Transformer Gated Recurrent Unit (STGRU), combining a Spatial Transformer Network for optical flow warping with a Gated Recurrent Unit to adaptively propagate and fuse semantic segmentation information over time.

ht-1 和光流的结果相wrap之后对齐了Size通过wt = φt−1,t(ht−1) φ是一个maping伴随着光流的操作,他作为隐藏层输入了GRU即门控递归单元,另一个输入是当前帧通过CNN的语义分割结果。

Spatio-Temporal Transformer Warping 空间暂时转移Warping

我们将使用光流作为输入来扭曲连续帧的语义分割估计。我们将修改空间变压器网络,使其在时空视频域中运行。

((fx~ ij~, fy ij)is the optical flow at position (i.j).

Gated Recurrent Units for Semantic Video Seg- mentation

为了连接不同帧(ht−1和ht)下的语义分割概率图,我们将使用改进的卷积版本的门控递归单元。特别地,我们将设计一个基于流量的门控函数,因此我们只相信在流量确定的位置从h~t - 1~扭曲过来的语义分割值.

我们还使用门控来预测新的分割概率,考虑到h~t - 1或xt在图像的某个区域对某个类具有较高的置信度。与LSTM[16]类似,GRU也具有门控功能来重置隐藏状态,并控制输入xt对新的隐藏状态ht~的影响。

rt = σ(WXRxt +Whrht−1)
t = tanh(Wxhxt +Whh(rt @ ht−1))
zt = σ(Wxzxt +Whzht−1)
ht = (1 − zt) @ ht−1 + zt @ h˜t
rt reset gae
t candidate hidden state 候选隐藏门状态
zt gate controlling the weighing between the old hidden state ht-1 and the candidate hidden state h˜t
W are weight matrices for fully connected layers
@ element-wise product element-wise表示按元素一个一个操作, element-wise product实际上是两个同样维度的向量/矩阵每一个元素分别相乘

代码

Semantic Video Segmentation by Gated Recurrent Flow Propagation

计算机视觉-语义分割论文总结相关推荐

  1. ECCV 2020 语义分割论文大盘点(38篇论文)

    作者:CV Daily | 编辑:Amusi Date:2020-09-25 来源:计算机视觉Daily微信公众号(系投稿) 原文:ECCV 2020 语义分割论文大盘点(38篇论文) 前言 距离EC ...

  2. 深度学习应用篇-计算机视觉-语义分割综述[5]:FCN、SegNet、Deeplab等分割算法、常用二维三维半立体数据集汇总、前景展望等

    [深度学习入门到进阶]必看系列,含激活函数.优化策略.损失函数.模型调优.归一化算法.卷积模型.序列模型.预训练模型.对抗神经网络等 专栏详细介绍:[深度学习入门到进阶]必看系列,含激活函数.优化策略 ...

  3. 多篇开源CVPR 2020 语义分割论文

    多篇开源CVPR 2020 语义分割论文 前言 DynamicRouting:针对语义分割的动态路径选择网络 Learning Dynamic Routing for Semantic Segment ...

  4. 不良光线下的语义分割论文调研

    不良光线下的语义分割论文调研 文章目录 不良光线下的语义分割论文调研 Multitask AET with Orthogonal Tangent Regularity for Dark Object ...

  5. 语义分割论文-DeepLab系列

    语义分割论文-DeepLab系列 DeepLabv1 收录:ICLR 2015 (International Conference on Learning Representations) 代码:gi ...

  6. 计算机视觉-语义分割任务常用指标

    计算机视觉-语义分割任务常用指标 呐,这篇笔记记录了语义分割任务中十分常用的指标(包括PA,MPA,mIOU)的计算方式.整体来看,都是像素数目的比值. 首先我们需要先定义语义分割任务的类别 K + ...

  7. 弱监督的语义分割论文汇总

    弱监督的语义分割论文汇总 弱监督语义分割导读 弱监督语义分割论文整理 基于Bounding box的弱监督语义分割 基于Image-level labels的弱监督语义分割 基于Scribbles的弱 ...

  8. enet分割_论文阅读 | CVPR 2016 | 语义分割论文: ENet

    论文源址:https://arxiv.org/abs/1606.02147 tensorflow github: https://github.com/kwotsin/TensorFlow-ENet ...

  9. 不确定性语义分割论文、代码汇总

    文章目录 2017 What Uncertainties Do We Need in Bayesian Deep Learning for Computer Vision? 2019 Uncertai ...

最新文章

  1. linux xampp eclipse xdebug 无法进入断点
  2. 实战struts2——用户登录
  3. SQLServer无法打开用户默认数据库,登录失败,错误4064的解决办法
  4. poj 2492 A Bug's Life
  5. Docker 入门(1)虚拟化和容器
  6. java并发编程之Thread.sleep方法详解
  7. [翻译] TGLStackedViewController
  8. 女神节福利来了!(自动驾驶/三维重建/SLAM/点云/标定/深度估计/3D检测)
  9. mysql查询表字段的个数
  10. leetcode 65. Valid Number
  11. docker镜像下载的网站
  12. 51单片机数码管滚动显示学号_单片机数码管显示,看完这篇就够了
  13. 执行stap测试例报错:“insmod: can‘t insert ‘xx.ko‘: invalid module format”
  14. 北京交通大学2020计算机考研科目,2020北京交通大学软件工程考研初试科目.pdf
  15. vnc远程控制linux密码,如何使用VNC远程控制Linux(Centos)?
  16. Alphabetic Removals详解(特殊算法巧解)
  17. Spark面试近300题初始版本
  18. 黑色渐变遮罩html,巧用CSS遮罩
  19. 国产化服务器兼容系统,必须兼容中国芯,国产操作系统再迎来发展机遇?
  20. JavaScript闭包的粗浅理解

热门文章

  1. 大二暑假java培训第七天
  2. 图解CAN与CANopen协议,小白都能一目了然
  3. 多协议充电桩平台系统小程序方案
  4. Beautifully crafted open source icons
  5. 用conda建一个python2虚拟环境
  6. 刘小乐教授:我与生物信息学的不解之缘
  7. 机器学习中的矩阵向量求导(五) 矩阵对矩阵的求导
  8. ubifs 分区格式化方法
  9. Pano Flutter SDK 全新发布,跨平台音视频开发更easy
  10. ionic platform add android环境搭建之难产【i1】【小白-2016.11.5】