MobileViTv3: Mobile-Friendly Vision Transformer with Simple and Effective Fusion of Local, Global and Input Features#

ABSTRACT#

  • mobile vision task를 위한 경량화 모델

    • MobileViT = CNNs + ViT

    • MobileViTv1 모델은 경쟁력 있는 성능을 달성했지만, 여전히 스케일링 문제와 학습과정이 복잡하다는 문제가 존재

    • 이를 해결하기 위해 간단하고 효과적인 CNNs + ViT 블록인 MobileViTv3을 제안

    • mageNet-1k, ADE20K, COCO, PascalVOC2012 모든 데이터셋에서 v1을 능가

    • MobileViTv2의 아키텍처를 차용하여 0.5, 0.75, 1.0 모델을 만들었고 성능 또한 개선됨을 확인

1. INTRODUCTION#

  • ResNet(2016), DenseNet(2017), EfficientNet(2019) 등의 CNN 기반 모델들이 ImageNet, COCO, PascalVOC, ADE20K와 같은 벤치마크 데이터셋을 통해 강력한 성능을 자랑하며 분류, 탐지, 분할 등의 여러 태스크에 널리 사용됨

  • 일반적으로 리소스 제약이 있는 휴대폰과 같은 엣지 환경에서 CNN을 배포할 땐, MobileNet(MobileNetv1, MobileNetv2, MobileNetv3)(2019), ShuffleNet(ShuffleNetv1, ShuffleNetv2)(2018), EfficientNet의 경량버전(EfficientNet-B0, EfficientNet-B1)(2019)을 사용

    • 하지만, 이러한 경량 버전은 성능 하락으로 이어짐

  • 최근 ViT가 등장하였으나 인접 정보가 임베딩된 특징 맵을 형성하는 CNN과는 달리 이미지의 모든 공간을 임베딩하는 특징 맵을 형성하기 때문에 비슷한 성능을 달성하기 위해선 대규모 사전 훈련과 데이터 증강이 필요

    • ViT(2020), DeiT(2021), SwinT(2021), MViT(2021), Focal-ViT(2021), PVT(2021), T2T-ViT(2021), XCiT(2021)

  • Early convolutions help transformers see better(Xiao et al., 2021) 연구에서는 ViT의 강건성이 낮아 optimizer, LR, weight decay에 민감하고 수렴이 느린 점을 지적

    • 결국엔 ViT에 convolution layer를 넣는 방향으로 연구가 이어짐

    • 파라미터와 FLOPs 측면에서 모델을 효율적으로 만들기 위해 도입

      • MobileViTv1(2021), MobileViTv2(2022), CMT(2022), CvT(2021), PVTv2(2022), ResT(2021), MobileFormer(2022), CPVT(2021), MiniViT(2022), CoAtNet(2021), CoaT(2021)

  • ImageNet-1K에 대한 성능 도표

    Performance of many of models on ImageNet-1K

    Performance of many of models on ImageNet-1K

    • 이 중 MobileViT와 MobileFormer만이 모바일 디바이스 환경에 맞게끔 리소스를 제한하여 디자인했고, 적은 파라미터와 FLOPs로 다른 모델에 견줄 만한 성능 달성

    • 따라서 MobileViT를 개선하고자 함

  • 파라미터 수와 FLOPs를 비슷하게 하면서 모델 아키텍쳐를 개선할 수 있는가에 대한 의문 제기

  • local(CNN)과 global(ViT) 특징 모두를 융합하여 Imagenet-1K, ADE20k, PascalVOC and COCO 데이터셋의 성능을 향상시키는 간단하고 효과적인 방법 제안

    1. fusion block에서 33 conv layer를 11 conv layer로 변경

    2. fusion block에서 global representation block을 input과 concat 하는 것 대신 local과 global feature representation block을 concat

    3. 전체 output을 내기 직전에 최종 단계로 input을 fusion block 결과에 더함

    4. local representation block에서 conv 33 대신 depthwise conv 33 layer로 변경

    • MobileViTv3-S, MobileViTv3-XS, MobileViTv3-XXS

    • MobileViTv3-1.0, MobileViTv3-0.75, MobileViTv3-0.5

3. New MobileViT architecture#

Untitled

3.1 MobileViTv3 block#

  • fusion block에서 33 conv layer 대신 11 conv layer 사용

    • fusion block의 학습을 단순화시키기 위해 feature map 내의 다른 위치의 독립적인 local, global feature를 융합

      • 3*3 conv layer는 입력 feature와 global feature를 융합하는 것

      • fusion block은 feature map의 위치와 상관없이 입력 및 global feature를 융합하는 것이므로 1*1 conv layer를 통해 단순화

    • FLOPs를 증가시키지 않고 모델을 확장하기 위해 1*1 conv layer를 사용

      • 모델 XXS에서 S로 확장하기 위해서는 폭과 깊이를 다르게 변경해야 하는데 1*1 conv layer로 입출력 채널 수와 FLOPs가 증가하는 것을 막을 수 있음

  • local, global feature fusion

    • fusion block에서 input과 global representation feature를 concat 하는 것 대신 local과 global representation block의 feature를 concat

    • input보다는 local feature가 global feature과 관련이 더 높기 때문

    • local feature의 채널 수가 더 많긴 하지만 1*1 conv layer로 교체되면서 전체적인 파라미터 수는 적어짐

  • Fusing input features

    • input feature를 fusion block 결과에 residual connection 방식으로 더해줌

    • 아키텍쳐가 깊어질 때 최적화시켜주는 역할

    • accuracy가 0.6% 정도 상승됨

  • Depthwise conv layer in local representation block

    • local representation block의 33 conv layer를 depthwise 33 conv layer로 교체

    • 이는 파라미터 수를 줄여주며, Top-1 accuracy를 높이기보다는 파라미터 수와 accuracy 간의 trade-off를 완화해줌

