天天看點

【ECCV2020】WeightNet: Revisiting the Design Space of Weight Networks

論文:https://arxiv.org/pdf/2007.11823.pdf

代碼:https://github.com/megvii-model/WeightNet

這是香港中文大學和曠視科技的最新工作,提出了一個即插即用并可以有效漲點的網絡WeightNet,作者也指出,該網絡是受了最近關注度較高的 conditional network 的啟發。

Conditional network (或者叫做 Dynamic network)最近受到廣泛關注。作者分析了 Conditional network 和 SENet 的聯系,二者都包括兩個步驟:第1步,得到一個 attention activation vector,然後 SENet 利用該向量給特征通道配置設定權重,CondConv 是給一系列卷積核配置設定權重 (a mixture of expert weights)。兩者一直被視作完全不同的方法,作者提出一個問題:“Do they have any correlations ?”

為此,作者設計了WeightNet,首先需要了解一個概念:Grouped FC。 普通的FC操作可以了解 為一個矩陣運算 \(Y=WX\) ,如下圖(a)所示。在此基礎上添加分組操作的話,就成為了圖(b) 所示的 Grouped FC。在圖中,FC運算分為了 \(g\) 組,每一組的輸入為 \(i/g\) ,輸出 為 \(o/g\) 。這是聯系 WeightNet 和 CondConv 的關鍵操作。

【ECCV2020】WeightNet: Revisiting the Design Space of Weight Networks
同時,作者給出一個定義:設輸入特征為 \(X\in R^{C\times H\times W}\),輸出特征為\(Y\in R^{C\times H\times W}\),卷積權值可以看作 \(W \in R^{C\times C\times k\times k}\)。這樣卷積可以看作 \(Y_c=W_c * X\)。

1. Rethinking CondConv

CondConv 第一步是得到權重向量 \(\alpha\) ,這個步驟可以這樣描述:\(\alpha=\sigma(W_{fc1}\times \frac{1}{hw}X)\) ,這裡 \(W_{fc1}\in R^{m\times C}\), \(\alpha\in R^{m\times1}\)。

第二步,為卷積配置設定權重,可以了解為:\(W'=W^T\times \alpha\),這裡 \(W\in R^{m\times CCkk}\)

2. Rethinking SENet

SENet 第一步也是得到權重向量\(\alpha\),可以這樣描述:\(\alpha = \sigma(W_{fc2}\times \textrm{ReLU}(W_{fc1}\times \frac{1}{hw}X))\) 。兩個全連接配接層中間有降維,reduction ratio 為 16。

第二步,為 feature map 的各個通道配置設定權重,整個過程可以了解為:\(Y_c=(W'_c\cdot \alpha_c) * X\)。這可以了解為一個特殊的 Grouped FC,輸入是 \(C\),輸出是 \(C\times C\times k\times k\),隻是分為 \(C\) 組。

3. WeightNet

作者提供了一個圖來說明 WeghtNet, SENet 和 CondConv 的差別與聯系,如下所示。三個操作都輸出同樣的 \(C\times C\times k \times k\)卷積矩陣,但是 圖(a) 為隻有一組(CondConv),圖(b)為有C組(SENet),圖(c)為自定義組數(WeightNet)

【ECCV2020】WeightNet: Revisiting the Design Space of Weight Networks

作者在 WeightNet 中引入了參數 \(M\) 和 \(G\)。 權重向量 \(\alpha\) 為一個 \(M \times C\)維的向量。但是因為次元過高,使用了兩個全連接配接層處理: \(\alpha = \sigma(W_{fc2}\times W_{fc1} \times \frac{1}{hw}X)\),丙個全連接配接層,reduction ratio 為16。

在第二步裡,建立 Grouped FC,輸入為 \(M\times C\),輸出為 $\times C\times C\times k \times k $,分組數量為 \(G\times C\)。總體的圖示如下:

【ECCV2020】WeightNet: Revisiting the Design Space of Weight Networks

需要注意的是,資料訓練是要分batch的,是以,輸入的X次元為\((B, C, H , W)\),對其進行reshape 得到 \((1, B\times C, H, W)\),然後對生成的 \(W\) 進行reshape得到 \((B, C, C, k, k)\),然後采用組卷積的形式進行計算。 CondConv 也采用了這樣的處理方式。

實驗部分建議參考一下論文,這裡不詳細介紹了。

繼續閱讀