안녕하세요,
재재입니다.

FastViT 논문 리뷰 (FasterViT와는 다른 논문입니다) 입니다.

1줄로 이번 논문 FastViT 의 Main contributions 을 말해본다면,
다음과 같이 이야기 할 수 있습니다.

“ViT (Vision Transformer) 의 장점을 유지하면서, Latency 를 개선하였다.”

(0) 개요

FastViT 리뷰에 앞서,

FastViT 논문에 대해 간략하게 소개 드리면,
ICCV 2023 에 Accepted 되었으며,
Apple 의 ML 팀에서 제안한 논문입니다.

(1) Abstract

FastViT 는 Hybrid vision transformer architecture 로서,
latency 와 accuracy 에 대한 tradeoff 를 어느 정도 무시할 수 있게,
latency 도 적지만 accuracy 도 준수한 모델입니다.

RepMixer 라는 핵심 구조에 대해 다루고,
어떤식으로 latency 를 줄이며 accuracy 를 올리는,
두마리 토끼를 모두 잡았는지 그 방법에 대해 자세히 다루어보겠습니다.

(2) Introduction

FastViT 는 IPhone 12 Pro 와 RTX 2080Ti 기준으로,
accuracy 와 latency 에 대한 tradeoff 가 가장 성능적으로 좋은 모델입니다.

fastvit 리뷰 image 132

(accuracy 와 latency 는 accuracy 를 올리면, latency 도 같이 오르는 형태입니다.)

위에서 말하는,
tradeoff 가 좋다라는 의미는 “동일 accuracy 대비 latency 가 낮다” 로 해석하시면 되겠습니다.

FastViT 논문 저자들은 3가지 방법을 시도하였습니다.

  1. Skip connections 을 제거하기 위한 RepMixer 구조에 대한 제안하였습니다.
    -> skip connections 은 MAC 측면에서 overhead 를 가지고 있으며,
    이는 latency 를 상승시키는 주요 이유라고 할 수 있습니다.
  2. 정확도를 개선하기 위해 linear train-time overparameterization 적용하였습니다.
  3. 초기에 사용하는 self-attention layers 를 대체하기 위해,
    Large Kernel Convolution 을 사용했습니다.

(3) Related Work

Hybrid Vision Transformer 는 주로 Accuracy 를 증가시키는 목적으로 사용되었습니다.
그 중에서도, MetaFormer 는 Pooling 기법을 활용하는 token mixer 입니다.
(token mixer: self attention 기반의 구조)

Structural reparameterization 은 Latency 를 줄이기 위해 사용되었습니다.
위 논문에서는 factorized k x k convolution 을 사용하였는데,
parameter 를 효과적으로 줄이고 model capacity 를 줄여 latency 개선에 큰 기여를 하였습니다.

FastViT 저자들이 제안한 RepMixer (아마도 repameterization mixer…?) 구조는
skip connections 을 제거하고 linear over parameterization 을 사용하였는데,
지금까지는 없었던 방식이라고 합니다.

(4) FastViT Architecture

FastViT 의 구조는 다음과 같습니다.

fastvit 리뷰 image 133

Stage 1, 2, 3 은 모두 같은 구조고,
Stage 4 에서만 attention 블록이 사용되었습니다.

Stage 1, 2, 3 에서는 attention 블록 대신 Large Kernerl Convolution 을 사용했는데요.
밑에서 좀 더 자세히 설명드릴게요.

(참고로, 저자는 위 구조를 실험하면서 manual refinement 하며 만들었다고 합니다.)

크게 2가지로 살펴볼게요!

  1. Rep Mixer
  2. Position Encodings

먼저, Rep Mixer 입니다.

fastvit 리뷰 image 134
fastvit 리뷰 image 135

1번 수식에 대해 설명을 드리면, ConvMixer 에서 사용했던 구조를 수식으로 표현한 겁니다.
이때 까지 가장 효과적인 구조였다고 언급하였습니다.
2번 수식은 Batch normalization 의 순서를 post 에서 pre 로 변경하면서, activation 을 제거한 형태고,
저자들이 특별한 이유 없이 reorder 를 한거로 추정됩니다.
3번 수식은, RepVGG 에서 사용되는 노테이션을 적용해서 표현한건데요.

1번과, 3번 수식에서 다룬 내용을 좀 더 자세히 파악해볼게요.

Patches Are All You Need?

출처 : https://arxiv.org/abs/2201.09792

ConvMixer 는 Patches Are All You Need 논문에서 제안한 구조입니다.

ConvMixer 는 ViT 의 장점 (global feature 와 문맥을 학습) 을 유지하고,
단점 (input resolution 이 달라짐에 따라 복잡도가 quadratic 으로 증가하는 것) 을 해결하고자 하였습니다.

