꺼내먹는지식 준

Convolution network model 소개 (ILSVRC 모델) 본문

AI/CV

Convolution network model 소개 (ILSVRC 모델)

알 수 없는 사용자 2022. 2. 8. 13:04

~ 2018 년도 까지의 ILSVRC 에서 1등을 한 모델들의 간단 소개 

 

논문이 소개될 수록, CNN 을 간단 소개 하는 다음의 글을 읽으셨다면 점점 모델의 depth가 깊어지고, 파라미터의 개수는 점점 줄어들고, 성능은 점점 좋아진다는 것을 예상할 수 있다. 

 

해당 글의 유의사항 

Convolution layers (here after, CLs)

Dense Layers (here after, DLs)

 

ILSVRC

ImageNEt Large-Scale Visual Recognition Challenge 

 

Classification, Detection, Localization, Segmentation 

1000 different categoreis

Over 1 millon images

Training set: about 450000

 

2012 AlexNet 

당시 GPU의 성능이 부족했기 때문에 GPU를 최대한 활용하고, 가장 많은 파라미터를 집어넣고 싶어서 GPU를 나눠썼다. 

파라미터의 관점에서 11 by 11 필터는 좋지 않다. 

1개의 convolution fileter 가 볼 수 있는 영역은 커지지만, 파라미터의 개수는 많이 필요해진다. 

5 CLs + 3 DLs = 8개의 레이어

 

당시 성공한 이유 

ReLU activation function 사용 (piecewise linear 하지만, 전체적으로는 non linear)

- linear 모델의 좋은 성질들을 갖는다. (gradient 0 보다 커도, 그대로 가지고 갖는다, 0보다 작으면 0으로 바꿔주고)

- Gradient descent로 학습하기에 용이하다.

- 결과론적으로 Generalization이 좋다. 

- Vanishing gradient 문제를 해결했다. 

 

GPU 사용 

Local respone normalization, Overlapping pooling (몰라도 된다.)

데이터 augmentation 

Dropout  

 

2014 VGGNet

VGCNet의 골자: 3 $\times$ 3 convolution filters 만 사용하여 깊이를 증가시켰다. (stride 1)

FCL를 위해1 $\times$ 1 convoultion 을 사용했다. (다만, 파라미터의 개수 축소를 위해 사용한 것은 아니었다.)

Dropout (p = 0.5)

VGG 16, VGG 19

 

3 $\times$ 3 convolution filters를 사용한 이유

convolution filter 의 크기가 커지는 것의 이점은 하나의 filter 가 한번 찍어볼 때 고려되는 input의 크기(Receptive Field)가 커진다는 것이다. 하나의 convolution featuremap 값을 얻기 위해서 고려할 수 있는 입력의 spatial dimension. 

 

3 $\times$ 3 convolution을 두번 하면 Receptive fields는 5 $\times$ 5 가 된다. 참고자료

 

그러나 파라미터의 수는 차이가 크다. 

3 $\times$ 3 $\times$ 128 $\times$ 128 + 3 $\times$ 3 $\times$ 128 $\times$ 128= 294,912

 

5 $\times$ 5 $\times$ 128 $\times$ 128 = 409,600

 

같은 receptive field 를 얻는 관점에서 보면, 3 by 3 이 더 이득이다. 

 

2015 GoogLeNet

GoogLeNet의 골자: 1 by 1 convolution 은 dimension (channel) 의 reduction 효과가 있다. 

spatial dimension이 아니라 tensor의 depth 에 해당하는 channel의 개수를 줄인다. 

network를 똑같이 깊게 써도, 중간 중간 사용함으로써 parameter 의 개수를 줄일 수 있다. 

GoogLeNet은 NIN 구조와 inception block을 결합한 구조이다. 

NIN 구조: 네트워크 안에 비슷한(혹은 동일한) 네트워크가 반복되는 구조 

Inception block: 하나의 입력이 들어왔을 때 퍼졌다가 다시 합쳐지는 구조

하나의 입력에 대해 여러 filter 를 거치고, 이를 통해 여러개의 reponse를 concat 하는 효과도 있지만,

자세히 보면, 1 $\times$ 1 을 통해 parameter의 개수를 줄이는 것이 큰 골자이다. (channel의 수를 줄여서)

 

3 $\times$ 3 $\times$ 128 $\times$ 128 = 147,456

1 $\times$ 1 $\times$  128 $\times$ 32  + 3 $\times$ 3 $\times$ 128 = 40,960

파라미터의 수가 1/3 가깝게 줄어든 것을 확인 할 수 있다. 

 

이와 같은 과정이 파라미터의 개수에 미친 영향이다. 

 

2015 ResNet

Training error 가 줄어듬에도 test error 가 줄어들지 않는 것을 generalization이 좋지 않다고 한다. 

일반적으로 파라미터 숫자가 많으면 다음의 두가지 문제를 가진다. 

1) Overfitting (Training error $\downarrow$, Test error $\uparrow$) 

2) Training error 가 더 작은데도 saturated 된 test error 가 더 큰 것 

 

이 경우는 2번에 해당한다. 

56 layer 가 학습을 해도 20 layer 보다 학습이 안되는, 즉 학습이 불가능한 상황이다. 

 

여기서 ResNet이 등장하였다. 

CLs 가 학습하고자 하는 것은 (f(x)와 x)의 차이이다. 

ResNet이 학습 자체를 더 잘 시키도록, deep 하게 layer를 쌓을 수 있도록 한 연구이다. 

 

Residual 을 더해주기 위하여 차원을 맞춰주기 위해 1 $\times$ 1 CL 을 사용하는 것을 Projected Short Cut 이라고 한다.  그러나 잘 사용하지는 않는다. 

 

 Conv 뒤에 Batch Norm, 그러나 Batch Norm 의 순서는 interchangeble 하다. ( ReLU뒤에 쓰라는 이야기도 있다. )

 Bottleneck architecture 

앞단 과 뒷 단에 1 by 1 추가로 파라미터의 수를 줄였다. 

성능은 늘어나고, 파라미터의 개수는 줄어들었다. 

 


그외 추가 사항 

DenseNet

DenseNet은 ResNet의 add 대신에 concatenate한다. 

다만 기하급수적으로 channel 의 크기가 기하급수적으로 커진다.

이에 따라 파라미터의 수도 기하급수적으로 커진다. 

따라서 채널 수를 줄여줘야 하는데, 이 때도 batch norm 과 1 by 1 CL 로 다시 줄이고를 반복하는 것이  Dense Net이다. 

간단한 분류에 있어 Dense Net이 SOTA 를 얻을 때가 많다. 

 

최종 정리 

VGG: 반복적인 3 $\times$ 3 blocks

GoogLeNet: 1 $\times$ 1 convolution

ResNet: skip connection 

DenseNet: concatenation 

'AI > CV' 카테고리의 다른 글

CNN Visualization  (0) 2022.03.11
Semantic segmentation  (0) 2022.03.10
semantic segmentation, Detection  (0) 2022.02.08
CNN 간단 정리 2  (0) 2022.02.08
CNN 간단 정리  (0) 2022.01.21
Comments