본문 바로가기
Deep Learning/papers

[딥러닝 모델 경량화] MobileNet

by 룰루셩 2020. 8. 4.

[딥러닝 모델 경량화] MobileNet

지난번 Xception 모델에 이어서 오늘은 MobileNet에 대하여 알아보도록 하겠습니다:^D

 

2020/08/02 - [Deep Learning/papers] - [딥러닝 모델 경량화] Xception

 

[딥러닝 모델 경량화] Xception

[딥러닝 모델 경량화] Xception 안녕하세요 오늘은 Inception으로부터 발전한 Xception에 대해서 알아보도록 하겠습니다! Inception에 대한 자세한 설명은 지난 글에서 확인하실 수 있습니다. 2020/08/02 - [Dee

sotudy.tistory.com

 

PR12라는 논문 읽기 유튜브가 있는데 여기서 MobileNet에 대한 발표를 듣고 논문을 읽으니 좀 더 수월하였습니다!

다양한 최신 논문들을 다루기 때문에 공부하실때 참고하시면 좋겠습니다.

MobileNet 발표영상은 여기에 링크 걸어두겠습니다!

 


MobileNet은 구글에서 2017년에 발표하였습니다. 

Xception이랑 아이디어는 똑같습니다. 

 

그럼에도 이 논문이 갖는 가치는 다음과 같습니다.

   1. 다양한 분야에 이 논문을 적용했습니다.

   2. 다양한 분야에서 좋은 성능을 보여줬습니다.

   3. 성능보다는 efficiency 관점에서 논문이 쓰여졌습니다.

 

그림 1 다양한 분야에 사용되는 MobileNets

 

MobileNet 구조

이 모델의 key idea는 Depthwise Separable Convolution입니다.

Xception이랑 다른 점은 Xception은 shortcut이 있고, 1x1 → 3x3 conv를 사용하지만 MobileNet은 3x3 → 1x1  이 순서로 conv block을 구성하고 non-linearity가 추가되었다는 것입니다.

 

아래 그림 2의 오른쪽 block을 보시면 3 x 3 Depthwise Convolution과 1 x 1 Convolution 사이에 Batchnormalization과 ReLU가 추가되어 있는 것을 볼 수 있습니다.

 

그림 2 Standard convolutional block & Depthwise Separable convolutional block

 

전체 구조는 아래 표를 보시면 쉽게 이해할 수 있습니다.

첫 레이어에는 Conv라는 것이 들어가는데 이것이 Standard Convolution입니다. 처음에는 Depthwise Separable Convolution이 아닌 일반적으로 사용하는 Convolution을 사용합니다.

그리고 Conv dw가 Depthwise Convolution입니다. 

이렇게 Depthwise Separable Convolution을 쌓은 모델이 MobileNet입니다.

 

그림 3 MobileNets Body Architecture

 

이렇게 논문이 끝나면 너무 Xception과 비슷하죠?

여기서 끝나지 않고 Width Multiplier과 Resolution Multiplier라는 개념을 소개합니다.

 

Width Multiplier

input channel M과 output channel(filter개수와 동일) N에 $\alpha$를 곱해서 채널을 줄이는 역할을 합니다.

전 포스팅 중에 다양한 종류의 convolution에서 파라미터수와 연산량을 계산한 적이 있는데 거기를 보면 좀 더 이해하기 쉬우실 것입니다.

Width Multiplier $\alpha$를 곱한 depthwise separable convolution의 연산량은 다음과 같습니다.

여기서 $\alpha$는 0과 1 사이의 수고 보통 1, 0.75, 0.5, 0.25를 사용합니다.

 

 

- $D_K*D_K$ : kernel size (filter size)

- $M$ : input channel

- $D_F*D_F$ : input 

- $N$ : output channel (filter 개수)

 

기존의 연산량과 $\alpha^2$ 만큼 차이가 난다고 합니다.

 

Resolution Multiplier

Resolution Multiplier은 Input의 가로 세로 크기를 줄여서 연산량을 줄이는 역할을 합니다.

$\rho$를 input의 width와 height에 곱합니다.

 

다음 수식은 $\alpha$를 곱해서 채널을 줄이고 $\rho$를 곱해서 해상도를 줄인 Depthwise separable convolution의 연산량입니다. 

 

 

결과 비교

아까 앞에서 본 MobileNets의 body structure에 Depthwise Separable convolution 대신에 일반적인 convolution을 사용한 것이 Conv MobileNet입니다. Conv MobileNet에 비해 MobileNet의 Accuracy는 1% 정도 떨어졌지만 Mult-Adds와 Parameters는 엄청 줄었다는 것을 알 수 있습니다.

여기서 Mult-Adds는 한 이미지를 인식하는 데 필요한 곱셈-합 연산 횟수입니다.

 

 

위의 표를 통해 Width Multiplier과 Resolution의 차이에 따른 Accuracy와 연산량의 차이를 알 수 있습니다. 

 

뒤에서는 다양한 분야에 MobileNet을 적용한 사례가 나옵니다.

Stanford Dog datasets, Face Attributes, Object Detection 등의 사례에서 잘 작동한다는 것을 확인할 수 있습니다.

 


 

이것으로 MobileNet에 대한 설명을 마치겠습니다. 

정리하자면 MobileNet은 Xception과 정말 비슷하지만 Depthwise Separable convolution 사이에 non-linearity를 추가하였고 Width Multiplier, Resolution Multiplier을 사용하여 다양한 하이퍼 파라미터를 사용해서 비교를 해줬습니다. 또한 다양한 사례에 적용을 해봤다는 점이 이 논문의 특징입니다.

 

참고

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

[2] PR-044 MobileNet

댓글