論文閱讀-week1:Going deeper with convolutions(Inception v1 )

一、基礎知識

1. 卷積(Convolution):

對應局部感知,原理是在觀察某個物體時,既不能觀察每個像素,也不能一次觀察整體,而應該先從局部開始認識。

2. 卷積核(Convolution Kernel):

卷積核的大小常見的有1x1、3x3、5x5;比較容易忽略的是,卷積核是有深度的,即輸入的通道數;卷積核的個數對應本次的通道數,即特徵圖數。

例如:Input(28, 28, 32) ==> Conv(kernel_size=(3, 3), filters=64, strides=(2, 2), padding='SAME') ==> Output(28, 28, 64)

輸入的shape是(28, 28, 32) ;其中28*28是圖像的長和寬;32是通道數(理解:圖像的三個通道分別是R、G、B)。

通過一個卷積層;卷積核的大小是(3, 3);卷積核的深度32;卷積核的個數是64,即輸出的通道/特徵圖數是64;padding='SAME'保證了輸出的長和寬依舊是28*28。

3. 池化(Pooling) 

卷積對應某個局部特徵,池化操作針對每個通道,將更大尺寸上的卷積特徵聚合(Aggregation)爲更全局性的特徵,對應於Cross Region。與之相對的是使用1x1卷積核可以做到Cross Channel。

池化操作起到升維或降維的作用。與之相對的是使用1x1卷積核也可以起到升維或降維的作用。

二、1x1卷積核

1. 理解:

1x1卷積層其實可以理解爲全連接層。

如下圖,左圖是全連接層:輸入是a1-a5,輸出是b1-b5,b1 = a1*w1_1 + a2*w1_2 + ... + a6*w1_6;... ;b5 = a1*w5_1 + a2*w5_2 + ... + a6*w5_6。

右圖是1x1卷積層,輸入是6*6*32(藍色立方體),取其中一部分1*1*32(h1_1-h1_32)與卷積核(k1-k32)進行卷積(藍色立方體中的黃色立方體),得到的結果是y1=h1_1*k1 + h1_2*k2 + ... + h1_32*k32(綠點),因爲藍色立方體可以被分爲6*6=36個1*1*32的小立方體,所以可以得到y1-y36。綜上,右圖相當於一個輸入是k1-k32,輸出是y1-y36的全連接層,y1 = k1*h1_1 + k2*h1_2 + ... + k32*h1_32;... ;y36 = k1*h36_1 + k2*h36_2 + ... + k32*h36_32。

2. 作用

1)降/升維:

例如輸入爲6*6*32,1x1卷積的形式是1*1*32,當有16個卷積核的時候,此時輸出爲6*6*16。即控制1x1卷積核的個數小/大於輸入通道數,即可起到降/升維的作用。

2)跨通道信息交互:

使用1x1卷積核,實現降維和升維的操作其實就是channel間信息的線性組合變化,例如上述輸入爲6*6*32,通過16個1x1的卷積核之後,得到輸出6*6*16,即原來的32個通道跨通道線性組合爲了16個通道,實現了跨通道(Cross Channel)信息交互。

3)減少計算量:

左圖需要的計算量爲:5*5*192*28*28*32=120422400。

右圖需要的計算量爲:1*1*192*28*28*16 + 5*5*16*28*28*32=2408448 + 10035200 = 12443648。約爲左圖計算量的0.1033。

     

三、Inception模塊

1. 多尺度進行卷積再聚合:

提高模型性能的方法有增加網絡層次(深度)和增加每一層的神經元數量(寬度),但相應問題有:

1. 參數數量會大幅增加,網絡容易過擬合;

2. 需要強大的算力。

文章提出的解決方法:

1. 使用“稀疏性連接”來避免過擬合的問題,然而其計算框架導致稀疏層計算能力浪費;

2. 通過concat拼接多個卷積結果來解決計算能力浪費的問題。

具體做法:

1. 採用卷積核大小爲1×1、3×3、5×5的卷積結構;採用在許多卷積神經網絡中起到關鍵作用的max pooling(3×3)結構;即多個稀疏網絡;

2. 因爲密集矩陣的計算性能高,因此最終所有並行的卷積、池化結果被concat(即feature map的大小不變,channel增加)在一起,即將稀疏矩陣聚類爲較爲密集的子矩陣,來提高計算性能。

2.使用1x1卷積減少計算:

上述方法參數數目仍然較多,尤其是5×5的卷積會帶來大量計算,文章借鑑Network in Network的1x1卷積來降維經過降維,參數數量只剩下原來的12.75%。

四、GoogleNet網絡

1. 採用Inception模塊堆疊而成;

2. 網絡越到後面,特徵也越抽象。因爲要將這些抽象特徵進一步組合起來提取更高維的特徵,網絡不能只關注小範圍內的特徵信息了,所以需要讓感受野大一些,看到更多的抽象信息。因此,3×3和5×5卷積的比例要增加;

3. 在底層保持傳統卷積不變,在高層使用Inception結構;

4. 基於Network in Netw論文中的思想,在最後使用了average pooling來代替展開爲全連接層的形式。實驗也證明這樣可以提高top-1準確率大概0.6%;

5. 最後加的全連接層主要是爲了便於大家將網絡用於其他的數據集finetune;

6. 網絡中使用了dropout防止過擬合;

7. 網絡有旁路,即兩個輔助的softmax層。主要作用是,避免梯度消失,幫助梯度的傳導。實際測試模型的時候,會將這兩個softmax去除。

 

參考

論文原文:https://arxiv.org/pdf/1409.4842v1.pdf

https://www.cnblogs.com/tianqizhi/p/9665436.html

https://blog.csdn.net/sscc_learning/article/details/79863922

https://blog.csdn.net/amusi1994/article/details/81091145

https://zhuanlan.zhihu.com/p/33305030

https://blog.csdn.net/hongbin_xu/article/details/83280821

https://blog.csdn.net/weixin_39953502/article/details/80966046

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