Group convolution

group convolution은 입력의 채널들을 여러개의 그룹으로 나누어 convolution을 수행하는 방식이다.

왜 이런 방식을 쓰는 것일까?

 

그룹이 독립적으로 나누어 계산되기 때문에, 병렬처리에 유리하고 변수가 적게 쓰인다.

 

변수개수는 다음과 같다(K = 필터크기, N = 출력채널크기, M = 입력채널크기, g = 그룹 개수)

g개의 그룹이 입력채널M/g에서 출력채널N/g을 생성한다.

 

$$g*K^2 \frac{N}{g} * \frac{M}{g} = \frac{K^2NM}{g}$$

 

 

AlexNet에서도 사용이 되었는데, 그땐 GPU의 성능이 부족해서 병렬처리 & 적은 변수를 위해 사용했었다.

2jun0