1. 程式人生 > >經典卷積神經網路總結:Inception v1\v2\v3\v4、ResNet、ResNext、DenseNet、SENet等

經典卷積神經網路總結:Inception v1\v2\v3\v4、ResNet、ResNext、DenseNet、SENet等


本文為總結今年來的卷積神經網路,主要按照時間線和方法類似程度的順序總結。

開篇先前說下概要,然後展開詳細介紹,主要是在densenet、resnext、senet這三個網路上介紹,前面的一系列網路大概講一下思想。

1、時間軸

時間 團隊 論文
2014.09 google Inception v1
2015.02 google Inception v2
2015.12 google Inception v3
2016.02 google Inception v4
時間 團隊 論文
2015.12 microsoft ResNet
2016.11 UCSD & Facebook ResNext
時間 團隊 論文
2016.08 CORNELL & Tsinghua & Facebook DenseNet
2017.09 momenta SENet

2、關於模型改進的一些個人總結

  1. 擴充套件網路深度,如resnet結構;
  2. 擴充套件網路寬度,如inception結構;
  3. 擴充套件cardinality,如resnext結構;
  4. 使用3x3卷積核替換5x5\7x7卷積核;
  5. 分解卷積核,nxn->1xn,nx1,減少模型引數;
  6. 上面方法進行排列組合;
  7. attention結構,用在batch、channel、pixel上;

Inception系列

1、Inception v1

論文連結:https://arxiv.org/pdf/1409.4842.pdf

1.1 核心思想

傳統網路都是通過層的疊加,增加網路深度,這篇論文提出從網路寬度上改進,通過concat操作,將經過不同kernel尺度的feature map進行concat,增加網路對尺度的適應性、增加網路的寬度,提高了網路內部資源的利用率。

inception block結構如下圖所示:

這裡寫圖片描述

網路中除了新增inception block之外,還使用global average pooling代替了全連線層,可以減少引數量,保留顯著特徵,降低特徵維度。

1.2 網路結構

這裡寫圖片描述

1.3 實驗結果

這裡寫圖片描述

參考連結:

2、Inception v2

論文連結:https://arxiv.org/pdf/1502.03167.pdf

1.1 核心思想

首次提出BN層,減少Internal Covariate Shift,具體BN層的解釋可以參考以前的部落格,將每一次一個batch中的資料分佈控制在均值為0,方差為1。

1.2 網路結構

就是添加了BN層

1.3 實驗結果

這裡寫圖片描述

參考連結:

3、Inception v3

論文連結:https://arxiv.org/pdf/1512.00567.pdf

1.1 核心思想

1、卷積核進行分解:使用兩個3x3卷積核代替5x5卷積核,三個3x3卷積核代替7x7卷積核,減少引數量,加快計算。(兩個3x3與一個5x5作用是一樣的,其感受野都是5)

這裡寫圖片描述

這裡寫圖片描述

2、進一步將nxn卷積核分解為1xn和nx1卷積核;

這裡寫圖片描述

這裡寫圖片描述

3、減少feature map的size,增加channel數;

1.2 網路結構

這裡寫圖片描述

1.3 實驗結果

這裡寫圖片描述

參考連結:https://www.cnblogs.com/eniac1946/p/8669937.html

4、Inception v4

論文連結:https://arxiv.org/pdf/1602.07261.pdf

1.1 核心思想

基於inception v3的基礎上,引入殘差結構,提出了inception-resnet-v1和inception-resnet-v2,並修改inception模組提出了inception v4結構。基於inception v4的網路實驗發現在不引入殘差結構的基礎上也能達到和inception-resnet-v2結構相似的結果,從而認為何凱明等人認為的:“要想得到深度卷積網路必須使用殘差結構”這一觀點是不完全正確的。

1.2 網路結構

這裡寫圖片描述

1.2.1 Inception-v4

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

1.2.2 Inception-resnet-v1

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

1.2.3 Inception-resnet-v2

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

