본문 바로가기
딥러닝관련/기초 이론

Swin Transformer

by 머리올리자 2021. 11. 25.

Swin Transformer

 

[기존 ViT 모델의 문제점]

1. Classification problem을 풀기 위한 모델로 제안

2. 이미지를 위한 특성이 ViT에 없음.

3. Token 수가 증가하면 연산량의 quadratic하게 증가

 

 

[Notation]

 

 

빨간 박스 : patch

Local window 사이즈 : 4

(patch의 개수로 계산)

Local window 개수 : 4

 

 

[Local Window]

 

Local Window를 모델에 적용하였다.

 

출처 : https://arxiv.org/pdf/2103.14030.pdf

ViT와는 다르게 계층마다 다른 patch size를 적용

 

기존 ViT보다 더 적은 complexity

 

[class] token을 사용하지 않는다.

 

Method

[1. patch merging]

해상도를 줄여주는 과정

 

 

 

 

[2. Swin Transformer Block]

W-MSA (Window Multi-head Self Attention)

Local Window 안에서 self-attention

 

각각의 patch로 구성된 이미지를 윈도우로 또 나눠서 각 윈도우 안에서 self-attention을 진행

Local Window로 나눈 만큼 self-attention 연산 횟수의 증가

 

서로 다른 window에 대해서 각기 다른 self-attention 수행

 

전체 이미지로 할 때보다 더 많은 작업이 수행됨

 

이를 해결하기 위해

 

Efficient batch computation

 

사진의 원래 이미지 출처 : https://img.etimg.com/thumb/msid-85584610,width-640,resizemode-4,imgsize-29562/4-bitcoin-gold.jpg

Relative Position Bias

 

 

Window size (M) = 3이라면

 

아래의 연산을 거쳐

# Step 1
y_axis_matrix += window_size - 1
x_axis_matrix += window_size - 1

# Step 2
x_axis_matrix *= 2 * window_size -1
relative_position_M = x_axis_matrix + y_axis_matrix

 

24라는 값이 나온이유는 matrix 차원이 (2m-1) x (2m - 1)로 되어 있어서

 

보다 적은 학습 파라미터로 넓은 범위의 relative position을 설정할 수 있음.

 

이후 아래의 값을 더해줘 사용

 

SW-MSA (Shifted Window Multi-head Self Attention)

Local Window 간의 self-attention

 

W-MSA에서 연결되어 있지 않은 부분들이 SW-MSA에서 연결되어 학습

 

 

window 개수가 기존의 개수보다 가로 세로 1개씩 늘어남

 

연산이 비효율적어서 Cyclic shift & Attention mask를 이용하여 W-MSA와 동일한 Window 개수 사용

 

 

 

 

=> 기존의 9개의 window에서 4개의 window로 window 간의 attention을 구할 수 있음.

 

 

다양한 augmentation 및 regularization 필요

 

 

참고

 

https://www.youtube.com/watch?v=2lZvuU_IIMA