Paper Review/CV

[Paper Review] Very Deep Convolutional Networks for Large-Scale Image Recognition

dotz0ver 2025. 4. 28. 19:18

https://arxiv.org/pdf/1409.1556v6


Abstract

  • 대규모 이미지 인식 환경에서 convolutional network의 depth가 정확도에 미치는 영향을 실험적으로 분석함
  • small  3 \( \times \) 3 convolution filter를 사용하는 구조에서 depth를 16~19개의 weight layer까지 늘려 기존 prior-art보다 높은 정확도를 달성함
  • 해당 모델은 ILSVRC 2014에 출전하여 localisation 부문 1위, classification 부문 2위를 기록함
  • 학습된 representation은 다른 dataset에도 잘 generalise되어 SOTA 성능을 보였으며, 후속 연구를 위해 성능이 가장 뛰어난 두 개의 ConvNet 모델을 공개함

 

1. Introduction

이 논문은 ConvNet 구조에서 ‘depth’가 성능에 미치는 영향을 분석한 연구다. 기존에는 AlexNet 이후 다양한 방식으로 구조를 개선하려는 시도가 있었지만, 이 논문은 단순히 3×3 필터만을 반복적으로 쌓아 네트워크를 깊게 만드는 방식으로 접근했다. 다른 하이퍼파라미터는 고정한 채 깊이만 증가시켜 성능 변화를 관찰했고, 그 결과 매우 깊은 구조가 ILSVRC 분류 및 객체 위치 추정(localisation) 과제에서 state-of-the-art 성능을 달성했다.

또한, fine-tuning 없이 선형 SVM과 같은 단순한 파이프라인에서도 다양한 이미지 인식 데이터셋에서 우수한 일반화 성능을 보여주었으며, 가장 성능이 뛰어났던 두 모델(VGG-16, VGG-19)을 공개하여 후속 연구를 위한 기반을 마련했다.

 

2. ConvNet Configurations

성능 비교의 공정성을 확보하기 위해, 논문에서는 동일한 설계 원칙(기존 연구 기반)을 적용한 ConvNet 구성들을 사용하며,
2장에서는 ConvNet의 기본 구조, 실험용 구성, 그리고 설계상의 차별점을 순차적으로 설명하고 있다.

2.1 Architecture

이 논문에서는 ConvNet의 입력으로 224×224 크기의 RGB 이미지를 사용하며, 전처리는 단순히 평균 RGB 값을 빼는 방식으로 구성된다. 네트워크는 3×3 크기의 작은 receptive field를 가진 필터를 사용하는 여러 개의 convolutional layer로 이루어져 있으며, 이는 방향성과 중심 정보를 인식할 수 있는 최소 단위다. 일부 구성에서는 채널 간 선형 결합을 위한 1×1 convolution도 활용된다. 모든 convolution은 stride 1, padding 1로 설정되어 feature map의 해상도를 유지하며, max-pooling은 2×2 윈도우, stride 2로 총 5번만 제한적으로 적용된다.

convolutional layer 스택 뒤에는 다음과 같은 3개의 Fully-Connected (FC) layer가 존재한다:

  • 첫 두 FC layer는 각각 4096개의 채널을 가지고 있으며,
  • 세 번째는 ILSVRC 1000-class 분류를 수행하므로 1000개의 채널을 가진다.
  • 마지막 출력은 softmax layer이다.

모든 hidden layer에는 ReLU가 적용되고, 기존 AlexNet에서 사용되던 LRN(Local Response Normalisation)은 이 모델에서는 대부분 제외되었다. 이는 LRN이 성능 향상 없이 연산량만 증가시킨다는 실험적 근거에 기반한다. 

2.2 Configurations

Table 1: ConvNet 구성 A부터 E까지의 깊이 증가를 보여주는 표로, 왼쪽에서 오른쪽으로 갈수록 계층 수가 늘어난다. 새롭게 추가된 계층은 굵은 글씨로 표시되며, 각 convolution layer는 "conv[커널 크기]-[채널 수]" 형식으로 표기된다. 모든 layer에 적용된 ReLU는 표의 간결성을 위해 생략되었다.

 

총 다섯 가지 ConvNet 구성(A–E)을 실험에 사용하며, 각 구성은 Table 1에 정리되어 있다. 모든 네트워크는 앞서 제시한 기본 설계 원칙(3×3 필터, stride=1, padding=1 등)을 공통적으로 따르되, 차이점은 오직 depth, 즉 계층의 수에 있다. A는 8개의 convolution layer와 3개의 Fully-Connected layer로 총 11개 weight layer로 구성되고, E는 convolution layer 수가 16개로 늘어나 총 19개 weight layer를 가진다. 또한 conv layer의 채널 수는 64에서 시작해 max-pooling을 지날 때마다 두 배씩 증가하며, 최종적으로 512까지 도달한다.

