機器不學習:計算機視覺系列(2)VGGNet & GoogLeNet

機器不學習 www.jqbxx.com : 深度聚合機器學習、深度學習算法及技術實戰

三、VGGNet

網絡結構如下所示:

機器不學習:計算機視覺系列(2)VGGNet & GoogLeNet

機器不學習:計算機視覺系列(2)VGGNet & GoogLeNet

VGGNet與AlexNet不同的地方主要在於卷積核大小、卷積步數以及網絡深度。

VGGNet將小卷積核帶入人們的視線,AlexNet中第一個卷積層使用的kernel大小為 11×11

11×11 ,stride為4,C3和C5層中使用的都是 5×5

5×5 的卷積核;而出現在VGGNet中大多數的卷積核都是大小為3×3

3×3,stride為1的。

機器不學習:計算機視覺系列(2)VGGNet & GoogLeNet

直觀上我們會覺得大的卷積核更好,因為它可以提取到更大區域內的信息,但是實際上,大卷積核可以用多個小卷積核進行代替。例如,一個 5×5

5×5 的卷積核就可以用兩個串聯的 3×3

3×3 卷積核來代替,一個 7×7

7×7 的卷積核就可以用三個串聯的 3×3

3×3 卷積核來代替。這樣的替代方式有兩點好處:

  1. 減少了參數個數:兩個串聯的小卷積核需要3×3×2=18
  2. 3×3×2=18 個參數,一個 5×5
  3. 5×5的卷積核則有25個參數;三個串聯的小卷積核需要3×3×3=27
  4. 3×3×3=27個參數,一個 7×7
  5. 7×7的卷積核則有49個參數。大大減少了參數的數量。
  6. 引入了更多的非線性:多少個串聯的小卷積核就對應著多少次激活(activation)的過程,而一個大的卷積核就只有一次激活的過程。引入了更多的非線性變換,也就意味著模型的表達能力會更強,可以去擬合更高維的分佈。

值得一提的是,VGGNet結構的C裡面還用到了 1×1

1×1的卷積核。但是這裡對這種卷積核的使用並不是像Inception裡面拿來對通道進行整合,模擬升維和降維,這裡並沒有改變通道數,所以可以理解為是進一步的引入非線性。

VGGNet的出現讓我們知道CNN的潛力無窮,並且越深的網絡在分類問題上表現出來的性能越好,並不是越大的卷積核就越好,也不是越小的就越好,就VGGNet來看, 3×3

3×3 卷積核是最合理的。

四、GoogLeNet

GoogLeNet的核心思想是:將全連接,甚至卷積中的局部連接,全部替換為稀疏連接。這樣既能保持網絡結構的稀疏性,又能利用密集矩陣計算的高效性的方法。大量研究表明,可以將稀疏矩陣聚類為較為密集的子矩陣來提高計算性能,Inception應運而生。Inception結構如下所示:

機器不學習:計算機視覺系列(2)VGGNet & GoogLeNet

這裡的稀疏性是指卷積運算過程中,kernel的尺寸遠遠小於圖片的尺寸,一個feature map僅與少數的輸入單元相連接;而密集矩陣計算是指在Inception模塊中的四個分支可以看作是較為稀疏的部分,但是拼接之後又成為一個大的密集矩陣。這種基本模塊使用了3種不同的卷積核,那麼提取到的應該是3種不同尺度的特徵,既有較為宏觀的特徵又有較為微觀的特徵,增加了特徵的多樣性。池化層則保留較為原始的輸入信息。在模塊的輸出端將提取到的各種特徵在channel維度上進行拼接,得到多尺度的特徵。

GoogleNet將上述模塊進行堆積,整個GoogleNet的網絡結構如下所示:

機器不學習:計算機視覺系列(2)VGGNet & GoogLeNet

此外,還有升級版本的Inception,如下所示:

  • Inception v2 & v3
機器不學習:計算機視覺系列(2)VGGNet & GoogLeNet

  • Inception-v4 &Inception-ResNet-v2
機器不學習:計算機視覺系列(2)VGGNet & GoogLeNet

機器不學習:計算機視覺系列(2)VGGNet & GoogLeNet

機器不學習:計算機視覺系列(2)VGGNet & GoogLeNet

機器不學習:計算機視覺系列(2)VGGNet & GoogLeNet


分享到:


相關文章: