Very Deep Convolutional Networks for Large-Scale Image Recognition 본문
Very Deep Convolutional Networks for Large-Scale Image Recognition
eremo2002 2020. 4. 21. 23:54Abstract
- CNN의 depth가 accuracy에 어떤 영향을 미치는지 investigate
- 네트워크의 depth를 늘렸을 때 significant한 성능 향상이 이루어짐
Introduction
- 최근 Computer vision의 다양한 문제에서 CNN이 높은 성능을 보여주고 있다.
- 해당 논문에서는 CNN 아키텍처를 설계하는 데 있어서 depth의 중요성에 초점을 맞춘다.
- 다른 파라미터들은 그대로 두고 3x3 Conv 레이어만 늘리면서 CNN의 depth에 따라 성능이 어떻게 달라지는지 확인한다.
ConvNet Configuration
-
3x3 conv를 사용한다. Why?
-
left, right, up, down, center 방향을 모두 capture할 수 있는 가장 작은 사이즈의 커널이기 때문
-
1x1 conv를 사용하는 버전도 있음 1x1 conv에서 채널 수를 변경하지 않으며, 입력 channel의 linear transformation으로 볼 수 있음
-
padding, stride를 1로 주어, 모든 conv layer에서 spatial resolution이 보존됨
-
spatial size는 2x2 max pooling(stride=2)에서 줄어듦
-
마지막 conv, max-pool 레이어 이후 3개의 f.c레이어 사용 4096, 4096, 1000
-
activation function ReLU사용,
-
Local Response Normalization 사용x
- LRN레이어가 이미지넷 데이터셋에서 성능 향상이 되지 않음
- 메모리 사용량이랑 computation time 증가시키는 단점 있음
Architecture
- layer가 많은 네트워크일지라도 파라미터 수 차이가 크게 나지 않는다.
Discussion
VGG의 네트워크 구조가 기존의 ImageNet 2012, 2014 sota였던 AlexNet, ZF-Net와 다른 점이 무엇인가?
- 11x11, 7x7의 large receptive field를 사용했던 것에 비해 상대적으로 매우 작은 크기의 3x3 receptive filed를 사용하였다.
- 5x5 conv는 3x3 conv 두 번 사용한 것과 같은 receptive filed를 가지며, 7x7 conv는 3x3 conv를 세 번 사용한 것과 같은 receptive filed를 가진다.
- 그럼 그냥 5x5, 7x7 한 번만 쓰면 되지 뭐하러 3x3 여러번 사용하는가?
- 비선형 함수를 더 많이 사용하여 decision function이 더 discriminative해진다
- 1x1 conv를 사용하는 것 역시 receptive filed에 영향을 주지 않고 비선형성을 증가시킬 수 있는 방법이라 할 수 있음
- 파라미터 수를 줄일 수 있다.
- input & output 채널 수가 같은 3x3 conv를 3번 사용했을 때 파라미터 수는 3x(3x3xCxC)가 된다.
- 동일한 조건으로 7x7 conv를 한번 사용했을 때 파라미터 수는 7x7xCxC가 된다.
⇒ Small size의 conv filter를 사용하는 conv layer를 여러 개 쌓는 것이 성능을 향상시킬 수 있다.
Evaluation
-
single scale을 사용한 evaluation으로 train image와 test image의 size가 고정되어 동일한 경우
-
Local Response Normalization을 사용했을 때 오히려 error rate이 더 높았다. 이로 인해, 모델 B부터는 LRN을 적용하지 않았다.
-
네트워크의 depth가 깊어질수록(layer 수 증가) 성능이 향상되었다.
-
C(use 1x1), D(only 3x3)는 같은 depth를 가지지만 D가 성능이 더 높았다.
- additional non-linearity가 성능 향상이 더 도움이 되기 때문
- 1x1보다는 3x3가 spatial context 잘 capture할 수 있기 때문에 더 중요하게 작용함
-
19개의 레이어를 사용했을 때 error rate saturate되었음, 그러나 더 large한 dataset의 경우 depth가 더 깊은 모델을 사용하는 것이 유리할 수 있음
-
기존 모델 B에서 3x3 conv 2개를 5x5 1개로 바꿔봤음, 그러나 오히려 error가 더 높게 나옴. 즉, small filter를 사용하는 것이 더 outperform
-
training image에 scale jittering을 사용했을 때 성능이 더 높았음
- scale jittering이란 이미지의 크기를 256 or 384 같은 고정된 크기로 조절하거나 [256; 512] 같은 특정 범위의 사이즈로 조절한 뒤 CNN의 입력 사이즈(224x224)에 맞게 무작위로 cropping하는 것
-
이번에는 test image에 scale jittering을 사용하여 multi scale image에 대한 evaluation
-
train image와 test image간의 scale이 너무 차이나면 오히려 성능이 떨어질 수 있으므로 크게 차이나지 않는 범위에서 scale을 조정함
-
train image = Q, test image = S이며 Q=S라고 했을 때, Q = {S-32, S, S+32}의 3가지 scale로 test image의 사이즈를 조절함
-
Table 4에서 볼 수 있는 것처럼 multiple scale test image를 사용했을 때 성능이 증가함
-
Table 4에서 모델 D의 마지막 결과를 보면 training & testing 과정에서 scale jittering을 적용한 것이 가장 성능이 좋았음. 왜냐하면 네트워크가 testing에서 들어오는 다양한 scale의 이미지를 트레이닝 과정에서 학습할 수 있기 때문
-
지금까지의 실험에선 단일 모델을 가지고 평가했지만 이번에는 여러 모델의 output을 combine하여 평가함. combine 과정은 단순하게 각 class에 대한 확률값을 평균내어 사용함
-
Table 5에서 second row를 보면 scale jittering이 서로 다른 D 모델 3개를 조합함. 그 결과 단일 모델로 D를 사용했을 때 25.9%, 8.0%의 error를 냈던 결과에 비해 25.3%, 7.8%로 더 높은 성능을 냄
-
7개의 모델을 combine 했을 때 error rate이 더 줄어듦
-
7개의 모델이 내는 예측 값을 단순하게 평균낸 것이 아니라 각 모델마다 가중치를 두고 반영함. 어떤 모델의 신뢰도가 더 높은지 평가하는 기준은 top-5 validation error를 보고 판단함. 모델 C보다는 모델 E가 성능이 좀 더 좋다고 보기 때문에 모델 C와 E의 가중치를 서로 다르게 두는 것.
-
ILSVRC-2014 classification result
- 제안하는 네트워크가 single net 기준으로 SOTA
- 이전 우승자들의 성능을 모두 이김
- winner인 GoogleNet과 비교했을 때도 competitive하며 다른 method보다는 outperform
- VGG Net을 설계할 때 classic한 CNN 아키텍처에서 시작한 것이 아니라 네트워크의 depth를 어디까지 증가시킬 수 있느냐에 관점을 두고 설계함
- VGG 1 net에서 test error 없는 이유: 시간부족으로 인해 best performance single network를 deadline까지 제출하지 못 함
Localization
- classification task가 아닌 localization task에 적용했을 때의 결과
- localization이란? 이미지 내에 1개의 object만 존재하며 bounding box로 object의 위치를 localization해야하고 해당 이미지가 어떤 class인지 prediction하는 문제
Localization ConvNet
-
기존에 class score를 예측했던 last f.c layer가 bounding box location을 예측하도록 바꿔야 함
-
classification task에서 제일 성능이 좋았던 아키텍처 D를 사용함
-
classification CNN과의 가장 큰 차이점은 logistic regression objective(분류 문제를 푸는 모델)를 Euclidean loss로 변경. (Ground-truth와 예측 bounding box 사이의 loss를 구하기 위해)
-
2개의 localization model을 사용하였으며 각각 256x256, 384x384 size로 트레이닝 함. classification model에서 사용된 pre-trained 모델을 사용하기 때문에 별도의 training scale jittering은 사용하지 않음
-
모든 layer를 fine-tuning하는 것과 2개의 first two f.c layer만 fine-tuning하는 두가지 방법을 고려함. 마지막 f.c layer는 랜덤하게 초기화하고 train from scratch
-
SCR(single-class regression), PCR(per-class regression)
-
first two f.c layer를 fine-tuning하는 것보다 모든 레이어를 fine-tuning하는 것이 더 좋음
-
multiple scale image로 학습하고 테스트 하는 것이 더 성능이 높다.
-
localization task에서 VGG를 다른 모델과 비교
-
top-5 test error가 25.3%로 최고 성능을 달성함.
-
다양한 image classification 데이터셋에서 SOTA를 찍었던 모델들과의 성능 비교
- *(asterisk) 달린 모델은 class 2000개짜리 ILSVRC dataset으로 pre-training시킨 모델
- 기존 모델들과 비교했을 때 VOC-2007, VOC-2012, Caltech-256 dataset에서 기존 SOTA를 달성했던 모델보다 더 높은 성능을 보여주었으며 Caltech-101 dataset의 경우에도 competitive한 결과를 보여줌
Conclusion
-
large scale image classification에서 기존의 CNN보다 레이어를 더 깊게 쌓아 성능을 향상시킴(2위)
-
Object localization challenge에서도 SOTA
-
네트워크의 depth는 classification accuracy에 beneficial한 요소이며 visual representation 측면에서도 매우 중요함
'ML & DL > Paper Review' 카테고리의 다른 글
Fully Convolutional Networks for Semantic Segmentation (0) | 2021.01.29 |
---|---|
Densely Connected Convolutional Networks (1) | 2020.04.22 |
Deep Residual Learning for Image Recognition (0) | 2020.04.22 |
Going Deeper with Convolutions (0) | 2020.04.22 |
AlexNet (0) | 2020.04.01 |