1.3 實驗結果

  • 在inception-resnet-v1與inception v3的對比中,inception-resnet-v1雖然訓練速度更快,不過最後結果有那麼一丟丟的差於inception v3;
  • 在inception-resnet-v2與inception v4的對比中,inception-resnet-v2的訓練速度更塊,而且結果比inception v4也更好一點。所以最後勝出的就是inception-resnet-v2。

這裡寫圖片描述

參考連結:

1、https://www.cnblogs.com/shouhuxianjian/p/7786760.html

2、https://blog.csdn.net/loveliuzz/article/details/79135583

ResNet系列

5、ResNet

論文連結:https://arxiv.org/pdf/1512.03385v1.pdf

1.1 核心思想

第一次提出殘差結構,主要解決兩個問題

  • 梯度消失
  • 隨著網路深度增加,效能沒有提升反而有所下降

如下圖,本來要學習H(x),現在轉換為F(x)+x,二者效果相同,但是優化難度下降,並且因為多了一個x,使得求導時總有1,避免了梯度消失問題。

這裡寫圖片描述

進一步拓展殘差結構:

這裡寫圖片描述

1.2 網路結構

1、首先是vgg網路、plain 網路和殘差網路的結構比較;

這裡寫圖片描述
這裡寫圖片描述

2、本文中的網路結構

這裡寫圖片描述

1.3 實驗結果

這裡寫圖片描述

參考連結:

6、ResNext

論文連結::https://arxiv.org/pdf/1611.05431.pdf

6.1 核心思想

主要是採用了VGG堆疊思想和Inception的split-transform-merge思想,在不增加引數複雜度的前提下提高準確率。

對比於之前提高準確率的方法,大都是在depth和width上改進,本文提出一種新的方式,命名為cardinality,基數。即得到上一次feature map後,假設cardinality=32,則取32組1x1卷積核,每組4個,分別進行卷積,得到32組feature map,然後再分別進行3x3卷積,最後再通過1x1卷積把通道數還原回來。

具體殘差結構如下所示:

這裡寫圖片描述

上圖右圖中可以進行變體,下圖中這三種結構是完全相等的,

  • 圖A就是上面所說的結構;
  • 圖B是在3x3卷積後進行了concat,然後再通過統一的1x1卷積操作,這個有點類似於inception-resnet;
  • C圖結構更簡潔且速度更快。採用組卷積。採用32個group,每個group的輸入輸出的通道數都是4;

這裡寫圖片描述

6.2 網路結構

1、網路結構

這裡寫圖片描述

resnext與resnet50/101引數量差不多,但是準確率卻提升了。

6.3 實驗結果

增加Cardinality和增加深度或寬度的對比實驗,證明增加Cardinality確實效果比較好。

這裡寫圖片描述

參考連結:https://blog.csdn.net/u014380165/article/details/71667916

其他

7、DenseNet

論文連結:https://arxiv.org/pdf/1608.06993.pdf

7.1 核心思想

densenet緊接著在resnet之後提出,結合了resnet的思想。網路改進除了像resnet和inception在深度和寬度上做文章外,densenet通過利用feature來減少引數的同時提高效果,對feature進行有效利用並加強feature的傳遞。

主要思想是將每一層都與後面的層連線起來,如果一個網路中有L層,那麼會有L(L+1)/2個連線,具體連線如下圖所示:

這裡寫圖片描述

引用參考連結中的一段話:

DenseNet的一個優點是網路更窄,引數更少,很大一部分原因得益於這種dense block的設計,後面有提到在dense block中每個卷積層的輸出feature map的數量都很小(小於100),而不是像其他網路一樣動不動就幾百上千的寬度。同時這種連線方式使得特徵和梯度的傳遞更加有效,網路也就更加容易訓練。原文的一句話非常喜歡:Each layer has direct access to the gradients from the loss function and the original input signal, leading to an implicit deep supervision.直接解釋了為什麼這個網路的效果會很好。前面提到過梯度消失問題在網路深度越深的時候越容易出現,原因就是輸入資訊和梯度資訊在很多層之間傳遞導致的,而現在這種dense connection相當於每一層都直接連線input和loss,因此就可以減輕梯度消失現象,這樣更深網路不是問題。另外作者還觀察到這種dense connection有正則化的效果,因此對於過擬合有一定的抑制作用,博主認為是因為引數減少了(後面會介紹為什麼引數會減少),所以過擬合現象減輕。

