논문 리뷰

VGGNet 논문 리뷰

younghlee 2024. 9. 3. 14:38

오늘 리뷰할 논문은 VGGNet에 관한 논문입니다.

 

VGGNet은 2014년에 발표된 논문으로, 당시 딥러닝에서 중요한 문제였던 신경망의 깊이가 깊어지면 성능이 떨어지는 문제를 해결한 논문입니다. 기존의 CNN 구조들이 상대적으로 얕았던 반면, VGGNet은 매우 깊은 네트워크 구조를 도입하여 이미지 인식에서 더 높은 성능을 달성할 수 있음을 보여줍니다.

 

VGGNet은 Computer Vision 분야의 대회인 ILSVRC에서 GoogLeNet보다 이미지 분류 성능은 약간 낮았지만, 다른 연구들에서는 뛰어난 성능을 보여줍니다. 또한, 최근에는 이미지 특징(feature)을 추출하는 데 널리 활용되며, 기본 네트워크 모델로 자리 잡고 있습니다. 그러나 많은 메모리를 사용하여 연산 비용이 크다는 단점도 존재합니다.

 

이번 리뷰에서는 VGGNet이 이 문제를 어떻게 해결했는지, 그리고 그 과정에서 발생한 여러 문제들을 살펴보겠습니다.

CONVNET CONFIGURATIONS

 

ARCHITECTURE

 

Input images

  • 224 X 224 크기의 RGB 이미지.
  • 전처리는 RGB 평균값을 빼주는 것만 적용합니다.

Conv Layer

  • 3 x 3 Conv 필터 사용: 3 x 3 사이즈는 이미지의 요소(좌/우, 상/하, 중심)를 파악할 수 있는 최소한의 수용 필드(receptive field)로, 이를 사용합니다.
  • 1 x 1 Conv 필터도 사용하여 차원을 줄이고 **비선형성(non-linearity)**을 증가시킵니다.
  • 스트라이드(stride)는 1, 패딩(padding)도 1로 설정합니다.

Pooling Layer

  • Conv 레이어 다음에 총 5개의 Max Pooling Layer가 적용됩니다.
  • 2 x 2 사이즈, 스트라이드는 2로 설정합니다.

FC Layer

  • 첫 두 FC 레이어는 각각 4,096 채널.
  • 마지막 FC 레이어는 1,000 채널로 설정됩니다.

마지막으로, Softmax Layer를 적용하여 분류 결과를 도출합니다.

모든 레이어에는 ReLU를 사용하며, AlexNet에서 사용된 LRN(Local Response Normalization) 기법은 성능 개선이 없고, 메모리 사용량 및 연산 시간만 늘리기 때문에 사용하지 않습니다.

 

CONFIGURATIONS

VGGNet의 모델 구조는 깊이(depth)에 따라 조금씩 변형되었으며, 11개의 깊이를 가진 A 구조에서부터 19개의 깊이를 가진 E 구조까지 있습니다.

Conv Layer의 너비는 64에서 시작하여 Max Pooling Layer를 통과할 때마다 2배로 증가하며, 최대 512까지 커집니다. 깊이가 깊어졌음에도 불구하고, VGGNet은 더 큰 Conv Layer를 사용한 얕은 신경망보다 파라미터 수가 줄어들었다고 설명합니다.

 

DISCUSSION

 

VGGNet 이전에 Convolutional Network를 활용하여 이미지 분류에서 좋은 성과를 보였던 모델들은 비교적 큰 Receptive Field를 갖는 11x11 또는 7x7 필터를 포함했습니다. 그러나 VGGNet은 3x3 크기의 작은 필터만 사용했음에도 불구하고 이미지 분류 정확도를 크게 향상시켰습니다. 이 부분에서 중요한 통찰을 얻을 수 있습니다.

 