Table 2: 파라미터 수 (백만 단위)

 

Table 2에는 각 모델의 전체 파라미터 수가 제시되어 있는데, 깊이가 깊어졌음에도 불구하고 conv layer의 너비나 receptive field 크기를 키운 얕은 네트워크(Sermanet et al., 2014의 1.44억 개 파라미터)보다 전체 파라미터 수는 더 적다.

2.3 Discussion

VGGNet은 기존 ILSVRC 대회 상위권 모델들과 달리, 전 네트워크에 걸쳐 3×3 필터만을 사용한 일관된 설계를 갖는다. Krizhevsky et al.의 AlexNet처럼 첫 conv layer에서 11×11 또는 7x7의 큰 필터를 사용하는 대신, VGG는 stride 1의 3×3 필터를 여러 층에 걸쳐 반복적으로 쌓는다. 이로 인해, receptive field는 점진적으로 커지면서도 파라미터 수는 대폭 줄어들고 비선형성은 더 많이 도입되는 이점을 갖는다. 예를 들어, 3×3 conv를 세 번 쌓으면 7×7 효과를 내면서도 파라미터 수는 81%나 적다. 또한 구성 C에서는 1×1 convolution을 추가해 비선형성을 높였는데, 이는 Network in Network 구조에서 영향을 받은 방식이다. 1×1 conv는 입력과 출력 채널 수가 같을 경우 단순 선형 투영처럼 작동하지만, 뒤따르는 ReLU 활성화 함수에 의해 추가적인 비선형성이 주어진다. 이를 통해 receptive field에는 영향을 주지 않으면서도 네트워크의 표현력을 강화하는 설계적 포인트를 확보했다.

또한 ILSVRC-2014에서 높은 성능을 기록한 GoogLeNet(Szegedy et al., 2014)은 독립적으로 개발되었지만, 22개 layer의 깊은 구조와 소형 필터(3×3, 1×1, 5×5)를 사용한다는 점에서 VGGNet과 유사하다. GoogLeNet은 구조가 더 복잡하고 feature map 해상도를 초반에 빠르게 줄이며, VGGNet은 단일 네트워크 분류 정확도에서 GoogLeNet을 능가한다.

 

3. Classification Framework

앞에서는 네트워크 구성에 대해 설명했고, 이번 섹션에서는 분류용 ConvNet의 학습과 평가 방법을 다룬다.

3.1 Training

VGGNet은 Krizhevsky et al. (2012, AlexNet)의 학습 방식을 따르되, 이미지 크기를 다양하게 조정하는 multi-scale 입력 크롭 방식은 사용하지 않는다. 전체 학습은 mini-batch gradient descent 방식으로 진행되며, 다음과 같은 설정을 따른다:

  • 배치 크기: 256
  • Momentum: 0.9
  • Objective: multinomial logistic regression
  • 정규화: weight decay(5×10⁻⁴), dropout(비율 0.5)
  • 초기 학습률 = 10⁻², validation 성능이 개선 안 되면 10배씩 감소
  • 3번 감소, 370,000 iterations (약 74 epochs) 후 학습 종료

VGGNet은 AlexNet보다 더 깊고 파라미터 수도 많지만, 작은 크기의 convolution 필터와 깊은 네트워크 구조 자체가 implicit regularisation 역할을 하여 오히려 더 빠른 수렴을 보인다. 또한 일부 layer는 사전 초기화를 통해 학습 안정성을 높였다.

깊은 네트워크에서 gradient 소실 등 불안정을 방지하기 위해, 먼저 shallow한 구조인 configuration A(Table 1)를 학습에 사용하고, 이를 기반으로 deeper network를 초기화한다. 구체적으로,

  • 초기 4개의 convolution layer와 마지막 3개의 fully-connected layer는 configuration A에서 학습된 가중치를 그대로 사용하고,
  • 중간 layer는 평균 0, 분산 10⁻²의 정규분포에서 샘플링한 random 값으로 초기화한다.
  • bias는 전부 0으로 설정한다.

사전 초기화된 레이어는 별도의 학습률 조정 없이 그대로 학습에 참여한다. 또한 Glorot & Bengio (2010)의 random 초기화 방식 역시 실험적으로 적용되었으며, 이는 사전학습 없이도 안정적인 학습이 가능함을 보여주었다.

입력은 리스케일된 학습 이미지에서 224×224 크기로 무작위 크롭을 수행해 구성하고, SGD iteration마다 한 이미지당 한 개의 크롭을 사용한다. 학습 데이터는 무작위 horizontal flip과 RGB color shift를 통해 증강한다.

Training Image Size

