[논문 리뷰] MobileNet, 경량화 모델

2022.02.19 23:47 3,062 조회

안녕하세요!

이번에는 경량화 모델로 유명한 MobileNet에 대해 정리해보려고 합니다. 공부하는 학생인 만큼 틀린 점이 있을 수 있으니 있다면 지적이나 피드백 부탁드립니다. 본 포스팅은 데이콘 서포터즈 "데이크루" 1기 활동의 일환입니다.  

 

구글에서 2017년에 발표한 논문으로 Xception이랑 아이디어는 같다고 합니다. 하지만, 다양한 분야에 이 방법을 적용했고 좋은 성능을 보여줬고 성능보다는 효율? 경량화에 집중했다고 합니다. 논문 제목은 MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications입니다.

 

Abstract

모바일이나 embedding vision application에서 사용할 수 있는 효율적인 모델인 MobileNet을 제시합니다. 이 모델은 가벼운 DNN을 만들기 위해 depth-wise separable convolution을 사용했다고 합니다. Latency와 accuracy사이의 tradeoff를 조절할 수 있는 2개의 global hyper parameter를 제안합니다. Resource와 정확도 tradeoff에 대한 많은 실험을 제시하고 ImageNet 분류를 타 모델과 비교해 좋은 성능을 보여준다고 합니다. 이외에도 다양한 분야로 MobileNet의 효율성을 시연합니다.

 

Introduction

AlexNet이 ImageNet Challenge에서 우승한 뒤로 computer vision 분야에서 CNN은 매우 흔해졌는데, 더 높은 정확도를 달성하기 위해 더욱 깊고 복잡한 모델을 만들었다고 합니다. 이런 방식으로 정확도를 올리는 것은 네트워크가 크기나 속도 측면에서 매우 비효율적입니다. 자율주행이나 증강현실 등 빠른 연산이 필요한 주제에 적용하기는 어려웠습니다. 이에 따라 해당 논문은 모바일처럼 작은 모델을 필요로 하는 곳이나 빠른 속도를 가진 모델을 만들고자 효율적인 네트워크 아키텍처를 제시합니다.

 

MobileNet Architecture

3.1 Depthwise Separable Convolution

MobileNet 모델은 standard convolution을 depthwise와 pointwise(1*1 conv)로 분해하는 depthwise separable convolution을 기반으로 합니다. Depthwise conv는 각 입력 채널에 단일 필터를 적용하고 pointwise conv는 1*1 conv를 적용합니다. Standard convolution은 filter를 적용하고, input을 새로운 일련의 output으로 결합하는 것을 하나의 과정으로 적용합니다. depthwise separable convolution은 이를 filtering을 수행하는 layer와 결합을 수행하는 layer, 2개의 layer로 분리합니다. 이런 분리는 계산을 줄이고 모델의 크기를 줄이는 효과가 있다고 합니다.

위 그림은 표준 convolution인 (a)가 depthwise convolution인 (b)와 1*1 pointwise convolution인 (c) 2개로 어떻게 분리되는 지 보여줍니다. Standard conv는 Dk * Dk * M를 input으로 받고 Dg * Dg * N짜리 피처맵을 output으로 만들어낸다. Df는 input feature map의 width, height이며 M은 input depth, Dg는 output feature map의 width, height이며 N은 output depth을 뜻한다. Standard conv layer는 Dk * Dk * M * N의 사이즈를 가지는 convolution kernel K에 의해 parameterized 될 수 있다. Standard convolution의 연산 량은 아래 식과 같습니다.

이를 통해 cost가 input, output, kernel size, feature map size에 비례함을 알 수 있었습니다. MobileNet은 depthwise separable convolution을 사용해 output channel의 수와 kernel size 간의 interaction을 끊는 일을 수행합니다. Depthwise convolution은 input channel 각가에 대해 단일 필터를 적용하고 pointwise convolution은 depthwise layer의 output의 선형결합을 만들기 위해 단순한 1*1 conv를 사용합니다. MobileNet 역시 batchnorm이나 ReLU는 동일하게 사용합니다.

 

먼저 Depthwise의 cost를 살펴보면

Input 각각에 대해 필터를 적용하면 되어 기존에 있던 N이 사라집니다.

다음은 depthwise 연산으로 얻어진 output을 1*1 conv를 통해서 선형결합을 해야 하므로 아래와 같은 cost를 갖게 됩니다.  