給出resnet和resnext兩個結構的公式比較:

resnet:前一層經過非線性變換後與前一層相加得到本層的結果。

這裡寫圖片描述

densenet:前n層所有的結果進行concat,然後再進行非線性轉換。

這裡寫圖片描述

為了保證feature map的channel不會太大,而且size要保持統一才能concat,將上述作為一個dense block,每個block之間通過池化層相連。

7.2 網路結構

1、引入dense block後的結構圖

這裡寫圖片描述

2、網路結構,圖中k表示每個dense block中每層輸出的feature map個數

這裡寫圖片描述

3、bottleneck layer和translation layer

此外,在dense block中引入bottleneck layer,即卷積3x3前增加1x1卷積,以此來減少feature map數量。結構為:

BN -> Relu -> Conv 1x1 -> BN -> Relu -> Conv 3x3

由於feature map通道數量可能還是很大,在每個dense block之間,增加了translation layer,通過1x1卷積核來實現。

BN -> Relu -> Conv 1x1 -> Pooling

7.3 實驗結果

這裡寫圖片描述

參考連結:https://blog.csdn.net/u014380165/article/details/75142664

8、SENet

論文連結:https://arxiv.org/pdf/1709.01507.pdf

8.1 核心思想

從特徵通道之間的關係入手,對特徵通道之間的關係進行建模表示,根據重要程度增強有用的特徵、抑制沒有用的特徵。

個人感覺像是在通道上做權重,類似於通道上的attention。

主要分為兩個過程,如下圖所示,squeeze擠壓和excitation激勵。

這裡寫圖片描述

8.1.1 Squeeze

如下圖所示,對通道進行了擠壓,即通過全域性平均池化,將shape為[H, W, C]的feature map變為[1, 1, C]。

順著空間維度來進行特徵壓縮,將每個二維的特徵通道變成一個實數,這個實數某種程度上具有全域性的感受野,並且輸出的維度和輸入的特徵通道數相匹配。它表徵著在特徵通道上響應的全域性分佈,而且使得靠近輸入的層也可以獲得全域性的感受野,這一點在很多工中都是非常有用的。

這裡寫圖片描述

8.1.2 Excitation

得到擠壓後的feature map後,進行激勵,使用sigmoid函式。。

首先通過一個全連線層進行降維,即如下公式中的W1z,然後經過relu啟用函式。即δ(W1z),再經過全連線進行升維,即W2(δ(W1z)),然後通過sigmoid進行權重啟用。

它是一個類似於迴圈神經網路中門的機制。通過引數 w 來為每個特徵通道生成權重,其中引數 w 被學習用來顯式地建模特徵通道間的相關性。

這裡寫圖片描述

8.1.3 Reweight

最後通過scale相乘,得到se block的結果。

將 Excitation 的輸出的權重看做是進過特徵選擇後的每個特徵通道的重要性,然後通過乘法逐通道加權到先前的特徵上,完成在通道維度上的對原始特徵的重標定。

這裡寫圖片描述

8.1.4 se block

block結構圖如下所示:

這裡寫圖片描述

進一步,變為殘差se block,

這裡寫圖片描述

8.2 網路結構

整個網路結構如下圖所示:分別為resnet-50,se-resnet-50,se-resnext-50;

這裡寫圖片描述

8.3 實驗結果

在主流網路上進行了復現,並加了se block結構後進行了比較。

這裡寫圖片描述

參考連結:

1、https://blog.csdn.net/xjz18298268521/article/details/79078551

2、http://www.sohu.com/a/161633191_465975