DeepLearning-L6-VGG16

1. 簡介

2014年,Karen Simonyan, Andrew Zisserman在《Very Deep Convolutional Networks For Large-Scale Image Recognition》提出VGG-16,奪得ILSVRC 2014的亞軍。VGG代表了牛津大學的Oxford Visual Geometry Group,該小組隸屬於1985年成立的Robotics Research Group,該Group研究範圍包括了機器學習到移動機器人。

VGGNet的兩個特點:層數更深更寬、卷積核更小

各個級別VGG的模型結構如下表所示,其下方爲不同模型的參數數量。可以看到,雖然從A到E每一級網絡逐漸變深,但是網絡的參數量並沒有增長很多,這是因爲參數量主要都消耗在最後3個全連接層了。不過訓練耗時的依然是卷積層,因爲這部分計算量比較大。其中D,E分別爲VGG16和VGG19。

VGGNet使用的全部都是3×33 \times 3的小卷積核和2×22 \times 2的池化核,通過不斷加深網絡來提升性能。其中經常出現多個完全一樣的3×33 \times 3卷積層堆疊在一起的情況。兩層3×33 \times 3的串聯卷積結果相當於一個5×55 \times 5的卷積,即最後一個像素會與周圍5×55 \times 5個像素產生關聯,可以說感受野大小爲5×55 \times 5。而3層3×33 \times 3的卷積核的串聯結果則相當於1個7×77 \times 7的卷積層。
除此之外,3個串聯的3×33 \times 3卷積層的參數數量要比一個7x7卷積層的參數數量小得多,更少的參數意味着減少過擬合,而且更重要的是3個3×33 \times 3卷積層擁有比1個7×77 \times 7的卷積層更多的非線性變換,使得CNN對特徵的學習能力更強。

2. 網絡結構

VGG擁有5個卷積段,每一個卷積段有2-3個卷積層,同時每段的結尾都會連接一個最大池化層,來縮小圖片尺寸。每段內的卷積核數量都一樣,越靠後的段的卷積核數量越多:6412825651251264-128-256-512-512
在這裏插入圖片描述
Layer Conv1-1

  • 輸入:224×224×3224 \times 224 \times 3
  • 卷積核:3×33 \times 3,步長11,padding11,深度6464
  • 輸出:224×224×64224 \times 224 \times 64

Layer Conv1-2

  • 輸入:224×224×64224 \times 224 \times 64
  • 卷積核:3×33 \times 3,步長11,padding11,深度6464
  • 輸出:224×224×64224 \times 224 \times 64

Layer POOL-1

  • 輸入:224×224×64224 \times 224 \times 64
  • 卷積核:2×22 \times 2,步長22,padding00,深度6464
  • 輸出:112×112×64112 \times 112 \times 64

Layer Conv2-1

  • 輸入:112×112×64112 \times 112 \times 64
  • 卷積核:3×33 \times 3,步長11,padding11,深度6464
  • 輸出:112×112×128112 \times 112 \times 128

Layer Conv2-2

  • 輸入:112×112×128112 \times 112 \times 128
  • 卷積核:3×33 \times 3,步長11,padding11,深度128128
  • 輸出:112×112×128112 \times 112 \times 128

Layer POOL-2

  • 輸入:112×112×128112 \times 112 \times 128
  • 卷積核:2×22 \times 2,步長22,padding00,深度128128
  • 輸出:56×56×12856 \times 56 \times 128

Layer Conv3-1

  • 輸入:56×56×12856 \times 56 \times 128
  • 卷積核:3×33 \times 3,步長11,padding11,深度256256
  • 輸出:56×56×25656 \times 56 \times 256

Layer Conv3-2

  • 輸入:56×56×25656 \times 56 \times 256
  • 卷積核:3×33 \times 3,步長11,padding11,深度256256
  • 輸出:56×56×25656 \times 56 \times 256

Layer Conv3-3

  • 輸入:56×56×25656 \times 56 \times 256
  • 卷積核:3×33 \times 3,步長11,padding11,深度256256
  • 輸出:56×56×25656 \times 56 \times 256

Layer POOL-3

  • 輸入:56×56×25656 \times 56 \times 256
  • 卷積核:2×22 \times 2,步長22,padding00,深度256256
  • 輸出:28×28×25628 \times 28 \times 256

Layer Conv4-1

  • 輸入:28×28×25628 \times 28 \times 256
  • 卷積核:3×33 \times 3,步長11,padding11,深度512512
  • 輸出:28×28×51228 \times 28 \times 512

Layer Conv4-2

  • 輸入:28×28×51228 \times 28 \times 512
  • 卷積核:3×33 \times 3,步長11,padding11,深度512512
  • 輸出:28×28×51228 \times 28 \times 512

Layer Conv4-3

  • 輸入:28×28×51228 \times 28 \times 512
  • 卷積核:3×33 \times 3,步長11,padding11,深度512512
  • 輸出:28×28×51228 \times 28 \times 512

Layer POOL-4

  • 輸入:28×28×51228 \times 28 \times 512
  • 卷積核:2×22 \times 2,步長22,padding00,深度512512
  • 輸出:14×14×51214 \times 14 \times 512

Layer Conv5-1

  • 輸入:14×14×51214 \times 14 \times 512
  • 卷積核:3×33 \times 3,步長11,padding11,深度512512
  • 輸出:14×14×51214 \times 14 \times 512

Layer Conv5-2

  • 輸入:14×14×51214 \times 14 \times 512
  • 卷積核:3×33 \times 3,步長11,padding11,深度512512
  • 輸出:14×14×51214 \times 14 \times 512

Layer Conv5-3

  • 輸入:14×14×51214 \times 14 \times 512
  • 卷積核:3×33 \times 3,步長11,padding11,深度512512
  • 輸出:14×14×51214 \times 14 \times 512

Layer POOL-5

  • 輸入:14×14×51214 \times 14 \times 512
  • 卷積核:2×22 \times 2,步長22,padding00,深度512512
  • 輸出:7×7×5127 \times 7 \times 512


參考
代碼實現

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