inception v4 官方实现_经典神经网络 | 从Inception v1到Inception v4全解析
本文介紹了 Inception 家族的主要成員,包括 Inception v1、Inception v2 、Inception v3、Inception v4 和 Inception-ResNet。它們的計算效率與參數效率在所有卷積架構中都是頂尖的。
Inception 網絡是CNN分類器發展史上一個重要的里程碑。在 Inception 出現之前,大部分流行 CNN 僅僅是把卷積層堆疊得越來越多,使網絡越來越深,以此希望能夠得到更好的性能。
例如AlexNet,GoogleNet、 VGG-Net、ResNet等都是通過加深網絡的層次和深度來提高準確率。
GoogLeNet 最大的特點就是使用了 Inception 模塊,它的目的是設計一種具有優良局部拓撲結構的網絡,即對輸入圖像并行地執行多個卷積運算或池化操作,并將所有輸出結果拼接為一個非常深的特征圖。因為 1*1、3*3 或 5*5 等不同的卷積運算與池化操作可以獲得輸入圖像的不同信息,并行處理這些運算并結合所有結果將獲得更好的圖像表征。
Inception常見的版本有:
Inception v1
Inception v2 和 Inception v3
Inception v4 和 Inception-ResNet
每個版本都是前一個版本的迭代進化。了解 Inception 網絡的升級可以幫助我們構建自定義分類器,優化速度和準確率。
Inception v1
Inception v1首先是出現在《Going deeper with convolutions》這篇論文中,作者提出一種深度卷積神經網絡 Inception,它在 ILSVRC14 中達到了當時最好的分類和檢測性能。
Inception v1的主要特點:一是挖掘了1 1卷積核的作用*,減少了參數,提升了效果;二是讓模型自己來決定用多大的的卷積核。
1* 1卷積
1* 1卷積
1* 1卷積不僅可以減少神經網絡的參數量,還可以壓縮通道數,大大提高了計算效率。
把不同大小的卷積核組合在一起
把不同的卷積核組合在一起,不僅可以增大感受野,而且還可以提高神經網絡的魯棒性。在一層里把不同大小的卷積核疊在一起后,意味著一層里可以產生不同大小的卷積核處理之后的效果,也意味著不用人為的來選擇這一層要怎么卷,這個網絡自己便會學習用什么樣的卷積(或池化)操作最好。
下面是卷積神經網絡Inception模塊的基本組成部分:
Inception v2
Inception v2 和 Inception v3 來自同一篇論文《Rethinking the Inception Architecture for Computer Vision》,作者提出了一系列能增加準確度和減少計算復雜度的修正方法。
將5* 5卷積分解為兩個3* 3卷積
將 5×5 的卷積分解為兩個 3×3 的卷積運算以提升計算速度。如此可以有效地只使用約(3x3 + 3x3)/(5x5)=72%的計算開銷。下圖可看出此替換的有效性。
所以升級后的Inception模塊如下圖所示:
最左側前一版 Inception 模塊中的 5×5 卷積變成了兩個 3×3 卷積的堆疊。
將 n*n 的卷積核尺寸分解為 1×n 和 n×1 兩個卷積。
例如,一個 3×3 的卷積等價于首先執行一個 1×3 的卷積再執行一個 3×1 的卷積。這樣同樣可以只使用約(1x3 + 3x1) / (3x3) = 67%的計算開銷。下圖是此替換的有效性。作者更進一步發揮想象,認為任一個nxn conv都可通過替換為兩個分別為1xn與nx1的convs層來節省計算與內存。
更新后的Inception模塊如下圖所示:
此處如果 n=3,則與上一張圖像一致。最左側的 5x5 卷積可被表示為兩個 3x3 卷積,它們又可以被表示為 1x3 和 3x1 卷積。
模塊中的濾波器組被擴展(即變得更寬而不是更深),以解決表征性瓶頸。如果該模塊沒有被拓展寬度,而是變得更深,那么維度會過多減少,造成信息損失。如下圖所示:
Inception v3
Inception v3 整合了前面 Inception v2 中提到的所有升級,還使用了:
RMSProp 優化器;
Factorized 7x7 卷積;
輔助分類器使用了 BatchNorm;
標簽平滑(添加到損失公式的一種正則化項,旨在阻止網絡對某一類別過分自信,即阻止過擬合)。
Inception v2和Inception v3最終模型
Inception v4
Inception v4 和 Inception -ResNet 在同一篇論文《Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning》中提出來。
Inception v4網絡結構
Inception v4
首先stem分支,可以直接看論文的結構圖:
然后接下來它們有三個主要的Inception 模塊和Reduction模塊,稱為 A、B 和 C(和 Inception v2 不同,這些模塊確實被命名為 A、B 和 C)。它們看起來和 Inception v2(或 v3)變體非常相似。
Inception v4 引入了專用的「縮減塊」(reduction block),它被用于改變網格的寬度和高度。早期的版本并沒有明確使用縮減塊,但也實現了其功能。
縮減塊 A(從 35x35 到 17x17 的尺寸縮減)和縮減塊 B(從 17x17 到 8x8 的尺寸縮減)。這里參考了論文中的相同超參數設置(V,I,k)。
直接看其網絡結構:
Inception-ResNet
在該論文中,作者將Inception 架構和殘差連接(Residual)結合起來。并通過實驗明確地證實了,結合殘差連接可以顯著加速 Inception 的訓練。也有一些證據表明殘差 Inception 網絡在相近的成本下略微超過沒有殘差連接的 Inception 網絡。作者還通過三個殘差和一個 Inception v4 的模型集成,在 ImageNet 分類挑戰賽的測試集上取得了 3.08% 的 top-5 誤差率。
(左起)Inception ResNet 中的 Inception 模塊 A、B、C。注意池化層被殘差連接所替代,并在殘差加運算之前有額外的 1x1 卷積。
主要 inception 模塊的池化運算由殘差連接替代。然而,你仍然可以在縮減塊中找到這些運算。縮減塊 A 和 Inception v4 中的縮減塊相同。
具體Inception-resnet A、B、C各個模塊網絡結構詳見原論文
針對深網絡結構設計的衰減因子
如果卷積核的數量超過 1000,則網絡架構更深層的殘差單元將導致網絡崩潰。因此,為了增加穩定性,作者通過 0.1 到 0.3 的比例縮放殘差激活值。
激活值通過一個常數進行比例縮放,以防止網絡崩潰。
Inception-ResNet v1結構
結果精度對比
總結
以上是生活随笔為你收集整理的inception v4 官方实现_经典神经网络 | 从Inception v1到Inception v4全解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 智能车改舵机中值步骤_飞思卡尔智能车摄像
- 下一篇: 巴卡尔之城3图怎么打?