상세 컨텐츠

본문 제목

[논문 리뷰 스터디] Very Deep Convolutional Networks for Large-Scale Image Recognition

심화 스터디/논문 리뷰 스터디

by 임청수 2023. 3. 16. 20:44

본문

작성자 : 17기 임청수

 

0. Abstract

💡 본 논문에서는 CNN모델에서 네트워크 깊이와 성능 간의 영향력을 대규모의 image recognition을 통해 연구했습니다.

VGGNet은 ILSVRC 2014 대회에서 2등을 차지한 CNN모델로 네트워크 깊이가 모델이 좋은 성능을 보이는데 중요한 역할을 한다는 것을 보여주었습니다. 해당 모델은 필터 크기 3x3, stride 1, 제로패딩 1인 conv layer로 이루어져 있으며, 필터 크기가 2x2인 max-pooling을 pooling layer로 사용합니다.

VGGNet은 ImageNet 데이터 분류 대회인 ILSVRC 대회에서 GoogLeNet보다 근소한 차이로 2등을 했지만, 다른 연구에서는 더 좋은 성능을 보였습니다.

간단한 구조를 가지고 단일 네트워크에서 좋은 성능은 보여주기 때문에 이미지 특징 추출을 하는데 기본 네트워크 모델로 사용되고 있습니다. 하지만 매우 많은 메모리를 이용하여 연산한다는 단점이 있습니다.

1. Introduction

본 논문에서는 ConvNet configurations에 대해 설명하고 학습과 검증 과정에 대해 자세히 다룹니다. VGGNet은 망의 깊이가 어떠한 영향을 주는지 연구하기 위해 만들어진 모델입니다.

CNN의 성능을 향상시키는 가장 직접적인 방식은 신경망의 layer 수를 늘리는 것입니다. 하지만 그럴 경우 파라미터 수가 늘어나 연산량이 기하급수적으로 증가하게 됩니다. 따라서 학습시키는데 오랜 시간이 걸리고 Gradient vanishing, exploding, overfitting 문제도 발생합니다.

이를 해결하기 위해 논문에서 제안한 메인 아이디어는 크기가 작은 3x3 conv layer를 이용하여 16,19 층 등 깊은 layer를 쌓으면서 복잡도를 낮추는 것입니다. 본 논문에서는 경험적으로 깊이가 어떤 영향을 주는지 확인하기 위해 가장 간단한 3x3 filter를 사용하게 되었습니다.

그 결과 ImageNet에서 좋은 성적을 거둘 뿐만 아니라 BackBone으로서의 능력도 만들었습니다.

 

14년도 VGGNet이 13년도에 비해 더 낮은 에러율을 보여준다.

 

2. ConvNet Configurations

VGG 모델은 AlexNet(2012)의 8-layers 모델보다 깊이가 2배 깊은 네트워크 학습에 성공했으며, 이를 통해 ImageNet Challenge에서 AlexNet의 오차율은 절반을 줄였습니다.(16.4% → 7.3%)

 

2.1 전처리

  • 244x244 RGB인 이미지 학습 데이터셋 전체의 채널 평균값을 입력 영상의 각 화소마다 빼고 입력을 zero-centered되게 설정하였습니다.

2.2 VGG-16 Architecure

  • 13 Convoltution Layers
  • 3 Fully-connected Layers(4096 → 4096 → 1000)
  • 3x3 Convolution filters
  • stride 1 & padding 1
  • 2x2 max pooling (stride 2)
  • ReLU

다음 표는 깊이가 모델 성능에 어떤 영향을 주는지 알아보기 위해 6개의 구조에 대해 실험을 진행한 것입니다.

 

 

입력 사이즈는 224x224 크기의 컬러 영상을 사용하며, 하나 또는 복수의 컨볼루션층과 Max-pooling층이 반복되는 구조이고, 최종단에는 기존 CNN 모델처럼 Fully connected layer가 구성되어 있습니다.

 

VGGNet은 3x3 크기의 필터를 사용함으로써, 여러개의 non-linearity의 사용을 증가할 수 있다고 합니다.(계산 복잡도를 줄임)

그럼에도 불구하고 최종단에 Fully connected layer가 3개 겹쳐 있어 이 부분에서만 파라미터의 개수가 약 122만개가 발생합니다. 따라서 구조는 단순하지만 매우 많은 메모리를 사용하여 연산을 해야합니다.

풀링 없이 3x3 filter를 2번 쓰면 5x5 필터를 1 번 쓴 것 과 같고, 3x3 필터를 3번 쓰면 7x7 필터를 한 번쓴 것과 같습니다.

이렇게 하면서 얻을 수 있는 장점은,

  1. 비선형 함수인 relu를 3번이나 쓸 수 있습니다.
  2. 학습 파라미터의 수가 감소합니다.

n_layer * (HxWxC) = 3*(3x3xC) = 27C^2

n_layer * (HxWxC) = 1*(7x7xC) = 49C^2

(채널은 입력 데이터의 채널과 필터의 채널을 모두 고려함)

