Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

2021. 6. 10. 11:22딥러닝

arxiv, github, twitter(저자 아님), Microsoft

참고 : 다음에 나온 Scaled-YOLOv4가 이 논문 이김.

요약

vision이 language와 차이점

1) large variation 2) high resolution

shifted windows를 도입한 계층적 transformer를 제안함.

shifted windows는 non-overlapping한 windows를 연결함.

장점 : 1) various scale에 가능 2) O(n), n : image size

Introduction

앞선 sliding windows방식의 self-attention은 low latency임.

우리 논문에서는 all query patch가 같은 key를 공유함. -> latency 해결.

가장자리를 cross함.

Related work

Transformer based vision backbones

ViT는 non-overlapping medium-sized image patches로 구성됨.(오직 classification을 위해서)

그리고 데이터셋이 커야함.

DeiT는 작은 데이터셋에서도 ViT를 학습 가능하게 만듦.(ImageNet-1K)

그러나 ViT모델은 Dense Vision Task(=detection+segmentation)에는 적합하지 않음

이유 : 1) low-resolution feature mapping 2) O(image_size^2)

Swin Transformer : speed-accuracy trade-off

[Pyramid vision transformer: A versatile backbone for dense prediction without convolutions.]에서 multi-resolution방법 사용했지만 O(image_size^2).

Method

patch size = $4 \times 4 \times 3=48$($3$은 RGB)

$1$ windows = $M \times M$ patches.

Non-overlap

Non-overlap

Shifted window partitioning

Two successive Swin Transformer Blocks

shifted window partitioning

mask out the padded values를 안하고 위처럼 함.

cyclic-shift가 batched windows의 수를 일반 window partitioning과 같게 유지함. 매우 효율적.(low latency)

Relative position bias

$B\in \mathbb{M^2 \times M^2}$

position embedding을 input에 넣었더니 성능 떨어짐. 그래서 뺐음.

의문점 : $B$ 는 훈련이 되는건가?

Architecture Variants

$C$ : 첫번째 hidden layer의 channel수 Tiny, Small, Base, Large

Experiments

Classification

 

Object detection Copy-paste도 있다! HTC++[ Hybrid task cascade for instance segmentation] : improved HTC : instaboost+strong multi-scale+72epochs+soft-NMS+ImageNet22K-pretrained
Segmentation

Abaliation study

 

Shifted windows 뺐다 넣었다 position embedding
FPS, 다른 method도 적용

 

donaricano-btn