GoogLeNet:inception V1、V2、V3、V4、Inception-ResNet V1、V2詳解

🔴(1409.CVPR) inception V1:Going Deeper with Convolutions論文原文

目標:設計一種既能利用稀疏性,又可以利用稠密計算的網絡結構。

💡contributions:

  • 引入inception V1
  • 同一層網絡多個filter size,爲了定位圖片中的不同size的object;
  • 添加兩個auxiliary loss(防止梯度消失)

在這裏插入圖片描述
在這裏插入圖片描述
上圖所示:GoogLeNet9 個線性堆疊的 Inception 模塊。它有 22 層(包括池化層的話是 27 層)。該模型在最後一個 inception 模塊處使用全局平均池化。

不用多說,這是一個深層分類器。和所有深層網絡一樣,它也會遇到梯度消失問題。

爲了阻止該網絡中間部分梯度的「消失」過程,作者引入了兩個輔助分類器(上圖紫色框)。它們對其中兩個 Inception 模塊的輸出執行 softmax 操作,然後在同樣的標籤上計算輔助損失。總損失即輔助損失和真實損失的加權和。該論文中對每個輔助損失使用的權重值是 0.3。(只在訓練過程中用)

🔴(1512.CVPR) inception V2、V3:Rethinking the Inception Architecture for Computer Vision論文原文

表徵性瓶頸:直觀上來說,當卷積不會大幅度改變輸入維度時,神經網絡可能會執行地更好。過多地減少維度可能會造成信息的損失

💡contributions:

  • 引入inception V2Inception V3
  • 把V1裏的5x5 filter換成了倆個3x3(感知域不變,快了2.78倍)(圖1);
  • 其次把nxn filter換成了1xn+nx1(提高了33%效率,有一些精度損失)(圖2);
  • 濾波器組被擴展(即變得更寬而不是更深),以解決表徵性瓶頸問題(圖3)

在這裏插入圖片描述

inception V3

問題:
  • 作者注意到輔助分類器直到訓練過程快結束時纔有較多貢獻,那時準確率接近飽和。作者認爲輔助分類器的功能是正則化,尤其是它們具備BatchNorm 或 Dropout 操作時。
  • 是否能夠改進 Inception v2 而無需大幅更改模塊仍需要調查。

💡contributions:

  • 引入inception V3
  • Inception Net v3 整合了前面 Inception v2 中提到的所有升級,還使用了:
  • RMSProp 優化器;
  • Factorized 7x7 卷積;
  • 輔助分類器使用了 BatchNorm;
  • 標籤平滑(添加到損失公式的一種正則化項,旨在阻止網絡對某一類別過分自信,即阻止過擬合)。

🔴(1602.CVPR) inception V4、Inception-ResNet:Inception-ResNet and the Impact of Residual Connections on Learning論文原文】【參考文章

動機:結合殘差連接可以顯著加速 Inception 的訓練。使模塊更加一致。作者還注意到某些模塊有不必要的複雜性。這允許我們通過添加更多一致的模塊來提高性能。

Inception V4和Inception-ResNet總體框架

  • steminceptionreduction block三個模塊堆積木一樣組合而成。

💡contributions:

  • 引入inception V4Inception-ResNet
  • 修改了Inception的Stem(修改了什麼?);
  • 添加了縮減塊(Reduction Block)(A和B、例如A:從35x35降維至17x17)

解決方案

  • Inception v4 的 stem 被修改了。這裏的 stem 參考了在引入 Inception 塊之前執行的初始運算集。
    在這裏插入圖片描述
    上圖:圖左部是 Inception-ResNet v1 的 stem。圖右部是 Inception v4 和 Inception-ResNet v2 的 stem
  • 它們有三個主要的 Inception 模塊,稱爲 A、B 和 C(和 Inception v2 不同,這些模塊確實被命名爲 A、B 和 C)。它們看起來和 Inception v2(或 v3)變體非常相似。
    在這裏插入圖片描述
    上圖:(左起)在 Inception v4 中使用的 Inception 模塊 A、B、C
  • Inception v4 引入了專用的「縮減塊」(reduction block),它被用於改變網格的寬度和高度。早期的版本並沒有明確使用縮減塊,但也實現了其功能。
    在這裏插入圖片描述
    上圖:縮減塊 A(從 35x35 到 17x17 的尺寸縮減)和縮減塊 B(從 17x17 到 8x8 的尺寸縮減)。這裏參考了論文中的相同超參數設置(V,I,k)

Inception-ResNet V1、V2:

受 ResNet 的優越性能啓發,研究者提出了一種混合 inception 模塊。Inception ResNet 有兩個子版本:v1 和 v2。在我們分析其顯著特徵之前,先看看這兩個子版本之間的微小差異。

  • Inception-ResNet v1 的計算成本和 Inception v3 的接近。
  • Inception-ResNetv2 的計算成本和 Inception v4 的接近。
  • 它們有不同的 stem,正如 Inception v4 部分所展示的。
  • 兩個子版本都有相同的模塊 A、B、C 和縮減塊結構。唯一的不同在於超參數設置。

💡contributing:

  • 引入Inception-ResNet
  • 引入殘差連接,它將 inception 模塊的卷積運算輸出添加到輸入上;

解決方案:

  • 爲了使殘差加運算可行,卷積之後的輸入和輸出必須有相同的維度。因此,在初始卷積之後使用 1x1 卷積來匹配深度(深度在卷積之後會增加)。
    在這裏插入圖片描述
    上圖:(左起)Inception ResNet 中的 Inception 模塊 A、B、C。注意池化層被殘差連接所替代,並在殘差加運算之前有額外的 1x1 卷積。
  • 主要 inception 模塊的池化運算由殘差連接替代。然而,仍然可以在縮減塊中找到這些運算。縮減塊 A 和 Inception v4 中的縮減塊相同。
    在這裏插入圖片描述
    上圖:左起)縮減塊 A(從 35x35 到 17x17 的尺寸縮減)和縮減塊 B(從 17x17 到 8x8 的尺寸縮減)。這裏參考了論文中的相同超參數設置(V,I,K)
  • 如果卷積核的數量超過 1000,則網絡架構更深層的殘差單元將導致網絡崩潰。因此,爲了增加穩定性,作者通過 0.1 到 0.3 的比例縮放殘差激活值。 (激活值通過一個常數進行比例縮放,以防止網絡崩潰。)在這裏插入圖片描述
    原始論文並沒有在求和之後使用批歸一化,以在單個 GPU 上訓練模型(在單個 GPU 上擬合整個模型)。
    研究發現 Inception-ResNet 模型可以在更少的 epoch 內達到更高的準確率。

Inception v4 和 Inception-ResNet 的網絡完整架構如下圖所示:

在這裏插入圖片描述
上圖:左部是 Inception v4 的架構。右部是 Inception-ResNet 的架構

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章