본 논문에서는 VGGNet에 대해 소개하며, 모델의 깊이가 성능 향상에 끼치는 영향에 대해 다룬 논문이다. 또한 큰 필터 하나를 사용하는 것보다 3x3 필터를 여러 개 사용하는 것이 매개변수의 개수도 줄고, 성능 향상도 도모한다는 것을 알아냈다. 또한 마지막 FC 층을 클래스 대신 bounding box 좌표 회귀로 바꿔 학습하여 모델의 깊이가 깊을수록 분류 성능 뿐만 아니라 객체 위치 예측 성능도 향상된다는 것을 밝혔다.
1. 연구 배경과 동기
2012년 알렉스넷(AlexNet)이 등장하면서 딥러닝 기반 이미지 분류가 기존의 전통적인 특징 기반 기법들을 완전히 압도하기 시작했다. 이후 여러 연구들이 합성곱 신경망(ConvNet)의 구조를 조금씩 바꾸거나 개선하며 성능을 높이려는 시도를 했다. 예를 들어 ILSVRC 2013 대회에서는 첫 번째 합성곱 층의 커널 크기나 stride를 줄여 더 세밀하게 이미지를 분석하는 방법, 또는 학습과 평가 시 다양한 크기에서 crop을 뽑아내는 방식이 사용됐다. 그러나 이 논문은 기존과는 다른 질문을 던졌다.
“네트워크의 깊이(depth)를 크게 늘리면 어떻게 될까?”
기존 모델들은 보통 8~11개 정도의 가중치 층(weight layers)을 사용했는데, 저자들은 단순히 네트워크의 깊이를 16층, 19층까지 늘려보았다. 단, 무작정 늘리는 대신 모든 합성곱 층을 3×3의 작은 필터로만 구성했다. 이 방식이 가능한 이유는 작은 필터를 여러 개 쌓으면 결국 넓은 수용 영역(receptive field)을 확보할 수 있으면서도 매 층마다 비선형성을 더해 더 복잡한 함수를 학습할 수 있기 때문이다.
2. 모델 구조와 설계 원칙
- 입력: 224×224 RGB 이미지. 전처리는 평균 RGB 값을 빼는 정도로 단순하게 했다.
- 합성곱 층: 모든 합성곱은 3×3 크기의 필터를 stride 1로 적용하고, padding을 1씩 줘서 공간 크기를 유지했다. 일부 실험에서는 1×1 필터도 사용했는데 이는 채널 간 선형 결합에 가깝다.
- 풀링 층: 총 5개의 max-pooling 층을 두었고, 각 풀링은 2×2 크기에 stride 2를 사용했다.
- 완전연결 층(FC): 마지막에는 3개의 FC 층을 두었다. 앞의 두 층은 4096 차원, 마지막 층은 클래스 개수(ILSVRC 기준 1000)와 동일했다. 소프트맥스 층을 통해 확률로 변환했다.
- 활성화 함수: 모든 은닉층은 ReLU를 사용.
- 정규화: AlexNet에서 사용한 Local Response Normalization(LRN)을 시험했으나 성능 향상 효과가 없었고 오히려 계산량과 메모리만 늘어나 제거했다.
- 깊이 구성:
- A: 11층 (8 conv + 3 FC)
- B: 13층
- C: 16층 (1×1 conv 포함)
- D: 16층 (모두 3×3 conv)
- E: 19층 (16 conv + 3 FC)
여기서 중요한 점은, 큰 필터를 쓰기보다 작은 3×3 필터를 여러 층 쌓는 편이 매개변수 수도 줄고, 성능도 더 좋아진다는 사실이다. 예를 들어 7×7 conv 한 층을 쓰는 것보다 3×3 conv 세 층을 쌓으면 동일한 receptive field를 확보하면서도 매개변수는 훨씬 적다.
3. 학습 방법
- 최적화: 미니배치 경사하강법 + momentum 0.9
- 배치 크기: 256
- 정규화: weight decay(5×10^-4), dropout(0.5, 첫 두 FC 층)
- 학습률: 0.01에서 시작해 validation 성능이 멈추면 10배씩 줄임. 총 3번 감소시켰고 약 74 epoch에서 종료.
- 가중치 초기화: 깊은 모델은 초기화가 어렵기 때문에 먼저 얕은 A 네트워크를 학습한 뒤, 그 일부 층 가중치를 깊은 모델 학습에 전이시켰다. 나머지는 정규분포(평균 0, 분산 0.01)에서 초기화.
- 데이터 증강: 224×224 crop을 무작위로 잘라 쓰고, 좌우 반전, 색상 변화 등을 적용. 학습 이미지 크기는 두 방식 사용:
- 고정된 스케일 (예: 최소 변을 256 혹은 384로 리사이즈)
- 멀티 스케일 학습 (256~512 범위에서 랜덤으로 리사이즈, 즉 scale jittering)
4. 테스트 방법
테스트 시에도 단일 크기 평가와 멀티 스케일 평가를 진행했다.
- 단일 크기: 입력 이미지를 한 가지 크기 Q로 리사이즈 후 평가.
- 멀티 스케일: Q를 여러 값으로 바꿔서 각각 평가 후 softmax 출력을 평균.
- Dense 평가: FC 층을 conv 층으로 변환해 전체 이미지를 한 번에 처리하고, 마지막 feature map을 평균 pooling 해서 클래스 확률을 얻음.
- Multi-crop 평가: 이미지를 여러 구역에서 crop하여 평가. Dense 평가와 상호 보완적이다.
실험에서는 dense 평가와 multi-crop 평가를 함께 쓰면 더 성능이 올라갔다.
5. 분류 실험 결과
ILSVRC-2012 데이터셋 (1000 클래스, 130만 train, 5만 val, 10만 test)에 대해 실험을 진행했다.
- 깊이가 늘어날수록 정확도가 높아졌다. 19층(E) 모델이 가장 낮은 에러율을 달성했다.
- 3×3 conv를 계속 쓰는 D 모델이, 1×1 conv를 섞은 C 모델보다 더 나았다. 즉, 공간 정보를 포착하는 게 중요하다.
- 1x1 conv는 선형 연결에 가깝기 때문에 공간 정보 포착 떨어짐.
- 학습 시 멀티 스케일 jittering을 쓰면 고정 스케일 학습보다 훨씬 일반화가 잘됐다.
- 최종 성능:
- 단일 모델(E, multi-scale, dense+multi-crop): top-5 error 7.0%
- 2개 모델 앙상블: top-5 error 6.8%
- 이는 같은 해 ILSVRC 2014 우승 모델 GoogLeNet(6.7%)과 사실상 동등했다.
즉, 단순히 깊이만 늘리고 작은 필터를 사용한 고전적 ConvNet 구조가 최신 복잡한 구조와 비슷하거나 더 나은 성능을 낸 것이다.
6. Localization 실험
분류뿐 아니라 물체 위치(localization) 예측도 실험했다. 마지막 FC 층을 클래스 대신 bounding box 좌표 회귀로 바꿔 학습했다.
- per-class regression(PCR)이 class-agnostic regression(SCR)보다 성능이 좋았다.
- ILSVRC 2014 localization 트랙에서 25.3% error로 1위 달성.
즉, 깊은 특성이 분류뿐 아니라 위치 예측에도 강력하다는 걸 입증했다.
7. 일반화 성능 (Transfer Learning)
저자들은 학습된 VGGNet을 다른 데이터셋에 feature extractor로 적용했다.
- VOC 2007/2012: 객체 분류(mAP 89% 수준, 기존 대비 6% 이상 향상)
- Caltech-101/256: 객체 인식에서 기존 최고 성능 크게 초월
- VOC 2012 Action classification: 사람 행동 분류에서도 최상위 성능 달성
이처럼 VGG 특징은 범용적으로 강력해서 이후 수많은 연구의 backbone으로 활용되었다.
8. 결론과 기여
- 네트워크의 깊이 자체가 강력한 성능 향상의 원인임을 명확히 보여줌.
- 작은 3×3 필터를 쌓아올리는 단순한 설계로도 대규모 이미지 인식에서 최첨단 성능 달성.
- ImageNet 분류 2위, localization 1위라는 성과를 거두고, 모델을 공개해 후속 연구가 활발히 진행되도록 기여.
- 이후 수많은 연구에서 VGGNet을 backbone으로 사용하며, 딥러닝 기반 컴퓨터 비전의 표준을 세웠다.
전체 요약 정리
이 논문은 단순하면서도 중요한 발견을 했다. “네트워크를 깊게 하면 성능이 좋아진다.” 복잡한 구조적 트릭이나 특수한 정규화 없이도, 단순히 3×3 합성곱 층을 많이 쌓으면 정확도가 크게 향상된다. VGGNet은 ILSVRC 2014 대회에서 GoogLeNet과 더불어 최첨단 성능을 기록하며, 이후 수많은 비전 연구의 기반이 되었다. 특히 transfer learning 측면에서 범용성이 뛰어나, 다양한 인식 문제에서 표준 feature extractor로 자리 잡았다.