[논문 정보]
Karen Simonyan, Andrew Zisserman et al. | arXiv:1409.1556 | ICLR 2015
논문명: Very Deep Convolutional Networks for Large-Scale Image Recognition
대표 모델: VGG-16, VGG-19
핵심 주제: CNN의 성능 향상에서 “깊이(depth)”가 얼마나 중요한가를 체계적으로 검증한 논문
1. 서론
이 논문은 컴퓨터 비전 역사에서 매우 중요한 위치를 차지하는 VGGNet 논문이다. AlexNet 이후 CNN 기반 이미지 인식 성능이 급격히 좋아졌지만, 당시에는 어떤 구조적 요소가 성능 향상에 가장 중요한지에 대한 논의가 활발했다. 예를 들어 AlexNet은 큰 커널, 큰 stride, Local Response Normalization, 여러 GPU 병렬 학습 등을 사용했고, 이후 모델들은 커널 크기, stride, multi-scale testing, dense evaluation 등을 다양하게 조합했다.
VGG 논문의 핵심 질문은 매우 단순하다.
CNN을 더 깊게 만들면 이미지 인식 성능이 좋아지는가?
하지만 이 질문을 제대로 검증하기 위해서는 다른 조건을 최대한 고정해야 한다. 커널 크기, pooling 방식, fully-connected layer 구조, 입력 이미지 크기 등이 계속 바뀌면 성능 향상이 깊이 때문인지 다른 설계 때문인지 판단하기 어렵다. VGG는 이 문제를 해결하기 위해 거의 모든 설계 원칙을 고정하고, 네트워크의 깊이만 단계적으로 늘리는 방식으로 실험했다.
이 논문의 가장 유명한 설계는 모든 convolution layer에서 3×3 필터를 사용한다는 점이다. 당시에는 7×7, 11×11처럼 큰 receptive field를 가진 convolution filter를 사용하는 경우가 많았다. 그러나 VGG는 작은 3×3 convolution을 여러 개 쌓으면 더 큰 receptive field를 만들 수 있고, 그 사이에 ReLU 비선형성을 여러 번 넣을 수 있으므로 표현력이 더 좋아진다고 주장한다.
예를 들어 3×3 convolution 두 개를 연속으로 쌓으면 effective receptive field는 5×5가 되고, 세 개를 쌓으면 7×7이 된다. 그런데 단일 7×7 convolution 하나보다 3×3 convolution 세 개를 사용하는 것이 파라미터 수는 더 적으면서도 ReLU를 세 번 통과하기 때문에 더 강한 비선형 표현을 만들 수 있다. 이 설계 철학이 VGGNet의 핵심이다.
결과적으로 VGG는 ImageNet ILSVRC 2014에서 classification 부문 2위, localization 부문 1위를 기록했다. 특히 classification에서는 GoogLeNet이 최종 우승했지만, VGG는 구조가 훨씬 단순하고 직관적이어서 이후 연구와 실무에서 매우 널리 사용되었다.
VGGNet은 오늘날 기준으로 보면 파라미터 수가 많고 연산량도 큰 모델이다. 하지만 “작은 필터를 반복적으로 쌓아 깊은 표현을 만든다”는 아이디어는 이후 ResNet, DenseNet, EfficientNet, ConvNeXt 등 많은 CNN 계열 모델의 출발점 중 하나가 되었다.
2. 문제정의
이 논문이 다루는 문제는 대규모 이미지 분류에서 CNN 구조의 깊이가 성능에 미치는 영향이다. 구체적으로는 ImageNet ILSVRC 데이터셋의 1000개 클래스 분류 문제를 대상으로 한다. 입력 이미지를 받아 각 클래스에 대한 확률을 예측하고, top-1 error와 top-5 error로 성능을 평가한다.
기존 CNN 연구들은 성능 향상을 위해 다양한 구조적 변형을 사용했다. AlexNet은 11×11 convolution, stride 4, LRN, overlapping pooling 등을 사용했고, Zeiler & Fergus의 모델은 더 작은 receptive field와 개선된 시각화 분석을 도입했다. OverFeat은 dense evaluation과 multi-scale testing을 활용했다. 하지만 이런 변화가 동시에 일어나면 “정확히 무엇이 성능을 끌어올렸는가?”를 분리해서 보기 어렵다.
VGG는 이 문제를 공정하게 보기 위해 다음과 같은 실험 전략을 선택했다.
첫째, 입력 이미지는 고정된 224×224 RGB image를 사용한다.
둘째, convolution filter는 대부분 3×3으로 통일한다.
셋째, stride는 1, padding은 spatial resolution이 유지되도록 설정한다.
넷째, max pooling은 2×2 window, stride 2로 고정한다.
다섯째, 마지막 fully-connected layer 구조는 모든 모델에서 동일하게 둔다.
여섯째, 달라지는 것은 주로 convolution layer의 개수, 즉 depth이다.
이렇게 하면 네트워크 A, B, C, D, E를 비교했을 때 성능 차이가 주로 depth에서 비롯된다고 해석할 수 있다. 논문에서 제시한 네트워크는 11 weight layers부터 19 weight layers까지 증가한다. 여기서 weight layer는 convolution layer와 fully-connected layer를 포함한다.
3. 제안 방법론
3.1 핵심 아이디어
VGG의 핵심 아이디어는 다음 한 문장으로 요약할 수 있다.
큰 convolution filter를 쓰는 대신, 작은 3×3 convolution filter를 깊게 쌓아 더 강력한 시각 표현을 학습한다.
이 설계는 두 가지 장점을 가진다. 첫째, 작은 필터를 여러 개 쌓으면 큰 receptive field와 유사한 범위를 볼 수 있다. 둘째, 각 convolution 뒤에 ReLU가 들어가기 때문에 단일 큰 convolution보다 더 많은 비선형 변환을 수행할 수 있다.
예를 들어 7×7 convolution 하나를 사용하는 대신 3×3 convolution 세 개를 사용하면 effective receptive field는 동일하게 7×7이 된다. 하지만 파라미터 수는 줄어든다. 입력과 출력 채널 수를 C라고 할 때, 7×7 convolution 하나는 49C²개의 파라미터를 가진다. 반면 3×3 convolution 세 개는 3 × 9C² = 27C²개의 파라미터를 가진다. 즉, 3×3을 세 개 쌓는 방식이 약 45% 적은 파라미터로 유사한 receptive field를 구현한다.

