1. 程式人生 > >【深度學習】GoogLeNet系列解讀 —— Inception v4

【深度學習】GoogLeNet系列解讀 —— Inception v4


目錄

GoogLeNet系列解讀

Inception v1

Inception v2

Inception v3

Inception v4


簡介

在介紹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