Computer Vision

MobileNet V3 (2019) 논문 리뷰

아르카눔 2025. 4. 28. 20:45

MobileNet V3의 논문 이름은 Searching for MobileNetV3다. (링크)

저자는 Andrew Howard, Mark Sandler, Grace Chu, Liang-Chieh Chen, Bo Chen, Mingxing Tan, Weijun Wang, Yukun Zhu, Ruoming Pang, Vijay Vasudevan, Quoc V. Le, Hartwig Adam다. 

 

역시나 기존 MobileNet V1, V2와 마찬가지로 경량화 모델이다.

MobileNetV3를 통해서 처음 알게된 모델들인 NasNet, MNasNet, NetAdapt도 나중에 한 번 봐야겠다. 

 


Abstract

다음 세대의 MobileNets을 제안한다. MobileNetV3는 핸드폰의 CPU에 맞게 특화된 모델로, network architecture search (NAS)와 NetAdapt 알고리즘의 조합으로 이를 달성했다. MobileNetV3-Large와 MobileNetV3-Small을 제시한다. 이 모델들은 object detection와 semantic segmentation의 태스크를 수행한다. Semantic segmentation (or any dense pixel prediction)의 태스크를 수행하기 위해서, 저자들은 새로운 효율적인 segmentation decoder인 Lite Reduced Atrous Spatial Pyramid Pooling (LR-ASPP)을 제시한다. MobileNetV3-Large와 MobileNetV3-Small 모두 MobileNetV2 보다 좋은 성능을 보인다. 

 

 

3. Efficient Mobile Building Blocks

MobileNetV1에서는 depthwise separable convolution을,

 

MobileNetV2에서는 depthwise separable convs, 1x1 expansion conv, and 1x1 projection layer을,

 

MnasNet은 MobileNetV2를 기반한다. MnasNet은 bottleneck structure에 squeeze and excitation에 기반한 lightweight attention modules를 도입한다. 

 

MobileNetV3에서는 위에서 소개된 레이어들을 조합하여 블록들을 구성하여 효율적인 모델을 구성한다. 

기존에는 Squeeze and excitation과 swish nonlineary를 사용한다. 하지만 Swish는 fixed point 사칙연산에서 정확도를 유지하는게 어려우므로 이를 hard sigmoid로 대체한다. 

 

4. Network Search

4.1. Platform-Aware NAS for Block-wise Search

 

MnasNet 논문에서 사용한 platform-aware neural architecture를 활용해서 global network structures를 구성한다.

MnasNet과 동일한 RNN 기반의 controller를 사용했으며 동일한 factorized hierarchical search space를 사용했다.

MnasNet-A1을 초기 Large mobile model로 사용한 다음 NetAdapt을 적용한다. 

 

그러나 원래 reward design 보상 설계가 소형 모바일 모델에 최적화되지 않았음을 관찰했다. 구체적으로, target latency 목표 지연 시간 TAR을 기반으로 각 모델 m에 대한 모델 accuracy 정확도 ACC(m)과 지연 시간 LAT(m)의 균형을 맞춰 approximate Pareto-optimal solutions 파레토 최적 솔루션을 근사하기 위해 multi-objective reward ACC(m) × [ LAT(m) / TAR $]^w$를 사용한다. 소형 모델의 경우 latency의 변화에 따라서 더욱 dramatically 극적으로 정확도가 변화함을 관찰했다. 따라서 더 작은 weight factor $w = -0.15$ (본래는 $-0.07$로 제시된) 값을 이용해서 정확도의 변화에 따른 보상을 늘렸다. 새롭게 설정한 가중치 팩터를 활용해서 NetAdapt를 적용하고 이를 통해서 최종 MobileNetV3-Small 모델을 얻는다. 

 

 

4.2. NetAdapt for Layer-wise Search

 

모델의 아키텍처 탐색에 적용한 두 번째 방법은 NetAdapt다. Platform-aware NAS를 보완하여 개별 레이어를 파인 튜닝한다. 

 

1. Platform-aware NAS에서 찾은 seed network architecture로 시작한다.

 

2. For each step:

 

(a) A set of new proposals 새로운 제안 집합을 생성한다. 각 제안은 이전 단계에 비해 지연 시간을 최소 $\delta$만큼 줄이는 아키텍처 수정을 나타낸다.


(b) 각 제안에 대해 이전 단계에서 사전 학습된 모델을 사용하고 새롭게 제안된 아키텍처를 채운다. 그리고 missing weights 누락된 가중치를 적절하게 truncating 잘라내고 randomly initializing 무작위로 초기화한다. 각 제안을 T 단계 동안 미세 조정하여 정확도에 대한 대략적인 추정치를 얻는다.


(c) 특정 지표에 따라 최적의 제안을 선택합니다.

 

