1. 程式人生 > >Inception V1-V4

Inception V1-V4

論文:Inception V1:https://arxiv.org/abs/1409.4842

tensorflow官方程式碼:https://github.com/tensorflow/models/blob/master/research/slim/nets/inception_v1.py

 

網路結構:

網路基本模組:

要想提高CNN的網路能力,一般讓網路更深或者更寬。Inception則走的變寬路線。

圖a:網路計算量非常大。

圖b:通過1*1卷積把資訊集中在一起,減少了計算量(降的太多會帶來另一個問題--資訊丟失)。在不同size的感受野上做特徵提取,進行多維度特徵的融合,使得網路更寬,也在一定程度上避免了網路太深梯度彌散的問題。

Auxiliary Classifier:

網路太深的話不好訓練,所以訓練中加了兩個側枝,監督網路,起正則化作用(Inception V3 中有提到,shoutcut之後很少人用了)。


繼續沿用Alxnet的LRN(區域性響應歸一化):

                                              


 

論文:Inception V2 :https://arxiv.org/abs/1502.03167

tensorflow官方程式碼:https://github.com/tensorflow/models/blob/master/research/slim/nets/inception_v2.py

創新點:

棄用了LRN,加入了Batch Normalization,其實在InceptionV2就用兩個3*3卷積替代5*5卷積了(主要在V3體現了).

Batch Normalization :

每一層網路的輸入都會因為前一層網路的引數的變幻其分佈發生改變,這要求有著很小的學習率和對引數很好的初始化,使得訓練過程變得緩慢且複雜。我們希望每一層的輸入分佈是穩定的,這便是BN做的事情(Internal Covariate Shift)。

1.加速了網路訓練。

2.防止梯度消失(網路越深,越容易梯度彌散)。

 

FC:所有樣本同一個神經元的啟用值,求其均值和方差。

Conv:所有樣本同一個卷積核輸出的feature map,求其均值和方差。

γ,β學習引數,並不是所有的網路(0,1)表現最好。

training:均值和方差根據batch計算得到,momentum控制

inference:滑動平均值


論文:Inception V3 :https://arxiv.org/abs/1512.00567

tensorflow官方程式碼:https://github.com/tensorflow/models/blob/master/research/slim/nets/inception_v3.py

創新點:

5*5卷積用2層3*3卷積替代;

7*7卷積用3層3*3卷積替代;

3*3卷積用1*3和3*1替代。

提出了 "Model Regularization via Label Smoothing"

通用設計規則:

作者在文章開頭歸納了4條神經網路設計原則:

1.bottleneck  feature map減小的時候要合適,不然會導致丟失資訊。

One should avoid bottlenecks with extreme compression。

the dimensionality merely provides a rough estimate of information content.

2.更高維度的特徵表示更稀疏,耦合更少,容易訓練。文中原話:

Higher dimensional representations are easier to process locally within a network. Increasing the activations per tile in a convolutional network allows for more disentangled features. The resulting networks will train faster.

3.空間聚合,在1*1降低通道數的時候並不會帶來很大的影響

Spatial aggregation can be done over lower dimensional embeddings without much or any loss in representational power. For example, before performing a more spread out (e.g. 3 × 3) convolution, one can reduce the dimension of the input representation before the spatial aggregation without expecting serious adverse effects

4.協調提高網路深度和寬度

Balance the width and depth of the network.

Increasing both the width and the depth of the network can contribute to higher quality networks

卷積分解:

感受野相同,引數變少。

網路結構:

Model Regularization via Label Smoothing(LSR):

1.避免過擬合

2.防止網路預測過於自信

it may result in over-fitting:

the model becomes too confident about its prediction

ε是一個較小的數,這樣ground truth對應的標籤有大部分的概率,而其它類別也有很小的的概率。


論文:Inception V4:https://arxiv.org/abs/1602.07261

tensorflow官方程式碼:

Inception V4:https://github.com/tensorflow/models/blob/master/research/slim/nets/inception_v4.py

Inception_resnet_v2:https://github.com/tensorflow/models/blob/master/research/slim/nets/inception_resnet_v2.py

創新點:

結合了Resnet。

Residual Connection:

殘差連線只能加速網路收斂,並不會明顯提升模型精度,真正提高網路精度的還是“更大的網路規模”。

Although the residual version converges faster, the final accuracy seems to mainly depend on the model size.

引入了residual connection以後,網路太深了不穩定,即使降低學習率,增加BN層都沒有用,這時候就在啟用前縮小殘差可以保持穩定。