그렇다면 왜 더 큰 사이즈의 Conv 필터를 1개 사용하는 대신, 굳이 3x3 Conv 필터 여러 개를 사용하는 것일까요?

 

  • 결정 함수의 비선형성 증가
    • 각 Convolution 연산에는 ReLU 함수가 적용됩니다. 7x7 필터링을 1번 수행하는 경우, 비선형 함수가 한 번 적용되지만, 3x3 필터링을 3번 수행하면 비선형 함수가 3번 적용됩니다. 이는 모델의 특징 식별성을 크게 향상시킵니다.

 

  • 학습 파라미터 수의 감소
    • 3x3 Conv 필터 3개를 사용하는 것은 7x7 Conv 필터 1개를 사용하는 것과 동일한 수용 필드를 가지지만, 파라미터 수가 줄어듭니다. 이는 7x7 필터에 일반화를 적용한 것과 비슷한 효과를 제공하여 오버피팅을 줄이는 데 도움이 됩니다.

 

또한, VGGNet의 C 구조에서는 1x1 Conv 필터를 사용하여 비선형성을 더 강화했습니다.

 

CLASSIFICATION FRAMEWORK

VGGNet 팀은 3x3 Convolution이라는 단순한 구조로 성능을 극대화하기 위해 훈련과 테스트에 많은 노력을 기울였습니다. 또한, 다양한 경우에 성능이 어떻게 달라지는지 공개하여 CNN 구조에 대한 이해에 많은 기여를 했습니다.

 

Training

하이퍼 파라미터 설정

  • 다항 로지스틱 회귀(Multinomial logistic regression) 최적화.
  • 미니배치 경사 하강법(Mini-batch gradient descent) 사용.
  • 모멘텀(Momentum) 0.9로 설정.
  • L2 정규화(Weight Decay) 및 드롭아웃(Dropout) 0.5 적용.
  • 학습률(Learning rate)은 0.01로 초기화하고 점차 감소시킵니다.

 

가중치 초기화

 

  • Implicit regularization
    • 7x7 대신 3x3 Conv 필터를 사용하여 파라미터 수를 줄이는 효과가 있습니다.

 

  • Pre-initialization
  • A 모델을 먼저 학습한 후, 다른 모델을 구성할 때 A 모델에서 학습된 레이어를 사용하여 최적의 초기값을 설정합니다.

 

가중치 초기화는 학습 속도와 안정성에 큰 영향을 미칩니다. VGGNet은 AlexNet보다 더 깊고 파라미터도 많지만, 적은 epoch로 수렴했습니다. 이는 다음 두 가지 요인 덕분입니다:

 

학습 이미지 크기 설정

 

VGGNet을 학습할 때, 트레이닝 이미지의 크기를 VGGNet의 입력 크기에 맞춰 조정해야 합니다. 예를 들어, SS가 224인 경우, 트레이닝 이미지의 가로와 세로 중 더 작은 쪽을 224에 맞춥니다. 이때 원본 비율을 유지하며 isotropically-rescaled 합니다.

 

이미지 크기 설정 방식에는 Single-scale training Multi-scale training이있습니다.

 

 

 

  • Single-scale training
    • 이 방식은 S를 256 또는 384로 고정시키는 것인데 S가 384인 네트워크의 경우, 학습 속도를 높이기 위해 S를 256으로 설정하여 학습시킨 가중치값들을 기반으로 S를 384로 설정해 다시 학습시킨다. 이때, S=256에서 이미 많은 학습이 진행되었기에 S=384로 설정하고 학습할 때에는 learning rate를 줄이고 학습시킨다.

 

  • Multi-scale training
    • 이 방식은 S를 고정시키지 않고, 256 ~ 512 값 중 random하게 값을 설정하는 것인데 보통 이미지들이 모두 같은 사이즈가 아니기에 random 하게 multi-scale로 학습하면, 학습효과가 더 좋아진다. 이를 Scale Jittering이라 부른다.
    • 추가로, multi-scale을 학습시킬때, 속도상의 이유로 S=384로 Pre-trained 된 single-scale을 모델로 fine-tuning을 시킨다.

 

이 방법은 데이터 증강(Data Augmentation)을 통해 데이터의 다양성을 확보하고, 오버피팅을 방지하는 데 도움을 줍니다. .


 

TESTING

Training 완료된 모델을 테스트할 때는 신경망의 마지막 3FC layers를 Convolutional layers로 변환하여 사용합니다.

 

첫 번째 FC layers 는 7x7 Conv로, 마지막 두 FC layers 는 1x1 Conv로 변환합니다. 이렇게 변환된 신경망은 Fully-Convolutional Network라고 부릅니다.

 

