연구/논문 리뷰

[Arxiv 2017] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

xeskin 2020. 6. 14. 18:25
반응형

Introduction

본 논문은 모바일 환경에서 CNN 모델을 사용하기 위해 고안된 모델이다. 아이디어는 간단하다. 기존의 convolution 연산을 depthwise seperable convolution으로 잘 쪼개 필요한 연산량을 줄였다. 일반적인 convolution의 연산량이 어떤지 알아야 어떻게 이를 개선했는지 알 수 있을텐데 한번 살펴보자.

 

Standard Convolution Filters

일반적인 conv는 input으로 $D_F \times D_F \times M$을 받으면 $D_G \times D_G \times N$ 으로 output feature map을 만들어낸다. 여기서 $M$은 input channel 개수를, $M$은 output channel 개수를 나타낸다. 그러면 Convolution filter는 $D_K \times D_K \times M \times N$이 되는데, 여기서 $D_K$는 커널의 spatial dimension을 나타낸다. 이때 필요한 convolution에 필요한 computation cost는 다음과 같다.

$D_K \cdot D_K \cdot M \cdot N \cdot D_F \cdot D_F$

Depthwise seperable convolution은 여기서 output channel 개수$M$과 커널 사이즈 $D_K$간 관계를 depthwise convolution과 1x1 conv로 쪼개 연산량을 줄였다.

Depthwise Seperable Convolution

 

Depthwise convolution

먼저 input이 들어오면 depthwise convolution을 적용했다. 이는 각 input channel마다 filter를 두어 각 채널의 spatial feature를 추출하는 방법이다. 그러면 input channel 개수만큼 filter가 있을 것이고 독립적으로 연산할 것이기 때문에 AlexNet이나 ResNext에서 이야기됐던 group conv를 하는 거라고 생각하면 된다. 이때 group size는 input channel 개수와 같다. 이때 드는 연산량은 다음과 같다.

$D_K \cdot D_K \cdot M \cdot 1 \cdot D_F \cdot D_F$

그리고 각 채널마다 연산을 하고난 뒤에는 이를 concat해주었다. 그리고 난 뒤에는 1x1 conv(pointwise conv)를 적용했다. 이때 드는 연산량은 다음과 같다.

$1 \cdot 1 \cdot M \cdot N \cdot D_F \cdot D_F$

Depthwise seperable conv는 이 둘을 sequential하게 하는 것을 가리킨다. 그래서 depthwise seperable conv의 연산량은 다음과 같다.

$D_K \cdot D_K \cdot M \cdot D_F \cdot D_F + M \cdot N \cdot D_F \cdot D_F$

그러면 왜 depth conv와 ptwise conv를 같이 하는 것인데 왜 seperable이라는 이름이 붙은 것일까? 기존의 convolution은 input channel의 전체 방향과 spatial한 방향을 모두 고려하여 연산한다. 하지만 여기서는 depthwise conv를 통해 이를 분리하고 ptwise conv에서 합쳐 기존 conv와 유사한 성능을 낼 수 있게 됐다.

 

그러면 연산량은 얼마나 줄었을까?

$\displaystyle\frac{D_K \cdot D_K \cdot M \cdot D_F \cdot D_F + M \cdot N \cdot D_F \cdot D_F}{D_K \cdot D_K \cdot M \cdot N \cdot D_F \cdot D_F}=\frac{1}{N}+\frac{1}{(D_K)^2}$

보통 output channel의 개수 $N$이 커널의 크기 $D_K$보다 크기 때문에 이를 떼어놓고 보면 연산량은 커널 크기에 의존하여 줄어들어, 약 $(D_K)^2$만큼 줄어드는 것을 확인할 수 있다. 이를 보면 1x1 conv의 위력을 알 수 있다. 가슴이 웅장해진다..

Network Structure

Deptheisw and Pointwise layers in MobileNet

모바일넷은 모든 커널의 사이즈를 3x3로 고정했다. 그리고 depthwise conv와 1x1 conv를 서로 다른 레이어로 취급하여 28개의 레이어를 쌓았다. 대부분의 연산은 1x1 conv에서 이뤄졌는데, 논문 내의 표를 확인하면 전체 연산량의 약 95%를 차지했다고 한다. 이 점은 이후에 ShuffleNet의 모티브가 된다.

 

그리고 채널의 개수에 곱하는 width multiplier $\alpha$와 feature map size에 곱하는 resolution multiplier $\rho$를 도입하여 더 가벼운 모델을 소개했다. 이에 따른 연산량 감소는 위의 식에 대입해서 생각해보면 각각 $\alpha^2, \rho^2$이 될 것이다.

 

반응형