Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

ShuyaVision

[논문 리뷰] MobileNetV3, MobileNetEdgeTPU 본문

Vision AI

[논문 리뷰] MobileNetV3, MobileNetEdgeTPU

Sangbro 2023. 11. 8. 21:41

MobileNetV3

Efficient Mobile Building Blocks

MobileNetV1에서는 Depthwise Separable Convolution을 제안해 기존의 convolution을 대체한다.

MobileNetV2에서는 linear bottleneck & inverted Residual structure를 제안했다.

MNasNet은 bottleneck 구조에 squeeze and excitation 모듈에 기반해 light weight attention module을 제안했다.

(MNasNet에 대한 짧은 설명은 게시글 아래 작성했다)

 

MobileNetV3에서는 위 layer들을 조합해 building block으로 사용하며, 효율적인 구조를 제안한다.

그림을 보면, MobileNetV2의 구조에 Depthwise block을 지난 후, Squeeze-and-Excite를 하는 것을 볼 수 있다.

 

 

Network Search

1. Platform-Aware NAS for Block-wise Search

MnasNet과 동일하게, MobileNetV3 또한 platform-aware NN 아키텍처 접근법을 사용했다. 기존 reward design은  accuracy와 latency에 대한 다중 목표 보상을 사용하며, pareto-optimal solution을 근사화하여 사용한다. 그런데 latency에 따른 accuracy의 변화량이 훨씬 더 많이 변한다는 것을 관찰했고 이에 따라 weight factor를 -0.07에서 -0.15로 수정하여 적용했다. Weight factor만 바꾼 후에 NAS 알고맂므을 통해 initial seed model을 찾고, NetAdapt와 다른 최적화 기법을 적용했다.

 

2. NetAdapt for Layer-wise Search

platform-aware NAS와 상호보완적인 접근법으로, NAS는 estimation만 진행하여 대략적이지만 global한 아키텍처를 찾아주는 반면, squential 한 방법으로 NetAdapt는 개별의 layers들의 fine-tuning을 진행한다.

 

2-1 NAS를 통해 도출한 seed network architecture를 initial NN으로 사용한다.

2-2 각 step은 아래와 같다.

(a) 새로운 proposals를 생성한다. 각 proposals은 최소 δ의 latency reduction을 달성하는 architecture의 수정을 포함한다.

(b) 각 proposal에서는 pretrained된 모델을 자르고 붙이며 가중치를 초기화하여 사용한다. 그리고 이를 fine-tuning한다.

(c) 특정 metric을 사용해 가장 좋은 proposal을 선택한다.

 

NetAdapt 에서 사용한 metric은 accuracy의 변화를 최소화하는 것이었다. MobileNetV3에서는 이를 조금 바꿔서 latency 변화량 대비 accuracy 변화량의 비율을 사용한다. 

Latency가 목표치에 가장 가깝도록 하면서, 위 수식이 maximizes되는 proposal을 찾는다. Proposals를 찾으면, 이를 scratch 부터 새롭게 학습한다. NetAdapt에서 사용한 MobilenetV2 용 proposal generator를 똑같이 사용했다고 한다.

1. 어떤 expansion layer든 size를 줄인다.

2. 같은 bottleneck 크기를 갖는 모든 blocks 내의 bottleneck을 줄인다. 이를 통해 residual connections를 유지한다.

 

논문에서는 T=10000 (2-2 fine-tuning step)을 사용하며, δ = 0.01 |L| 으로, L은 seed model의 latency이다.

 


Network Improvement

1. Redesigning Expensive Layers

NAS를 통해 찾은 모델 중, 몇몇의 layers가 유난히 expensive한 경우가 있다고 한다. 그래서 이러한 slow layers를 수정해서 accuracy를 유지하며 latency를 낮추는 방법을 소개한다.

  • MobileNetV2에 기반한 모델은 final layer에서 1x1 convolution을 사용해서 feature space를 higher-dimensional하게 바꾼다. 이는 rich features를 얻는데 필수적인 부분이지만, extra latency를 필요로한다. 그래서 이 계층을 final average pooling을 이후로 옮긴다. 이는 final set of features가 이제 7x7 spatial resolution으로 연산되는 것이 아닌, 1x1 spatial resolution으로 연산되도록 한다. 이는 연산량과 latency의 부담을 확 줄이는 선택이다.
  • 이 feature generation layer의 연산량을 줄이면, 그 이전 layer, 즉 Inverted residual block에서 projection과 filtering layers를 삭제해서 연산량을 좀 더 줄인다. 아래 Figure 5를 보면, filtering layers(Depthwise conv 하는 부분)과 1x1을 통해 projection 하는 부분을 없애고 expansion 부분만 남기는 것을 확인할 수 있다. 이는 Avg-Pool을 하기 이전에 final layer에서의 최종 expansion을 뒤로 옮김으로써 이전에 있는 expansion을 활용하는 것으로 보인다. 이를 통해 latency를 크게 줄이면서도 accuracy는 유지했다고 한다.
  • 또다른 expensive layer는 초기의 32개의 filters sets이다. 종종 filter들은 좌우 반전 이미지를 동시에 가지는 경우가 있어서 중복을 줄일 수 있도록 filters의 개수를 16개로 줄였다.

 

