본문 바로가기
  • 우당탕탕속의 잔잔함
Programming/Deep Learning Network

[Model] MobileNet v1

by zpstls 2023. 2. 21.
반응형

개발자로서 스트레스를 많이 받는 것 중 하나는 수행 속도입니다.

특히, AI 그리고 Deep Learning에서의 처리 속도 개선은 어려운 작업 중 하나입니다.

이와 관련된 고민들을 통해 만들어진 MobileNet에 대해 간단하게 설명해보고자 합니다.

 

 

보통 개발자 입장에서 AI라고 하면 가장 먼저 떠오르는 것들 중 하나는 GPU일 것입니다.

2016년 이세돌과 대결했던 알파고는 GPU대신 48개의 TPU를 사용했고 판후이와의 대결에서는 1202개의 CPU와 176개의 GPU를 사용했다고 합니다. 즉, 엄청난 컴퓨팅 파워를 사용해야 쓸만한 뭔가가 나온다는 얘기가 되는 것이죠.

그러나 현실에서는 위와 같은 컴퓨팅 파워를 갖기에는 한계가 있습니다. 자동차, 드론, 스마트폰과 같은 환경에서는 GPU는커녕, 기껏해야 CPU 하나를 가지고 있는 경우가 많고 메모리와 배터리 또한 그리 넉넉하지 않습니다. 이와 같은 환경에서 구동할 수 있도록 설계된 CNN 구조가 MobileNet입니다. 다만, 이 또한 비교적 가벼운 것이지 결코 엄청나게 가벼운 것은 아닙니다.

 

컴퓨팅 방식은 다음과 같이 크게 두가지로 나눌 수 있습니다.

 

  • Cloud Computing

위의 왼쪽 그림과 같이 여러 디바이스에서 나온 정보들을 클라우드에서 전부 처리하는 방식을 의미합니다.

 

  • Edge Computing

클라우드에서 모든 연산을 처리하는 것이 아니라, Device들이 직접 연산을 하거나 Edge들에서 데이터 연산을 하여 Cloud에 데이터를 뿌려주는 형태를 의미합니다.

 

위와 같은 구조에서, MobileNet은 Edge Computing이라고 할 수 있습니다. 그럼 이제, MobleNet에 대해 알아보도록 하겠습니다.

 

먼저, MobileNet v1에 대한 논문은 다음 링크에서 다운받을 수 있습니다.

 

MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

We present a class of efficient models called MobileNets for mobile and embedded vision applications. MobileNets are based on a streamlined architecture that uses depth-wise separable convolutions to build light weight deep neural networks. We introduce tw

arxiv.org

 

우선, 기존의 CNN은 대략 다음과 같은 구조를 갖습니다.

기존 CNN의 구조

H x W 크기의 C Channel Image에 K x K x C 크기의 M개를 곱하여 H’ x W’ 크기의 M Channel Image를 생성합니다. 이때 Channel은 RGB Image 같은 Image Color 표현층과 같으며, 한 Channel의 입장에서 바라보면, 임의의 크기와 Channel의 공간이 점 하나로 축소되는 것과 같은 연산을 수행한다고 볼 수 있습니다.

이때 MobileNet에서는 Depthwise & Pointwise Convolution 기법을 이용합니다. 이는 위와 같은 기존의 CNN 구조와 달리 한 방향으로만 크기를 줄이는 전략을 사용합니다.

MobileNet의 CNN 구조

  • Depthwise Convolution

각 입력 채널에 대하여 2x2 Conv 하나의 필터가 연산을 수행하여 하나의 Feature Map을 생성하는 방식입니다. 입력 Channel 수가 M개이면 M개의 Feature Map을 생성합니다. 각 Channel 마다 독립적으로 연산을 수행하여 Spatial Correlation을 계산하는 역할을 합니다.

예를 들어 5 Channel의 입력값이 입력되면 5개의 3x3 Conv가 각 Channel에 대해 연산을 수행하고 5개의 Feature Map을 생성합니다. 즉 간단히 말하면, 채널 수는 줄어들지 않고 한 채널에서의 크기만 줄어드는 것이죠.

 

  • Pointwise Convolution

