Introduction
딥러닝에 입문하고 관련 논문을 찾아볼 때 가장 먼저 보게 되는 논문이 VGGNet 이다. 정확한 논문 이름은 Very Deep Convolutional Networks for Large-Scale Image Recognition 이다. 이름에서 유추할 수 있듯이 Image Recognition 에서 CNN 의 성능이 깊이에 따라서 어떻게 달라지는지를 살펴보는 논문이다.
Convnet Configuration
우선 ConvNet 의 인풋은 224x224 RGB 이미지로 동일하다. 이 이미지는 ConvNet 안에서 주로 3x3 필터들을 통과하게 되고, 총 다섯 번의 2x2 max-pool 를 통해서 사이즈를 줄여나간다. 그리고 마지막엔 총 3개의 FC-Layer 로 구성돼있는데, 4096-4096-1000 개의 parameter 개수들로 이루어져있다. 마지막 개수가 1000개인 이유는 Train 시키는 ImageNet 데이터가 총 1000개의 다른 클라스들로 이루어져있기 때문이다. 자세한 네트워크 구조는 아래 표와 같다.
conv3 뒤에 나오는 숫자는 채널 수를 의미한다. (64, 128, 256, ..). 위 표에서 볼 수 있듯이 깊이가 약간씩 다른 총 5개 (A~E) 의 서로 다른 ConvNet 들을 구성하였다. 공통적으로 앞에서 설명한 3x3 filter, 5 번의 maxpool, 그리고 3개의 FC-Layer 로 구성돼있고, 필터의 개수에서만 약간씩 차이가 난다.
Discussion
VGGNet 의 가장 큰 특징 중 하나가 여러 개의 3x3 필터를 사용한다는 것이다. 이는 초창기의 다른 네크워크들이 11x11, 7x7, 등 비교적 큰 필터들을 사용한 것과 대조적인데, 이 이유에는 크게 두 가지가 있다.
우선 7x7 필터를 한 번 적용하는 것과 3x3 필터를 세 번 적용하는 과정을 비교해보자. 3x3 필터를 3 번 적용하게 되면, ReLU 함수도 3번씩 적용할 수 있게 된다. 따라서 결정 함수를 더 discriminative 하게 도와준다.
또한, 전체 parameter 개수도 줄어든다. 7x7 컨볼루션을 적용했을 시 총 $7*7*C^2$ 개의 parameter 수가 나오는데, 3x3을 세 번 적용하게 되면 $3*3*3*C^2$ 개가 나와서 원래 개수에 비해 꽤 줄게 된다.
Classification Framework
VGGNet 을 Training 시킬 때 Batch size 는 256, Momentum 0.9, Weight Decay $5*10^-4$ 로 지정돼었다. Learning rate 는 처음엔 &10^-2& 로 설정돼었고, loss 가 정체돼있으면 10씩 줄어들도록 만들어졌다.
Crop 은 single-scale 과 multi-scale, 총 두 가지 방식으로 진행돼었다. Single-scale 은 training scale S 를 고정시키는 것이다. 이 논문에서는 S 를 256, 384 총 두 가지 경우에 대해서 single-scale training 을 진행하였다. Multi-scale 은 각각의 input 이미지가 [256-512] 사이의 사이즈 중 랜덤하게 Crop 되는 형식이다.
Classification Experiment
Train 은 IRLSVRC-2012 dataset 을 통해서 했다. 성능은 top1, top5 error 를 통해서 측정했다. 여기서 top-1 은 예측한 class 가 실제 class 와 같은지를 측정하고, top-5 은 예측한 상위 5개의 클라스가 실제 class 와 같은지를 측정한다. 결과는 아래와 같다.
우선 Single-scale 결과를 분석해보자. 테이블 가장 죄측의 A, B, C, D, E 는 앞에서 설명한 깊이가 다른 ConvNet 구조들이다. A 에서 E 로 갈수록 레이어는 깊어진다. 표를 보면 A 에서 E 로 갈수록, 즉 레이어가 깊어질수록 error 가 더 낮아진다는 것을 확인할 수 있다. 또한 single-scale 에 비해서 multi-scale training 을 했을 때 결과가 미세하게나마 좋게 나온다는 것을 확인할 수 있다.
다른 State-of-the-art 모델들과 비교했을 때도 VGGNet 이 빼어난 성능을 보여준다는 것을 볼 수 있다.
Conclusion
VGGNet 이 놀라운 이유는 오로지 심플한 3x3 Convolution 을 여러 번 진행했을 뿐인데도 좋은 성능을 보여준다는 것이다. 또한 3x3 filter 를 이용했기에 parameter 수도 더 적고, 시간도 단축할 수 있다는 장점도 있다. 이 논문의 결과는 아주 직관적이라고 볼 수 있다. 말 그대로 레이어가 '깊을수록' 더 '좋은' 성능을 보여주기 때문이다.
Reference
[1] Simonyan, K., & Zisserman, A. (2014). Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556.
'딥러닝 논문 요약' 카테고리의 다른 글
Class Activation Map (CAM) 논문 요약/리뷰 (0) | 2020.05.14 |
---|---|
ResNet 논문 요약/리뷰 (0) | 2020.05.11 |