꺼내먹는지식 준
Convolution network model 소개 (ILSVRC 모델) 본문
~ 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 |