상세 컨텐츠

본문 제목

논문리뷰 | VGG-Net

AI_관련_논문리뷰/Computer_Vision

by HAKIIM 2024. 10. 24. 11:18

본문

https://arxiv.org/pdf/1409.1556

 

 

소개


VGG-16 모델은 ImageNet Challenge에서 Top-5 테스트 정확도를 92.7% 달성하면서 2014년 컴퓨터 비전을 위한 딥러닝 관련 대표적 연구 중 하나로 자리매김하였다.

Very Deep Convolutional Networks for Large-Scale Image Recognition 논문의 내용을 살펴보면서 VGG 모델이 어떻게 이미지 분류 문제에서 이토록 좋은 성과에 도달할 수 있었는지 확인해보자.

참고로 VGG-16의 의미는 다음과 같다:
VGG : Visual Geometry Group
16 : 16 layers
따라서, 신경망 모델의 깊이(레이어 수)에 따라 VGG-19 혹은 VGG-13이 될 수도 있다.

VGG-16 모델은
어떻게 16–19 레이어와 같이 깊은 신경망 모델의 학습을 성공했을까?
왜 모든 Convolutional layer에서 3x3 필터만 사용했을까?

더보기
  1. 깊은 신경망 모델 학습 성공 요인:

 

a) 작은 필터 크기 사용:

  • 3x3 필터를 사용함으로써 파라미터 수를 줄이고 비선형성을 증가시켰습니다.
  • 이는 더 깊은 네트워크를 효율적으로 학습할 수 있게 해주었습니다.

b) 점진적인 깊이 증가:

  • 먼저 얕은 네트워크(11층)를 학습한 후, 점진적으로 깊이를 늘려갔습니다.
     


  • 이 방법으로 더 깊은 네트워크의 초기 가중치를 효과적으로 설정할 수 있었습니다.

c) 효과적인 정규화 기법 사용:

  • Weight Decay(L2 정규화)와 Dropout을 사용하여 과적합을 방지했습니다.
     


    2. 3x3 필터만 사용한 이유:

a) 파라미터 수 감소:

  • 3x3 필터 3개는 7x7 필터 1개와 같은 수용 영역을 가지지만, 파라미터 수가 더 적습니다(27 vs 49).
  • 이는 모델의 복잡도를 줄이고 과적합 위험을 감소시킵니다.

b) 비선형성 증가:

  • 여러 개의 3x3 필터를 연속으로 사용하면 더 많은 ReLU 활성화 함수를 적용할 수 있습니다.
  • 이는 모델의 특징 식별 능력을 향상시킵니다.

c) 효과적인 특징 추출:

  • 작은 필터를 여러 번 사용함으로써 더 복잡하고 추상적인 특징을 추출할 수 있습니다.
     


d) 계산 효율성:

  • 3x3 필터는 현대 GPU 아키텍처에 최적화되어 있어 계산 효율성이 높습니다.
     



이 두 질문에 답할 수 있는 것이 VGG 논문의 핵심이자 모든 것이다.

더 깊은 신경망

VGG 모델은 딥러닝 기반 컴퓨터 비전 모델의 시대를 열었던 AlexNet(2012)의 8-layers 모델보다 깊이가 2배 이상 깊은 네트워크의 학습에 성공했으며, 이를 통해 ImageNet Challenge에서 AlexNet의 오차율을 절반(16.4 > 7.3)으로 줄였다.
VGG 모델이 16–19 레이어에 달하는 깊은 신경망을 학습할 수 있었던 것은 모든 합성곱 레이어에서 3x3 필터를 사용했기 때문이다.

이미지 출처 : https://neurohive.io/en/popular-networks/vgg16/

VGG-16 Architecture의 구성:
13 Convolution Layers + 3 Fully-connected Layers
3x3 convolution filters
stride: 1 & padding: 1
2x2 max pooling (stride : 2)
ReLU


깊이에 따른 각 레이어의 크기는 논문의 표를 참고하자.
여기서 conv3은 3x3필터를, conv1은 1x1필터를 의미한다.

또한 conv3-N에서 N은 필터의 개수에 해당한다.

예를 들어, conv3–64는 64개의 3x3 필터를 학습 매개변수로 사용했다는 의미이다.


신경망의 마지막 3 Fully-Connected Layer는 각각 4096, 4096, 1000 개의 유닛으로 구성돼 있으며, 출력층(1000: class의 수)은 classification을 위한 Softmax 함수를 사용한다.


Softmax 함수란?

더보기

Softmax 함수는 다중 클래스 분류 문제에서 주로 사용되는 활성화 함수입니다. 입력받은 값을 0~1 사이의 값으로 정규화하여 출력하며, 모든 출력 값의 총합은 1이 됩니다.

식은 다음과 같습니다:

Softmax 함수의 주요 특징:

  • 출력값을 확률로 해석할 수 있음
  • 지수 함수를 사용하여 양수 값을 보
  • 클래스 간 상대적인 크기 관계를 유지


