Deep Learning study

Different types of Convolutions (Grouped convolution, depthwise convolution, pointwise convolution, depthwise separable convolution) 본문

AI/papers

Different types of Convolutions (Grouped convolution, depthwise convolution, pointwise convolution, depthwise separable convolution)

HwaniL.choi 2019. 7. 27. 13:01
반응형

오늘 정리해 볼 것들은 앞으로 정리할 논문들을 위해 미리 알아두면 좋은 convolution입니다. 각 convolution들에 대한 간단한 특징과 param수, 연산량 등에대해서 알아봅시다 ㅎㅎ

 

들어가기에 앞서 몇가지 기호를 정의하고, input 과 output의 크기는 동일하다고 생각하겠습니다.

 

  • W : input의 width
  • H : input의 height
  • C : input의 channel
  • K : kernel의 크기
  • M : output의 channel

 

먼저 standard convolution부터 알아보겠습니다. bias는 생략하도록 하겠습니다.

 

 


1. Standard Convolution

 

https://brilliant.org/wiki/convolutional-neural-network/

모두가 흔히들알고있는 Convolution입니다.

이 standard convolution의 param 수와 연산량은 얼마나 되는지 살펴보도록 하겠습니다.

 

# of Parameters

 

먼저 filter부터 살펴보겠습니다. filter의 크기는 K이고 input의 channel수는 C입니다. 그렇다면 하나의 filter가 가지는 크기는 K2C가 되는것을 쉽게 알 수 있습니다. 하나의 filter에서 나오는 output은 하나의 channel에 해당하니, output을 M개의 channel로 만들어 주려면 이러한 filter의 개수가 총 M개 있어야 합니다.

따라서 총 param의 수는 K2CM개가 됩니다.

 

Computational Cost

 

이제 하나의 filter당 필요한 연산의 수를 알아내면 연산량을 쉽게 알아볼 수 있습니다. input의 크기가 H x W 이고 ouptut도 H x W 이므로, 하나의 filter 당 총 H x W 번 연산을 해야 하나의 output channel이 생성됩니다.

따라서 총 연산량은 K2CMHW가 됩니다.

 

 


2. Grouped Convolution

 

여기선 새로운 기호가 등장하게 되는데 g라는 기호입니다. g를 먼저 정의해 볼까요 .

 

  • g : 나눌 group의 수

 

그 외에도 위의 정의와 다르게 쓰인 기호들이 있는데, 퍼온 이미지다보니까 다를 수 있습니다. 하지만 기존의 기호들을 그대로 쓰겠습니다.

 

먼저 grouped convolution이 뭔지부터 알아야겠죠.

아이디어는 굉장히 간단합니다. input의 channel들을 여러개의 group으로 나누어 독립적으로 convolution을 수행하는 방식입니다.

그렇다면 이러한 방법에대한 장점은 무엇일까요.

 

  1. 병렬처리에 유리합니다.
  2. 기존의 convolution 보다 낮은 param수와 연산량을 가집니다.
  3. 각 그룹에 높은 Correlation을 가지는 channel이 학습 될 수 있습니다.

지금은 연산량과 parameter의 수 에 대해서 알아보고있기때문에 2번이 중점이 되겠네요.

 

# of Parameters

 

grouped convolution은 input channel들을 g개의 group으로 나누어 연산을 수행합니다. 그렇다면 각 그룹당 channel의 수는 C/g가 됩니다. 그리고 output의 channel도 각 group에서 M/g개씩 생성된다고 가정합시다.

그러면 한 group당 filter의 param수는 K2(C/g)(M/g)가 됩니다.

따라서 총 g개의 group이 있으니, (K2CM)/g가 됩니다.

 

Computational Cost

 

연산량은 standard conv와 같은 이유로, (K2CMHW)/g 가 됩니다.

 

관려논문 보러가기(Shuffle net)

 

ShuffleNet : An Extremely Efficient Convolutional Neural Network for Mobile Devices

오늘은 MobileNet을 이어 ShuffleNet! 드디어 이까지 왔네요 .. 그럼 살펴보도록 할까요 Introduction ShuffleNet은 MobileNet과 마찬가지로 prameter수와 computational cost를 줄여 매우작은 모델을 만드는것이..

hichoe95.tistory.com


3. Depth-wise Convolution

 

https://medium.com/@zurister/depth-wise-convolution-and-depth-wise-separable-convolution-37346565d4ec

Depth-wise convolution은 위의 그림이 본 것중에 가장 잘 설명해주고 있는것 같아서 가져왔습니다.

 

Depth-wise convolution은 Standard convolution이 각 채널만의 spatial feature를 추출하는것이 불가능하기 때문에 고안해낸 방법이라고 할 수 있습니다. 그렇다면 당연히 Depth-wise conv에서 하려고 하는것은 각 channel마다의 spatial feature를 추출하는 것입니다.

따라서 여기서는 각 channel마다 filter가 존재하게 되고, 이러한 특징때문에 input과 output의 channel이 같게됩니다.

 

결론적으로는 위의 Grouped convolution에서 g를 입력 channel개수 C만큼 늘린 경우라고 보면됩니다.

 

# of Parameters

 

