본문 바로가기
Deep Learning/papers

[딥러닝 모델 경량화] 다양한 종류의 Convolution

by 룰루셩 2020. 8. 1.

[딥러닝 모델 경량화] 다양한 종류의 Convolution 

 

요즘 효율적인 합성곱을 이용하여 모델을 경량화시키는 부분을 공부하고 있습니다. 

Xception 논문을 읽는데 이런 모르는 개념들이 있어서 찾아보게 되었습니다. 

Xception, MobileNet, ShuffleNet 등 다양한 모델들에 사용되는 다양한 convolution들을 정리해보겠습니다.   

(김동이 님의 발표환'하나'의 Deep learning! 블로그를 통해 주로 공부하였습니다.)

 

살펴볼 convolution들은 다음과 같습니다.

 

º Normal Convolution

º Grouped Convolution

º Point-wise Convolution

º Depth-wise Convolution

º Depthwise separable Convolution

 

먼저 몇가지 기호를 정의하도록 하겠습니다.

 

º W: input의 width

º H: input의 height

º C: input의 channel

º K: kernel(filter)의 크기 (즉, filter는 (K, K)가 된다.)

º M: output의 channel (filter 개수)

 

bias는 없다고 가정하겠습니다.


 

1. Normal Convolution

그림1 Normal convolution [6]

일반적으로 사용되는 convolution입니다.

 

다음과 같이 예를 들어서 설명하도록 하겠습니다.

Input data의 크기가 (4,4,3)에 2x2 Filter 두 개인 convolution이라고 합시다. 

 

Input: (4,4,3)

Filter: (2,2), 2개

 

Feature Map이 연산되는 과정은 다음 그림과 같이 설명할 수 있습니다.

 

그림2 Standard Convolution에서 feature map이 추출되는 과정 [2]

 

파라미터의 수

먼저 위와 같이 한 필터에 대해 input의 각 channel을 필터와 합성곱 해주기 때문에 필터 크기와 input의 channel 개수를 곱해줍니다. $CK^2$ 가 됩니다. output을 M개의 channel로 만들어주려면 이러한  filter의 개수가 총 M개가 있어야 합니다.

따라서 input channel과 필터의 크기와 필터의 개수를 곱해준 $CK^2M$이 파라미터의 수입니다.

 

연산량

하나의 필터당 필요한 연산의 수를 알아내면 연산량이 구해집니다. 

연산량은 $CK^2MHW$가 됩니다. 

따라서 input의 크기뿐만 아니라 많은 요소들 (입력 채널의 수, 필터의 수, 커널의 크기)에 의해 연산량과 파라미터 수가 증가한다는 것을 알 수 있습니다. 

 

 

2. Grouped Convolution

그림3 grouped convolution [1]

 

그림4 Grouped Convolution [1]

input channel을 여러 개의 그룹으로 나누어 각 그룹에 대해 독립적인 convolution을 수행하는 방식입니다. 

그림4와 같이 각 그룹의 입력 채널들 사이에 독립적인 필터를 학습합니다. 

 

grouped convolution의 장점은 다음과 같습니다.

   

   1. 병렬 처리에 유리합니다.

   2. 더 낮은 파라미터 수와 연산량을 가집니다.

   3. 각 그룹에 높은 Correlation을 가지는 채널들이 학습될 수 있습니다.

 

파라미터의 수

각 input channel을 g개의 그룹으로 나누기 때문에 각 그룹당 channel의 수는 C/g가 됩니다. 그리고 filter도 그룹의 개수만큼 나눠서 각 그룹의 입력 채널들 사이에 나눠진 필터를 각각 독립적으로 학습시킵니다. 그래서 필터의 개수는 M/g개가 됩니다. 따라서 input channel과 필터의 크기와 필터의 개수를 곱해준 $K^2{C \over g}{M \over g}$가 각 그룹당 파라미터 수입니다.

그룹이 총 g개가 있으므로 파라미터수는 $K^2CM \over g$ 가 됩니다. 

 

연산량

연산량은 $CK^2MHW \over g$가 됩니다.

standard convolution($CK^2MHW$)의 1/g 연산량을 가지고 있습니다.

 