구성 ‘D’에 해당하는 VGG-16을 예를 들면, 다음과 같이 정리할 수 있다.


Batch Normalization이 포함된 버전이 주로 활용된다.


Batch Normalization이란?

더보기

Batch Normalization은 딥러닝 모델의 학습을 안정화하고 가속화하는 기법입니다. 각 레이어의 입력을 정규화하여 내부 공변량 변화(Internal Covariate Shift) 문제를 해결합니다.주요 단계:

  1. 미니배치의 평균과 분산 계산
  2. 입력값 정규화
  3. 스케일 및 이동 파라미터 적용

수식:


여기서 μB는 학습 가능한 파라미터입니다.

Batch Normalization의 장점:

  • 학습 속도 향상
  • 초기화에 덜 민감
  • 규제 효과로 인한 일반화 성능 향상

VGG-16 with BatchNorm Architecture

3x3 필터
VGG 모델 이전에 Convolutional Network를 활용하여 이미지 분류에서 좋은 성과를 보였던 모델들은 비교적 큰 Receptive Field를 갖는 11x11필터나 7x7 필터를 포함한다.
그러나 VGG 모델은 오직 3x3 크기의 작은 필터만 사용했음에도 이미지 분류 정확도를 비약적으로 개선시켰다.


구체적으로 어떤 정확도를 어떻게 개선시켰는지??

더보기
  1. 정확도 개선:
    • VGG 모델은 ImageNet Challenge 2014에서 Top-5 테스트 오류율 7.3%를 달성했습니다.
       


    • 이는 이전 모델인 AlexNet의 오류율 16.4%에 비해 절반 이상 감소한 수치입니다.
       



  2. 개선 방법:
    • 깊은 네트워크 구조: VGG16은 16개, VGG19는 19개의 가중치 층을 사용하여 네트워크 깊이를 크게 증가시켰습니다.
       


    • 작은 필터 크기: 모든 합성곱 층에서 3x3 필터만을 사용했습니다.
       


  3. 3x3 필터 사용의 이점:
    • 비선형성 증가: 여러 개의 3x3 필터를 연속적으로 사용함으로써 더 많은 비선형 활성화 함수(ReLU)를 적용할 수 있어 모델의 특징 식별 능력이 향상됩니다.
    • 파라미터 수 감소: 예를 들어, 3개의 3x3 필터(총 27개 파라미터)는 1개의 7x7 필터(49개 파라미터)와 같은 수용 영역을 가지지만 더 적은 파라미터를 사용합니다.
       



  4. 성능 비교:
    • VGG 모델은 단일 네트워크로 7.0%의 테스트 오류율을 기록하여 당시 최고 성능을 보였습니다.
       



    • GoogLeNet(6.7% 오류율)과 비슷한 성능을 보였으며, Clarifai(11.2% 오류율)를 크게 앞섰습니다.
       



  5. 앙상블 효과:
    • 두 개의 VGG 모델만을 결합하여 6.8%의 오류율을 달성했습니다. 이는 적은 수의 모델로도 뛰어난 성능을 낼 수 있음을 보여줍니다.
       



이 부분에서 좋은 통찰을 얻을 수 있다.


예를 들어, 위와 같이 10x10 이미지가 있다고 하자.

이 이미지에 대해 7x7필터와 3x3필터로 각각 Convolution을 수행하면 다음과 같은 특성이 있다.


7x7 필터를 이용하여 Convolution 했을 경우 출력 특징 맵의 각 픽셀 당 Receptive Field는 7x7이다.


3x3필터를 이용할 경우 3-레이어 Convolution을 반복했을 때 원본 이미지의 7x7 영역을 수용할 수 있다.
Stride가 1일 때, 3차례의 3x3 Conv 필터링을 반복한 특징맵은 한 픽셀이 원본 이미지의 7x7 Receptive field의 효과를 볼 수 있다.

그렇다면, 7x7 필터를 이용해 이미지에 대해 한 번 Convolution을 수행한 것과 3x3 필터로 세 번 Convolution을 수행한 것에는 어떤 차이가 있을까?

결정 함수의 비선형성 증가
각 Convolution 연산은 ReLU 함수를 포함한다. 다시 말해, 1-layer 7x7 필터링의 경우 한 번의 비선형 함수가 적용되는 반면 3-layer 3x3 필터링은 세 번의 비선형 함수가 적용된다.
따라서, 레이어가 증가함에 따라 비선형성이 증가하게 되고 이것은 모델의 특징 식별성 증가로 이어진다.

2. 학습 파라미터 수의 감소

Convolutional Network 구조를 학습할 때, 학습 대상인 가중치(weight)는 필터의 크기에 해당한다.
따라서, 7x7필터 1개에 대한 학습 파라미터 수는 49이고 3x3 필터 3개에 대한 학습 파라미터 수는 27(3x3x3)이 된다.
파라미터 수가 크게 감소하는 것을 알 수 있다.
물론 위와 같은 특징이 모든 경우에 좋은 방향으로 작용하는 것은 아니니 주의할 필요가 있다. 다시 말해, 무작정 네트워크의 깊이를 깊게 만드는 것이 장점만 있는 것은 아니다.
여러 레이어를 거쳐 만들어진 특징 맵(Feature Map)은 동일한 Receptive Field에 대해 더 추상적인 정보를 담게 된다. 목적에 따라서는 더 선명한 특징 맵이 필요할 수도 있다.

