[논문 리뷰] Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
논문의 전문은 여기에서 확인할 수 있다.
논문 리뷰 PPT는 여기서 확인할 수 있다.
0. Abstract
이 논문은 Swin Transformer라는 새로운 Vision Transformer(ViT)에 대해 소개한다.
NLP에 쓰이는 Transformer를 CV에 도입할 때 직면하는 어려움이 두 가지 있는데, 하나는 이미지의 변동성이고, 다른 하나는 이미지가 자연어에 비해 큰 해상도를 가지고 있다는 점이다. 이를 해결하기 위해 Microsoft Research 팀은 Shifted Windows를 이용한 계층적 ViT를 제안한다. Shifted Windows는 self-attention을 local하게 적용함으로써 계산 효율성을 높이고, cross-window connection을 통해 localism에 빠지지 않도록 한다.
이 Swin Transformer는 다양한 스케일에서 적용 가능하며, 이미지 크기에 대해 선형적인 계산 복잡도를 가진다. 또한, 다양한 CV 작업에 적용 가능하며, SOTA 성능을 달성하였다. Swin Transformer는 CV뿐만 아니라 MLP에서도 성능 향상을 이끌어 낼 수 있음이 증명되었다.
1. Introduction
CV에서는 CNN 기반 아케텍쳐가 보편적으로 쓰이면서 관련 연구들이 활발하게 진행되었다.
반면, NLP에서는 long-range dependencies를 가진 attention 기반 Transformer라는 획기적인 아키텍쳐가 도입되었다.
이 성공적인 NLP에서의 Transformer 아키텍쳐를 CV에도 도입하려는 연구가 이루어졌고, 실제로 이미지 분류 CV task에서 높은 결과를 얻을 수 있었다.
이 논문에서는 더 일반적인 task를 수행하기 위한 backbone을 위한 Transformer를 소개한다.
NLP에서 높은 성능을 보이는 Transformer를 CV에 도입하기 위하여 고려하여 할 사항이 존재한다.
-
Scale
NLP에서의 토큰과 달리 이미지는 scale이 매우 다양하다. 특히 Transformer는 고정 크기 토큰을 처리하는데 이는 CV에서 적합하지 않다.
-
High Resolution
자연어보다 이미지는 해상도가 훨씬 높다. 이는 Transformer의 O(n^2)의 시간 복잡도를 고려해보면 고해상도 이미지처리는 현실적으로 어렵다.
따라서 MS Team은 Swin Transformer 라는 새로운 backbone 모델을 소개한다.
이는 계층적 feature maps을 가지고, O(n)의 시간복잡도를 가진다.
Swin은 위 그림처럼 작은 patch 크기에서 시작하여 점점 더 큰 patch로 merge해 나간다. 이러한 계층적 feature maps을 통해 고밀도 예측을 할 수 있게 된다.
또한 위 그림에서 빨간색으로 표시한 window 내에서 local 하게 self-attention을 적용함으로써 O(n)의 계산 복잡도를 달성할 수 있다. 각 window안의 patch 개수가 고정되어 있기 때문이다. 이는 기존 ViT가 가진 O(n^2)의 계산 복잡도보다 월등히 좋은 성능을 내므로 Swin이 다양한 CV task에 general하게 이용할 수 있게 한다.
Swin Transformer의 Key design은 연속된 두 self-attion layers 사이의 window partition의 이동이다.
이 window를 shift 시킴으로써 이전 계층을 연결함으로써 모델 성능을 향상시킨다. 또한, 연산 시간 또한 감소시키는데 모든 query patch가 같은 key 집합을 공유하기 때문이다.
window를 나누는 방식은 shifted window와 sliding window가 있는데, shifed window가 비슷한 성능을 보장하며 연산시간이 적다는 것을 보이는 실험 결과가 후에 제시된다.
Swin Transformer는 CV의 다양한 task(image classification, object detection, sematntic segmentation)에서 SOTA 성능을 얻었다. 이렇게 CV, NLP 분야에서 동일한 아키텍쳐를 사용함으로써 SOTA 성능을 얻었다는 점에서 이 Swin은 의의가 있다.
2. Related Work
CNN and variants
CNN은 CV에서 standard하게 사용된 모델이다. AlexNet부터 시작하여 더 깊고 효율적인 CNN 아키텍쳐가 발전되었고, VGG, GoogleNet, ResNet, DenseNet, … 등이 그 예시 이다. 이러한 흐름에서, MS Team은 CV와 NLP 모두에 적용가능한 Transformer 아키텍쳐의 잠재력에 주목하였다.
Self-attention based backbone architectures
NLP 분야에서 self-attention layer과 Transformer 구조의 성공은 ResNet의 CNN layer를 대체하는 연구로 이어졌다. 이 연구에서 local window안의 각 픽셀에서 self-attention을 계산하여 ResNet보다 약간 좋은 성능을 보였으나 매우 큰 compute cost를 지닌다. 이러한 sliding window 말고, MS Team은 shift window 방식을 고안하여 작은 compute cost를 가지게 한다.
Self-attention/Transformers to complement CNNs
또 다른 방향으로는 CNN 기반 모델에 Self-attention layer나 Transformer를 추가하는 것이 있다. object detection과 instance segmentation task에 이러한 기법이 적용되었다. 이는 이 논문의 Swin과 보완적인 연구이다.
Transformer based vision backbones
이 논문에서 다루는 연구와 가장 관련 있는 ViT이다. Transformer 아키텍쳐를 중간 크기의 image patches로 나누어 image classification task를 수행하는 모델이다. 이는 CNN 대비 휼륭한 성능을 보였으나, 대규모 datasets을 필요로 하는 단점이 존재한다. 또한 ViT는 image classification task에는 휼륭한 성능을 보이지만, 다른 CV tasks에는 적절하지 않았다. 그 이유는 O(n^2)의 계산 복잡도 때문이다. 이 논문에서 다룬 Swin은 image classificaion task 뿐 아니라 다른 tasks에도 휼륭한 성능을 보인다.
3. Method
3.1 Overall Architecture
위 그림이 Swin Transformer의 아키텍쳐를 나타낸다.
먼저 RGB image를 patch로 나눈다. 각 patch들은 token으로 취급되며 이는 RGB 값들을 이은 것이다.
MS Team은 4 x 4 patch size를 설정하였고 따라서 feature dimension은 4 x 4 x 3 이다.
Stage 1
이후 linear embedding layer가 적용됨으로써 임의의 차원(C)로 projection 시킨다.
Transformer의 변형인 Swin Transformer blocks이 적용되는데 이때 토큰은 H/4×W/4 크기를 유지하며 linear embedding layer와 함께 Stage 1으로 불린다.
Stage 2
계층적 표현을 위해 token의 수는 patch merging layer를 지날때마다 감소한다.
첫 patch merging layer는 2 x 2 인접 패치를 merge한 뒤 4C 차원 linear layer를 적용한다.
이는 token의 수를 2 x 2 = 4 배 만큼 줄이고, output dimension을 2C로 설정한다.
이후 Swin Transformer Block이 적용되는데 해상도는 H/8×W/8로 유지된다.
이 patch merging과 feature transformation은 Stage 2라 불리며, 이후 Stage 3,4는 반복이다.
이러한 계층적 표현은 CNN의 feature map 해상도와 동일하며, 이 Swin은 다양한 CV task에 적용가능하다.
Swin Transformer block
위 그림에서 볼 수 있듯이 Swin Transformer는 multi-head self attention(MSA)를 shifted windows 기반 MSA로 바꾼 것이다.
Swin Transformer는 shifted window 기반 MSA로 구성되며, GELU non-linearity 활성화 함수를 사용하는 2-layer MLP로 이어진다.
또한 LayerNorm(LN)과 residual connection이 각각 진행된다.
3.2 Shifted Window based Self-Attention
기존 Transformer, ViT는 self-attention은 global하게 self-attention을 수행하므로 O(n^2)의 계산 복잡도를 가진다.
따라서 이를 다양한 CV tasks에 적용하기에는 무리가 있다.
self-attention in non-overlapped windows
계산 효율성을 위해 self-attention in non-overlapped windows를 고안한다.
windows는 균일하게 비중첩 방식으로 배열된다.
h x w patch 일때, window가 M x M patch를 가진다면 기존 global MSA와 window based MSA의 계산 복잡도는 아래와 같다.
기존 MSA는 패치의 수인 hw의 제곱에 비례하고, W-MSA는 hw에 선형인 점을 확인할 수 있으며 이는 W-MSA를 scalable하게 이용할 수 있는 근거가 된다.
Shifted window partitioning in successive blocks
window based self-attention은 window간의 연결이 부족하므로 모델 성능 저하로 이어진다. 따라서 계산 복잡도를 증가시키지 않으면서 window간 연결성을 도입하기 위하여 Shifted window partitioning을 도입한다.
위 사진에서 보듯, 첫 번째 모듈은 좌상단 픽셀부터 시작하는 규칙적인 window partitioning 방식을 사용한다.
반면 다음 모듈은 이전 레이어에서 규칙적으로 분할된 윈도우를 (⌊M/2⌋, ⌊M/2⌋) 픽셀만큼 이동시켜 윈도우 구성 방식을 변경한다.
Shifted window partitioning 방식을 사용하면 위와 같이 연속적인 Swin Transformer Blocks이 계산된다.
여기서 W-MSA는 window based multi-head self-attention을 나타내며, SW-MSA는 shifted window partitioning을 나타낸다.
이 shifted window partitioning 방식은 인접 window간 connection을 도입함으로써 CV의 다양한 tasks에서 효과적임을 확인되었다.
Efficient batch computation for shifted configuration
shifed window partitiong에서 주된 문제는 window 개수가 증가하는 것이다.
원래 구성에서는 ⌈H/M⌉×⌈W/M⌉ 개의 window가 필요하지만 Shifted 구성에서는 (⌈HM⌉+1)×(⌈WM⌉+1) 윈도우가 필요하게 됨으로써, 일부 window는 M x M 보다 작아질 수 있다.
이 문제를 풀기 위하여 해당 window에 padding을 집어 넣는 naive한 방식은 계산량을 증가시킨다는 점에서 바람직하지 못하다.
따라서 좌상단부터 시작하는 cyclic-shifting 방식을 소개하는데, 이는 아래 그림에 나타나있다.
이렇게 window를 shift하게 되면 인접하지 않은 픽셀들이 하나의 window에 속하게 되므로 masking을 통하여 다른 window간에는 self-attention이 수행되지 않게 한다.
이러한 masking 방식을 이용하여 3x3 window를 2x2 window 처럼 처리할 수 있으므로 효율적이다. 마지막으로 reverse cyclic shift를 통하여 이미지를 원상태로 되돌린다.
Relative position bias
self-attention 계산은 다음과 같이 이루어진다.
여기서 추가된 B는 relative position bias이다. 이러한 relative position bias를 사용하는 것은 미사용, absolute position bias 대비 유의미한 성능 향상을 보이는 것이 실험을 통해 입증되었다.
3.3 Architecture Variants
Swin-B는 ViT/DeiT-B와 유사한 모델 크기와 계산 복잡도를 가지게 세팅되었다.
또한 Swin-T,S,L도 도입되었는데 각각 0.25,0.5,2배인 모델이다.
window 크기는 M=7로 세팅되었으며 각 query의 차원은 d=32이다.
4. Experiments
성능 측정을 위해 ImageNet-1k image classification, COCO object detection, ADE20K semantic segmentation 을 진행하였다.
Swin을 SOTA들과 비교하고 Swin의 중요 design을 분석한다.
4.1 Image Classification on ImageNet-1K
image classification을 위해 ImageNet-1K를 밴치마킹한다. 두 가지 방법이 고안되었는데,
- ImageNet-1K training
- Pre-training on ImageNet-22K and fine-tuning on ImageNet-1K
이다.
위 표애서 볼 수 잇듯이 Swin은 SOTA(CNN,ViT)를 뛰어넘는 성능을 보이며, 더 큰 데이터셋으로 pre-training 했을때 우수한 성능을 보임을 알 수 있다.
4.2 Object Detection on COCO
Settings
Object detection과 instance segmentation은 COCO 2017 dataset을 기반으로 측정되었다.
COCO 2017 dataset은 training, validation, test-dev image로 나뉜다.
Swin을 다른 모델과 비교하는 실험 결과가 아래에 제시되어 있다.
위 표 (a),(b)를 보면 Swin-T가 높은 성능을 보이는 것을 확인할 수 있다.
또 (b)를 보면 DeiT-S는 FPS가 낮은 것을 확인할 수 있는데, 이는 이차 계산 복잡성에서 기인하였다.
표 (c)는 SOTA와 비교한 것인데, swin-L이 최고 성능을 보이는 것을 확인할 수 있다.
4.3 Semantic Segmentation on ADE20K
Semantic Segmentation에는 ADE20K를 사용하였다.
여기서 Swin은 SOTA의 성능을 보이는 것을 확인할 수 있다. 또한 기존 ViT 기반인 DeiT와 비교하여 더 높은 성능을 보이는 것을 알 수 있다.
4.4 Ablation Study
Swin의 주요 design들을 제거하는 실험을 통해 그 중요성을 입증한다.
Shifted windows과 relative position bias가 의미가 있음을 알 수 있다.
여기서 shifted window cyclinc이 navie padding보다 속도가 빠른 것을 확인할 수 있다.
또한 높은 정확도를 가짐을 확인할 수 있다.
또한 Transformer의 가장 빠른 아키텍쳐인 Performer보다 빠르고 더 정확한 것을 확인할 수 있다.
5. Conclusion
이 논문은 Swin Transformer라는 새로운 ViT를 소개한다. 이는 계층적 feature representation과 선형 계산 복잡도를 가지며 다양한 CV Task에서 SOTA 성능을 거둔다. shifted window 기반 self-attention은 CV에서 효과, 효율적인 것이 입증되었으며 CV, NLP 분야를 하나로 묶는 통합 모델링을 장려한다.
Leave a comment