VGGNet demonstrated that network depth is a critical factor for performance in image recognition. Its key insight was radically simple: replace large convolutional filters with stacks of small 3x3 filters, allowing much deeper networks without increasing computational cost per layer.

We use Smaller Filter and a Deeper Network

Before VGG, architectures like AlexNet used large filters (11x11, 5x5) to capture spatial patterns. VGG asked: what if we use only 3x3 filters and just stack more layers?

ApproachFilter sizeDepthReceptive field
AlexNet-style11x11, 5x5Shallow (5 conv layers)Large per layer
VGG-style3x3 onlyDeep (16-19 conv layers)Built up gradually

Why 3x3 Works

Two stacked 3x3 conv layers have the same receptive field as one 5x5 layer. Three stacked 3x3 layers match a 7x7 layer. But the stacked version is better:

One 7x7 filter:     7 x 7 x C = 49C parameters
Three 3x3 filters:  3 x (3 x 3 x C) = 27C parameters
BenefitWhy
Fewer parameters27C vs 49C for the same receptive field
More non-linearityEach layer has its own ReLU, so three decision boundaries instead of one
Better feature learningForces the network to build features compositionally

Architecture: VGG-16

VGG-16 has 16 weight layers (13 convolutional + 3 fully connected). The architecture follows a strict, repeating pattern:

Input: 224x224x3 (RGB image)

Block 1:  [3x3 conv, 64]  x 2  +  MaxPool
Block 2:  [3x3 conv, 128] x 2  +  MaxPool
Block 3:  [3x3 conv, 256] x 3  +  MaxPool
Block 4:  [3x3 conv, 512] x 3  +  MaxPool
Block 5:  [3x3 conv, 512] x 3  +  MaxPool

Flatten

FC: 4096
FC: 4096
FC: 1000 (ImageNet classes)

Softmax

Spatial Dimensions Through the Network

BlockOutput sizeChannels
Input224 x 2243
Block 1 + Pool112 x 11264
Block 2 + Pool56 x 56128
Block 3 + Pool28 x 28256
Block 4 + Pool14 x 14512
Block 5 + Pool7 x 7512
Flatten25088-
FC layers4096-
Output1000-

The pattern is consistent: spatial dimensions halve, channels double at each block. This became a standard design principle for later architectures.

VGG Variants

ModelConv layersFC layersTotal weight layersParameters
VGG-118311133M
VGG-1310313133M
VGG-1613316138M
VGG-1916319144M

The vast majority of parameters (about 124M of 138M in VGG-16) live in the fully connected layers, not the convolutional layers. This later motivated architectures like GoogLeNet and ResNet to eliminate or shrink FC layers.

Why VGG Matters

VGG established principles that influenced nearly every architecture that followed:

PrincipleImpact
Depth improves performanceDirectly motivated ResNet's push to 100+ layers
Small filters are sufficient3x3 became the standard conv filter size
Uniform architectureSimple repeating blocks became a design pattern
Halve spatial, double channelsAdopted by ResNet, Swin, and many others
Pretrained feature extractorVGG features are still used today for perceptual loss, style transfer, and transfer learning

Limitations

LimitationDetail
Massive parameter count138M parameters, most wasted in FC layers
No skip connectionsCannot train much deeper without vanishing gradients
Slow inferenceHeavy computation compared to later efficient architectures
No batch normalisationPredates BatchNorm, making training harder and slower

VGG vs. Later Architectures

VGG-16ResNet-50EfficientNet-B0
Parameters138M25M5.3M
Layers1650Compound scaled
Skip connectionsNoYesYes
Top-5 accuracy (ImageNet)92.7%93.3%93.3%
Key innovationDepth with 3x3 filtersResidual connectionsArchitecture search

ResNet achieves better accuracy with 5x fewer parameters and 3x more layers, precisely because skip connections solved the training difficulties VGG could not overcome.