天天看點

深度學習方法(十一):卷積神經網絡結構變化——Google Inception V1-V4,Xception(depthwise convolution)

歡迎轉載,轉載請注明:本文出自Bin的專欄blog.csdn.net/xbinworld。

技術交流QQ群:433250724,歡迎對算法、機器學習技術感興趣的同學加入。

上一篇講了深度學習方法(十):卷積神經網絡結構變化——Maxout Networks,Network In Network,Global Average Pooling,本篇講一講Google的Inception系列net,以及還是Google的Xception。(扯一下,Google的Researcher們還是給了很多很棒的idea的,希望讀者朋友和我自己在了解paper之餘,可以提出自己的想法,并實作。)

如果想看Xception,就直接拉到最後看,有手畫示意圖。

Inception V1-V4

Inception V1:

V1是大家口頭說的Googlenet,在之前的深度學習方法(五):卷積神經網絡CNN經典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning有簡單介紹,這裡再凝練一下創新點:

深度學習方法(十一):卷積神經網絡結構變化——Google Inception V1-V4,Xception(depthwise convolution)

圖1

要想提高CNN的網絡能力,比如分類準确率,一般的想法就是增大網絡,比如Alexnet确實比以前早期Lenet大了很多,但是純粹的增大網絡——比如把每一層的channel數量翻倍——但是這樣做有兩個缺點——參數太多容易過拟合,網絡計算量也會越來越大。

以下重點:目前很多工作證明,要想增強網絡能力,可以:增加網絡深度,增加網絡寬度;但是為了減少過拟合,也要減少自由參數。是以,就自然而然有了這個第一版的Inception網絡結構——同一層裡面,有卷積1* 1, 3* 3,5* 5 不同的卷積模闆,他們可以在不同size的感受野做特征提取,也算的上是一種混合模型了。因為Max Pooling本身也有特征提取的作用,而且和卷積不同,沒有參數不會過拟合,也作為一個分支。但是直接這樣做,整個網絡計算量會較大,且層次并沒有變深,是以,在3*3和5*5卷積前面先做1*1的卷積,降低input的channel數量,這樣既使得網絡變深,同時計算量反而小了;(在每一個卷積之後都有ReLU)

Inception V2-V3:

V2和V3版本比較接近,就不絕對區分了,具體可以看[3]。講一講其中的創新點:

首先,用兩層堆疊的3*3代替了一層5*5,我們可以看到,這樣做參數量少了,計算量少了,但是層數變深了,效果也變好了:

深度學習方法(十一):卷積神經網絡結構變化——Google Inception V1-V4,Xception(depthwise convolution)

用1*3和3*1卷積替代3*3卷積,計算量少了很多,深度變深,思路是一樣的。(實際上是1*n和n*1替代n*n,n可以變)

深度學習方法(十一):卷積神經網絡結構變化——Google Inception V1-V4,Xception(depthwise convolution)

放到Inception結構裡,下面是原始的Inception

深度學習方法(十一):卷積神經網絡結構變化——Google Inception V1-V4,Xception(depthwise convolution)

下面圖5-6-7是改進版本:

深度學習方法(十一):卷積神經網絡結構變化——Google Inception V1-V4,Xception(depthwise convolution)
深度學習方法(十一):卷積神經網絡結構變化——Google Inception V1-V4,Xception(depthwise convolution)
深度學習方法(十一):卷積神經網絡結構變化——Google Inception V1-V4,Xception(depthwise convolution)

總體的網絡結構:

深度學習方法(十一):卷積神經網絡結構變化——Google Inception V1-V4,Xception(depthwise convolution)

我們看到,Inception并不是全程都用,是在圖像比較小了采用,并且,圖5-6-7的結構是依次用的,他們适合不同size的圖像。

Inception V4:

v4研究了Inception子產品結合Residual Connection能不能有改進?發現ResNet的結構可以極大地加速訓練,同時性能也有提升,得到一個Inception-ResNet v2網絡,同時還設計了一個更深更優化的Inception v4模型,能達到與Inception-ResNet v2相媲美的性能 [7]

Inception-resnet-v1 and Inception-ResNet v2都是用的這個結構圖,差別在于下圖的注釋中,

深度學習方法(十一):卷積神經網絡結構變化——Google Inception V1-V4,Xception(depthwise convolution)

這篇文章通篇就是各種微結構變化,我在這裡貼也沒什麼意思,希望讀者移步論文[4],找到對應的圖号,看一下。

深度學習方法(十一):卷積神經網絡結構變化——Google Inception V1-V4,Xception(depthwise convolution)
深度學習方法(十一):卷積神經網絡結構變化——Google Inception V1-V4,Xception(depthwise convolution)

其實我也有疑惑,雖然paper總可以說出一些道道,結果也确實有一定提升,但是對于不同層設計了完全不同的微結構,這樣會不會模式上太不統一了?有沒有用更簡潔統一的方式,達到一樣的效果呢?我相信是有的,自我感覺Inception V1的模式很簡單,Resnet的跳層結構也很簡單,美,但是到了V4這裡,結構變化太多,很難了解為什麼是必須的呢?**

就好比我們以前做電影推薦比賽,最終獲勝的結果往往是多模型混合,但是我個人還是最感興趣那個最最有效果的單模型是什麼樣的。

Xception

非常新的一個工作[5],前面講了那麼多Inception網絡,那麼Inception網絡的極限是什麼呢?其中一個極限版本如下:

深度學習方法(十一):卷積神經網絡結構變化——Google Inception V1-V4,Xception(depthwise convolution)

在1*1卷積之後,對每一個channel,做3*3的*1的獨立卷積,然後再concat。認為每一個spatial conv對cross channel feature是沒有關系的。

[5]作者提出了Depthwise Separable Convolution,或者簡稱Depthwise Convolution,是下面這個樣子:先做channel-wise conv,然後再過1*1卷積,中間沒有ReLU,最後有ReLU。

深度學習方法(十一):卷積神經網絡結構變化——Google Inception V1-V4,Xception(depthwise convolution)

上面提到兩種結構的差別,文中這一段寫的很清楚:

深度學習方法(十一):卷積神經網絡結構變化——Google Inception V1-V4,Xception(depthwise convolution)

整個網絡結構:

深度學習方法(十一):卷積神經網絡結構變化——Google Inception V1-V4,Xception(depthwise convolution)

OK,本篇到這裡,隻是作為一個記錄和引導,讓大家發現更多結構設計的idea。

參考資料

下面參考資料部分paper還帶了test error

[1] Going Deeper with Convolutions, 6.67% test error

http://arxiv.org/abs/1409.4842

[2] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift, 4.8% test error

http://arxiv.org/abs/1502.03167

[3] Rethinking the Inception Architecture for Computer Vision, 3.5% test error

http://arxiv.org/abs/1512.00567

[4] Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning, 3.08% test error

[5] Xception: Deep Learning with Depthwise Separable Convolutions

[6] 深入淺出——網絡模型中Inceptionv1到 v4 的作用與結構全解析

[7] Inception in CNN

[8] 論文筆記 | Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning

繼續閱讀