[2025-1] 임재열 - Swin Transformer
Swin Transformer는 2021년 Ze Liu 등이 제안한 모델입니다.
[Swin Transformer]
https://arxiv.org/abs/2103.14030
Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
This paper presents a new vision Transformer, called Swin Transformer, that capably serves as a general-purpose backbone for computer vision. Challenges in adapting Transformer from language to vision arise from differences between the two domains, such as
arxiv.org
<Swin Transformer>
* Abstract
1. 이 논문은 Swin Transformer라는 새로운 비전 트랜스포머를 제안하며, 컴퓨터 비전을 위한 범용 backbone으로서의 역할을 수행할 수 있음을 보여줍니다.
2. Shifted Windowing 방식은 서로 겹치지 않는 로컬 윈도우 내에서 Self-Attention 계산을 제한하여 효율성을 높이는 동시에, 윈도우 간 연결을 가능하게 합니다. 이 계층적 아키텍처는 다양한 스케일에서 모델링할 수 있는 유연성을 가지며, 이미지 크기에 대해 선형적인 계산 복잡도를 가집니다.
3. Swin Transformer는 COCO에서 이전 State-of-the-Art를 +2.7 Box AP와 +2.6 Mask AP로, ADE20K에서는 +3.2 mIoU로 크게 능가하며, 트랜스포머 기반 모델이 vision backbone으로서 가진 잠재력을 입증합니다.
* Introduction
1. 하지만 언어 도메인에서의 뛰어난 성능을 비전 도메인으로 전이하는 과정에서 몇 가지 중요한 도전 과제가 발생합니다. 그 중 하나는 스케일 문제입니다. 트랜스포머의 언어 모델에서는 단어 토큰이 처리의 기본 단위로 사용되지만, 비전에서는 시각적 요소의 크기가 매우 다양하며, 이는 객체 탐지와 같은 작업에서 큰 과제로 부각됩니다. 기존의 트랜스포머 기반 모델에서는 모든 토큰이 고정된 크기로 처리되며, 이는 비전 작업에 적합하지 않습니다.
2. 또 다른 차이는 픽셀의 높은 해상도입니다. 텍스트에서 단어의 밀도와 비교할 때 이미지 픽셀은 훨씬 높은 해상도를 가지며, semantic segmentation과 같은 작업에서는 픽셀 수준의 예측이 필요합니다. 그러나 트랜스포머는 self-attention의 계산 복잡도가 이미지 크기의 제곱에 비례하므로, 고해상도 이미지에 대한 처리에 비효율적입니다.
3. 이를 해결하기 위해, 우리는 Swin Transformer라는 범용 트랜스포머 backbone을 제안합니다.
* 작은 크기의 패치에서 시작하여 더 깊은 트랜스포머 계층으로 진행하면서 인접 패치를 병합하여 점진적으로 계층적 표현을 구성
* 이미지 분할을 위해 서로 겹치지 않는 로컬 윈도우 내에서 self attention을 계산함으로써 선형 계산 복잡도 달성
* self attention 계층 사이에서 윈도우 분할을 shift하는 방식으로 이전 계층의 윈도우를 연결하여 모델링 능력을 크게 향상
* Method
1. Overall Architecture
- Swin-T(Tiny version)
1. 입력 RGB 이미지를 ViT와 유사하게 패치 분할 모듈을 사용하여 겹치지 않는 패치로 분할
→ 각 패치는 token으로 처리
→ feature는 raw pixel RGB 값의 concatenation
→ patch size: 4 x 4
→ feature dimension of each patch: 4 x 4 x 3 = 48
[Stage 1]
2. raw-valued feature에 linear embedding 레이어 적용
→ 차원 C로 임베딩
3. Swin Transformer block 적용
→ token 수 유지: H/4 x W/4
[Stage 2]
4. 계층적 표현을 생성하기 위해 네트워크가 깊어짐에 따라 token 수 감소
→ 패치 병합 레이어 적용
→ 2 x 2 인접 패치 그룹의 feature를 concatenation: token 수 4배 감소
→ 4C 차원에 linear 레이어 적용, 출력 차원 2C 설정
5. Swin Transformer block 적용
→ 해상도 유지: H/8 x W/8
[Stage 3, 4: Stage 2 반복]
6. Stage 3: 해상도 H/16 x W/16
7. Stage 4: 해상도 H/32 x W/32
- Swin Transformer block
→ 표준 트랜스포머 블록에서 multi-head self attention(MSA) 모듈을 Shifted Window 기반 MSA 모듈로 대체
→ MSA 모듈 뒤에 2층 MLP 모듈 (MLP 모듈 사이에 GELU 활성화 함수)
→ 각 MSA 모듈과 MLP 모듈 앞에는 LayerNorm layer 적용, 모듈 뒤에는 Residual connection 적용
2. Shifted Window based Self-Attention
- Self-attention in non-overlapped windows
→ Global self attention이 아니라, local window 내에서 self attention을 계산하는 방법 제안
→ Window는 이미지 전체를 겹치지 않는 방식으로 균일하게 분할
→ M x M 패치 가정 시, h x w 패치를 가진 이미지에서 Global MSA과 Winodw MSA 계산 복잡도
* Global MSA: 제곱 복잡도
* Window MSA: 선형 복잡도
- Shifted window partitioning in successive blocks
→ Window MSA의 window 간 연결 부족을 해결 하기 위해, Shifted Window partitioning 방식 제안
→ W-MSA: regular window partitioning strategy (8 x 8 feature map to 2 x 2 windows)
→ SW-MSA: 첫 번째 모듈에서 (\floor{M/2}, \floor{M/2}) 만큼 shift한 윈도우로 분할 (M: window size)
→ 연속적인 Swin Transformer 블록에서 W-MSA와 SW-MSA 번갈아 사용
- Efficient batch computation for shifted configuration
→ SW-MSA 문제점: 일부 window의 크기가 M x M 크기보다 작아질 수 있음
→ 단순한 해결책으로 padding 후 masking이 존재, but 계산량과 메모리 사용량 크게 증가
→ 상단 왼쪽 방향으로 cyclic-shifting을 수행한 뒤, masking mechanism 사용
* batched window 개수가 정규 분할과 동일하게 유지되어 계산 효율성 확보 가능
- Relative Position Bias
→ 자기 어텐션을 계산할 때 상대적 위치 바이어스 B∈R^{(M^2)×(M^2)} 를 포함
→ 각 축의 상대적 위치는 [−M+1, M−1] 범위에 존재
→ 따라서 더 작은 크기의 bias 행렬 B∈R^{(2M-1)×(2M-1)}로 매개변수를 설정하여 B의 값을 B^에서 가져와 사용
→ window 크기 (M, M) 가 feature map 크기 (h, w)로 나누어 떨어지지 않을 경우, feature map맵의 오른쪽 아래에 padding
→ Relative Position bias 추가 시 이를 사용하지 않거나 absolute position embedding을 사용하는 경우보다 성능 크게 향상 (Table 4)
→ pre-training에서 학습된 relative position bias는 bi-cubic interpolation을 통해 다른 winow 크기로 fine-tuning할 때 사용 가능
3. Architecture Variants
- Swin-B: 기본 모델
- 모델 크기와 계산 복잡도가 각각 0.25배: Swin-T, 0.5배: Swin-S, 2배: Swin-L
- 기본 window 크기 M = 7, 각 헤드의 차원 d = 32, 각 MLP의 expansion layer 비율 \alpha = 4
- C: 첫 번째 단계에서 hidden layer의 채널 수
* Experiments
1. Image Classification on ImageNet-1K
- ImageNet-1K dataset: 1.28M training images, 50K validation images from 1000 classes
- 기본 ImageNet-1K model, ImageNet-22K로 pre-trained 후 ImageNet-1K로 fine-tuning한 model
2. Object Detection on COCO
- COCO 2017 dataset: 118K training images, 5K validation images, 20K test-dev images
3. Semantic Segmentation on ADE20K
- ADE20K dataset: 150 categories, 20K training images, 2K validation images, 3K test images
4. Ablation Study
- Shifted Window 효과
* ImageNet-1K: top-1 accuracy +1.1% 향상
* COCO: Box AP +2.8, Mask AP +2.2 향상
* ADE20K: mIoU +2.8 향상
- Relative Position Bias 효과
* ImageNet-1K: top-1 accuracy +1.2%/+0.8% 향상
* COCO: Box AP +1.3/+1.5, Mask AP +1.1/+1.3 향상
* ADE20K: mIoU +2.3/+2.9 향상
- Self-Attention 방식 비교
* Shifted Window 효율성 > Sliding Window 효율성
* Swin-T에서 4.1배, Swin-B에서 3.6배 빠르며 정확도는 비슷하거나 더 우수