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의 성능이 부족해서 병렬처리 & 적은 변수를 위해 사용했었다.
'프로그래밍 > 머신러닝' 카테고리의 다른 글
[정규화] Batch Normalization (0) | 2020.09.08 |
---|---|
[컨볼루션] ShuffleNet (0) | 2020.09.06 |
[컨볼루션] Mobilenet (0) | 2020.09.06 |
[컴퓨터 비전] SRCNN, Image Super-Resolution Using Deep Convolutional Networks (0) | 2020.09.05 |
[컨볼루션] Depthwise separable convolution (0) | 2020.09.05 |