이렇게 함으로써 파라미터의 수가 줄어들게 되고 이에 학습속도도 빨라집니다.

layer수가 많아질수록 non-linearity가 더 증가하기 때문에 더 유용하고 유효한 feature들을 추출할 수 있게 됩니다.

3. Classfication Framework

3.1 Training

학습 과정은 입력 이미지 crop 방법을 제외하고 AlexNet과 동일하게 진행되었습니다. 학습 hyper parameter는 다음과 같습니다.

batch size = 256, momentum = 0.9, weight decay = 0.00005, epoch = 74, learning rate = 0.01(10배씩 감소)

crop : 원본 이미지에서 불필요한 부분을 잘라내는 것

  • pre-initialisation

네트워크의 weight는 bad initialization 시 모델을 꺼뜨릴 수 있기 때문에 매우 중요합니다. layer의 가중치에 대한 초깃값 설정을 잘 해야 합니다.

VGGNet에서는 1~4번째 conv layer, FC layer 3개에 w init을 하였습니다.

→ normal distribution에서 random sampling 진행 / bias = 0

나머지 layer는 모두 randomly w init을 진행했습니다.

  • data augmentation

VGG 모델은 3가지 aumentation이 적용되었습니다.

  1. crop된 이미지를 랜덤하게 수평, 수직으로 뒤집기
  2. 무작위로 RGB 값 변경하기
  3. image rescaling( input size 변경)

224x244, 384x384 로 고정하여 학습 & 256~512 중에서 사이즈를 랜덤으로 하여 학습(H,W는 동일 사이즈)

실험을 위해 3가지 방법으로 rescale을 하고 비교를 합니다.

 

3.2 Testing

test image를 다양하게 rescale 하여 train ConvNet의 입력값으로 사용합니다. 이를 통해 성능 향상을 이끌어 냈다고 말합니다. 또한 데이터의 수평 뒤짚기와 agmentation도 활용하였습니다.

 

3.3 Implementation Details

2013년 12월에 출시된 C++ Caffe를 이용해서 구현 하였습니다.

4-GPU system에서 학습 시간은 2~3주가 소요되었고 이는 a single GPU보다 약 3.75배 빠르다고 합니다.

4-GPU system은 data parallelism을 이용하는 Multi-GPU training입니다. training 이미지의 각 배치가 다수의 GPU에서 수행되고 각각의 GPU에서 병렬하게 처리됩니다. GPU 배치 기울기가 계산된 후 모든 배치에 대한 기술기를 얻기 위해 평균을 활용했습니다.

4. Classification experiments

ILSVRC-2012 dataset : ImageNet 1000개 클래스에 대한 이미지를 포함.

training : 1.3M, validation : 50K, testing : 1000K 로 구성

using two measures: the top-1 and top-5 error

 

4.1 single scale evaluation

 

  1. AlexNet에 활용되었던 LRN을 사용했을때 성능을 향상시키지 못하였습니다.

LRN : local response normalisation (A-LRN network)을 의미

 

    2. ConvNet depth를 증가시킬 때 classification error가 감소하였습니다.

11 layers in A to 19 layers in E까지 이러한 결과를 보입니다

C는 D보다 안좋은 결과를 보였는데 이는 C는 3개의 1x1 conv layers을 포함했기 때문입니다.

 

4.2 Multi-scale evaluation

 

S가 고정된 경우는 {S-32, S, S+32}로 Q값을 변화시키면서 테스트를 진행했습니다. 여기서 학습의 scale과 test의 scale이 많이 차이가 나는 경우는 오히려 결과가 더 좋지 못해 32만큼 차이가 나게 하여 테스트를 진행했습니다.

학습에 scale jittering을 적용했을 때 출력의 크기는 [256,384,512]로 테스트 영상의 크기를 정했으며, 예상처럼 scale jittering을 적용하지 않은 것보다 훨씬 결과가 좋고, single-scale보다는 multi-scale이 더 결과가 좋다는 것을 알 수 있습니다.

 

4.3 Multi-scop evaluation

 

dense evaluation보다 multiple crops가 grid 차이로 인해 약간 더 좋은 성능을 보여주었습니다. 하지만 둘은 상보적인 특성을 가지고 있기 때문에 동시에 적용을 하면 성능이 좋아짐을 위 표를 통해 확인할 수 있습니다. (multi-crop & dense)

Conclusion

VGGNet은 이 논문을 통해 large scale image classification에서 deep CNN모델을 실험했으며, 모델의 깊이와 성능에 대해서 장점을 증명해냈습니다. 특히 filter size를 조절하면서 기존의 AlexNet이 가지고 있던 layer 증가 시 복잡도 문제를 해결했습니다.

또한 분류 외에 다른 task에서도 일반화하여 높은 성능을 보여줄 수 있는 능력도 증명했습니다. (back bone으로서의 능력)

Reference

논문 링크 : https://arxiv.org/pdf/1409.1556.pdf

참고1 : https://inhovation97.tistory.com/44

참고2 : https://deep-learning-study.tistory.com/398

 

관련글 더보기

댓글 영역