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