2. Nonlinearities

swish는 ReLU를 대체하는 수식으로, accuacy를 상승시킬 수 있는 비선형 함수다.

하지만, sigmoid 연산은 expansive하기 때문에, 아래 2가지 방식으로 이를 해결한다.

2-1. sigmoid 연산을 다른 함수로 바꾼다. Accuracy에서는 별 차이가 없으나 배포 관점에서 여러 이점을 얻을 수 있다. 첫번째는 ReLU6의 최적화된 구현은 거의 모든 SW, HW Framework에서 사용 가능하다. 둘째로는 quantization 모드에서 근사 sigmoid의 다양한 구현으로 인해 발생할 수 있는 precision loss를 방지할 수 있다. 마지막으로 실제로 h-swish는 piece-wise function으로 구현될 수 있어 메모리 엑세스 수를 줄여 대기 시간 비용을 크게 줄일 수 있다.

 

 

2-2. Layer가 깊어질수록 resoultion을 줄이기에, activations의 숫자가 줄어 non-linearity를 적용하는 cost는 줄어든다. 또한, swish의 이점은 더 깊은 layer에서만 사용함으로써 실현된다는 것을 실험적으로 알게 되어, 논문에서는 모델의 절반에만 h-swish를 적용한다. 하지만 이러한 optimization에도 불구하고, h-swish는 약간의 latency cost를 발생시킨다. 하지만 accuracy와 latency 에 대한 net effect는 긍정적이며, 최적화된 구현을 사용할 때 아주 좋은 효과를 보인다. 

 

3. Large squeeze-and-excite

MNasNet에서는 squeeze-and-excite bottleneck을 convolution bottleneck의 사이즈에 비례하여 사용했다. 이 논문에서는 expansion layer의 1/4으로 고정하였다. 이를 통해 약간의 parameters의 증가로, accuracy 향상을 이끌어낼 수 있었다

 

4. MobileNetV3 Definitions

위 과정을 거쳐 MobileNetV3 Large/Small을 생성하며 architecture는 아래와 같다.

 

 

 

 

MobileNetEdgeTPU

https://blog.research.google/2019/11/introducing-next-generation-on-device.html

 

Introducing the Next Generation of On-Device Vision Models: MobileNetV3 and MobileNetEdgeTPU

Left: Comparison of the accuracy on the ImageNet classification task between MobileNetEdgeTPU and other image classification networks designed for mobile when running on Pixel4 Edge TPU. MobileNetEdgeTPU achieves higher accuracy and lower latency compared

blog.research.google

 

 

Google 에서는 MobileNetV3을 기반으로 MobileNetEdgeTPU를 제시했다. Google Pixel 4에서 EdgeTPU 내에 머신러닝가소속기 Pixel Neural Core가 들어가면서 HW에서 더 잘 맞는 모델을 제시했다고 생각하면 된다.

 

해당 블로그에서는 MobileNetV3에서 달라진 점 4가지를 정리한다.
1. Size of expansion layer

2. Degree of squeeze-excite compression

3. Choice of activation function: h-swish or ReLU

4. Number of layers for each resolution block

 

그런데 MobileNetEdgeTPU에서는 위 4가지중 2번과 3번을 빼버린다. 구글 개발자들에 따르면, squeeze-and-excite compression이나, h-swich 와 같은 함수는 CPU에서는 compact 하고 빠른 모델을 구축하는 데 필수적이지만 GPU나 DSP와 같은 HW 가속기로의 이식성을 더욱 용이하게 하기 위해서 squeeze-and-excite 와 h-swish, 그리고 5x5 convolution 연산을 모두 제외한다. 이러한 연산을 제외한 채로 MobileNetV3과 같이 NAS 알고리즘을 통해 기본적인 모델을 선정하고, NetAdapt 알고리즘을 통해 세세한 모델 튜닝을 한다.

 

