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





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

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

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



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

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




말 그대로 pixel 단위로 보겠다는건데 이걸 굳이 왜 할까요? 바로 다음의 이유들 때문입니다.
Dimension reduction
Convolution layer를 깊게 쌓으면서 channel의 숫자는 줄일 수 있기 때문에 함.
e.g., bottleneck architecture