【知識星球】分組卷積最新進展,全自動學習的分組有哪些經典模型?
- 2019 年 11 月 11 日
- 筆記
歡迎大家來到《知識星球》專欄,這裡是網路結構1000變小專題,今天介紹最新的分組卷積模型的進展。
作者&編輯 | 言有三
1 CondenseNet
有三AI知識星球-網路結構1000變
CondenseNet

以前我們給大家講了許多的分組網路,如果分組本身可以學習,而不是通過預先定義的規則,可能取得更好的效果,其中的一個典型代表就是condensenets,這是一個效率更高的模型,它是對densenet的改進。
作者/編輯 言有三
從圖中可以看出,它的基本流程是,首先將輸出進行分組,圖中共12個輸入通道,分為3組,每一組兩個輸出通道。然後通過一個condensing過程去除那些權重小的連接,這是一個剪枝操作。最後在optimization過程中對這些連接的權重進行微調學習。在訓練的時候,最後的連接通過學習1*1卷積實現,而測試的時候則將通道進行重排,得到一個標準的分組卷積,這種方法與分組卷積的不同之處就在於通道的分組組合是通過學習而來,而不是按照順序進行劃分。
作者用他們在DenseNet框架上進行實驗,只使用了DenseNet1/10的計算量,就取得了相當的性能,之所以能夠降低計算量,就是因為對1*1卷積進行了分組學習,3*3卷積則使用標準分組卷積替代。
下面是它在ImageNet分類任務和一些經典模型的對比:


可以看出,CondenseNet的確以較低的計算代價取得了很好的效果。
參考文獻
[1] Huang G, Liu S, Van der Maaten L, et al. Condensenet: An efficient densenet using learned group convolutions[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 2752-2761.
2 FLGC
有三AI知識星球-網路結構1000變
Fully Learnable Group Convolution

通常的分組卷積網路分組是固定的,CondenseNet曾經學習了均勻的分組策略,本文則是完全的end-to-end學習到了更加自由的分組策略,流程也更加簡單。
作者/編輯 言有三
該論文解決的是如何學習每一個分組中的通道及其相關的連接。假如一個conv層的輸入輸出channels個數分別是C和N ,被分成g個groups。
首先我們可以用一個大小為C×G的二值矩陣來表示分組情況,1表示歸入某一組,每一個只有一個非零值。

對於卷積核也類似,可以用一個N×G的二值矩陣來表示分組情況。

所以要優化的就是這兩個矩陣,為了讓網路可以反向傳播,實際優化時用softmax操作來替換掉上述的二值操作。
訓練完之後,實際使用時,就需要對通道進行重新排列,這可以通過一個index-reordering層來完成。

下面是它在ImageNet分類任務和CASIA人臉識別任務上的實驗結果:


可以看出,該方法的策略是有效的。不過該方法策略過於自由,在實際的硬體平台上並不會如此有效。
參考文獻
[1] Wang X, Kan M, Shan S, et al. Fully Learnable Group Convolution for Acceleration of Deep Neural Networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 9049-9058.
3 DGC
有三AI知識星球-網路結構1000變
Dynamic Grouping Convolution

通常的分組卷積網路分組數目是固定的,而本文Dynamic Grouping Convolution(DGC)則可以學習到分組的數目。
作者/編輯 言有三
首先我們需要一個二值的矩陣U來表示一個卷積層中輸入輸出通道之間的連接,一些結構示意圖如下:

(a)是正常卷積,輸入輸出通道之間完全稠密連接;(d)是分組卷積,輸入輸出通道被分為若干個組,每個組中的通道密集連接;(b)是depth-wise分組卷積,分組數目等於輸入輸出 通道個數。(c)(e)是學習到的分組卷積,(f)是自由連接。
不過不是每一個二值矩陣都可以表示一個分組卷積,那麼矩陣U究竟要滿足什麼樣的條件才能使得所表示的連接是一個分組卷積呢?
作者認為如果矩陣U可以表示為若干個矩陣的Kronecker乘積,那麼就能得到分組卷積的結構,這就是需要滿足的約束條件。兩個矩陣的Kronecker乘積案例如下:


大家可以推一下前面幾個連接對應的矩陣,每一個都需要3個2×2的矩陣。
因此我們只需要優化logC (C是channels個數,2為底數)個2×2的矩陣參數,就可以確定分組結構。
下面是使用ImageNet數據集和ResNet的結果,x軸是從輸入到輸出的通道數,y是分組數,可以發現越高的層分組越大,越低的層分組越小,這有利於增強特徵表達能力。

參考文獻
[1] Zhaoyang Zhang, Jingyu Li, Wenqi Shao, Zhanglin Peng, Ruimao Zhang, Xiaogang Wang, Ping Luo. "Differentiable Learning-to-Group Channels via Groupable Convolutional Neural Networks" ICCV2019
4 關於有三AI知識星球
有三AI知識星球是我們繼公眾號之後重點打造的原創知識學習社區,有需要的同學可以閱讀下文了解生態。