【深度學習】GoogLeNet系列解讀 —— Inception v4
目錄
GoogLeNet系列解讀
簡介
在介紹Inception v4之前,首先說明一下Inception v4沒有使用殘差學習的思想。大部分小夥伴對Inception v4存在一個誤解,認為它是Inception module與殘差學習的結合,其實並不是這樣,Inception v4基本延續了Inception v2/v3的結構,而出自同一篇論文的Inception-Resnet-v1和Inception-Resnet-v2才是Inception module與殘差學習的結合產物。
2015年何凱明大神提出殘差連線的思想,證明了殘差連線對於構建深層網路的重要性,並且在識別精度和訓練速度上都有了很大的提升。那麼是不是可以將殘差連線的思想和Inception module結合呢?Inception-Resnet-v1和Inception-Resnet-v2就是在這個背景下被提出來。Inception-ResNet和Inception v4網路結構都是基於Inception v3的改進。
論文連結:Inception-v4, inception-resnet and the impact of residual connections on learning
網路結構
下面為Inception v4中的三個基本模組:
對上圖進行說明:
1. 左圖是基本的Inception v2/v3模組,使用兩個3x3卷積代替5x5卷積,並且使用average pooling,該模組主要處理尺寸為35x35的feature map;
2. 中圖模組使用1xn和nx1卷積代替nxn卷積,同樣使用average pooling,該模組主要處理尺寸為17x17的feature map;
3. 右圖在原始的8x8處理模組上將3x3卷積用1x3卷積和3x1卷積。
總的來說,Inception v4中基本的Inception module還是沿襲了Inception v2/v3的結構,只是結構看起來更加簡潔統一,並且使用更多的Inception module,實驗效果也更好。
下圖左圖為Inception v4的網路結構,右圖為Inception v4的Stem模組:
Inception-ResNet
本節將介紹和Inception v4同一篇文章的兩個Inception-ResNet結構:Inception-Resnet-v1和Inception-Resnet-v2。
殘差連線是指淺層特徵通過另外一條分支加到高層特徵中,達到特徵複用的目的,同時也避免深層網路的梯度彌散問題。下圖為一個基本的殘差結構:
Inception-Resnet-v1
Inception-Resnet-v1基本模組:
對上圖進行說明:
1. Inception module都是簡化版,沒有使用那麼多的分支,因為identity部分(直接相連的線)本身包含豐富的特徵資訊;
2. Inception module每個分支都沒有使用pooling;
3. 每個Inception module最後都使用了一個1x1的卷積(linear activation),作用是保證identity部分和Inception部分輸出特徵維度相同,這樣才能保證兩部分特徵能夠相加。
Inception-Resnet-v1網路結構(左),右圖為Inception-Resnet-v1的Stem模組:
Inception-Resnet-v2
Inception-Resnet-v2基本模組:
Inception-Resnet-v2網路結構 :
Inception-Resnet-v2網路結構同Inception-Resnet-v1,Stem模組同Inception v4