-
[Deep Learning]Depthwise Separable ConvolutionArtificial Intelligence/Deep learning 2021. 6. 14. 14:53
오늘은 Convolution 방법 중 하나인 Depthwise Separable Convolution 내용을 포스팅해보도록 하겠습니다.
Depthwise Separable Convolution 방법은 Xecption, Mobilenet V1, V2에 사용되고 있는데요 오늘의 포스팅은 CodeEmporium의 동영상을 참고하여 만들었습니다!
먼저 기본적인 Convolution을 알아보도록 하겠습니다.
Convolution
- 는 Height와 Width의 크기이고 M은 Channel 크기입니다. 따라서 Input shape은 (DF,DF,M) 입니다.
- 는 필터에 해당합니다. 필터의 채널은 인풋과 같기 때문에 똑같이 M입니다.
- 인풋이 필터를 거쳐 Convolution을 하게 되면 결과물로 매트릭스가 한 개 나오게 됩니다.
- 필터의 갯수가 에 해당하는데 필터의 종류(N개) 만큼 Convolution 하기 때문에 총 N개의 매트릭스가 결과물로 나오게 됩니다.
- 모두 더하면 출력에 (DG,DG,N) shape의 volume이 출력물로 나오게 됩니다.
- 곱연산 기준으로 Standard Convolution 연산량을 알아보겠습니다.
- 먼저 한 개의 필터가 인풋의 한 위치에서 처리할 때 사용되는 곱연산은 ×M이 됩니다.
- 이 때, 이동할 수 있는 위치의 경우의 수가 DG의 경우가 있기 때문에(는 아웃풋의 height, wdith 크기) 필터 하나가 인풋 하나를 처리하는 데 필요한 연산 수는 됩니다. M이
- 마지막으로 N개의 필터가 있다면 아웃풋은 크기를 가지고 연산량도 됩니다. 가
- 연산량을 줄이는 것이 Depthwise Separable Convolution목표입니다.
Depthwise Separable Convolution
Depthwise Separable Convolution은 2가지의 프로세스로 진행됩니다.
Depthwise Convolution과 Pointwise Convolution 입니다.
Depthwise Convolution
- Standard Convolution 에서는 한 개의 필터가 M 채널 전체에 Convolution을 하였습니다.
- Depthwise Convolution에서는 한 개의 필터가 한 개의 채널에만 연산을 합니다. 인풋의 첫번째 채널에 해당하는 영역을 한다면 이 1채널 인풋과 유일하게 연산되는 필터 이라고 존재합니다. 이
- M개의 필터가 존재하게 됩니다. 는 와 대응하기 때문에 이 연산에서는 총
- 연산을 마치면 최종적으로 volume이 출력됩니다. 의
Pointwise Convolution
- Pointwise Convolution 핵심은 1 x 1 Convolution을 적용하는 것이 입니다. Convolution 을 합니다. 에 필터를
- 됩니다. 이 연산을 이 개의 필터를 이용하여 적용하면 총 N개의 매트릭스( 가 N개)가 출력 됩니다.
- 이 출력물들을 쌓으면 하면 결과적으로 출력물을 만들 수 있습니다. 의
- 입력과 출력 기준으로 보면 Standard Convolution과 Depthwise Separable Convolution 모두 입력으로 넣어서 을 출력을 얻는다는 점은 같습니다. 의
- 하지만 내부 Convolution 연산 과정에서 Depthwise Separable 기법으로 연산량과 파라미터 수를 줄였다는 것이 핵심입니다.
Depthwise Convolution의 연산량
- 한 위치에서 필터가 연산되는 곱연산은 이고 한 채널 전체에서 필터가 연산되는 곱연산은 입니다.
- 마지막으로 개의 채널에 모두 적용되어야 하므로 총 곱연산은 가 됩니다.
Pointwise Convolution의 연산량
- 한 위치에서 1x1 필터가 연산되는 곱 연산은 M 입니다. 그리고 한 채널 전체에서 연산되는 곱연산은 이 됩니다.
- 마지막으로 개의 필터가 모두 적용되어야 하므로 총 곱연산은 이 됩니다.
Comparison Standard Vs Depthwise
- Standard Convolution의 연산량은 이고 Depthwise Separable Convolution의 연산량은 됩니다.
- 위 슬라이드와 같이 비율을 확인해 보면 이 됩니다.
- 은 아웃풋 채널의 수이고 K는 필터의 사이즈이므로 일반적인 예를 들어 하면 N=1024,K=3이라고 됩니다. 가
- 만큼 연산량이 줄어든것을 확인할 수 있습니다.
'Artificial Intelligence > Deep learning' 카테고리의 다른 글
[Computer Vision]Object Detection (0) 2021.07.10 [RNN]Recurrent Neural Network(RNN) (0) 2021.06.21 [Optimizer] Optimizer-경사하강법(Gradient Descent) (0) 2021.05.19 [CNN]Convolutional Neural Networks(CNN) (1) 2021.05.10 [AI]_1. 딥러닝(Deep Learning) (0) 2021.04.07