또한 3×3 convolution 세 개 사이에는 ReLU가 세 번 들어간다. 이는 단순히 receptive field만 키우는 것이 아니라, decision function을 더 복잡하고 discriminative하게 만든다. VGG가 단순히 “깊게 쌓았다”가 아니라 “작은 커널을 깊게 쌓았다”는 점이 중요한 이유다.
3.2 입력과 전처리
VGG의 입력은 224×224 RGB 이미지다. 전처리는 매우 단순하다. training set에서 계산한 mean RGB 값을 각 pixel에서 빼는 정도만 수행한다. 복잡한 hand-crafted preprocessing을 넣지 않고, CNN 자체가 이미지 표현을 학습하도록 설계했다.
입력 이미지는 먼저 isotropic rescaling을 거친다. 즉, 이미지의 aspect ratio를 유지하면서 짧은 변의 길이를 특정 크기 S로 맞춘다. 이후 224×224 crop을 랜덤하게 추출해 네트워크 입력으로 사용한다.
이때 S는 training scale을 의미한다. 논문에서는 고정된 S를 사용하는 single-scale training과, S를 범위에서 무작위로 뽑는 multi-scale training을 모두 실험한다. 특히 S ∈ [256, 512]로 scale jittering을 적용한 학습이 성능 향상에 크게 기여한다.
3.3 기본 아키텍처
Input 224×224 RGB image
↓
Convolution blocks
↓
Max pooling layers
↓
FC-4096
↓
FC-4096
↓
FC-1000
↓
Softmax
convolution block에서는 3×3 convolution을 여러 개 쌓고, 일부 block 뒤에 max pooling을 적용한다. max pooling은 2×2 window와 stride 2를 사용한다. convolution의 stride는 항상 1이며, 3×3 convolution에는 padding 1을 적용해 feature map의 spatial size가 유지되도록 한다.
채널 수는 네트워크가 깊어질수록 증가한다. 처음에는 64채널로 시작하고, max pooling을 거칠 때마다 128, 256, 512로 증가한다. 이 구조는 오늘날 CNN에서 흔히 볼 수 있는 형태이지만, 당시에는 매우 정돈되고 체계적인 설계였다.
마지막에는 fully-connected layer 세 개를 사용한다. 첫 번째와 두 번째 FC layer는 각각 4096 dimension이고, 마지막 FC layer는 ImageNet 1000개 클래스를 예측하기 위해 1000 dimension이다. 마지막에는 softmax를 적용한다.
3.4 네트워크 구성 A ~ E
논문에서 말하는 여러 개의 네트워크 구성이다.
| 구성 | Weight | layers특징 |
| A | 11 layers | 가장 얕은 기본 모델 |
| A-LRN | 11 layers | A에 Local Response Normalization 추가 |
| B | 13 layers | A보다 convolution layer 증가 |
| C | 16 layers | 일부 1×1 convolution 사용 |
| D | 16 layers | 모든 convolution을 3×3 중심으로 구성, VGG-16 |
| E | 19 layers | 더 깊은 19-layer 모델, VGG-19 |
가장 널리 알려진 모델은 configuration D, 즉 VGG-16이다. VGG-16은 13개의 convolution layer와 3개의 fully-connected layer로 구성된다. VGG-19는 convolution layer가 더 많아 총 19개의 weight layer를 가진다.
흥미로운 점은 C와 D가 모두 16 weight layers이지만, C는 일부 1×1 convolution을 사용하고 D는 3×3 convolution을 사용한다는 점이다. 실험 결과 D가 C보다 성능이 좋았다. 이는 단순히 비선형성을 추가하는 것만으로는 충분하지 않고, spatial context를 포착하는 3×3 receptive field가 중요하다는 점을 보여준다.
3.5 Local Response Normalization 제거
AlexNet에서는 Local Response Normalization, 즉 LRN이 사용되었다. 하지만 VGG는 실험을 통해 LRN이 ImageNet 성능을 개선하지 못한다고 판단했다. A와 A-LRN을 비교했을 때 A-LRN은 오히려 성능 개선이 없었고, memory consumption과 computation time만 증가시켰다.
이 결과는 중요한 설계상의 단순화를 만든다. VGG는 LRN을 대부분 제거하고, convolution, ReLU, max pooling, fully-connected layer라는 매우 기본적인 구성만으로 강한 성능을 얻었다. 즉, 복잡한 normalization 기법보다 depth와 작은 filter 설계가 더 중요하다는 주장을 강화한다.
3.6 Scale jittering
VGG에서 중요한 augmentation 중 하나는 scale jittering이다. 이미지를 항상 같은 크기로 resize한 뒤 crop하는 것이 아니라, 짧은 변의 크기 S를 일정 범위에서 무작위로 선택한다.
| 방식 | 설명 |
| Single-scale training | S=256 또는 S=384로 고정 |
| Multi-scale training | S를 [256, 512] 범위에서 무작위 샘플링 |
multi-scale training은 이미지 내 객체 크기가 다양하다는 현실을 반영한다. 같은 이미지라도 어떤 scale로 crop하느냐에 따라 객체 전체를 볼 수도 있고, 객체 일부를 볼 수도 있다. 이는 데이터 증강 효과를 가지며, 모델이 다양한 크기의 객체를 더 잘 인식하게 만든다.
실험 결과 scale jittering은 single-scale training보다 일관되게 더 좋은 성능을 보였다. 특히 VGG-16과 VGG-19에서 top-5 validation error를 크게 낮추는 데 기여했다.
4. 핵심 통찰 및 의의
4.1 깊이는 성능 향상에 직접적으로 기여한다
VGG 논문의 가장 중요한 결론은 CNN의 depth가 이미지 인식 성능에 매우 중요하다는 점이다. 네트워크 A에서 E로 갈수록 convolution layer가 증가하고, classification error가 감소한다. 이는 단순히 모델 크기가 커졌기 때문만은 아니다. VGG는 3×3 convolution을 사용해 파라미터 수 증가를 어느 정도 억제하면서 depth를 늘렸다.
즉, VGG의 핵심은 “파라미터를 무작정 늘린다”가 아니라, “작은 convolution filter를 반복적으로 쌓아 깊고 효율적인 representation hierarchy를 만든다”이다.
4.2 작은 필터는 더 깊은 비선형 표현을 가능하게 한다
3×3 convolution은 매우 작은 필터다. 하지만 여러 개 쌓으면 큰 receptive field와 동일한 효과를 낼 수 있다. 동시에 각 convolution 뒤에 ReLU가 들어가므로, 같은 receptive field라도 단일 큰 convolution보다 더 복잡한 함수 표현이 가능하다.
이 아이디어는 이후 CNN 설계에 큰 영향을 줬다. ResNet도 기본적으로 3×3 convolution을 핵심 building block으로 사용한다. DenseNet, U-Net 계열 구조에서도 3×3 convolution은 표준적인 선택이 되었다.
4.3 Transfer learning의 강력한 backbone이 되었다
VGG는 ImageNet pre-trained feature가 다른 vision task에도 매우 잘 작동함을 보여줬다. 특히 마지막 layer를 제거하고 4096-D feature를 추출한 뒤 linear SVM만 붙여도 VOC, Caltech 등에서 state-of-the-art 수준 성능을 얻었다.
이는 이후 “pre-trained backbone + task-specific head”라는 전이학습 패러다임을 널리 확산시키는 데 기여했다. 오늘날에도 ResNet, EfficientNet, ViT, CLIP 등을 backbone으로 쓰는 방식은 이 흐름의 연장선에 있다.
5. 한계점 및 향후 연구
5.1 파라미터 수가 매우 많다
VGG의 가장 큰 한계는 파라미터 수다. VGG-16은 약 138M parameters, VGG-19는 약 144M parameters를 가진다. 특히 fully-connected layer가 매우 많은 파라미터를 차지한다.
현대적인 CNN과 비교하면 VGG는 parameter efficiency가 낮다. 예를 들어 ResNet은 residual connection을 통해 더 깊은 네트워크를 안정적으로 학습하면서도 VGG보다 효율적인 구조를 제공한다. MobileNet이나 EfficientNet 계열은 depthwise separable convolution, compound scaling 등을 통해 훨씬 적은 연산량으로 좋은 성능을 낸다.
5.2 학습 비용이 크다
논문에서는 4개의 NVIDIA Titan Black GPU를 사용했을 때 단일 네트워크 학습에 2~3주가 걸렸다고 보고한다. 이는 당시 기준으로도 상당히 큰 비용이었다. 오늘날 GPU 성능이 좋아졌지만, VGG는 여전히 연산량이 큰 모델이다.
특히 edge device나 mobile 환경에서는 VGG를 그대로 사용하기 어렵다. 따라서 실무에서는 VGG를 feature extractor로 쓰거나, 더 가벼운 CNN backbone으로 대체하는 경우가 많다.
5.3 깊이 증가의 한계
논문에서는 16 layer에서 19 layer로 증가했을 때 성능 향상이 매우 작았다. 이는 단순히 layer를 더 쌓는 것만으로는 어느 순간 성능이 포화될 수 있음을 보여준다.
이후 ResNet은 이 문제를 residual connection으로 해결했다. 단순히 깊게 쌓는 것이 아니라, gradient flow가 잘 유지되도록 skip connection을 넣어 수십, 수백 layer까지 학습할 수 있게 만들었다. 이런 관점에서 VGG는 “깊이의 중요성”을 보여준 논문이고, ResNet은 “깊은 네트워크를 안정적으로 학습시키는 방법”을 제시한 논문이라고 볼 수 있다.
6. 결론
VGG 논문은 CNN 구조 설계에서 매우 중요한 전환점을 만든 논문이다. 이전까지는 큰 convolution filter, 다양한 normalization, 복잡한 evaluation trick 등이 혼재되어 있었다면, VGG는 3×3 convolution을 반복적으로 쌓는 단순한 설계만으로도 깊은 네트워크가 강력한 성능을 낼 수 있음을 보여줬다.
이 논문의 가장 중요한 메시지는 다음과 같다.
CNN의 표현력은 네트워크의 깊이에 크게 의존하며, 작은 3×3 convolution을 깊게 쌓는 방식은 정확도와 파라미터 효율성 측면에서 효과적이다.
VGG는 오늘날 기준으로는 무겁고 비효율적인 모델일 수 있다. 하지만 연구사적으로는 매우 중요하다. VGG-16과 VGG-19는 이후 수많은 vision task에서 backbone으로 사용되었고, transfer learning의 대표적인 기준 모델이 되었다.
특히 사용자가 컴퓨터 비전과 멀티모달 AI를 공부하는 관점에서 VGG는 반드시 이해해야 할 모델이다. VGG를 이해하면 이후 ResNet, Inception, EfficientNet, Vision Transformer로 이어지는 구조적 발전을 훨씬 명확하게 볼 수 있다.
[References]
논문 원문: Very Deep Convolutional Networks for Large-Scale Image Recognition, Karen Simonyan and Andrew Zisserman, ICLR 2015, arXiv:1409.1556
https://arxiv.org/abs/1409.1556
'CV(Computer Vision)' 카테고리의 다른 글
| MobileNetV1 (0) | 2026.06.01 |
|---|---|
| SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size (0) | 2026.05.28 |
| DenseNet (Densely Connected Convolutional Networks) (0) | 2026.05.25 |
| ResNet (Deep Residual Learning for Image Recognition) (0) | 2026.05.24 |
| GoogLeNet (Going Deeper with Convolutions) (0) | 2026.05.21 |