그러나 Grouped convolution은 단점도 가지고 있습니다.

   1. 그룹의 수는 Hyper parameter입니다. (그룹 수에 따라서 성능이 변화합니다.)

   2. 과도하게 그룹을 나누면 각 레이어가 충분한 수의 채널을 입력으로 가질 수 없게 됩니다.

      ≫ 앙상블 학습과 별 차이가 없어집니다. 이는 비슷한 네트워크를 앙상블 하는 것과 같은 효과를 가진다고 보면 됩니다.

 

 

3. Depth-wise Convolution

그림 5 Depth-wise Convolution [6]

채널마다 따로 필터를 학습하는 것입니다. 

일반적인 convolution filter는 입력의 모든 채널의 영향을 받게 되므로 완벽히 특정 채널만의 Spatial feature를 추출하는 것이 불가능합니다. 

Depth-wise convolution은 각 단일 채널에 대해서만 수행되는 필터들을 사용합니다. 그렇기에 필터 수는 입력 채널의 수와 동일합니다. 

결과적으로 입력 채널 수만큼 그룹을 나눈 Grouped Convolution과 같습니다.

 

파라미터의 수

각 input channel을 C개의 그룹으로 나누기 때문에 각 그룹당 channel의 수는 C/C=1가 됩니다. 그리고 filter의 수는 input channel의 수와 같기 때문에 C개입니다.  파라미터수는 $K^2C$ 가 됩니다. 

 

연산량

연산량은 $CK^2HW$가 됩니다.

 

 

4. Point-wise Convolution (1 x 1 convolution)

그림6 Point-wise Convolution [6]

Point-wise convolution은 커널 크기(filter크기)가 1x1로 고정된 convolution layer를 말합니다.

input에 대한 Spatial Feature는 추출하지 않은 상태로, 각 채널에 대한 연산만 수행합니다. 따라서 output의 크기는 변하지 않고, channel의 수는 자유롭게 조절할 수 있습니다. 

하나의 필터는 각 입력 채널별로 하나의 가중치만을 가집니다. 이 가중치는 해당 채널의 모든 영역에 동일하게 적용됩니다. 즉, 입력 채널들에 대한 Linear Combination과 같습니다.

 

보통 dimensional reduction을 위해 많이 쓰입니다. 이것은 channel의 수를 줄이는 것을 의미하는데 연산량을 많이 줄여줄 수 있어 중요한 역할을 하게 됩니다.

 

파라미터의 수

standard convoluton에서 K=1인 경우와 같습니다.

따라서 총파라미터의 수는 $CM$이 됩니다.

 

연산량

K=1인 경우이기 때문에 $CMHW$가 됩니다.

 

 

 

5. Depth-wise Separable Convolution

그림7 Depth-wise Separable Convolution [1]

Depth-wise Convolution과 Point-wise Convolution을 조합해 사용하는 방식입니다. 

 

기존의 Convolution에서 전체의 channel 방향과 spatial 한 방향 모두를 한꺼번에 고려했다면, 이방식은 Xception에서 제안한 방법으로, 그 둘을 완전히 분리하겠다는 아이디어입니다.

 

이렇게 두 방법으로 분리를 하게 되어도 channel과 spatial한 방향 모두 보기 때문에, 기존의 convolution과 유사하게 동작하지만 파라미터의 수와 연산량은 훨씬 적습니다.

 

각 Channel 별 Spatial Convolution을 한 이후에 Feature별 Linear combination을 해주는 것이라고 보면 됩니다.

 

파라미터의 수

단순히 Depth-wise convolution 후에 Point-wise Convolution을 수행하는 방식이므로 두 방식의 파라미터를 더해주기만 하면 됩니다. 따라서 총 파라미터의 수는 $K^2C+CM=C(K^2+M)$이 됩니다.

 

연산량

이 또한 두 방식의 연산량을 더해주기만 하면 됩니다.

$K^2CHW+CMHW=CHW(K^2+M)$

 


 

이렇게 다섯 가지의 Convolution을 정리해봤습니다.

다음에는 이 Convolution들이 사용되는 모델들에 대해서 알아보도록 하겠습니다!

 

 

 

출처:

[1] https://www.youtube.com/watch?v=ijvZsH4TlZc

[2] http://taewan.kim/post/cnn/

[3] https://zzsza.github.io/data/2018/02/23/introduction-convolution/

[4] https://hichoe95.tistory.com/48?category=783893

[5] https://newsight.tistory.com/310

[6] http://machinethink.net/blog/googles-mobile-net-architecture-on-iphone/

댓글