VGGNet 是由牛津大學視覺幾何組 (Visual Geometry Group) 在 2014 年提出的深度卷積神經網路 (CNN) 架構。它在當年的 ImageNet 大型視覺識別挑戰賽 (ILSVRC) 中取得了出色的成績,並且因其簡單而深邃的網路結構而聞名。VGGNet 的主要貢獻在於證明了網路的深度對於提升 CNN 的性能至關重要。
以下是 VGGNet 的主要特點和架構:
- 非常深的網路結構: VGGNet 相較於之前的 AlexNet,顯著增加了網路的深度。它提出了多種不同的網路配置,最常見的有 VGG16 和 VGG19,分別包含 16 個和 19 個卷積層或全連接層。
- 小尺寸的卷積核: VGGNet 的一個核心設計原則是始終使用 3x3 的小尺寸卷積核。多個連續的 3x3 卷積層堆疊在一起,可以達到與更大尺寸卷積核相同的感受野,同時擁有更多的非線性激活函數(ReLU),並減少了參數數量。例如,三個連續的 3x3 卷積層的感受野為 7x7,但參數數量比一個 7x7 的卷積層要少。
- 統一的最大池化層: 在每兩個或三個卷積層之後,VGGNet 使用 2x2 的最大池化層,步長為 2,用於降低特徵圖的空間尺寸。
- 簡單的網路結構: 相較於其他同期的網路,VGGNet 的結構相對簡單和規整,易於理解和實現。它主要由重複堆疊的小尺寸卷積層和最大池化層組成,最後連接幾個全連接層。
VGGNet 有多種不同的配置,它們的主要區別在於網路的深度(卷積層的數量)。以下是 VGG16 的一個常見配置:
- Input (224x224x3)
- Convolutional Layer (64 filters, 3x3 kernel, stride 1, pad 1) x 2
- Max Pooling (2x2 kernel, stride 2)
- Convolutional Layer (128 filters, 3x3 kernel, stride 1, pad 1) x 2
- Max Pooling (2x2 kernel, stride 2)
- Convolutional Layer (256 filters, 3x3 kernel, stride 1, pad 1) x 3
- Max Pooling (2x2 kernel, stride 2)
- Convolutional Layer (512 filters, 3x3 kernel, stride 1, pad 1) x 3
- Max Pooling (2x2 kernel, stride 2)
- Convolutional Layer (512 filters, 3x3 kernel, stride 1, pad 1) x 3
- Max Pooling (2x2 kernel, stride 2)
- Fully Connected Layer (4096 neurons, ReLU)
- Fully Connected Layer (4096 neurons, ReLU)
- Output Layer (1000 neurons, Softmax)
VGG19 的結構類似,只是在一些卷積層塊中增加了更多的卷積層。
VGGNet 的重要性:
- 證明了深度是提升性能的關鍵: VGGNet 的成功有力地證明了增加網路深度可以顯著提高 CNN 在圖像識別任務上的性能。
- 推廣了小卷積核的使用: VGGNet 提出的使用小尺寸卷積核的思想被廣泛採用,並成為了後續許多 CNN 架構的設計原則。
- 成為了基準模型: 由於其結構的簡潔性和良好的性能,VGGNet 在很長一段時間內被作為電腦視覺任務的基準模型,用於比較不同方法的性能。
- 易於理解和遷移學習: VGGNet 的結構相對清晰,易於理解和實現。預訓練好的 VGGNet 模型也被廣泛用於遷移學習,作為其他電腦視覺任務的良好起點。
缺點:
- 參數量巨大: 由於網路層數較深且全連接層的節點數較多,VGGNet 的參數量非常龐大,需要更多的訓練數據和計算資源。
- 計算成本高: 深度的網路結構也導致了較高的計算成本和更長的訓練時間。
總而言之,VGGNet 是一個在電腦視覺發展史上非常重要的模型。它通過實驗證明了網路深度對於提升圖像識別性能的重要性,並推廣了小尺寸卷積核的使用,為後續更深、更強大的 CNN 架構的出現奠定了基礎。