fastvit 리뷰 image 136

ConvMixer 도 크게 2개의 파트로 나뉠 수 있는데요.
a. input patch 를 누적해서 ConvMixer Layer 의 입력으로 넘기는 부분
b. depthwise convolution 과 pointwise convolution 을 사용해서,
local 및 global spatial mixing 을 가능케 하고 ViT 의 장점을 살릴 수 있게 하는 부분

depthwise conv 와 pointwise conv 는 각각,
spatial location 정보를, channel location 을 활용 할 수 있게 합니다.

RepVGG: Making VGG-style ConvNets Great Again

코드 : https://github.com/DingXiaoH/RepVGG

출처 : https://arxiv.org/abs/2101.03697

cvpr 2021

RepVGG 저자들은 reparameterization 을 통해 training 대비 inference 를 단순하게 만들어,
speed 와 accuracy 에 대한 tradeoff 가 적은 구조를 제안하였습니다.

fastvit 리뷰 image 137

RepVGG 저자들의 타겟은 ResNet 이었습니다.
ResNet 과 비슷한 구조를 딴 VGG Like 구조를 만들어 학습을 하고,
Inference 시에는 skip-connections 을 제거하는 것을 포함해 conv 만 남기는 구조를 제안한건데요.

fastvit 리뷰 image 138

위 논문에 꼭 다뤄야하는 수식이 있지만,
위 그림으로 대체하겠습니다. (추후, RepVGG 는 포스팅 예정입니다.)

RepVGG 의 핵심은, 학습에서 사용된 conv 연산을 하나의 conv 로 합칠 수 있다는 건데요.

1×1 conv 은 3×3 conv (center) + zero padding 으로 바꿀 수 있으며,
3×3 conv + bn 은 3×3 conv + bias 로,
identity + bn 은 (1×1 conv + bias 로 변경 가능), 3×3 conv + bias 로 대체할 수 있습니다.

즉, 학습에서 사용된 각 연산은 1개의 3by3 conv + bias 로 통합이 된다는 것입니다.


다시 FastViT 로 돌아와,
두번째인 Positional encodings 을 설명하겠습니다.

FastViT 저자는, conditional positional encoding (아래 그림에서 CPE) 을 사용하였습니다.

fastvit 리뷰 image 139

depthwise convolution (spatial mixing) 연산 이후, patch emdedding 에 더해집니다.

non-linearity 가 없기 때문에 reparameterization 이 가능합니다.

(5) Empirical Analysis

여기서 부터는, 조금 더 간소화해서 정리해볼게요.

fastvit 리뷰 image 140

skip-connections 가 제외된 RepMixer 는 기존 TokenMixer 인 MetaFormer 보다,
latency 가 획기적으로 줄었습니다. (1024×1024 resolution 기준 43.9% 감소)

fastvit 리뷰 image 141

모든 kxk convolution 을 kxk depthwise conv 와 1×1 pointwise 로 변환하면서,
overparameterization 을 시도했습니다.

그 결과 모델 capacity 는 전체적으로 줄였지만,
MobileOne-style 의 “stem” 구조에서 over-parameterization 을 통해 capacity 를 올리고,
결국 accuracy 를 상승하는 효과를 봤습니다.
model capacity 는 conv 가 depth separable conv 보다 훨씬 높습니다.
(conv >> depth separable conv)

fastvit 리뷰 image 142
fastvit 리뷰 image 143

self attention 블록 기반의 token mixer 는 computation cost 가 비교적 크며,
RepMixer 에 LK (Large Kernel) + FFN + Patch embedding 조합이 가장 좋은 성능을 보였습니다.
LK 는 결과적으로 receptive field 를 늘렸기 때문에 모델의 정확도에 기여했습니다.

(6) Ablation Study

fastvit 리뷰 image 145

RM (RepMixer) 가 많을 수록 latency 개선 accuracy 하락효과,
SA (self-attention FFN) 을 사용하면 latency 상승 accuracy 상승효과를 확인했습니다.

또한, LK 가 적용되면서 latency 가 적은데 accuracy 가 특히 많이 상승한 효과를 확인했습니다.

(7) Experiments

ImageNet classification, MS-COCO 2017 detection & segmentation 등의 task 에서,
SOTA 모델과 비슷한 성능을 내면서 latency 를 개선했습니다.

(8) Conclusion

결론입니다.

MAC 를 효과적으로 줄였고, 큰 resolution 에서도 latency 가 비교적 적었습니다.
Robust 한 backbone 을 제안했고, down-streamed task (classifi…, detection, …) 에서 좋은 성능을 냈습니다.

[paper] FastViT 리뷰
태그:                     

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다