안녕하세요,
재재입니다.
FastViT 논문 리뷰 (FasterViT와는 다른 논문입니다) 입니다.
1줄로 이번 논문 FastViT 의 Main contributions 을 말해본다면,
다음과 같이 이야기 할 수 있습니다.
“ViT (Vision Transformer) 의 장점을 유지하면서, Latency 를 개선하였다.”
(0) 개요
FastViT 리뷰에 앞서,
FastViT 논문에 대해 간략하게 소개 드리면,
ICCV 2023 에 Accepted 되었으며,
Apple 의 ML 팀에서 제안한 논문입니다.
- Github / https://github.com/apple/ml-fastvit
- Paper / https://arxiv.org/abs/2303.14189
(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 가 가장 성능적으로 좋은 모델입니다.
(accuracy 와 latency 는 accuracy 를 올리면, latency 도 같이 오르는 형태입니다.)
위에서 말하는,
tradeoff 가 좋다라는 의미는 “동일 accuracy 대비 latency 가 낮다” 로 해석하시면 되겠습니다.
FastViT 논문 저자들은 3가지 방법을 시도하였습니다.
- Skip connections 을 제거하기 위한 RepMixer 구조에 대한 제안하였습니다.
-> skip connections 은 MAC 측면에서 overhead 를 가지고 있으며,
이는 latency 를 상승시키는 주요 이유라고 할 수 있습니다. - 정확도를 개선하기 위해 linear train-time overparameterization 적용하였습니다.
- 초기에 사용하는 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 의 구조는 다음과 같습니다.
Stage 1, 2, 3 은 모두 같은 구조고,
Stage 4 에서만 attention 블록이 사용되었습니다.
Stage 1, 2, 3 에서는 attention 블록 대신 Large Kernerl Convolution 을 사용했는데요.
밑에서 좀 더 자세히 설명드릴게요.
(참고로, 저자는 위 구조를 실험하면서 manual refinement 하며 만들었다고 합니다.)
크게 2가지로 살펴볼게요!
- Rep Mixer
- Position Encodings
먼저, Rep Mixer 입니다.
1번 수식에 대해 설명을 드리면, ConvMixer 에서 사용했던 구조를 수식으로 표현한 겁니다.
이때 까지 가장 효과적인 구조였다고 언급하였습니다.
2번 수식은 Batch normalization 의 순서를 post 에서 pre 로 변경하면서, activation 을 제거한 형태고,
저자들이 특별한 이유 없이 reorder 를 한거로 추정됩니다.
3번 수식은, RepVGG 에서 사용되는 노테이션을 적용해서 표현한건데요.
1번과, 3번 수식에서 다룬 내용을 좀 더 자세히 파악해볼게요.
Patches Are All You Need?
ConvMixer 는 Patches Are All You Need 논문에서 제안한 구조입니다.
ConvMixer 는 ViT 의 장점 (global feature 와 문맥을 학습) 을 유지하고,
단점 (input resolution 이 달라짐에 따라 복잡도가 quadratic 으로 증가하는 것) 을 해결하고자 하였습니다.
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
cvpr 2021
RepVGG 저자들은 reparameterization 을 통해 training 대비 inference 를 단순하게 만들어,
speed 와 accuracy 에 대한 tradeoff 가 적은 구조를 제안하였습니다.
RepVGG 저자들의 타겟은 ResNet 이었습니다.
ResNet 과 비슷한 구조를 딴 VGG Like 구조를 만들어 학습을 하고,
Inference 시에는 skip-connections 을 제거하는 것을 포함해 conv 만 남기는 구조를 제안한건데요.
위 논문에 꼭 다뤄야하는 수식이 있지만,
위 그림으로 대체하겠습니다. (추후, 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) 을 사용하였습니다.
depthwise convolution (spatial mixing) 연산 이후, patch emdedding 에 더해집니다.
non-linearity 가 없기 때문에 reparameterization 이 가능합니다.
(5) Empirical Analysis
여기서 부터는, 조금 더 간소화해서 정리해볼게요.
skip-connections 가 제외된 RepMixer 는 기존 TokenMixer 인 MetaFormer 보다,
latency 가 획기적으로 줄었습니다. (1024×1024 resolution 기준 43.9% 감소)
모든 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)
self attention 블록 기반의 token mixer 는 computation cost 가 비교적 크며,
RepMixer 에 LK (Large Kernel) + FFN + Patch embedding 조합이 가장 좋은 성능을 보였습니다.
LK 는 결과적으로 receptive field 를 늘렸기 때문에 모델의 정확도에 기여했습니다.
(6) Ablation Study
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, …) 에서 좋은 성능을 냈습니다.