MixNet on Tensorflow Lite

Taekmin Kim
4 min readJul 29, 2019

--

구글이 새로운 경량화 네트워크 MixNet을 공개했습니다. 논문 제목 MixNet: Mixed Depthwise Convolutional Kernels에서 알 수 있듯이 Depthwise Convolution이라는 연산을 잘 섞어서(=AutoML) 더 적은 연산으로 더 좋은 정확도를 보이는 네트워크를 제안했습니다.

다른 논문과의 계산량 (FLOPS), 정확도 (Top-1 Accuracy) 비교.

보시다시피 결과가 굉장히 인상적입니다. 한껏 기대감에 부풀었지만 가벼운 네트워크임을 주장하는 논문임에도 불구하고 모바일 벤치마크 결과가 없어서 아쉬웠습니다. 논문을 읽고난 후, 직접 모바일 벤치마크를 수행했습니다. 이번 포스트에서는 MixNet을 구글 픽셀 폰에서 Tensorflow Lite를 이용하여 벤치마크한 결과를 공유하려고 합니다.

MixNet-S/M/L

MixNet은 Depthwise Convolution을 쌓는 패턴에 따라서 3가지 네트워크로 나눌 수 있습니다. MixNet-Small, Medium, Large 버전이 있습니다. 다음은 MobileNet V2, MnasNet 등 기존에 제안된 경량화 네트워크와 계산량 (FLOPS) 및 정확도(Accuracy)를 비교했습니다. MobileNet V3와의 비교가 없는 점은 아쉬운 부분입니다.

ImageNet 2012의 이미지 분류 (Image Classification) 결과

비슷한 연산량이라면 MixNet-S/M/L 모두 다른 네트워크보다 월등한 정확도를 보입니다. 특히 MixNet-S의 성능 (Top-1 75.8%, FLOPS 256M)은 인상적입니다. ResNet-101이 Top-1 76.6%를 위해 FLOPS 8,000M 계산이 필요한 것을 생각하면 엄청 효율적인 네트워크임을 알 수 있습니다.

MixNet on Tensorflow Lite

온라인에 공개된 모델을 바탕으로 Tensorflow Lite에서 벤치마크를 했습니다. 사용한 핸드폰은 구글 픽셀 2와 구글 픽셀 3입니다.

MobileNet V3(*)의 학습된 weight가 없어서 논문에서 제시한 결과를 사용했습니다.

MixNet이 계산 횟수는 적지만 핸드폰에서는 시간이 많이 소요됨을 확인할 수 있습니다. 여러 이유를 생각해볼 수 있는데

  • Tensorflow Lite의 Depthwise Convolution 최적화 부족
  • MixNet의 Depthwise Convolution 패턴이 파편화되어 있어서 하드웨어 수준에서 오버헤드 발생

정도로 정리할 수 있을 것 같습니다.

마무리하며

계산 횟수 (FLOPS)가 실제 수행 시간과 비례하지 않는 사실은 여러 논문을 통해서 밝혀졌습니다. 이번에도 비슷한 현상을 관찰할 수 있었습니다. 하지만 AutoML의 도움을 받아 MobileNet 수준의 크기로 ResNet에 가까운 정확도를 달성했다는 점에서 의미 있는 논문이라고 생각합니다. 실제 수행 시간이 느렸던 부분은 MnasNet처럼 하드웨어를 고려한 AutoML을 적용하면 해결할 수 있을 것으로 기대합니다.

MobileNet V1, MobileNet V2, MnasNet, MixNet 등의 뉴럴 네트워크를 안드로이드 앱으로 빌드했습니다. 자세한 내용은 아래 코드를 참고해주세요.

--

--