1*1*M size의 kernel을 Df*Df만큼 순회하고 이것이 output 1개의 채널만 만들어내므로 filter가 N개 있어야 하기 때문에 위와 같은 cost가 나옵니다. 이런 cost를 비교하면 아래와 같습니다.

분자가 depthwise separable conv를 사용할 때, 아래가 standard conv 이므로 cost 자체는 많이 감소함을 알 수 있습니다. 이 때 cost가 감소한 만큼 정확도가 감소하면 어쩌나 해서 정확도에서도 작은 감소만 나타남을 이후 검증한다고 합니다.


3.2 Network Structure and Training

mobileNet은 첫 번째 layer를 제외하고는 depthwise separable convolution을 이용한다고 합니다.자세한 사항은 아래 사진을 확인해주세요.

Downsampling은 depthwise convolution에 있는 strided conv를 이용해 처리합니다. 마지막 average pooling은 spatial resolution을 1로 줄이고, 이를 fully connected layer와 연결합니다. MobileNet은 RMSprop을 사용해서 학습되었고, large model을 학습할 때와는 다르게 regularization과 data augmentation technique은 적게 사용했다고 합니다. 이는 small model이 overfitting을 겪을 가능성이 더 낮기 때문입니다. 또한, depthwise filter에 매우 작거나 no weight decay (l2 regularization)을 적용하는 것이 중요하다는 사실을 확인했는데 여기에 작은 수의 parameter가 포함되어 있기 때문입니다.

 

3.3 Width Multiplier: Thinner Models

이렇게 제시된 mobilenet이 이미 작고 낮은 레이턴시를 가지지만 더 작고 더 빠른 모델을 필요로 하는 경우도 있으니 width multiplier라고 불리는 파라미터 알파(α)를 도입합니다. 이 알파의 역할은 각 layer를 균일하게 더 얇게 만드는 것인데 input channel이 M이였다면 여기에 알파를 곱해 더 얇게 만들어줍니다. Cost를 살펴보면 아래와 같습니다.

보통 1, 0.75, 0.5, 0.25로 세팅하고 cost와 파라미터 수를 대략 알파의 거듭제곱만큼 감소시키는 효과를 가진다고 합니다.

 

3.4 Resolution Multiplier: Reduced Representation

두번째 하이퍼 파라미터는 resolution multiplier ρ입니다. 이를 input에 적용하는데 이를 통해 모든 layer에 internal representation을 감소시킨다고 합니다. ρ는 input image size가 224, 192, 160, 128이 되도록 설정한다고 합니다.

앞서 소개한 α와 ρ를 적용했을 때 cost는 아래와 같습니다.

그리고 standard conv 와 depthwise separable conv, 소개한 하이퍼 파라미터를 적용했을 때에 대한 비교가 아래 표입니다.

Depthwise Separable만 적용했을 때도 많은 차이를 보이지만 파라미터를 적용하면 훨씬 더 감소함을 확인할 수 있습니다.

 

Experiments

표 제목에 달려 있듯 FC를 사용한 모델과 Depthwise Separable을 사용한 mobileNet 결과를 보여줍니다. 파라미터는 상당히 많이 감소했으나 정확도부분은 약 1%만 감소했음을 확인해볼 수 있습니다.

이는 input resolution을 줄였을 대에 대한 비교입니다. Resolution을 줄일수록 정확도가 감소하는 것을 볼 수 있습니다. 위 표 두 개 외에도 몇 가지 더 있었지만 생략하고 넘어가겠습니다.

당시 모델들에 대한 비교입니다. Table8을 보면 모바일넷이 VGG만큼 정확하지만 파라미터 값도 상당히 적고 cost 역시 매우 낮음을 확인할 수 있습니다. 이 외에도 다양한 모델과 비교했을 때 우위를 점하고 있습니다.

Conclusion

Depthwise separable convolution을 통해 새로운 모델인 MobileNet을 제안했습니다. 효율적인 모델로 이어지는 중요한 설정을 조사하고 크기와 레이턴시를 줄이기 위해 정확도를 조금 내어주고 width나 resolution 값 조절을 통해 더 작고 더 빠른 모바일넷을 설계했습니다. 이후 실험 단계에서 우수한 성능을 보여주기 위해 유명 모델과 비교를 하고 다양한 작업에 적용해보는 등의 실험을 했습니다. (제 정리에 다양한 환경 실험은 생략했습니다. Ex-Large Scale Geolocalizaton, Face Embeddings, Object Detection … )

 

 

참고

[1] https://arxiv.org/pdf/1704.04861v1.pdf

[2] https://cumulu-s.tistory.com/46