4. CNN-Convolution

ysw2946·2022년 5월 11일
0

Convolution


  • Padding과, Stride 를 고려하지 않은 기본적인 Convolution

  • 적용하는 Filter의 모양에 따라 convolution output이 Blur, 강조하거나(emboss), 외곽선(outline)만 나타낼 수 있다

RGB Image Convolution


  • 이미지가 들어간 후 여러개의 channel을 갖는 convolution을 feature map 이라 한다.
  • feature map의 channel은 filter의 숫자로 결정된다.
  • 따라서, input channel과 feature map의 channel을 알면 여기에 적용되는 convolution filter의 크기 역시 계산할 수 있다.

  • 32 x 32 x 3 이미지에 5 x 5 Convolution을 한다고 하면, filter가 하나이므로 채널이 1개인 28 x 28 x 1이 나타난다. 하지만, fileter가 4개라면 4개의 채널인 28 x 28 x 4가 나타난다.

Stack of Convolutions


  • 하나의 Convolution이 아닌 여러 번의 Convolution을 할 경우가 있다.
  • 한번 Convolution을 거치고 나면 nonlinear function이 들어가게 되는데, feature map 이 생성된 후 각 element 별로 activation function이 적용된다.
  • 여기서 조심하고 집중해야 할 것은 이 연산에 필요한 parameter의 숫자를 생각을 해야한다.
  • 32 x 32 x 3 input에서 28 x 28 x 4 feature map을 얻기 위해 필요한 parameter의 수는 5 x 5 x 3 x 4가 된다.
💡 **Parameter의 수** **filter size** X Input channel X feature map channel(output channel)

Convolution Neural Networks


  • 일반적인 Convolution Neural Network에서는 Convolution layer와 Pooling layer가 있고, 이것들을 마지막으로 다 합치면 Fully connected layer가 된다.

  • Convolution과 Pooling layer의 역할은 feature extraction으로 이미지에서 유용한 정보들을 추출하며, Fully connected layer는 decision making으로 실제로 분류를 하거나 회귀를 해서 내가 원하는 출력값을 나타낸다.

  • 일반적으로 머신러닝에서 내가 학습하고자 하는 어떤 모델의 parameter의 숫자가 늘어나면 늘어날수록 학습이 어렵고 일반화 성능이 떨어져 실제로 적용하기 어려워 진다. 그래서, 최근에는 뒷단의 Fully connected layer가 점점 없어지거나 최소화 시키는 추세이다.

  • 따라서, CNN의 발전 방향이 같은 모델을 만들지만, 최대한 모델을 deep하게 만들면서 parameter의 수를 최소화시키는 방향으로 나아가고 있다.

Stride


  • Stride : Convolution filter(kernel)를 어떤 간격으로 계산할 것인지 설정하는 것

Padding


  • Padding : input 과 output의 모양을 맞춰주기 위해 가장자리에 덧대어 주는 것

Convolution Arithmetic


💡 **filter size** X Input channel X feature map channel(output channel)

  • Alexnet에서는 그 당시 GPU가 크지 않았기 때문에 2 개의 layer로 나누어 학습시켰다. 따라서, 처음 convolution의 parameter 크기는 11 x 11 x 3 x 48 * 2 이다.
  • 두번째 conv layer : 5 x 5 x 48 x 128*2 = 307K
  • 세번째 conv layer : 3 x 3 x 128 2 x 192 2 = 884 K
  • 네번째 conv layer : 3 x 3 x 192 x 192*2 = 663 K
  • 다섯번째 conv layer : 3 x 3 x 192 x 128*2 = 442 K
  • 여섯번째 fc layer : 13 x 13 x 1282 x 20482 = 177 M
  • 일곱번째 fc layer : 20482 x 20482 = 16M
  • 마지막 layer : 2048*2 x 1000= 4M

1 x 1 Convolution


  • 1 x 1이란 의미는 한 픽셀씩 보면서 channel방향으로 줄인다는 의미이다.
  • 1 x 1 Convolution은 네트워크를 깊게 쌓음과 동시에 parameter의 숫자를 줄이는데 유용하다.

0개의 댓글