VGGNet에서는 입력 이미지의 크기를 조절하는 방식도 실험적으로 분석하였다. ConvNet의 입력은 항상 224×224 크기의 고정된 crop으로 구성되며, 이 crop은 isotropic으로 리스케일된 학습 이미지에서 추출된다. 이때 S는 리스케일된 이미지의 가장 짧은 변의 길이를 의미하며, training scale이라 부른다. S는 원칙적으로 224 이상인 어떤 값도 될 수 있다.

  • S = 224인 경우: 크롭이 리스케일된 이미지의 가장 짧은 변을 완전히 덮으며, 이미지 전체의 통계를 포착하게 된다.
  • S ≫ 224인 경우: 크롭이 이미지의 일부분만을 포함하며, 객체의 작은 부분 또는 소형 객체 중심의 학습이 이루어진다.

학습 스케일 S를 설정하는 방식은 두 가지로 나뉜다.

 

1. 고정 스케일 학습 (Single-scale training)

S를 하나로 고정해 학습하는 방식이며, 이미지 크롭 내에는 다양한 객체 크기가 포함될 수 있으므로 이 또한 일정 부분 multi-scale 특성을 내포한다. 실험에서는 다음 두 스케일이 사용되었다:

  • S = 256: 기존 연구들(Krizhevsky et al., 2012; Zeiler & Fergus, 2013 등)에서 널리 사용된 값
  • S = 384: 더 큰 스케일로, 세부 정보가 더 많이 보존된다

S = 384에 대해 학습을 수행할 때는, S = 256으로 사전 학습된 모델을 초기화로 사용하고, 초기 학습률은 10⁻³로 더 작게 설정하여 fine-tuning 방식으로 학습 속도를 높였다.

 

2. 다중 스케일 학습 (Multi-scale training)

각 학습 이미지마다 S를 [Sₘᵢₙ, Sₘₐₓ] 범위에서 무작위로 샘플링하여 리사이즈하는 방식이다. 이는 scale jittering이라 불리며, 하나의 모델이 다양한 크기의 객체를 인식할 수 있도록 일반화를 유도한다. 실험에서는 다음 범위를 사용하였다:

  • Sₘᵢₙ = 256, Sₘₐₓ = 512

다중 스케일 학습도 효율적인 학습을 위해 S = 384에서 사전 학습된 single-scale 모델을 초기화로 사용하였으며, 이때는 전체 레이어를 fine-tuning하였다.

3.2 Testing

  • 입력 전처리
    • 입력 이미지를 isotropic rescaling하여 가장 짧은 변 길이 Q로 조정 (Q ≠ 학습 스케일 S일 수 있음).
  • 네트워크 변환
    • Fully-connected layers를 convolutional layers로 변환:
      • 첫 FC → 7×7 conv
      • 다음 두 FC → 1×1 conv
  • Dense 평가
    • 변환된 fully-convolutional network를 전체 리사이즈된 이미지에 적용.
    • 결과로 생성된 class score map공간 평균(sum-pooling) 하여 최종 클래스 점수를 얻음.
  • Test-time 증강
    • 입력 이미지에 대해 horizontal flip을 추가로 적용.
    • 원본과 flip된 결과의 softmax 출력을 평균하여 최종 결과 생성.
  • Dense vs Multi-crop 평가
    • Dense: 효율적 (이미지 전체를 한 번에 처리).
    • Multi-crop: 여러 위치와 스케일을 따로 샘플링 → 더 촘촘한 분석 → 정확도 향상 가능하지만 계산량 증가.
  • Padding 차이점
    • Crop 평가: zero-padding 사용.
    • Dense 평가: 주변 영역 자연스러운 padding → 더 넓은 receptive field 확보, 더 많은 문맥 정보 활용.
  • 추가 실험
    • Dense 평가 외에도 참조용으로 150개 crops (5×5 grid × flip × 3 scales)로 multi-crop 평가도 수행.

3.3 Implementation Details

저자들은 기존 Caffe 툴박스를 기반으로, 멀티-GPU 학습과 풀사이즈 이미지 다중 스케일 학습 기능을 추가했다. 데이터 병렬 방식을 사용하여 배치를 여러 GPU에 나누고, 계산된 그래디언트를 평균내 동기적으로 업데이트함으로써 단일 GPU 학습과 동일한 결과를 얻었다. 더 복잡한 모델/데이터 병렬 방식 대신 단순한 데이터 병렬만으로도 4-GPU 시스템에서 약 3.75배의 속도 향상을 달성했으며, 단일 네트워크 학습에는 2~3주가 소요되었다.

 

4. Classification Experiments

Datasets

  • ILSVRC-2012 데이터셋 사용 (1.3M train / 50K val / 100K test).
  • Top-1Top-5 error로 성능 평가.
  • 검증 세트를 주로 테스트처럼 사용, 일부 결과는 ILSVRC-2014에 제출.