컨볼루션 레이어로만 구성된 신경망은 입력 이미지의 크기 제약이 없어지며, 다양한 스케일로 테스트한 결과를 앙상블하여 이미지 분류 정확도를 개선할 수 있습니다. Fully-Convolutional Network는 컴퓨터 비전 분야에서 중요한 개념입니다.

CLASSIFICATION EXPERIMENTS

 

SINGLE SCALE EVALUATION

VGGNet에 단일 스케일 테스트 이미지를 적용했을 때의 결과입니다. 네트워크의 깊이가 깊어질수록 성능이 향상되었으며, 학습에 Scale Jittering을 사용한 경우 성능이 더욱 향상되었습니다.

 

B 구조에서 3x3 Conv Layer 2개를 사용하는 것과 5x5 Conv Layer 1개를 사용하는 경우를 비교했을 때, 3x3 2개를 사용하는 것이 top-1 오류율에서 약 7% 더 나은 결과를 보였습니다. 이는 3x3 Conv 필터가 단순히 네트워크를 깊게 만들고 파라미터 수를 줄이는 것뿐만 아니라, 뉴런의 비선형 활성 함수를 통해 특징 추출 성능을 향상시켰음을 반증합니다.

 

MULTI SCALE EVALUATION

Multi-scale test 결과입니다. 다중 스케일 테스트는 SS가 고정된 경우, {S-32, S, S+32}로 QQ 값을 변화시키면서 테스트했습니다. 학습 스케일과 테스트 스케일 간의 큰 차이가 성능에 부정적인 영향을 미칠 수 있어, 테스트 시에는 32만큼 차이가 나도록 설정했습니다.

 

학습에 scale jittering 을 적용한 경우, 테스트 영상의 크기를 [256, 384, 512]로 설정했으며, 예상대로 scale jittering 을 적용하지 않은 것보다 훨씬 더 좋은 성능을 보였습니다. 또한 single-scale 보다 multi-scale 결과가 더 나은 성능을 보였습니다.

 

MULTI-CROP EVALUATION

앞서 언급한 것처럼, multi-crop과 dense evaluation은 각각 적용했을 때 multi-crop이 약간 더 나은 성능을 보였습니다. 두 방법을 함께 적용하면 성능이 더욱 개선된다는 것을 아래 표에서 확인할 수 있습니다.

CONVNET FUSION

7개의 모델을 앙상블로 사용했을 때 가장 좋은 성능을 보였습니다. 이후 추가 실험에서 D와 E 두 모델만을 앙상블한 결과가 더 좋았습니다.

COMPARISON WITH THE STATE OF THE ART

4.4와 같은 내용이다.

 

Conclusion

 

지금까지 VGGNet에 관한 논문 리뷰를 진행해 보았습니다. VGGNet은 딥러닝 모델의 깊이가 성능에 미치는 영향을 연구한 중요한 연구로, 기존의 CNN 구조보다 훨씬 깊은 네트워크를 도입하여 이미지 인식 성능을 크게 향상시켰습니다.

 

하지만 VGGNet의 단점 중 하나는 큰 메모리 사용량과 긴 학습 시간입니다. 이는 VGGNet이 많은 파라미터를 가지고 있기 때문입니다. 그러나 이 단점에도 불구하고, VGGNet은 컴퓨터 비전 분야에서 널리 사용되는 기본 모델로 자리 잡았으며, 전이 학습과 같은 다양한 응용 분야에서 여전히 높은 성능을 보이고 있습니다.

 

결론적으로, VGGNet은 그 단순한 구조와 깊이를 통해 딥러닝 모델의 성능을 극대화하는 방법을 제시했으며, 이후 연구에 큰 영향을 미쳤습니다.



Reference

 

 

'논문 리뷰' 카테고리의 다른 글

BERT 논문 리뷰  (0) 2024.07.23
Transformer 논문 리뷰  (0) 2024.07.22
Attention 논문 리뷰  (0) 2024.07.16
Alex-Net 논문 리뷰  (0) 2024.07.16
U-Net 논문리뷰  (0) 2024.07.15