如何評價谷歌的xception網路?


最近看了些文章,發現,自從把一個5*5卷積核用兩個3*3卷積核,3*3卷積核分解成1*3和3*1卷積核後,對CNN的研究,目前集中在三個維度:channel, filter,和殘差網路的connection。目標是把模型做小、做強、做到移動端,精度差點,沒關係,可以加數據,離線多跑幾輪。

1. Channel

無論Xception,還是ResNeXt,還有面向移動端的ShuffleNet和MobileNet。都是基於Group Convolution思想在channel維度進行「網路工程」,搭建新的模型。

關於Xception,有個小插曲,據了解論文Factorized Convolutional Neural Network在2016年8月上傳於arxiv,而Xception 的最早版本上傳於2016年10月,並引用前者,兩篇文章的核心都是Depth-wise Separable Convolution,而現在Xception盛名遠揚。搶arxiv和「拼爹」的時代。

1. 1 Group Convolution

Group Convolution是指將channels細分成多個group,然後再分組進行Convolution。據我所知,這種思想始於2012年AlexNet的雙GPU架構設計,相當於把channels均分到兩個GPU,分組卷積:

如果對每個通道進行卷積,就是Depthwise Convolution。

1.2 Separable Convolution

在卷積層中間插入1*1卷積,即pointwise convolution。舉個例子,對經典的卷積操作,如果OD是256,ID是128,卷積核大小3*3,需要的參數為128*3*3*256=294912個參數,而Spearable卷積方法,假如DM=4,這樣中間層的channel數為128*4=512,再經過1*1卷積降維到256個channel,需要的總參數為:128*3*3*4 + 128*4*1*1*256=135680,參數量相當於普通卷積的46%,還增加了通道數(128*4=512)增強了特徵表達能力。

所以說,理想的卷積Block應該是先用1*1卷積核降channel,然後再進行3*3卷積提取特徵,最後再用1*1卷積核降channel。

綜上,depthwise separable convolution = depthwise convolution + pointwise convolution

1.3 Xception

利用上述結構重新設計Inception model block,就是Xception;重新設計Resnet,就是ResNeXt架構。以達到在減少參數量的情況下增加模型的層數,既減少了存儲空間,還增強了模型的表達能力。

通常來講,如果對channel進行分組卷積,各小組就分頭行動,互相沒有交流,這樣顯然沒有充分利用channel的信息。ShuffleNet在分組之前,先將channel隨記打亂,這樣對信息的利用更充分,因此可以通過設計降低模型參數量而不影響模型的表達能力。

2. Filter

2.1 Wavenet

經典CNN的Filter是在鄰域內採樣卷積,如3*3卷積核是在8鄰域採樣。

但是,Filter可以跨點採樣進行卷積,從而可以利用更大範圍內的信息,即Dilated CNN,最早應用於圖像語義分割,去年穀歌提出的Wavenet模型將CNN拓展到語音識別和語音合成。

2.2 Dilated Resnet

將Dilated CNN的思想應用到Resnet架構中,就是CVPR 2017的「Dilated Residual Networks」

3. Connection

ResNet的Connection方式是將輸入和輸出相加,形成一個殘差Block。DenseNet則更進一步,在每個Block內,將輸入和輸出直接拼接,而且在每一層都和之前所有層的輸出拼接,這樣可以減少中間層的通道數。

而最新的Dual Path Networks模型,則是融合了ResNet和DenseNet的優點:特徵重利用和特徵重提取。採用了雙通道架構:

可以預想,接下來,將會有模型融合以上三點的集大成者?

以上,僅供參考。

參考文獻:

1. ImageNet Classification with Deep Convolutional Neural Networks. Alex etc, 2012.

2. Learning Visual Representations at Scale. Vincent Vanhoucke etc, 2014.

3. Xception: Deep Learning with Depthwise Separable Convolutions. Fran?ois Chollet, 2017.

4. Aggregated Residual Transformations for Deep Neural Networks. Saining Xie etc, 2017.

5. ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices. Xiangyu Zhang etc, 2017.

6. MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications. Andrew G. Howard etc, 2017.

7. Wavenet: a generative model for raw audio. Aaron van den Oord etc, 2016.

8. Densely Connected Convolutional Networks. Gao Huang etc, 2016.

9. Dual Path Networks. Yunpeng Chen etc, 2017.


看完Xception Resnext MobileNet這一系列,感覺都是group convolution的應用,group size 不同而已,Xception 用depthwise convolution算是ResNext的特例,group size 為輸入通道大小


推薦閱讀:

怎麼看今天Amazon發布的16 GPU的p2.16xlarge EC2實例?
深度學習中為什麼普遍使用BGR而不用RGB?
支持多label的caffe,有比較好的實現嗎?
如何評價谷歌最近在人臉數據集上取得驚人效果的BEGAN模型?
請問如何將深度學習Caffe做成一個動態庫,方便在其他應用程序中調用?

TAG:計算機視覺 | 深度學習DeepLearning |