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

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM