Convolution 2d, Depthwise, Pointwise

seokj·2023년 3월 8일

(C1,H1,W1)(C_1, H_1, W_1)크기의 입력이 들어오고 (C2,H2,W2)(C_2, H_2, W_2)크기의 출력이 나오는 Convolutional layer에서 커널의 크기가 (kh,kw)(k_h, k_w)라 할 때 Convolution연산의 종류에 따라 파라미터 수, 연산량을 알아보자.

Convolution

일반적인 Convolution의 경우 weight 파라미터의 크기는 (C2,C1,kh,kw)(C_2, C_1, k_h, k_w)이다. (C1,kh,kw)(C_1, k_h, k_w) 크기의 커널이 Convolution연산을 하여 (1,H2,W2)(1, H_2, W_2)의 출력을 내고 이 과정이 C2C_2회 반복되어 concate된다.

파라미터 크기 (C2,C1,kh,kw)(C_2, C_1, k_h, k_w)
연산량 O(C1khkwH2W2C2)O(C_1k_hk_w * H_2W_2 * C_2)

Depthwise Convolution

채널 방향으로 Convolution이 일어나지 않아 연산량을 줄일 수 있다. mobile net에서 쓰였다.

파라미터 크기 (C2,1,kh,kw)(C_2, 1, k_h, k_w)
연산량 O(khkwH2W2C2)O(k_hk_w * H_2W_2 * C_2)

Pointwise Convolution

채널 방향으로만 Convolution을 하는 방식이다. convmixer에서 depthwise convolution과 함께 쓰였다.

파라미터 크기 (C2,C1,1,1)(C_2, C_1, 1, 1)
연산량 O(C1H2W2C2)O(C_1 * H_2W_2 * C_2)

profile
안녕하세요

0개의 댓글