組卷積(group convolution)

說明分組卷積之前我們用一張圖來體會一下一般的卷積操作。

 從上圖可以看出,一般的卷積會對輸入數據的整體一起做卷積操作,即輸入數據:H1×W1×C1;而卷積核大小爲h1×w1,通道 爲C1,一共有C2個,然後卷積得到的輸出數據就是H2×W2×C2。這裏我們假設輸出和輸出的分辨率是不變的。主要看這個過 程是一氣呵成的,這對於存儲器的容量提出了更高的要求。
但是分組卷積明顯就沒有那麼多的參數。先用圖片直觀地感受一下分組卷積的過程。對於上面所說的同樣的一個問題,分組卷 積就如下圖所示

 可以看到,圖中將輸入數據分成了2組(組數爲g),需要注意的是,這種分組只是在深度上進行劃分,即某幾個通道編爲一 組,這個具體的數量由(C1/g)決定。因爲輸出數據的改變,相應的,卷積核也需要做出同樣的改變。即每組中卷積核的深度 也就變成了(C1/g),而卷積核的大小是不需要改變的,此時每組的卷積核的個數就變成了(C2/g)個,而不是原來的C2 了。然後用每組的卷積核同它們對應組內的輸入數據卷積,得到了輸出數據以後,再用concatenate的方式組合起來,終的 輸出數據的通道仍舊是C2。也就是說,分組數g決定以後,那麼我們將並行的運算g個相同的卷積過程,每個過程裏(每組), 輸入數據爲H1×W1×C1/g,卷積核大小爲h1×w1×C1/g,一共有C2/g個,輸出數據爲H2×W2×C2/g。
舉個例子:
Group conv本身就極大地減少了參數。比如當輸入通道爲256,輸出通道也爲256,kernel size爲3×3,不做Group conv參數 爲256×3×3×256。實施分組卷積時,若group爲8,每個group的input channel和output channel均爲32,參數爲 8×32×3×3×32,是原來的八分之一。而Group conv後每一組輸出的feature maps應該是以concatenate的方式組合。 Alex認 爲group conv的方式能夠增加 filter之間的對角相關性,而且能夠減少訓練參數,不容易過擬合,這類似於正則的效果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章