논문 읽기/Classification

[논문 읽기] MobileNetV3(2019) 리뷰, Search for MobileNetV3

AI 꿈나무 2021. 3. 24. 23:01
반응형

 이번에 읽어볼 논문은 MobileNetV3, Search for MobileNetV3 입니다.

 

Abstract

 MobileNet의 새로운 버전을 소개합니다. MobileNetV3은 NetAdapt 알고리즘이 적용된 NAS을 사용하여 구조를 탐색하고, 탐색한 구조를 수정하여 성능을 개선한 모델입니다. MobileNetV3-Large와 MobileNetV3-Small이 존재하며, 각각 은 자원에 따라 알맞게 사용합니다. 그리고 새로운 비선형 함수인 h-swish를 소개합니다. MobileNet-Large는 MobileNetV2와 비교하여 20% 감소한 latency로 3.2%의 정확도가 상승했습니다. MobileNet-Small은 동일한 latency에서 MobileNetV2보다 6.6%의 정확도가 상승했습니다.

 

 

1. Introduction

 신경망의 발전은 높은 정확도와 낮은 latency로 사용자 만족도가 향상됬을 뿐만 아니라 감소된 파워 소모량으로 배터리 수명도 보존합니다. 이 논문에서는 MobileNetV3-Large와 MobileNetV3-Small을 소개합니다. 이 새로운 신경망은 SOTA를 달성했고, 효과적인 모델을 구축하기 위해 automated search로 찾은 구조를 어떻게 혼합하는지 설명합니다.

 

 이 논문의 목적은 mobile device에서 accuracy-latency 균형을 최적화 하는 것입니다. 이를 달성하기 위해 (1) 탐색 기법, (2) 모바일 환경에 효율적인 새로운 비선형 함수, (3) 효과적인 새로운 모델 디자인, (4) 효과적인 새로운 segmentic decoder를 소개합니다. 

 

 

3. Efficient Mobile Building Blocks

 MobileNetV3은 가장 효과적인 모델을 구축하기 위해 layer의 결합을 block으로 사용합니다. layer는 또한 swish 비선형 함수를 사용합니다. 또한 SENet에서 소개되었던 SE block을 사용합니다. SE block에서 사용하는 sigmoid는 hard sigmoid로 대체하여 사용하고, swish 비선형 함수는 더 효과적인 hard swish를 사용합니다.  

 

 

4. Network Search

 Network Search는 모델 구조를 발견하고 최적하기 위한 강력한 도구입니다. MobileNetV3은 각 block을 최적화함으로써 전체적인 모델 구조를 찾기 위해 NAS search를 사용합니다. 그리고나서 layer의 filter수를 찾기 위해 NetAdapt 알고리즘을 적용합니다.

4.1 Platform-Aware Nas for Block-wise Search

 전체적인 구조를 찾기 위해 NAS를 사용합니다. 탐색 결과 MnasNet-A1와 비슷한 결과를 얻었기 때문에 MnasNet-A1를 초기의 Large 모델로서 사용합니다. 그리고나서 NetAdapt와 다른 optimization을 여기에 적용합니다.

 작은 모델에대해서는 보상 조건을 바꿉니다.

 기존에 w는 -0.07이었지만 -0.15로 변경합니다. 작은 모델은 latency가 급격하게 변경되기 때문에 가중치를 변경했습니다.

 

 MobileNetV3-Small은 Nas로 초기 모델 구조를 찾은 다음에 NetAdapt와 다른 optimization을 적용하여 구축합니다. MobileNet도 Auto ML을 사용하는 군요ㅎㅎ

4.2 NetAdapt for Layer-wise Search

 architecture search에 NetAdapt을 적용합니다. 이것은 순서대로 각 layer을 fine-tunning 합니다. 자세한 내용은 읽어봐도 이해가 안되서 생략하겠습니다ㅜㅜ.. 강화학습은 너무 어렵네요...

 

5. Network Improvements

 NAS로 모델을 찾은 뒤에 성능을 향상시키기 위해 몇가지 새로운 요소를 추가합니다. 신경망의 시작과 끝에 연산량이 큰 layer를 수정합니다. 또한 계산을 더 빠르게 하는 새로운 비선형 함수인 h-swish를 소개합니다. 

5.1 Redesigning Expensive Layers

 architecture search로 찾은 모델 구조는 마지막 레이어와 초기 레이어가 연산량이 많다는 것을 발견했습니다. 따라서 이 layer들을 수정합니다.

 

 latency를 감소하고 high dimensional feature를 보존하기 위해 마지막 몇 레이어를 average pooling 이후로 이동시킵니다. 따라서 7x7이 아닌 1x1에서 특징을 추출하는 것입니다. 1x1 에서 특징을 추출하므로 연산량이 작습니다.

 

 

 또, 초기에 연산량이 많은 레이어의 비선형 함수를 h-swish로 대체합니다. ReLU 대신 h-swish 비선형 함수를 사용하면 연산량을 유지하면서 32개의 필터를 16개로 감소시킬 수 있습니다.

5.2 Nonlinearities

 h-swish는 swish의 문제점을 개선하기 위해 고안되었습니다. 그리고 이 h-swish 함수를 MobileNetV3-Small에서 사용합니다. 모든 레이어에서 다 사용하는 것은 아니고 ReLU와 섞어서 사용합니다. 이것이 성능이 더 향상된다는 실험 결과를 얻었기 때문입니다. ReLU를 대신하여 사용하는 swish 함수는 신경망의 성능을 향상시킵니다. swish 함수에는 시그모이드를 사용합니다. 시그모이드는 모바일 환경에서 많은 연산량을 차지합니다. 따라서 swish 함수를 수정하여 사용합니다.

 

 위 swish 함수를 다음과 같이 수정합니다. 아래 표를 살펴보면 정확도가 향상될 뿐만 아니라 연산 속도도 더 빠릅니다.

 

 

 그리고 모든 레이어에 h-swish를 적용하는 것이 아니라, 깊은 레이어에서만 사용합니다. 따라서 h-swish를 모델의 반만 사용합니다. 

5.3 Large squeeze-and-excite

 SE block의 채널 수를 bottleneck의 expansion layer의 1/4로 설정합니다. 이렇게 하면 성능이 향상된다네요.

 

 

MobileNetV3 architecture

 MobileNetV3-Large와 Small의 전체 구조입니다.

MobielNetV3-Large
MobileNetV3-Small

Performance

반응형