Depthwise Convolution이 생성한 Feature Map들을 1x1 Conv로 채널 수를 조정합니다. 1x1 Conv는 모든 Channel에 대하여 연산하기에 Cross-Channel Correlation을 계산하는 역할을 합니다. 즉 Pointwise Convolution 연산을 수행하면 채널의 수가 하나로 줄어듭니다.

 

  • Depthwise Separable Convolution

Depthwise Convolution 이후에 Pointwise Convolution을 적용한 것입니다. 위 이미지에서 K=3인 경우, 연산량의 차이는 기존의 CNN 구조 대비 8~9배 정도 줄일 수 있다고 합니다.

연산량과 관련된 그래프는 다음과 같습니다.

MobileNet의 연산량

기존의 AlexNet이나 VGG와 같은 Model들과 비교했을 때, MobileNet은 적은 연산으로 높은 Accuracy를 보이는 것을 확인할 수 있습니다.

 

전반적인 MobileNet의 Architecture는 다음과 같습니다.

Architecture Of MobileNet

첫 번째 Conv를 제외하고 Depthwise Separable Convolution을 사용합니다. 또한 마지막 Full-Connected Layer를 제외하고 모든 레이어에 BatchNorm과 ReLU를 사용합니다. Down-sampling은 Depthwise Convolution과 첫 번째 Conv Layer에서 수행하며, 총 28개의 Layer를 갖습니다.

 

MobileNet의 경우, Model의 Latency와 Accuracy를 조절하는 두 개의 Hyperparameter가 있습니다.

  • Width Multiplier : Thinner Models

MobileNet의 두께를 결정하는 요소로 각 Layer에서 Filter 수를 의미합니다. 이 값은 0~1 범위를 가지며 기본 MobileNet은 1을 사용하며, Width Multiplier를 낮추면 다음과 같이 Model의 Parameter 수가 감소합니다.

 

  • Resolution Multiplier : Reduced Representation

Model의 연산량을 감소시키기 위해 사용하며, 이는 Input Image에 적용하여 해상도를 낮춥니다. 값의 범위는 0~1이고 기본 MobileNet에서는 1을 사용합니다. 다음은 Image Size에 따른 비교 값입니다.

 

다음은 MobileNet과 다른 Model들과의 성능 및 연산량 비교 표입니다.

연산량 비교표

보통 요즘에도 많이 사용되는 Model 중 하나는 VGG입니다. 이와 비교를 해보면, 연산량은 VGG보다 월등히 적음에도 불구하고 Accuracy가 많이 떨어지지 않는 것을 확인할 수 있습니다.

 

 

앞서 설명한 MobileNet은 v1을 기준으로 작성되었으며, MobileNet은 2022년 기준으로 Version 3까지 나온 것 같습니다. 각 버전마다 새로 도입되는 기술이나 구조 등에서 차이가 있습니다.

v2의 경우는 Inverted Residual 구조가 핵심 기술이고 v3의 경우는 AutoML을 도입하는 등 새로운 기술들이 많이 사용되었습니다. v1 ~ v3가 비슷한 부분은 적은 자원으로 최상의 결과를 내보내겠다는 것 정도이고 각 버전마다 다르게 생각해도 무방할 것 같습니다.

 

이렇게 MobileNet에 대해 아주 간단하게 알아보았습니다.

최근까지도 MobileNet이 많이 언급될 정도로 기초가 되는 Model인 만큼 알아두면 좋을 것 같습니다.

 

이번 포스트는 여기서 마무리하도록 하겠습니다.

 

 

PS. MobileNet v1을 코드로 구현하는 부분에 대한 내용은 다음 포스트를 참고해주세요.

 

[Code] MobileNet v1

이전, MobileNet v1에 대해서 알아보았습니다. 이번 포스트에서는 MobileNet v1을 코드로 구현하는 부분을 다룰 것입니다. 우선, MobileNet v1의 이론적인 부분에 대한 내용은 다음과 같습니다. [Model] MobileN

mj-thump-thump-story.tistory.com

반응형

'Programming > Deep Learning Network' 카테고리의 다른 글

[Model] FPN  (0) 2023.02.22
[Model] RetinaNet  (0) 2023.02.22
[Model] Grad-CAM  (1) 2023.02.15
[Model] ResNet  (0) 2023.02.13
[Deep Learning] GAN(Generative Adversarial Network)이라는 것에 대하여.  (0) 2023.01.09

댓글