3. Target latency에 도달할 때 까지 이전 단계를 반복한다.

 

 

NetAdapt에서는 매번 제시되는 제안들 중에서 $\Delta$ Acc / | $\Delta$ latency | 를 최대화하는 proposal을 선택한다. 

 

이 프로세스는 지연 시간이 목표에 도달할 때까지 반복된 후, 새 아키텍처를 처음부터 다시 학습한다.

 

구체적으로 다음의 2가지 제안을 허용한다. 

 

1. 임의의 expansion layer의 사이즈의 감소

2. Residual connections를 유지하면서 same bottleneck size를 공유하는 보틀넥의 감소  

 

저자들은 T를 10,000으로 설정했으며 $\delta$ = 0.01 |L| 로 설정했으며 이때 L은 시드 모델의 latency다. 

 

 

5. Network Improvements

 

 

5.1. Redesigning Expenseive Layers

 

네트워크의 마지막 몇개의 레이어에서 지연시간을 줄이기 위해서 네트워크 구조를 수정한다.

우선 1x1 conv 다음에 계산량을 줄이면서도 high dimensional features를 유지하기 위해서 Average pooling을 적용한다.

Figure 5의 Efficient Last Stage에 나온 Avg-Pool이 이를 나타낸다.

 

그리고 Hard Swish를 통해서 nonlinearity를 달성한다.

 

 

5.2. Nonlinearities

 

Swish는 ReLU에 대한 drop-in replacement로서  소개되었다.

 

swish $x$ = $ x \cdo \sigma(x) $ 다.

 

이는 정확도의 향상에 도움이 되지만 모바일 기기에서 계산하기엔 비용이 많이 든다.

 

따라서 다음의 2 가지 대체안이 있다.

 

1. Piece-wise linear hard analog를 도입한다.

 

바로 ReLU($x+3$) / 6이다. 

 

유사하게 hard swish를 다음과 같이 정의할 수 있다.

 

h-swish $x$ = $x$ ReLU($x+3$) / 6

 

아래 Figure 6는 오리지널과 Hard 버젼의 activation functions의 모양을 비교하여 보여준다.

 

 

 

MobileNetV3-Large로 ReLU, h-swish를 비교한 실험인데 h-swish를 적용해서 약간 더 좋은 성능을 달성했음을 알 수 있다.

 

 

5.3. Large squeeze-and-excite

 

MnasNet에서 SE (squeeze-and-excite)의 크기는 conv bottleneck에 비례한다.

하지만 저자들은 이를 expansion layer의 채널의 수의 1/4이라는 고정된 갑으로 대체했다.

이를 통해서 지연시간은 거의 변하지 않으면서도 정확도가 향상됨을 확인했다.

 

 

위 Table 1에서는 MobileNetV3-Large의 구조를, Table 2에서는 MobileNetV3-Small의 구조를 보여준다.

 

 

6. Experiments

 

Image Classification, Object Detection, Semantic Segmentation에 대한 실험 결과를 보여준다. 

 

6.1.1 Training setup

We train our models using synchronous training setup on 4x4 TPU Pod using standard tensorflow RMSPropOptimizer with 0.9 momentum. We use the initial learning rate of 0.1, with batch size 4096 (128 images per chip), and learning rate decay rate of 0.01 every 3 epochs. We use dropout of 0.8, and l2 weight decay 1e-5 and the same image preprocessing as Inception. Finally we use exponential moving average with decay 0.9999.

 

원문을 그래도 긁어왔는데, Tensorflow와 RMSProp을 사용했음을 알 수 있다.

 

 

 

Image Classification

 

ImageNet 데이터에 대해서 실험했다.

 

 

Table 3는 Floating Point 성능을 보여준다. 

 

 

 

Table 3는 Quantized Models의 성능을 보여준다. 

MobileNet V2 보다 좋은 성능을 달성했음을 확인할 수 있다. 

 

 

Figure 7은 MobileNet의 V2와 V3의 성능을 Latency와 Accuracy의 측면에서 비교하는 그래프다. 

 

 

 

Object Detection

 

COCO의 test set에 대해서 실험한 결과다. 

 

MobileNet의 V2보다 V3를 적용한 SSDLite가 더 좋은 성능임을 알 수 있다. 

 

 

Semantic Segmentation

 

Cityscapes 데이터에 대해서 실험한 결과다.

 

 

Semantic segmentation에 있어서 Lite R-ASPP를 적용한다.

이는 R-ASPP의 개선된 버젼으로 SE module처럼 global-average pooling을 적용했다.

 

 

MobileNet V3가 V2 보다는 확실히 더 개선되었으며, ESPetv2, CCC2, ESPNetv1에 비해서 더 좋은 성능을 달성했음을 확인할 수 있다.