모델 학습

VGG-16 원문에서는 학습 시 다음과 같은 최적화 알고리즘을 사용하였다:

Optimizing multinomial logistic regression
mini-batch gradient descent
Momentum(0.9)
Weight Decay(L2 Norm)
Dropout(0.5)
Learning rate 0.01로 초기화 후 서서히 줄임

 

이러한 학습 알고리즘은 본 논문의 핵심과는 벗어나며, 모델과 무관하게 얼마든지 변경될 수 있는 부분이므로 자세히 다루지는 않을 예정이다.
다만 각각의 알고리즘에 대한 개념과 특징을 개별적으로 리뷰할 계획이다.


가중치 초기화
딥러닝에서 신경망 가중치의 초기화는 학습 속도 및 안정성에 큰 영향을 줄 수 있기 때문에 어떤 방식으로 초기화할 것인지는 중요한 문제 중 하나이다.


VGG 연구팀은 이러한 문제를 보완하고자 다음과 같은 전략을 세웠다:
상대적으로 얕은 11-Layer 네트워크를 우선적으로 학습한다. 이 때, 가중치는 정규분포를 따르도록 임의의 값으로 초기화한다.
어느 정도 학습이 완료되면 입력층 부분의 4개 층과 마지막 3개의 fully-connected layer의 weight를 학습할 네트워크의 초기값으로 사용한다.
논문 제출 후 Glorot&Bengio (2010)의 무작위 초기화 절차를 이용하여 사전 훈련 없이 가중치를 초기화하는 것이 가능하다는 것을 알아냈다.


학습 이미지 크기


모델 학습(Training) 시 입력 이미지의 크기는 모두 224x224로 고정하였다.
학습 이미지는 각 이미지에 대해 256x256~512x512 내에서 임의의 크기로 변환하고, 크기가 변환된 이미지에서 개체(Object)의 일부가 포함된 224x224 이미지를 Crop하여 사용하였다.



이미지를 256x256 크기로 변환 후 224x224 크기를 샘플링한 경우



이미지를 512x512 크기로 변환후 224x224 크기를 샘플링한 경우
이처럼 학습 데이터를 다양한 크기로 변환하고 그 중 일부분을 샘플링해 사용함으로써 몇 가지 효과를 얻을 수 있다.
한정적인 데이터의 수를 늘릴 수 있다. — Data augmentation
하나의 오브젝트에 대한 다양한 측면을 학습 시 반영시킬 수 있다. 변환된 이미지가 작을수록 개체의 전체적인 측면을 학습할 수 있고, 변환된 이미지가 클수록 개체의 특정한 부분을 학습에 반영할 수 있다.
두 가지 모두 Overfitting을 방지하는 데 도움이 된다.
실제로 VGG 연구팀의 실험 결과에 따르면 다양한 스케일로 변환한 이미지에서 샘플링하여 학습 데이터로 사용한 경우가 단일 스케일 이미지에서 샘플링한 경우보다 분류 정확도가 좋았다.
Fully-convolutional Nets
Training 완료된 모델을 테스팅할 때는 신경망의 마지막 3 Fully-Connected layers를 Convolutional layers로 변환하여 사용하였다.
첫 번째 Fully-Connected layer는 7x7 Conv로, 마지막 두 Fully-Connected layer는 1x1 Conv로 변환하였다. 이런식으로 변환된 신경망을 Fully-Convolutional Networks라 부른다.
신경망이 Convolution 레이어로만 구성될 경우 입력 이미지의 크기 제약이 없어진다. 이에 따라 하나의 입력 이미지를 다양한 스케일로 사용한 결과들을 앙상블하여 이미지 분류 정확도를 개선하는 것도 가능해진다.
Fully-Convolutional Network는 컴퓨터 비전 분야에서 굉장히 중요한 개념이다. 따라서, 내용을 자세하게 다루기 위해 이와 관련된 대표적인 논문인 Jonathan Long의 [Fully convolutional networks for semantic segmentation] 리뷰를 통해 소개할 계획이다.

결론

VGG 연구팀의 실험 결과를 통해 네트워크의 깊이가 깊어질수록 이미지 분류 정확도가 높아지는 것을 확인할 수 있었다.
실험에서 네트워크의 깊이를 최대 19 레이어(VGG-19)까지만 사용한 이유는 해당 실험의 데이터에서는 분류 오차율이 VGG-19에서 수렴했기 때문이다. 학습 데이터 세트가 충분히 많다면 더 깊은 모델이 더 유용할 수도 있다.

'AI_관련_논문리뷰 > Computer_Vision' 카테고리의 다른 글

Context_Prediction  (1) 2024.11.22
# 이진화  (0) 2024.08.31

관련글 더보기