4.1 Single Scale Evaluation

섹션 2.2에서 설명한 layer 구성으로 각각의 ConvNet 모델을 단일 scale 환경에서 평가하였다. 테스트 이미지 크기는 고정된 \( S \)를 사용하는 경우에는 \( Q = S \)로, 그리고 \( S \in [S_{min}, S_{max}] \) 범위에서 jittering할 때는 \( Q = 0.5(S_{min} + S_{max}) \)로 설정했다. 결과는 Table 3에 제시되었다.

 

  • Local Response Normalisation (LRN) 적용 결과
    • 모델 A에 LRN을 적용해도 성능 개선이 없었음.
    • 따라서 더 깊은 네트워크(B~E)에서는 LRN을 사용하지 않음.
  • Depth와 오류율 관계
    • 네트워크 깊이가 증가할수록 classification error 감소.
  • 구성 C vs 구성 D
    • 1×1 convolution을 추가한 구성 C
      3×3 convolution만 사용한 구성 D보다 성능이 낮았음.
    • 비선형성 추가만으로는 부족하고, 충분한 receptive field 확보가 중요함을 의미.
  • 깊이의 한계
    • 19개 weight layer를 가진 E 구성에서는 성능 향상이 포화 현상을 보였음.
    • 그러나 더 큰 데이터셋에서는 추가적인 depth가 여전히 이점을 줄 수 있음.
  • Shallow network와 비교
    • 5×5 convolution을 사용해 depth를 줄인 얕은 네트워크는
      동일 receptive field를 갖는 깊은 네트워크(B)보다
      top-1 error가 7% 높았음.
  • Scale jittering 효과
    • 학습 시 S∈[256,512]S \in [256, 512] 범위의 scale jittering을 적용하면,
      고정 스케일(S = 256 또는 384) 학습보다 성능이 크게 향상되었음.
    • 이는 multi-scale 통계 포착이 효과적임을 의미함.

 

4.2 Multi-Scale Evaluation

ConvNet 모델을 단일 scale에서 평가한 후, 이번에는 테스트 시점에서 scale jittering의 효과를 평가했다. 이는 하나의 테스트 이미지를 여러 크기(\( Q \) 값이 다름)로 리사이즈하여 각각 모델을 적용하고, 나온 class posterior들을 평균내는 방식이다. 학습과 테스트 이미지 크기 간 차이가 크면 성능이 떨어지기 때문에, 고정된 \( S \)로 학습된 모델은 \( Q = \{S - 32, S, S + 32\} \) 세 가지 크기로 테스트했다. 반면, \( S \in [S_{min}, S_{max}] \) 구간에서 scale jittering을 적용해 학습한 모델은 더 넓은 범위인 \( Q = \{S_{min}, 0.5(S_{min} + S_{max}), S_{max}\} \)로 테스트했다.

  • scale jittering 학습 모델이 고정 스케일 학습 모델보다 테스트 성능 우수.
  • 단일 모델 최고 성능: top-1 error 24.8%, top-5 error 7.5% (validation 기준).

4.3 Multi-Crop Evaluation

  • Dense evaluation보다 multi-crop 평가가 약간 더 좋은 성능.
  • 두 방법 결합 시 단독 사용보다 성능 상승.
  • 차이는 주로 convolution 경계 처리 방식에 기인.

4.4 ConvNet Fusion

  • 여러 모델의 softmax 출력을 평균하여 앙상블.
  • 7개 모델 앙상블: 7.3% error
  • 2개 모델(D+E) 앙상블 후 dense + multi-crop 평가: 6.8% error 달성.
  • 단일 모델 최고 성능: E 모델 7.1% error.

 

4.5 Comparison with the State Of The Art

  • VGGNet 앙상블이 ILSVRC-2014에서 2위 기록.
  • 단일 모델 성능은 GoogLeNet보다 0.9% 낮은 오류율로 우위.

 

5. Conclusion

최대 19개 weight layer를 가진 매우 깊은 convolutional network를 대규모 이미지 분류에 적용해 평가하였다. 실험 결과, 깊이가 분류 정확도 향상에 크게 기여하며, 기존 ConvNet 아키텍처를 단순히 깊게 만드는 것만으로도 ImageNet 챌린지 데이터셋에서 state-of-the-art 성능을 달성할 수 있음을 확인하였다. 또한 부록에서는 다양한 작업과 데이터셋에 대해 모델이 잘 일반화되며, 더 얕은 표현을 기반으로 한 복잡한 recognition pipeline보다도 뛰어난 성능을 보인다는 추가 결과를 제시하였다. 전체적으로, 깊이(depth)가 시각적 표현 학습에 매우 중요함이 다시 한번 입증되었다.