이미 위의 grouped convolution에서 다 계산해 뒀기때문에 약간의 변형만 주면 됩니다. 왜냐면 방금 말했듯이 g를 input channel개수 C 만큼 늘린 경우이기 때문입니다. 또한 Depth-wise convolution은 특성상 input과 output의 channle개수가 같으므로 M = C가 됩니다.

따라서 총 param 수는 K2C가 됩니다.

 

Computational Cost

 

이 또한 Grouped convolution파트에서 위와같이 치환만 해 준다면 쉽게 구할 수 있습니다.

따라서 총 연산량은 K2CHW가 됩니다.

 


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

 

(이 또한 그림에서의 기호는 신경쓰지 말아 주세요.)

 

Point-wise Convolution의 filter의 크기는 1x1으로 고정되어 있기때문에 1 x 1 Convolution이라고도 불립니다. 어떻게보면 위의 depth-wise와는 반대로 spatial feature는 다루지 않고 channel들에대한 연산만 수행하게 됩니다. 따라서 output의 크기는 변하지 않고, channel의 수를 조절 할 수 있는 역할을 하게 됩니다.

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

 

# of Parameters

 

Point-wise convolution의 parameter 수는 standard conv에서 K = 1 인경우와 같습니다!

따라서 총 param의 수는 CM이 됩니다.

 

Computational Cost

 

연산량 또한 K = 1 인경우이기때문에, CMHW가 됩니다.

 

관련 논문 보러가기(Inception)

 

Inception ( Going Deeper with Convolutions : GoogLeNet ) & Xception ( Deep Learning with Depthwise Separable Convolutions)

오늘 볼 논문들은 두가지 입니다 ! 사실상 이전의 글을 보셨다면 지금 보는 논문들은 크게 어려울것 없습니다. 그런의미에서 간단하게만 살펴봅시다. Inception GoogLeNet이라고 알려진 유명한 논문입니다. 먼저..

hichoe95.tistory.com


5. Depth-wise Separable Convolution

 

Depth-wise Separable convolution에서 Depth-wise는 무엇인지 알겠는데 separable은 왜 붙어있을까 생각해본다면 이 기법의 목적을 알게된다면 쉽게 이해할 것입니다.

 

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

 

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

 

위의 depth-wise와 point-wise를 먼저 소개한 이유가 있다면 이것을 설명하기 위함이랄까... 뭐 이래저래 설명은 했지만 새로운 것이 있다기보다는 Depthwise separable convolution은 Depthwise conv + Pointwise conv라고 보시면 됩니다.

 

# of Parameters

 

단순히 Depthwise conv후에 Pointwise conv를 수행하는 방식이므로 두 방식의 param을 더해주기만 하면 됩니다.

따라서 총 param수는 K2C + CM = C(K2 + M)이 됩니다.

 

Computational Cost

 

이 또한 두가지 작업을 수행하기때문에 더해주면 되겠습니다.

따라서 연산량은 K2CHW + CMHW = CHW(K2 + M) 이 됩니다.

 

관련논문 보러가기(Xception)

 

Inception ( Going Deeper with Convolutions : GoogLeNet ) & Xception ( Deep Learning with Depthwise Separable Convolutions)

오늘 볼 논문들은 두가지 입니다 ! 사실상 이전의 글을 보셨다면 지금 보는 논문들은 크게 어려울것 없습니다. 그런의미에서 간단하게만 살펴봅시다. Inception GoogLeNet이라고 알려진 유명한 논문입니다. 먼저..

hichoe95.tistory.com

(Mobile net)

 

MobileNets : Efficient Convolutional Neural Networks for Mobile Vision Applications

오늘은 시간이 없으니 간단하게 MobileNets를 살펴보고 가겠습니다. 정말 특별하게 어렵다거나 새로운건 없습니다. 새로운 아이디어라기보다는 많은 실험 결과들이 실려있는 논문이라고 보면 될 것 같아요. Mobile..

hichoe95.tistory.com


 

여담으로 Standard conv와 연산량을 비교해 보도록 합시다.

  • Standard Conv의 연산량 : K2CMHW
  • Depth-wise Separable Conv의 연산량 : CHW(K2 + M)

이므로 (Depth-wise Separable Conv/Standard Conv) = CHW(K2 + M) / K2CMHW = (K2 + M) / KM 가 됩니다.

 

그러면 최종적으로 1 / K2 + 1 / M이 되겠지요. 조금 직관적으로 보기위해서 보통 K(filter or kernel크기)보다는 M(output channel의 수)이 훨씬 크기 때문에 M의 항을 제거하고 생각한다면 연산량에서 약 K2의 차이가 있다고 볼 수 있습니다!

 


 

사실 shuffle net논문이 있길래 보다가,  inception과 xception, mobile net...을 보다가 이게 뭐지 하다가 ㅋㅋㅋ 열심히 찾아보고 정리하게 됐네요. ㅠㅠ 이상하거나 잘못된 부분이 있다면 언제든지 알려주세요 ㅎㅎ 수정하겠씁니다. !!!

 

그럼 이만 !!

 

 

 

 

Reference

[1] https://www.slideshare.net/ssuser6135a1/ss-106656779

[2] https://towardsdatascience.com/a-basic-introduction-to-separable-convolutions-b99ec3102728

[3] https://towardsdatascience.com/a-comprehensive-introduction-to-different-types-of-convolutions-in-deep-learning-669281e58215

 

반응형
Comments