대부분의 CNN의 합성곱 관련 블로그에는 1채널 이미지(흑백), 3채널 이미지(컬러)에 대해서 convolution 연산을 설명한다.
하지만, CNN 모델 중간 Layer에서는 Feature map을 여러층으로 쌓아서 convolution을 하기 때문에 입력 데이터(1 채널, 3 채널)와 중간 단계 데이터는 연산에 차이가 있다.
따라서, 다채널의 합성곱 연산에 대해서 적어보게 되었다.
3차원 텐서의 합성곱 연산
일단 다수의 채널을 가진 입력 데이터를 가지고 합성곱(conv) 연산을 한다고 하면 필터의 수도 입력 채널의 수 만큼 있어야한다.(입력 채널 수와 필터의 채널의 수는 같다) 그래서 합성곱 연산을 채널마다 수행하고 그 결과를 모두 더하여 Feature map을 얻게된다.
그림 1. 3 channel image convolution process
Fig.1 은 3 채널을 가진 입력 데이터와 3개의 채널을 가진 채널의 합성곱을 나타낸다. 여기서 주의할 점은 위 연산에서 사용되는 필터는 3개의 필터이 아니라 3개의 채널을 가지는 1개의 필터이라는 점이다.
N차원 텐서의 합성곱 연산
그림 2.여러개의 필터를 사용한 convolution 연산
그림 2에서 1번은 위에서 3차원 데이터에 대한 1개 필터(3차원) convolution 연산으로 출력 데이터는 1채널 특징맵이다. 2번은 3차원 데이터에 대한 Co개 필터(3차원) convolution 연산으로 출력 데이터는 Co 채널 특징맵이 된다. 이를 이해했다면 커널의 크기와 입력 데이터의 채널 수(Ci)와 특성 맵(출력 데이터)의 채널 수(Co)가 주어졌을 때, 가중치 매개변수의 총 개수를 구할 수 있다
가중치는 커널의 원소들이므로 하나의 커널의 하나의 채널은 Ki×Ko 개의 매개변수를 가지게 된다.
그런데 합성곱 연산을 하려면 커널은 입력 데이터의 채널 수와 동일한 채널 수를 가져야 한다.
따라서 하나의 커널이 가지는 매개변수의 수는 Ki× Ko× Ci 이고 커널이 총 Co개가 있어야 된다.