Depth-wise Separable Convolution은 지금까지 배운 일반적인 Convolution과 같은 결과를 도출해내지만 이보다 훨씬 적은 연산량을 요구하는 계산법입니다.
먼저 Normal Convolution의 Computation Cost를 계산해보겠습니다. 6x6x3의 이미지에 3x3x3 필터 5개로 Convolution을 진행한다고 해보겠습니다.
Computational cost = 필터 하나당 필요한 연산수 결과(feature map)의 크기 필터 개수
= 3x3x3 4x4 5 = 2160
Depthwise Convolution은 두 단계로 이루어집니다.
1. Depthwise Convolution
2. Pointwise Convolution
Depthwise Convolution에서는 채널 1개 짜리 Feature map을 도출한 Normal Convolution과 달리 입력 채널의 수와 동일한 깊이(채널수)의 Feature map을 결과로 반환합니다.
필터의 각 채널이 독립적인 계산(곱셈후 Summation)을 수행한 후 독립적인 Feature map 을 출력하기 때문입니다.
이러한 Depthwise Convolution의 연산량은 다음과 같습니다.
필터의 각 채널 당 연산횟수 (3x3)
x 결과(feature map)의 크기 (4x4)
x 입력채널의 수 (3)
= 432
Pointwise Convolution은 Depthwise Convolution에서 도출된 매트릭스에 1x1 Convolution을 수행하는 것을 말합니다. 이때 1x1 필터의 수는 Normal Convolution을 할 때의 필터의 수와 같습니다. 이러한 Pointwise Convolution의 연산량은 다음과 같습니다.
필터당 연산횟수(1x1x3)
x 결과(feature map)의 크기(4x4)
x 필터의 수(5)
= 240
Depthwise Convolution과 Pointwise Convolution의 연산량을 더하면 672로, 최초 Normal Convolution의 연산량(2160)의 0.31배 수준인 것을 알 수 있습니다. 여러 연구를 통해 Normal Convolution에 비한 Depthwise Separable Convolution의 연산량은 1/입력채널의 수 + 1/(필터의크기)^2 수준인 것으로 알려져 있습니다.