기존 컨볼루션 연산은 두가지 분리 가능한 컨볼루션으로 나눌수 있다. 이러한 Separable 연산은 MobileNet이나 Xception 등에서 사용된다.
Spatial Separable Convolution, Depth-wise Separable Convolution
Spatial Separable Convolution(Depthwise) : 하나의 컨볼루션 연산을 공간적으로 나눈 방법이다.
예를 들어 3x3 컨볼루션 연산은 9 곱셈으로 한번의 컨볼루션 연산을 수행하는 대신, 동일한 효과를 얻기 위해 3x1, 1x3 곱셉으로 두번의 컨볼루션을 수행합니다. 곱셈이 적을수록 계산 복잡성이 줄어들고 수행 속도가 더 빠르다.
연산량의 비교
필터의 크기 : K, 입력의 채널 수 : C, 결과 채널 수 : M
기존 컨볼루션 연산 : K2CM
Spatial 컨볼루션 : K2C
Depth-wise Separable Convolution (Spatial + Pointwise)
Depth-wise Separable 컨볼루션은 Spatial 차원 뿐만아니라 깊이 차원 (채널)도 다루고 있다. RGB를 예로 들면 R연산, G연산, B연산 따로 적용하게 되며 각 채널을 해당 이미지의 특정 해석으로 이미지화 할 수 있다. Spatial 연산과 유사하며, 깊이 분리형 컨볼루션은 Spatial 분리형 컨볼루션과 Point 컨볼루션이라는 두개의 컨볼루션을 결합하였다.
필터의 크기 : K, 입력의 채널 수 : C, 결과 채널 수 : M
기존 컨볼루션 연산 : K2CM
두 연산을 더해주면 되므로, Spatial(Depthwise) + Pointwise => K2C + CM = C(K2 + M)
https://towardsdatascience.com/a-basic-introduction-to-separable-convolutions-b99ec3102728
'Image processing > Deep-learning' 카테고리의 다른 글
Albumentations 이미지 Augmentation API 소개 (0) | 2021.01.31 |
---|---|
[Pytorch] torch.backends.cudnn.benchmark do? (0) | 2020.11.10 |
Deep Learning model 학습 Tip 정리 (2) | 2020.07.02 |
[Deep Learning] GAN 학습에서의 문제점 (0) | 2020.02.10 |
[Deep Learning] 딥러닝 디버깅 툴 Tensorwatch (0) | 2020.02.07 |