Learning to Predict Context-adaptive Convolution for Semantic Segmentation

Learning to Predict Context-adaptive Convolution for Semantic Segmentation

2020-04-20 17:41:35

Paperhttps://arxiv.org/pdf/2004.08222.pdf 

Code

 

1. Background and Motivation

本文提出一种新的方法来学习背景信息,以辅助语义分割。不同于常规的 channel attention的思路,本文利用动态卷积核的做法来搞。但是不同于最基本的卷积核方法(即 Dynamic Filter Network),因为这种方法有太多 FC layer,从而导致参数量过大。而是通过一种 matrix multiplication 的方法来得到 kernel parameters。这种 kernel 不但完全编码了输入特征图的全局内容,而且通过 depth-wise convolution 在 输入特征上,对每一个空间位置都产生了 context-aware spatially-varying feature weighting factors。此外,我们利用了一系列的空洞卷积,以及不同空洞率的方法,来有效地捕获多尺寸的信息。

 

 

 

 

 

 

 

 

 

 

 

 

本文的主要创新点如下:

1). 为了更好的利用全局场景信息来正则化语义分割,作者提出通过预测 spatially-varying feature weighting factors 的方法来有效地加权不同的特征。从而改善语义分割的性能。

2). 从输入图像的全局场景中,预测 context-adaptive convolutional kernels 来有效地训练神经网络。

3). 在三个数据集上取得了不错的效果。

 

2. The Proposed Approach

特征的再加权已经被证明是非常有效地捕获长距离语义信息的方法,该方法利用 channel-wise 的加权因子来进行加权处理。虽然在不同任务中,都取得了提升,但是这种方法的一个问题是:在 2D feature map 上,所有的空间位置上 weight vector 是共享的。作者认为,对于语义分割来说,一个全局共享的加权向量并非是最优的选择,因为不同的空间位置基本上是属于不同类别物体的。所以,需要学习一种全局背景内容,但是不同位置上要有差异性,从而捕获到其特有的性质,才能改善语义分割的效果。作者认为从全局的角度来预测的 kernels 有更好的场景结构,从而更好的加权不同位置的特征。

为了达到上述目标,作者提出一种 Context-adaptive Convolution network (CaC) 来利用全局内容来学习 channel-wisely re-weight 。一系列的 context-adaptive convolutional kernels 从 CaC 模块中学习出来。跟之前 Dynamic filter 的做法不同,作者这里通过简单地 matrix multiplication 来进行有效的参数估计。更重要的是,CaC kernels 是从 2D feature map 上得到的。

 

2.1. Context-adaptive Convolution Kernel Prediction

作者利用 pre-trained ResNet 作为骨干网络来提取图像的特征。为了构建空间变化的特征加权,有两种 naive 的方法:

1). 一种方法是直接预测 c 个 s*s*c 的卷积核,s*s 是卷积核。然后利用这 c 个卷积核进行卷积操作。但是这种方法需要利用 fc 层来预测 kernel weights,参数量很大;

2). 另外一种方式是:从 global average pooled features 上,利用 fc layers 来捕获 global context。特征加权图可以用预测的 kernels 在输入 feature maps 上进行卷积得到。但是这种方法丢失了所有的空间信息,所以效果不是很大。

 

为了解决上述挑战,本文提出一种 Context-adaptive Convolutional module 来预测一系列的 s*s*c 的 CaC convolutional kernels。输入的特征图 X 首先被转换为 2D query feature map Q,和 key feature map K,这里用的是两个不同的转换函数 Tk and Tq。这两个函数是通过独立的 1*1 卷积操作得到的。总的来说,key feature K 捕获了 c 个不同性质,query feature Q 捕获了全局空间特征。

 

为了达到这个目标,query feature 和 key feature 被首先 reshape 以得到 Q' 和 K'。对于 Q(:, i)' 第 i 个 列的 query feature,可以用于捕获总的空间分布。这个结果可以用于衡量两个空间分布之间的差异性。如果我们重复该过程 c 次,我们可以得到一个 c-维的向量,可以刻画每一个特征通道的空间分布。由于我们有 $s^2$ 个 query vectors,我们可以捕获 $s^2$ 个特性:

然后,可以将上述 $\hat{D}$ reshape 为 s*s*c,然后用 BN 来得到预测的 D 作为 CaC kernels,并且可以用于和输入特征 X 进行卷积操作,以得到空间变化的特征加权因子。

 

2.2. Spatially-varying Weight Generation

我们利用得到的 CaC kernel 来预测 spatial-varying weighting map 来对输入特征图进行加权处理。得到的 kernels D 可以用于进行 depth-wise convolution。所以,D 的每一个通道可以用于调节输入特征图的一个通道。为了新一步的改善预测 kernel D 的尺寸不变性,以及捕获多尺度内容。作者将原始预测的 kernels  记为 D1,并且预测了另外两个 CaC kernels,但是空洞率设置为 3 和 5,分别记为 D2 and D3。

 

如图 2 所示,对于预测的 CaC kernels 的每一个集合 D1, D2, D3,他们被用于在输入特征图 X 上分别执行 depth-wise convolution。每一个都会产生一个独立的权重图 W1, W2, W3,这些图可以融合得到 W:

给定W之后,作者利用这个 W 对原始输入的特征进行加权处理: 。

 

2.3. Global Pooling and Multi-head Ensembles:

作者引入 global pooling branch 来进行全局平均处理。

Multi-head 的意思是:并行的执行多次 CaC 模块,以得到多个输出特征图。

 

3. Experiments

 

 

 

 

 

 

 

posted @ 2020-04-20 17:43  AHU-WangXiao  阅读(1095)  评论(0编辑  收藏  举报