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

2024. 8. 1. 23:14·Paper Review
더보기

Paper Link: https://arxiv.org/abs/1409.1556

 

1. Introduction

  • ImageNet과 같은 대규모 공개 데이터셋의 등장
  • 당시 대규모 이미지 및 비디오 인식에서 큰 성공을 거두고 있던 컨볼루션 신경망(ConvNets)
  • GPU와 같은 고성능 컴퓨팅 시스템의 발전
  • ConvNet 아키텍처 설계의 또 다른 중요한 측면인 '깊이'를 제안
  • 모든 레이어에서 매우 작은 (3×3) 컨볼루션 필터를 사용하여 레이어를 더 깊게 쌓음으로써 네트워크의 깊이를 점진적으로 증가시킴

2. Related Works

  • AlexNet
    • ILSVRC 2012 winner
    • Deeper architecture
    • ReLU, Dropout
    • Data augmentation
    • Multiple GPUs
    • Local Response Normalization
  • ZFNet
    • ILSVRC 2013 winner
    • 더 작은 크기의 필터와 보폭을 적용

3.Method

Architecture

  • 입력: 고정 크기 224×224 RGB 이미지
  • 유일한 전처리: 평균 RGB 값을 빼기
  • 상하좌우, 중앙을 포착할 수 있는 가장 작은 크기의 필터 사용 (3x3)
  • Stride: 1 pixel
  • Padding: 1 pixel (컨볼루션 후 해상도 유지)
  • Max-pooling: 2x2 pixel window, with stride 2
  • 컨볼루션 레이어 후 3개의 FC 레이어 (4096 → 4096 → 1000). 마지막 레이어는 소프트맥스 레이어
  • 모든 은닉층에 ReLU를 통한 비선형성 적용

 

Configurations

  • 표 1은 논문에서 평가된 ConvNet 구성(A에서 E)을 보여주고 모든 구성은 앞선 아키텍처를 따르며 깊이에서만 다름
  • 채널 수는 64에서 시작하여 각 맥스 풀링 레이어마다 두 배로 증가
  • 표 2는 해당 구성의 파라미터 수

 

Discussion - why 3x3 filter?

  • 저자들은 네트워크 전반에 걸쳐 3x3 크기의 작은 필터를 사용하였음
  • 중간에 다른 pooling이 없다고 가정했을 때 컨볼루션 결과 출력 크기 관점에서 3x3 필터 두 번 사용 = 5x5 필터 한 번 사용, 3x3 필터 세 번 사용 = 7x7 필터 한 번 사용하는 것과 같음
  • 그렇다면 왜 3x3 필터를 사용했는가?
    • 레이어를 더 많이 쌓음으로써 ReLU를 통한 비선형성 추가
    • 파라미터 수 감소
      • 위 그림과 같이 7x7 이미지에 3x3 필터 두 번 사용과 5x5 필터 한 번 사용을 비교 (입 출력 채널은 모두 C라고 가정)
      • 3x3의 경우 9C^2 + 9C^2 = 18C^2
      • 5x5의 경우 25C^2
      • 두 경우 모두 출력 크기는 3x3xC로 동일하지만 파라미터 수는 3x3 두 번 사용하는 것이 더 적음

 

Training

  • Basics
    • 손실 함수: multinomial logistic regression (cross entropy)
    • Mini-batch gradient descent (batch size: 256, momentum: 0.9)
    • Learning rate starts at 0.01, decay factor = 10 (when there is no performance improvement)
    • 370K iterations(74 epoch)
    • Regularization
      • L2 weight decay (L2 penalty parameter : 0.00005)
      • Dropout for the first two FC layers (dropout ratio : 0.5)
  • Weight Initilization
    • 테이블 1의 네트워크 A를 무작위 초기화 후 학습
    • 이후 더 깊은 아키텍처를 학습할 때, 처음 4개의 컨볼루션 레이어와 마지막 3개의 FC 레이어를 A의 가중치를 사용해 초기화하고, 중간 레이어는 무작위로 초기화
    • 사전 초기화된 레이어의 학습률을 줄이지 않고 학습 중에 변경될 수 있도록 허용
    • 무작위 초기화의 경우, 평균이 0이고 분산이 0.01인 정규 분포에서 샘플링
  • Image size 
    • 입력 : 고정 크기 224x224 RGB 이미지
    • 학습 시 사용되는 이미지는 SGD 반복마다 각 이미지를 리스케일링하고 224x224로 random crop
    • crop된 이미지에 random horizontal flip과 RGB color shift를 적용하여 이미지 증강
    • 이때 위의 그림과 같이 리스케일링된 이미지의 더 짧은 변을 S라고 정의 (S >= 224)
      • S = 224인 경우 이미지의 더 짧은 변을 완전히 포함하여 전체 이미지 통계 포착 가능
      • S ≫ 224인 경우 이미지의 객체 혹은 객체의 일부분을 포착
  • Determining S
    • Method 1: single-scale training
      • S를 256이나 384 중 하나의 값으로 고정
      • 먼저 S = 256을 사용하여 네트워크를 학습시키고 S = 384 네트워크의 학습 속도를 높이기 위해 사전 학습된 가중치(S = 256)를 사용하며 초기 학습률을 0.0001로 작게 설정
    • Method 2: multi-scale training
      • S의 값을 [256, 512]에서 랜덤 샘플링
      • 이미지 내에서 객체의 크기가 다양할 수 있다는 사실을 반영
  • 정리하자면 학습 시 사용되는 이미지는 결국 리스케일링 후 224x224로 random crop 되어야 하는데, 이때 리스케일링 방법을 single-scale, multi-scale 둘 중 하나의 방법으로 S의 값을 제한함으로써 정할 수 있음

 