MobileNetEdgeTPU는 V3에 비해 50% 미만의 전력을 소비하며, 특히 Semantic Segmentation에서는 latency를 줄이고, accuracy를 높이는 성능을 보여준다.

 

 

*** NAS 알고리즘 ***

 

NAS 알고리즘은 크게 아래 그림과 같이 3가지 component로 구성되어 5가지 단계를 거친다.

1) Search space : Search Space란, 알고리즘이 탐색을 수행하는 공간을 의미한다. 레이어의 유형, 크기, 연결 패턴 (convolution, pooling, fc 등)의 집합이 포함된다. 이러한 operations들을 모아 네트워크를 구성하게 되므로, 이 candidate oeprations들은 valid network configuration이 된다.

 

2) Search Strategy : 탐색 전략은 탐색 공간에서 최적의 Network Architecture를 찾기 위한 방법을 정의한다. Search space에 존재하는 많은 configuration들 중 어떤 configuration이 해당 task에 가장 적합한지 찾아내는 전략이 좋은 전략이 될 것이다. Random Search, Bayesian optimization, Reinforcement learning, Evolutionary strategy 등이 후보군이 될 수 있다. Search Strategy를 선택함에 있어서 고려할 사항은 exploration과 exploitation이다. Exploration, 즉 대부분의 상태를 확인할 수 있으면서도, Exploitation, Search space에서 좋은 부분을 빠르게 찾아내는 것이 중요하다. 이는 보통 trade-off이지만, 둘 다 잘 수행하는 전략을 택해야한다.

 

3) Performance Estimation Strategy : 여기서 Evaluation이 아닌, estimation인 이유는 evaluation까지 하기 위해 모든 데이터를 학습하는 데는 큰 resource가 들기 때문이다. 따라서 estimation을 통해 이번에 search space로부터 찾은 configuration들의 조합을 estimate하여 평가한다.

 

4) 탐색과 평가의 반복 : Search space에서 다양한 Architecture를 탐색해, 각 Architecture의 성능을 평가해 최적의 Network Architecture를 찾는다.

 

5) 이 Network Architecture를 선택한다.

 

 

*** MNasNet ***

Mobile 환경에서 잘 동작할 수 있는 효율적인 모델을 찾기 위해 Neural Architecture Search 접근법을 제시하는 논문이다. MNasNet은 모바일 플랫폼을 대상으로, 플랫폼의 특성을 고려해 Architecture를 최적화한다.

 

MNasNet의 주요한 세가지 구성요소는 아래와 같다.

1) Search Space : 여러 operations들의 집합이다. 아래와 같다.
Regular conv / Depthwise conv / Mobile inverted bottleneck convolution / 3x3, 5x5 kernel size / SE Ratio / Pooling, Identy residual / Output filter size / Number of Layers per Block

 

2) Reward Function : MNasNet의 보상함수는 모델의 Accuacy와 Latency이다. Model의 높은 정확도를 달성하면서도 낮은 Latency를 유지할 수 있도록 한다.

 

3) Search Strategy : MNasNet은 강화 학습을 사용하여 탐색 공간을 탐색하고, 네트워크 구조를 최적화한다. 강화 학습 Agent는 레이어의 연산을 선택해서 네트워크를 구성하고, reward function을 통해 이를 평가한다.

 

해당 논문에서는 같은 형식의 conv layer 를 쌓는 것 보다 계층 마다 다양성을 부여하는 새로운 Factorized hierarchical search space를 제안한다. 이 때 Latency의 기준을 MobileNetV2으로 잡았고, 성능 또한 나은 모습을 보인다. MobileNetV3에서 언급한 SE block을 MnasNet에서는 최적화해서 사용하면서, MnasNet + SE 구조의 모델은 ResNet-50 수준의 정확도를 달성했다. MnasNet에서는 SERatio를 0~0.25로 두고 사용했다. 

 

 

 

*** NetAdapt 알고리즘 ***

MobileNetV3 에서는 Mobile platform에서 지정된 resource 예산 내에서 최상의 성능을 달성하기 위해 NetAdpat 알고리즘을 사용한다. NetAdapt 알고리즘의 프로세스를 요약하자면 아래와 같다.

1) pretrained model을 준비한다.

2) Budget을 정한다. Budget의 예시로는 Latency, Energy Consumption, Memory Usage 등이 있다.

3) 여러가지 filter의 조합을 통해서 pretrained model을 조금씩 바꿔가며 platform에서 measure한다.

4) measure한 결과 중 가장 budget에 적합한 모델을 선택한다.

5) 해당 모델을 Adapted Network, 최종 output으로 사용한다.