3.2 Scaling up building blocks#

  • MobileViTv3에서 레이어의 채널 수를 늘려 확장

    • MobileViTv3-S, XS, XXS

    • 괄호는 v1 모델과 비교한 스케일링 계수를 나타냄

    • v1-XXS보다 2%, v1-XS보다 1.9%, v1-S보다 0.9%의 정확도 향상

    MobileViTv1 architecture

    MobileViTv1 architecture

    MobileViTv3 variant architectures

    MobileViTv3 variant architectures

4. Experimental results#

4.1 Image Classification on Imagenet-1k#

4.1.1 Implementation details

  • 배치 크기를 제외한 나머지 S, XS, XXS 모델의 하이퍼 파라미터는 MobileNetViTv1 과 유사 (batch size : 384)

  • 1.0, 0.75, 0.5 는 MobileNetViTv2 와 유사 (batch size : 1020)

  • ImageNet 1k 처음부터 train

  • Width multiplier 사용 가능

    Mobilev2 architecture

4.1.2 Comparison with MobileViTs

MobileViTv1, v2, v3 comparison

  • batch size 를 192 에서 384 로 늘리면 성능이 향상됨

  • batch size 1024 의 v1 보다 192 인 v3 의 성능이 더 좋음

4.1.3 Comparison with ViTs

Untitled

  • 6M 이상일 경우 FLOPs를 2G FLOPs 이하로 제한하여 비교

  • 2M 이하 : 대부분이 MobileViT 계열

  • 2~4M : MobileViTv3-XS 및 MobileViTv3-0.75이 최고

  • 4~8M : MobileViTv3-S 및 MobileViTv3-1.0이 최고

4.1.4 Comparison with CNNs

Accuracy graph for parameters including MibileViTv3

Accuracy graph for parameters including MibileViTv3

  • 1~2M : MobileViTv3-0.5, MobileViTv3-XXS

  • 2~4M : MobileNetv3-Large(0.75)와 비교하여 MobileViTv3-XS이 4% 이상 능가함

  • 4~8M : EfficientNet-B0 등의 모델보다 MobileViTv3-S이 2% 이상 능가

  • 파라미터 수를 구간별로 나눴을 때 , CNNs/ViTs 상관 없이 MobileViTv3 계열 모델들이 매우 뛰어난 성능을 보이고 있음

4.2 Segmentation#

4.2.1 Implementation details

  • PASCAL VOC 2012 dataset / ADE20K dataset

  • 파라미터 수가 조금씩 늘어났으며 성능 또한 조금씩 상승함

4.2.2 Results

Untitled

4.3 Object detection#

4.3.1 Implementation details

  • Single Shot Detection network(SSD MobileViTv3 backbone)

  • MS COCO dataset

4.3.2 Results

Untitled

  • 모든 면에서 성능 향상 / ResNet50보다 3배 이상 파라미터수가 더 적음

4.4 Improving Latency and Throughput#

  • Implementation details

    • GeForce RTX 2080ti

    • 10000 iterations

    • 100 batches

    • 지연시간 줄이기 위해 layer4를 4에서 2로 줄임(blocks)

  • Results

    지연 시간 및 처리량

    • 정확도 1.98% 향상

    • Blocks를 줄이지 않아도 FLOPs와 지연 시간이 줄어들었으며 Blocks를 4에서 2로 줄였을 경우 감소폭이 더 커졌음

4.5 Ablation study of our proposed MobileViTv3 block#

4.5.1 Implementation details

  • MobileViTv3의 아키텍쳐에 적용된 4가지 변경사항을 각각 MobileViTv1에 적용하여 비

  • 100 epochs

  • 192 batches

  • 나머지는 section 4.1.1과 동일

4.5.2 With 100 training epochs

  • fusion block에서 33 Conv를 11 Conv로 대체

    • fusion 계층이 local & global feautre가 다른 위치의 local & global feature와 융합되게끔 하는 태스크를 단순화시켜 성능을 향상

  • Input feature 대신 local feature를 concat

    • 1*1 Conv와 함께 수행하면 1%의 성능 향상

  • Conv 1*1 + local feature concat에다가 Input feature를 fusion block의 output에 추가

    • 1.6%의 성능 향상

    • residual connect의 장점 포함

  • 위 변경사항에 Depth-wise Conv 추가

    • 1.3%의 성능 향상했으나 위 변경사항보다는 0.3%정도 덜 상승

    • 하지만 parameter 수와 FLOPs를 줄일 수 있음

      Untitled

4.5.3 With 300 training epochs

Untitled

  • MobileViTv1-S은 batch size 192 / 300 epochs일 경우 최고성능 달성

    • 하지만 1024 batch size인 경우보다 2.8% 더 낮음

  • MobileViTv3-S는 비교를 위해 스케일을 늘리고 192에서 384로밖에 늘리지 않았음에도 불구하고 v1-S보다 더 낮은 FLOPs, parameter 수를 기록하고 성능도 더 높게 나

5. Discussion and limitations#

  • accuracy와 throughput을 높이면서 메모리 (parameter), 계산량(FLOPs), 지연 시간 (latency)를 줄임

  • MobileViTv1과 v2 보다 더 높은 성능 달성 (동일 조건 하)

  • 다른 CNN variants 보다 정확도가 높고 파라미터 수가 적거나 유사하지만 , 계산량이 많으므로 edge device 에서는 문제가 될 수 있음

  • ViT의 self attention mechanism 을 사용하므로 어쩔 수 없으므로 이를 최적화 하는 방향 모색 필요


Author by 정영상
Edit by 김주영