꺼내먹는지식 준

CNN 간단 정리 2 본문

AI/CV

CNN 간단 정리 2

알 수 없는 사용자 2022. 2. 8. 11:25

CNN 의 간단 정리의 보충자료이다. CNN을 처음 공부하시는 분들은 먼저 1을 보고오자. 

 

Filter 연산

 

filter 의 크기가 같아야 연산이 가능하다.

대부분의 기본개념 글에서 filter의 곱 이후 output 의 channel 이 한개가 되는 것에 대한 직관적인 설명이 없는 경우가 많다. 

사진이 직관적인 설명을 대체한다. 

즉, 다음과 같이 output의 체널의 개수는 filter의 개수가 결정 짓는다. 

 

물론 다음과 같이 여러개의 convolution을 쌓을 수도 있고, 모든 layer의 linear 연산 사이에는 non-linear activation function이 포함되어있다. 

한번 파라미터의 개수도 계산해보자. 

$32 \times 32 \times 3$ 이미지를 $28 \times 28 \times 4$ 이미지로 변환하기 위해 필요한 파라미터의 개수는 

$\rightarrow$ $5 \times 5 \times 3 \times 4$ 개수이다. 

 

Layer

일반적 CNN 

1)Convolution 

2)Pooling 

: feature extraction (원하는 특징을 추출)

3)Fully connected layer

: Decision Making (분류, 회귀등 )

 

최근에는 뒷단의 Fully connected layer 을 최소화하고 있다. 

학습시키고자 하는 모델의 파라미터의 개수를 최소화해야 학습이 쉽고 generalization performance 가 높다고 한다. 

$\rightarrow$ 최대한 layer를 깊게 하면서도 파라미터의 개수를 줄이기 위해 노력하고 있다. 

$\rightarrow$ 즉, 항상 layer 별 파라미터의 개수와, 전체 모델의 파라미터 개수를 파악하는 것이 중요하다. 

 

GoogLeNet의 파라미터 개수 

 

Stride 

예시로 설명해보자.

Stride가 1인 경우 Kernel (convolution filter)를 매 pixel마다 필터를 적용 하는 것이다. 

 

Stride가 2인 경우 1 pixel씩 건너뛰며 필터를 적용 하는 것이다. 

 

Padding 

예시를 들어보자.

32 $\times$ 32 의 convolution input이 있을 때 여기에 convolutoin operation을 수행하면, output이 32 $\times$ 32 로 나오지 못한다.

이는 3 $\times$ 3 filter를 적용하면 이미지의 가장자리를 찍을 수 없다. (filter 가 튀어나오기 때문에) 이로 인해 가장자리도 찍기 위하여 가장 자리를 채워준다. 주로 0으로 채워준다. 

 

Stride, Padding 의 동작 장면 

3 $\times $3 의 filter 를 적용할 때 stide 가 1이고, padding이 1이면, 입력과 출력의 spatial dimension이 같다. 

(4 $\times$ 4 면 padding 2, 5 $\times$ 5 면 padding이 3일 때) 

 

Convolution 연산 

128 $\times$  3 $\times$ 3 $\times$ 64 = 73,728개 

모델의 모양만 봐도 파라미터 개수의 단위가 대충 감이 와야한다. 

 

AlexNet의 파라미터 개수는?

Convolution Layer

11 $\times$ 11 $\times$  3 $\times$  48 * 2  $\sim$ 35$k$

 

5 $\times$  5 $\times$ 48 $\times$  128 * 2 = $\sim$ 307$k$

 

3 $\times$  3 $\times$ 128 *2 $\times$  192 * 2 = $\sim$ 884$k$

 

3 $\times$  3 $\times$ 192 $\times$  192 * 2 = $\sim$ 663$k$

 

3 $\times$  3 $\times$ 192 $\times$  128 * 2 = $\sim$ 442$k$

 

Dense layer (FCL)

13 $\times$ 13 $\times$ 128 * 2 $\times$ 2048 * 2 $\sim$ 177$M$

 

2048 * 2  $\times$ 2048 * 2 $\sim$ 16$M$

 

 2048 * 2 $\times$ 1000 $\sim$ 4$M$

 

Dense layer의 FCL 가 아주 많은 파라미터의 개수를 갖는다. 

Convolution layer 는 일종의 shared parameter(같은 filter)를 갖는다. 

$\rightarrow$ 네트워크의 발전 성향이 FCL 를 최대한 줄이고 Convolution layer를 최대한 늘린다. 

 

1 by 1 

 

이에 따라 1 by 1  covolution을 사용하는 경우가 발생한다. 

1 by 1 은 결국 한 픽셀만 보는, 즉 channel의 개수만 줄이는 기능이다. 

즉, 차원(채널)을 축소하는 역할을 한다. 

$\rightarrow$ depth를 더 깊게 쌓으면서 오히려 parameter 의 개수를 줄일 수 있다. (ex. bottleneck architecture)

 

 

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

CNN Visualization  (0) 2022.03.11
Semantic segmentation  (0) 2022.03.10
semantic segmentation, Detection  (0) 2022.02.08
Convolution network model 소개 (ILSVRC 모델)  (0) 2022.02.08
CNN 간단 정리  (0) 2022.01.21
Comments