네이버 부스트캠프 학습 정리/3주차

[DL basic] Convolutional Neural Networks

AI쟁이J 2023. 3. 23. 15:42

Convolution

합성곱.

두 함수 \((f, g\)가 있을 때 한 함수 \((f\)의 모양이 나머지 함수 \(g\)에 의해 모양이 수정된 제 3의 함수 \(f * g\)를 생성해주는 연산자로 

Continuous convolution

\(f * g)(t)=\int f(\tau) g(t-\tau) d \tau=\int f(t-\tau) g(t) d \tau\)


Discrete convolution
\((f * g)(t)=\sum_{i=-\infty}^{\infty} f(i) g(t-i)=\sum_{i=-\infty}^{\infty} f(t-i) g(i)\)


2D image convolution
\((I * K)(i, j)=\sum_m \sum_n I(m, n) K(i-m, j-n)=\sum_m \sum_n I(i-m, i-n) K(m, n)\)

로 이루어진다.

 

Convolutional Layer (합성곱 층)

기존의 이미지와 필터 3x3의 [[1, 0, 1], [0, 1, 0], [1, 0, 1]] 을 사용한 합성곱 연산은 다음의 gif와 같이 이루어진다.

 

stride

걸음 이라는 뜻으로 합성곱을 진행할 때 필터의 이동 칸 수를 말함.

stride = 1인 경우 옆으로 1칸씩 이동하며 필터를 적용하지만, 1보다 큰 경우 이보다 많이 이동하며 필터를 적용하고,

결과적으로는 Convolved feature의 크기가 stride가 커질수록 작아진다.

Padding

기존의 이미지 주변에 행과 열을 기준으로 추가로 일정 값으로 채워진 행/열을 더해 둘러싸는 것. 기존 이미지의 크기를 키우기 때문에 stride와 마찬가지로 convolved feature의 크기에 영향을 준다.

결정적으로 Convolved Feature의 크기는

의 식을 따른다.

 

Number of parameters

CNN 연산을 수행하는 경우 입력 이미지와 필터, 그리고 그를 통한 convolved feature의 사이즈로 인한 parameter의 값은 계속해서 변한다. 

AlexNet의 parameter 계산 예제

AlexNet의 구조.

Conv1 + Relu : (11 * 11 * 3) * 48 * 2  = 35K  # 11x11x3채널의 필터, 48채널의 피처맵을 2개 생성

 

Conv2 + Relu : (5 * 5 * 48) * 128 * 2 = 307K # 5x5x48채널의 필터, 128채널의 피처맵을 2개 생성

 

Conv3 + Relu : (3 * 3 * 128) * 2 * 192 * 2 = 884K # 3x3x128채널의 필터 2개, 192채널의 피처맵을 2개 생성

 

Conv4 + Relu : (3 * 3* 192) * 192 * 2 = 663K # 3x3x192채널의 필터, 192채널의 피처맵을 2개 생성

 

Conv5 + Relu : (3 * 3 * 192) * 128 * 2 = 442K # 3x3x192채널의 필터, 128채널의 피처맵을 2개 생성

 

FC6 + Relu : (13 * 13 * 128) * 2 * 2048 * 2 = 177M # 13x13x128채널의 필터 2개로 2048채널의 flatten 행렬 2개 생성

 

FC7 + Relu : (2048 * 2) * 2048 * 2 = 16M

 

FC8 + Relu : (2048 * 2) * 1000 = 4M

 

너무 많아지는 Parameters 수 조절을 위해 1X1 Convolution 연산을 통해 채널을 줄이는 연산을 수행하기도 한다.

 

Modern CNN

지금까지의 CNN 기술 발전에 큰 영향을 미친 현대의 논문들.

간략한 키워드만 기술 후, 추후 블로그 논문리뷰에서 모두 다루는 것이 목표

AlexNet

Keyword

- 이미지 분류 대회에서의 딥러닝 모델을 통한 최초의 1등으로 paradigm shift를 가져옴

- RELU 사용

- GPI implementation (2 GPU)

- Local response normalization, Overlapping pooling

- Data augmentation

- Dropout

 

VGGNet

Keyword

- 3x3 convolution filters (with stride 1)을 통한 깊이 심화

- 1x1 convolution for fully connected layers

- Dropout (p = 0.5)

 

GoogLeNet

Keyword

Won the ILSVRC at 2014

- Inception blocks

- benefit of 1x1 convolution

- less parameter than AlexNet, VGGNet

 

ResNet

keyword

- Add an identity map (skip connection)

- Add identity map after nonlinear activations

- Batch normalization after convolutions

- bottlenect architecture

 

DenseNet

Keyword

- concatenation instead of addition

- Dense Block, Transition Block