🔴(1409.CVPR) inception V1:Going Deeper with Convolutions【 論文原文】
目標:設計一種既能利用稀疏性,又可以利用稠密計算的網絡結構。
💡contributions:
- 引入inception V1;
- 同一層網絡多個filter size,爲了定位圖片中的不同size的object;
- 添加兩個auxiliary loss(防止梯度消失)
上圖所示:GoogLeNet有 9 個線性堆疊的 Inception 模塊。它有 22 層(包括池化層的話是 27 層)。該模型在最後一個 inception 模塊處使用全局平均池化。
不用多說,這是一個深層分類器。和所有深層網絡一樣,它也會遇到梯度消失問題。
爲了阻止該網絡中間部分梯度的「消失」過程,作者引入了兩個輔助分類器(上圖紫色框)。它們對其中兩個 Inception 模塊的輸出執行 softmax 操作,然後在同樣的標籤上計算輔助損失。總損失即輔助損失和真實損失的加權和。該論文中對每個輔助損失使用的權重值是 0.3。(只在訓練過程中用)
🔴(1512.CVPR) inception V2、V3:Rethinking the Inception Architecture for Computer Vision【 論文原文】
表徵性瓶頸:直觀上來說,當卷積不會大幅度改變輸入維度時,神經網絡可能會執行地更好。過多地減少維度可能會造成信息的損失。
💡contributions:
- 引入inception V2、
Inception 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總體框架:
- 由stem、inception、reduction block三個模塊堆積木一樣組合而成。
💡contributions:
- 引入inception V4、
Inception-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 的架構