[AI] CNN - Convolution은 무엇인가?

._.·2024년 6월 19일

AI

목록 보기
1/4
post-thumbnail

Convolution

본래 신호 처리 분야에서의 특수 연산으로, 두 개의 함수가 있을 때 두 함수 사이에서 수행하는 연산입니다.

Continuous convolution

Discrete convolution

2D image convolution

RGB Image Convolution

Filter를 통해 이미지 convolution 연산을 수행하게 되면 pixel by pixel로 곱해서 더한 하나의 값이 나오기 때문에 x x 3이 아닌 x x 1의 feature matrix가 나오게 됩니다.

그럼 하나의 이미지에 4개의 필터를 통해 convolution 연산을 수행한다면 어떻게 될까요? 위의 그림과 같이 4개의 feature matrix (feature map) 이 나오게 됩니다.

Stack of Convolutions

따라서, 내가 원하는 feature map의 개수를 맞추가 위해서는 filter의 개수와 일치시켜야 합니다.

  • 32*32*3 → CONV(5*5*3 4개) → 28*28*4

Convolutional Neural Networks

  • CNN consists of convolution layer, pooling layer, and fully connected layer.
    • Convolution and pooling layers: feature extraction
      • 이 두 layer들은 학습에 관여한다기 보다는 모델 학습을 위한 이미지의 특성을 추출하는 layer입니다.
    • Fully connected layer: decision making (e.g., classification) → 최근에는 잘 쓰지 않는 추세입니다.

Convolution Arithmetic (of GoogLeNet)

Stride

Stride는 넓게 걷는다 라는 뜻입니다. 앞에서 본 3*3, 5*5 filter (kernel) 들은 stride가 1입니다. kernel을 매 1픽셀마다 찍으면 stride = 1, kernel을 매 n 픽셀마다 찍으면 stride = n 인 것이죠. 즉, 얼마나 dense 하게 찍을 것인지, sparse하게 찍을 것인지 결정하는 파라미터라고 보면 됩니다.

Padding

32*32 input이 있을 때 여기에 convolution 계산을 수행하면 그대로 32*32가 안나왔죠? 이는 이미지의 boundary에 대한 처리를 하지 않았기 때문에 그렇습니다. Padding이 이러한 boundary에 임의의 값을 채워주는 역할을 하게 됩니다. 일반적으로 zero padding의 경우 0으로 채워주게 되고 이 외에도 다양한 Padding 방법들이 존재합니다.

Stride? Padding?

Number of Parameters

  • 총 parameter 개수 계산
    1. 3*3 kernel = 9
    2. channel size = 128
    3. output size = 64
    • 따라서 3 * 3 * 128 * 64 = 73728개 필요.

  • 빨간색은 convolution, pooling layer
  • 파란색은 dense layer (fully connected layer)
  • 보이는 것과 같이, fully connected 구조로 인해 parameter의 수가 앞단 convolutional layer에 비해 매우 많은 것을 알 수 있습니다.
  • 따라서 뒷단을 최대한 줄이고(dropout 등 다양한 기법 활용) 앞단을 늘리는 것(이미지의 특성을 잘 추출하기 위해)이 요즘 트렌드입니다.

1 * 1 Convolution

말 그대로 pixel 단위로 보겠다는건데 이걸 굳이 왜 할까요? 바로 다음의 이유들 때문입니다.

Dimension reduction
Convolution layer를 깊게 쌓으면서 channel의 숫자는 줄일 수 있기 때문에 함.
e.g., bottleneck architecture

profile
AI와 사람 사이 그 어딘가

0개의 댓글