Swin Transformer 개요
기존의 한계
언어와 비전, 두 Modality 간의 차이
- 스케일
- 언어와 달리 이미지에는 다양한 '물체의 크기' 요소가 존재 - 해상도
- 단어로 구성된 문장은 그 길이가 상대적으로 짧음, 반면 이미지는 비교적 높은 해상도를 가짐
- 세밀한 예측이 필요한 Sementic segmentation 등의 다양한 비전 task 존재
- Self-attention 계산 복잡도가 이미지 크기의 제곱에 비례하므로 고해상도 이미지 처리는 어려움
이러한 문제를 극복하기 위해 Swin Transformer 제안
- 이미지 분류, Object Deteciton, Sementic Segmentation 등의 범용 Backbone으로 사용할 수 있음
의의
(자세한 내용은 아래 구조에 대한 설명에서 더 자세하게 알아보자)
1. 계층적 Feature map을 통해 '계층적 표현'이 가능해지고, '선형 계산 복잡도'를 달성했다.
- 기존 ViT는 단일 해상도의 Feature map을 생성하고, 2차 복잡도를 가짐
→ 이미지 특성이 고려되지 않은 모델, 해상도에 따라 연산량이 2차 증가 형태 - CNN의 Pooling 구조를 Transformer에 도입, 줄어든 해상도에서 Attention 연산을 수행하므로 속도적 이점
2. Shifted window 방식을 통해 모델링 능력을 크게 향상했다.
- 기존의 Sliding window 방식과 비교해 지연 시간이 훨씬 짧지만 모델링 능력은 비슷
- 전체 이미지 패치에 대해 연산하는 ViT에 비해서 속도가 빠름
- Shift Windows 방식으로 각각의 윈도우끼리 Attention 연산을 수행함으로써 전역적 정보 집계
Swin Transformer 구조
Strage 구조
입력 이미지 : (H, W, 3)
Patch Partition
- Patch 크기 : 4 x 4
- ViT와 동일한 방식으로 이미지를 겹치지 않게 각각의 이미지 패치로 나눔
- 각 패치의 feature 차원은
Stage 1
- Linear Embedding
- Transformer 학습을 위해 사용자가 정의한 C차원으로 매핑 - Swin Transformer Block
- 2개로 구성된 Swin Transformer Block으로 입력되어 동일한 차원 출력
Stage 2
- Patch Merging
- 해상도가 줄어듦 - Swin Transformer Block
- 2개로 구성된 Swin Transformer Block으로 입력되어 동일한 차원 출력
Stage 3, 4
- Stage 2와 동일
- Swin Transformer Block 개수만 다름
(Patch Merging과 Swin Transformer Block의 자세한 구조는 뒤에서)
Patch merging
특징
- 계층적 표현을 생성하기 위해, 네트워크가 깊어짐에 따라 패치 병합으로 토큰 수를 줄인다.
Patch merging 수행
- Stage 1의 출력인 𝐻/4 ∗ 𝑊/4 ∗ 𝐶 의 차원을 2 * 2 그룹으로 나눔
- 그룹의 각각은 𝐻/8 ∗ 𝑊/8 ∗ 𝐶 의 차원을 가지고, 4개의 그룹을 각채널을 기준으로 병합(Concat).
- 병합된 𝐻/8 ∗ 𝑊/8 ∗ 4/𝐶 의 차원 축소를 위해 절반인 2𝐶의 차원으로 축소
- 위 과정들은 모든 Stage에서 동일하게 작용
ㄴ[Swin Transformer Block]
특징
- 기존 Transformer의 MSA(Multi-head self-attention) 모듈을 Shifted window를 기반으로 하는 모듈로 교체하고 다른 레이어는 동일하게 유지한다.
- 이 블록은 Shifted window 기반 MSA 모듈과 GELU 활성화 함수가 포함된 MLP으로 구성된다.
* MLP(Multi-layer perceptron) : ViT와 동일하게 2개의 완전연결 계층(Fully Connected Layer)과 GELU 활성화 함수(Activation)를 적용 - 각 모듈 이후 Residual connection(잔차 연결)을 적용한다.
Swin Transformer Block 전체 계산
- 두 가지 MSA가 연산
- W-MSA
- SW-MSA - MLP, LN, Residual connection은 기존과 동일하게 적용
Window - MSA
Local Window를 모델에 적용했다.
- 윈도우 안에서 attention 연산을 수행
- 4개의 Stage를 지나며 패치의 크기가 4배씩 커지고, 패치의 개수는 1/4로 줄어듦
- 장점 : 기존 ViT에 비교하여 다양한 계층과 해상도 가짐
→ Segmentation, Detection task에 적합한 Backbone 형태
수식
* Ω 기호는 연산에 얼마나 시간이 걸리는지 측정한 기준
- (1) ViT
- 해상도에 따라 2차원적으로 계산량이 증가
- 해상도가 올라가면 계산량이 기하급수적으로 증가 - (2) Swin Transformer
- 윈도우의 크기는 보통 7로 고정(상수 취급)
- hw의 크기에서만 선형적으로 계산량이 증가하기 때문에 계산적인 이점
- ViT보다 더 적은 complexity로 학습
서로 다른 Window에 대해 각기 다른 self-attention 수행
Shift window - MSA
특징
- 연산 속도의 이점이 있다.
- Window 끼리의 상호작용을 충분히 할 수 있게 한다.
- ↔ 단순히 Window로 쪼개서 연산하는 방식은 연산속도에 큰 이점이 있지만, Window 끼리의 상호작용이 부족하다.
Shift window 수행
- ⌈ℎ/𝑀 ∗ 𝑤/𝑀⌉ 개의 Window들에 대해 각각 독립적으로 Self-attention을 시행한다.
- 이후 ⌈(ℎ/𝑀+1)⌉ * ⌈(𝑤/𝑀+1)⌉ 개의 추가적인 Windows로 나눠 각각 독립적으로 Self-attention을 추가적으로 시행한다.
Windows를 나누는 방식ex)
- 기존 윈도우 크기 M이 4라고 할 때, 2 x 2의 윈도우가 3 x 3 윈도우로 늘어난다.
- 중앙에 하나의 Window를 배치하고, 연이어 상하좌우-대칭에 배치하여 분할한다.
- 2 * 2의 windows가 3 * 3으로 늘어남에 따라 2.25배 정도의 계산량을 요구한다.
→ 본 논문에서는 이러한 추가적인 계산을 거의 요구하지 않는 Cyclic-shifting 방식 제안
Cyclinc-shifting
- 기존 Window 파티션에서 좌상단 부분을, 우하단으로 Cyclic-shifting
- 중복 Attention 연산을 제한하기 위해 Masked self-attention을 진행
- 위 그림에서 같은 색으로 칠해진 부분은 기존 2 * 2 Windows에서 Self-attention이 수행된 것 - 최종적으로 cyclic shift에서 연산 진행 후, 원래대로 reverse cyclic shift로 돌려놓음
장점
- 중복 연산을 제한함
- 기존과 동일한 계산량의 연산 진행
- 3 * 3 windows로 늘린 만큼의 계산량을 요구하는 것이 아닌, 기존과 같은 2 * 2 windows만큼의 계산량의 연산 수행
Attention Mask
Attention Mask가 적용되는 부분
- Q행렬과 K^T 행렬의 내적값을 K벡터 차원의 제곱근으로 나눈 후, Position Bias를 더한 후, Attention Mask 적용
- Q행렬과 K^T 행렬의 내적값이 M^2 x M^2 의 크기를 가지므로, Attention Mask도 동일한 형태로 입력
이 과정을 더 자세하게 살펴보자
- Mask 내부에서 self-attention을 수행한다 : M**2 x M**2 크기의 행렬
- Mask 하나의 크기 : M**2
- Mask 내부에서의 self-attention이므로 M**2 x M**2 크기가 됨 - 이 행렬과 동일한 크기의 Attention Mask 행렬을 더해준다.
Attention Mask의 특징
- 효과
- Mask 처리된 부분(-100) : self-attention이 수행되지 않게 함
- Mask 처리되지 않은 부분(0) : self-attention이 수행되게 함
Relative position bias
Q의 위치를 기준으로 K의 상대적인 위치를 이용해 위치 임베딩으로 더해준다.
특징
- 기존의 Absolute Position Embedding을 대체하는 Relative Position Bias 방식을 도입했다.
- Absolute Position Embedding : ViT에서 Positional Encoding 방식
- Relative Position Bias : patch들간의 상대좌표를 더해주는 것 - 이전의 위치 임베딩 방식보다 좋은 성능을 보임
- 이미지에서는 절대적인 위치보다 patch 간의 상대적인 위치가 object를 파악하는데 더 도움되는 것으로 보임
Relative Position Bias(B) 구하는 방법
(논문에는 나와있지 않아서 코드를 보고 해석)
- x축 : 동일한 행끼리는 같은 거리로 봄, 나머지는 행을 기준으로 계산
- 좌측값이 우측값 다음 행에 존재 : -1
- 좌측값이 우측값 이전 행에 존재 : +1 - y축 : 동일한 열끼리는 같은 거리로 봄, 나머지는 열을 기준으로 계산
- 좌측값이 우측값 다음 열에 존재 : -1
- 좌측값이 우측값 이전 열에 존재 : +1
(아래 예시는 Window size M이 3인 경우)
- 아래의 알고리즘에 따라 Bias Matrix 값의 범위를 [−M+1,M−1] 로 부여 * 범위의 크기 : (2M-1) x (2M-1)
- Pelative Position Bias를 x축 기준으로 한 이유 (추측)
- 물체는 대체로 상하 대칭보다 좌우 대칭이 많음
- y축 기준으로 realtive를 주는 것보다 x축을 기준으로 주는 것이 더 효과적이라 생
- 이렇게 구한 Relative Position Bias 값을 더해준다.
Swin Transformer 실험 & 결과
모델 버전
- 각 모델 크기와 계산 복잡도가 서로 다름
- Swin-T와 Swin-S는 비교적 가벼운 모델로, ResNet-50 (DeiT-S)와 ResNet-101에 상응하는 복잡도
- Swin-B와 Swin-L은 더 큰 모델로, 더 많은 계산 자원을 필요로 하지만 더 높은 성능을 기대 - ViT-B/DeiT-B와 유사한 크기를 가지는 Swin-B를 기준
- Swin-T, Swin-S, Swin-L은 각각 Swin-B보다 약 0.25배, 0.5배, 2배의 모델 크기와 계산 복잡도를 가짐
- 다양한 변형 모델들은 ImageNet 이미지 분류 작업에서 서로 다른 모델 크기, 이론적인 계산 복잡도(FLOPs), 처리량(throughput)을 가짐
기본 설정 및 하이퍼파라미터
- 첫 번째 스테이지의 Hidden Layer의 채널 수
실험
Vision Task
- Classification
- Object Detection
- Semantic Segmentation
그 외 실험
- Relative PositionalBias 여부
- Shifted Window 여부
- Window적용 방법에 따른 속도 비교
- Sliding Window와 Shifted Window비교
Classification
(a) Regular ImageNet-1K trained models (1,000개 클래스)
- 비슷한 파라미터를 가진 모델 중, FLOPs가 가장 낮으며 정확도는 가장 높음
- 속도와 정확도 간에 더 나은 Trade-off를 가짐
- 모든 구조가 Transformer로 구성되었기 때문에 더 나은 향상을 만들어낼 수 이는 잠재력 지님
(b) ImageNet-22K pre-trained models (21,000개 클래스)
- Transformer의 특성에 맞게 많은 데이터에 대한 사전 학습을 시키니 성능이 CNN 모델과 기존 모델과 대비하여 향상
Object Detection & Semantic Segmentation
그림1, 2 : Object Detection 실험 결과
- 비슷한 크기의 모델과 비교했을 때 정확도, 추론 속도, 계산 복잡도 등에서 이점
그림 3 : Semantic Segmentation 실험 결과
- 적은 파라미터로 더 높은 성능 향상
Shifted Window & Relative PositionalBias 여부
Shift Window
- Shifted Window를 사용하면 성능 향상
- Window간 관계를 학습하는 것이 Vision Task 성능 향상에 도움 - 게다가 추가적인 지연 시간을 거의 유발하지 않음
Relative Position Bias
- Relative Position Bias(상대적 위치)는 Absolute Position Embedding(절대적 위치) 사용 대비 성능이 우수
- Absolute Position Embedding
- image classification 성능은 약간 향상
- Object Detection과 Semantic Segmentation 성능을 저하 - 귀납적 바이어스(inductive bias)가 여전히 Vision Task에서 효과적임을 알 수 있음
Window적용 방법에 따른 속도 비교 & Sliding Window와 Shifted Window비교
Window적용 방법에 따른 속도 비교
- Cyclic 구현은 깊은 단계에서 특히 효율적이며, 전체적으로 Swin-T, Swin-S, Swin-B 모델에서 속도 향상
- Shifted Window 기반 자기-어텐션은 Sliding Windows 기반 모델 대비 훨씬 더 효율적 & Swin Transformer 아키텍처 전체에서 속도 향상
- Performer와 비교했을 때, Swin Transformer는 약간 더 빠르면서도 더 높은 정확도
Sliding Window와 Shifted Window비교
- Shifted Window 기반 Self-attention은 Sliding Windows 기반 모델 대비 훨씬 더 효율적
- Swin Transformer 아키텍처 전체에서 속도 향상
참고자료
https://arxiv.org/pdf/2103.14030
https://github.com/microsoft/Swin-Transformer
GitHub - microsoft/Swin-Transformer: This is an official implementation for "Swin Transformer: Hierarchical Vision Transformer u
This is an official implementation for "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows". - microsoft/Swin-Transformer
github.com
[논문리뷰] Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
소개 오늘 리뷰하는 논문은 Swin Transformer(Swin)입니다. 이 논문은 Vision Transformer(ViT)의 후속작이라고 보시면 될 것 같습니다. 그렇기 때문에 ViT 기반으로 모델이 동작하는 부분이 대다수이기 때문
lcyking.tistory.com
[Computer Vison] Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
Swin Transformer 논문 리뷰 및 요약
velog.io
https://kimjy99.github.io/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0/swin-transformer/
[논문리뷰] Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
Swin Transformer 논문 리뷰 (ICCV 2021)
kimjy99.github.io
[논문 리뷰]Swin Transformer : Hierarchical Vision Transformer using Shifted Windows
Swin Transformer : Hierarchical Vision Transformer using Shifted Windows year : 2021 Code : https://github.com/microsoft/Swin-Transformer Method Over
velog.io
'Computer Vision > 논문 리뷰' 카테고리의 다른 글
[논문 리뷰] ViT(Vision Transformer), An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (0) | 2024.05.16 |
---|