Testing

  • 테스트 이미지도 미리 정의된 테스트 스케일 Q로 재조정
  • Q는 S와 같을 필요는 없지만, 이후에 S에 대해 여러 Q를 사용하는 것이 성능을 향상시키는 데 도움이 된다는 것이 밝혀짐
  • FC Layers를 conv Layer로 변환. 아래는 세부사항
    • The first FC layer to 7x7 conv. layer, last two FC layers to 1x1 conv. layer
    • Configure the class score map to have the same number of classes and channels (to obtain a fixed-size vector of class scores for the image)
    • If the size is larger than the existing 7x7, sum-pooling for each score map
    • There is no restriction of input image size → no need to crop when inference → decrease the amount of calculation

4. Classification Experiments

Basics

  • ILSVRC-2012 dataset 사용
  • 1000 classes, training (1.3M), validation (50K), and testing (100K)
  • Classification performance
    • top-1 error: 정답을 완벽하게 맞혀야 함
    • top-5 error: 상위 5개 후보까지 인정

 

Single Scale Evaluation (Fixing Q when testing)

  • single scale training의 경우 Q = S
  • multi scale training의 경우 Q = (256 + 512) / 2
  • A vs. A-LRN
    • LRN의 성능 향상 효과 없으므로 B부터 사용 X
  • C vs. B
    • C>B → C는 B에서 1x1 layer가 몇 개 추가된 것인데 이를 통해 추가적인 비선형성 (ReLU)이 성능 향상에 도움이 된다는 것을 확인
  • C vs. D
    • C<D → D는 C의 1x1 conv layers 위치에 1x1 대신 3x3을 넣은 것. spatial context를 이해하는 것도 중요하다는 것을 확인
  • 추가적으로 B의 3x3 conv layer를 5x5로 변경해서 테스트한 결과 top-1 error가 7% 증가함 → 더 작은 필터가 유리하다는 것을 확인
  • multi scale training이 single scale training보다 성능 좋음 → 학습 시 이미지 내 객체의 다양한 부분을 반영하는 것이 좋다는 것을 확인

 

Multi Scale Evaluation (Variable Q when testing)

  • 고정 S에 대해 Q = {S – 32, S, S + 32}
  • 다양한 S에 대해 Q = {Smin, 0.5(Smin + Smax), Smax}
  • 테스트 시에도 다양한 Q를 사용하는 것이 성능이 높다는 것을 확인

 

Multi Crop Evaluation (Using cropped image when testing)

  • Multi-crop: 이미지를 여러 개로 crop 하고 각각의 예측 결과를 종합하여 최종 예측
  • Dense evaluation: 이미지 전체를 일단 넣고 sliding window와 같이 일정한 간격으로 결과 도출
  • 두 방법을 결합하는 것이 성능 향상되었음

 

ConvNet Fusion

  • 단일 모델의 최고 성능은 E 모델에 multi-crop & dense evaluation 적용
  • 여러 모델(앙상블을 말하는 듯)의 최고 성능은 D & E 모델에 multi-crop & dense evaluation 적용

 

Comparison with the SOTA

  • 2 nets 사용해서 6.8% 성능 → 7 nets 사용하고 6.7% 얻은 GoogLeNet과 비슷
  • single net 기준으로는 7.0%으로 GoogLeNet 제침

5. Conclusion

  • 3x3의 작은 필터를 사용함으로써 더 깊은 네트워크를 만들 수 있는 초석이 됨
  • 상대적으로 간단한 모델 구조
  • 더 적은 파라미터

References

  • https://neurohive.io/en/popular-networks/vgg16/
  • https://daebaq27.tistory.com/94
  • https://medium.com/@msmapark2/vgg16-논문-리뷰-very-deep-convolutional-networks-for-large-scale-image-recognition-6f748235242a

'Paper Review' 카테고리의 다른 글

[Paper Review] Robust Sound-Guided Image Manipulation  (0) 2024.08.20
[Paper Review] Going Deeper with Convolution - GoogLeNet  (0) 2024.08.08
[Paper Review] Deep Residual Learning for Image Recognition - ResNet  (0) 2024.08.03
'Paper Review' 카테고리의 다른 글
  • [Paper Review] Robust Sound-Guided Image Manipulation
  • [Paper Review] Going Deeper with Convolution - GoogLeNet
  • [Paper Review] Deep Residual Learning for Image Recognition - ResNet
ymkwon
ymkwon
공부 기록, 논문 리뷰 등에 대한 정리
  • ymkwon
    ymkwon
    ymkwon
  • 전체
    오늘
    어제
    • 분류 전체보기 (21)
      • CS231n (9)
      • 기계학습 (2)
      • 딥러닝 (0)
      • Paper Review (4)
      • Computer Vision (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    멀티모달
    cs231
    딥러닝
    cs231n
    컴퓨터비전
    기계학습
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
ymkwon
[Paper Review] Very Deep Convolutional Networks for Large-Scale Image Recognition - VGGNet
상단으로

티스토리툴바