[논문 리뷰] Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

YJ·2025년 7월 7일

논문 리뷰

목록 보기
4/6

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

이 논문은 기존 Transformer 기반 비전 모델인 ViT(Vision Transformer)의 한계를 극복하고,

Image Classification은 물론 Object Detection, Segmentation과 같은 dense prediction task에서도 Backbone으로 활용될 수 있는 새로운 구조인 Swin Transformer를 제안한다.

ViT는 입력 이미지를 패치로 분할한 후, 이를 flatten된 시퀀스로 처리하는 구조로, 전역적인 특징만을 고려하여 분류 성능은 우수했지만, 위치 정보나 계층적 특징이 중요한 dense task에서는 구조적 한계를 가지고 있었다.

Swin Transformer는 이를 보완하기 위해:

  • CNN처럼 계층적 feature map을 생성하고,
  • Shifted Window 기반의 Self-Attention을 통해 window 간 정보 교환을 가능하게 하며,
  • 다양한 비전 작업에 범용 Backbone으로 사용될 수 있도록 설계되었습니다.

논문 링크

위 논문을 읽고, 내용을 요약하였다.

Introduction

배경

  • 컴퓨터 비전 분야는 오랫동안 CNN 구조가 지배해왔으며, 모델의 스케일 확대, 더 복잡한 연결 구조, 정교한 컨볼루션 방식으로 지속적으로 발전해 왔다.
  • CNN은 image classification은 물론 object detection, semantic segmentation 등 다양한 비전 작업에서 높은 성능을 발휘하며 backbone으로 널리 사용되어 왔다.
  • 반면 자연어 처리(NLP)에서는 Transformer 구조가 표준이 되었으며, Self-Attention을 통해 긴 거리의 long-range dependencies를 효과적으로 학습할 수 있어 다양한 언어 작업에서 압도적인 성능을 보여주고 있다.
  • 이러한 성공에 자극받아, Transformer 구조를 컴퓨터 비전 분야에 적용하려는 시도가 이어졌고,
    최근에는 image classification과 비전-언어 모델링 분야에서 유망한 결과를 얻고 있다.

문제점 및 시도

  • 본 논문은 Transformer 구조가 컴퓨터 비전에서도 CNN처럼 general-purpose backbone으로 활용될 수 있도록 확장하는 것을 목표로 한다.
  • 그러나 언어와 시각 도메인 간에는 다음과 같은 근본적인 차이가 존재한다
    • 차이점 1: Scale의 다양성
      • NLP에서는 word token들이 거의 고정된 크기로 입력되지만, 비전에서는 물체 크기나 패턴이 스케일에 따라 매우 다양하다.
      • 특히 Object Detection와 같은 작업에서는 다양한 크기의 객체를 정확히 인식해야 하므로 ViT처럼, 고정 크기 패치로 처리하는 방식은 적절하지 않다.
    • 차이점 2: 고해상도 이미지 처리의 어려움
      • Semantic segmentation과 같은 작업은 dense prediction을 필요로 한다.
      • 하지만 Transformer의 Self-Attention 연산은 입력 크기에 대해 O(n²)의 복잡도를 가지기 때문에 고해상도 이미지를 다루기에는 계산적으로 비효율적이다.
  • 이 문제를 해결하기 위해 Swin Transformer라는 새로운 범용 Transformer 백본을 제안한다.
  • 핵심적인 특징:
    • 특징1: 계층적(Hierarchical) Feature Map 생성
      • 입력 이미지를 작은 패치 단위로 나눈 뒤, 깊은 레이어로 갈수록 인접한 패치들을 병합하여 점진적으로 해상도를 줄여나가는 계층 구조를 형성한다.
    • 특징2: 선형 복잡도 (O(n)) Self-Attention
      • 전체 이미지에 global attention을 수행하는 대신, 이미지를 겹치지 않는 local 윈도우로 나눈 뒤, window 내부에서만 self-attention을 수행한다.
      • 각 window 내 토큰 수는 고정되므로, 전체 연산량은 입력 이미지 크기에 대해 선형이다.
    • 특징3: Shifted Window 방식
      • 연속된 self-attention layer 간에 window를 일정 간격으로 shift하여, 서로 다른 window 간의 경계를 넘는 연결을 생성한다.
      • 이를 통해 이전 레이어에서 분리되었던 window 간 정보가 통합되어, 더 강력한 표현력과 전역적 문맥 이해가 가능해진다.
      • 또한, 각 윈도우 내 query들이 공통된 key set을 공유하기 때문에, 하드웨어 관점에서 메모리 접근 효율이 향상되며, 결과적으로 실제 지연(latency)이 크게 감소한다.
      • 기존의 sliding window 기반 self-attention 방식과 비교했을 때, 더 낮은 지연 시간에서 동일하거나 더 우수한 성능을 달성한다.

평가

  • Swin Transformer는 세 가지 대표적인 vision task에서 모두 sota 성능을 달성했다.
    • Image Classification (ImageNet-1K) → Top-1 Accuracy: 87.3%
    • Object Detection (COCO) → Box AP: 58.7 (+2.7↑) → Mask AP: 51.1 (+2.6↑)
    • Semantic Segmentation (ADE20K) → mIoU: 53.5 (+3.2↑)
  • Swin Transformer는 비전과 언어 모델링 모두에 적용 가능한 통합 아키텍처로 확장이 가능하다.

Method

전체 구조

동작 순서

  1. ViT처럼 입력 RGB 이미지를 non-overlapping 패치로 분할한다.
    • 각 패치는 4×4×3 = 48 차원의 raw pixel 벡터로 구성된다.

Stage 1

  1. Linear Embedding layer를 통해 각 패치를 C차원으로 투영한다.
  2. 이러한 패치들에 modified self-attention computation이 적용되고, 이때 transformer block들은 출력 resolution을 (H/4 x W/4) 크기로 유지한다.

Stage 2

  1. hierarchical representation을 위해 network가 깊어짐에 따라 패치 merging layer를 통해 token의 수를 줄인다.
    • 인접한 2×2 패치 그룹의 특징들을 concat한 후, C 차원의 입력을 갖는 linear layer를 적용한다.
    • 이 연산을 통해 해상도는 가로와 세로가 각각 절반으로 줄어 전체 픽셀 수는 1/4로 감소, 토큰 수는 4배 줄고, 출력 feature의 차원은 2C가 된다.
  2. 이후 Swin Transformer block의 입력으로 제공되며, 출력 resolution을 (H/8 x W/8)로 유지한다.

Stage 3, Stage4

  • 동일한 방식으로 Patch Merging 및 Swin Transformer Block을 반복한다.
  • 해상도는 각각 다음과 같이 감소:
    • Stage 3: (H/16 × W/16), 출력 차원: 4C
    • Stage 4: (H/32 × W/32), 출력 차원: 8C

이러한 stage들은 VGG와 ResNet과 같은 CNN network에 hierarchical representation을 만들 수 있다.

따라서 기존의 다양한 vision task (classification, detection, segmentation 등)에 backbone으로 쉽게 대체 적용 가능하다.

Swin Transformer block

  • Swin Transformer Block은 기존 Transformer Block의 Multi-Head Self-Attention (MSA)을 Shifted Window 기반 MSA로 교체한 구조이다.
  • 나머지 구성은 Transformer와 동일하게 유지된다.

구성 요소

  1. LayerNorm (LN)
    • 각 서브모듈(MSA, MLP) 앞에 위치
  2. Window-based Multi-Head Self Attention (W-MSA or SW-MSA)
    • 일반적인 window 혹은 Shifted window 기반의 Self-Attention 수행
    • 블록마다 W-MSA ↔ SW-MSA 번갈아 적용한다. (자세한 내용은 이후에 설명됨)
  3. Residual Connection
    • Attention 모듈 뒤에 더해짐
  4. 2-Layer MLP
    • MLP 사이에는 GELU 활성 함수 삽입
  5. Residual Connection (다시)
    • MLP 뒤에도 잔차 연결

Shifted window based Self Attention

기존 Transformer 구조

  • 각 토큰이 모든 다른 토큰과 관계를 계산하는 Global Self-Attention
  • 이 방식은 토큰 수에 대해 계산 복잡도 O(N²) 비용이 발생한다.
  • 따라서, 고해상도 이미지, Dense Prediction이 필요한 Vision Task에 적용하기에는 비효율적이고 부적합했다.

Self-attention in non-overlapped window

  • Swin Transformer는 기존의 Global Self-Attention 대신, Local Window Self-Attention(W-MSA)을 사용한다.
  • 이미지를 겹치지 않도록 분할된 M × M 크기의 윈도우들로 나누고, 각 윈도우 안에서만 self-attention을 수행한다.

계산 복잡도 비교

  • h × w: 전체 이미지의 patch 수
  • C: feature 차원
  • M × M: 한 윈도우 내 패치 수 (기본 M=7)

Global MSA 계산 복잡도

  • 4hwC² : Query, Key, Value projection (Linear 연산) + Output projection
  • 2(hw)²C : Self-Attention 연산: Query × Keyᵀ (score 계산) + Attention score × Value (출력 계산)
  • (hw)²는 모든 쌍에 대해 attention을 계산하므로 quadratic 복잡도가 발생한다.

Windowed MSA (W-MSA) 계산 복잡도

  • 4hwC² : Query, Key, Value, Output projection (global MSA와 동일)
  • 2M²hwC: 각 window 내에서만 self-attention 계산. window당 M×M 패치만 연산
  • 여기서 M×M은 윈도우 안의 패치 수이므로 attention이 지역적으로만 계산된다.
  • window 하나당 self-attention 연산 복잡도는 O(M⁴C)인데, window 수가 hw/M²개이므로 위와같이 계산된다.

Global self-attention은 토큰 수가 많을수록 계산량이 급격히 증가하여 고해상도 이미지 처리에 비효율적이다.

반면, window-based self-attention은 각 window 내에서만 attention을 수행하므로 계산량이 선형 으로 고해상도에서도 확장 가능 (scalable) 하다.

Shifted window partitioning in succesive blocks

  • 기존 W-MSA는 각 window 안에서만 self-attention을 수행하기 때문에 window간 정보 교류가 불가능하여 모델의 표현력이 제한된다.
  • 이를 해결하기 위해 Shifted Window Partitioning 전략을 도입한다.
  • 연속된 Swin Transformer block 간에 window의 위치를 반 칸씩 shift시켜, 이전 layer의 윈도우들 간 경계를 넘는 attention 연결을 생성한다.
  • 예시 (M = 4일때)
    • 첫 번째 block에서는 4×4 window를 일반적으로 나눔 (top-left 기준).
    • 다음 block에서는 각 윈도우를 (⌊M/2⌋, ⌊M/2⌋)만큼 shift하여 새롭게 나눈다.

연속된 Transformer block간에 계산 예시

  • W-MSA :Window-based Multi-head Self-Attention
  • SW-MSA : Shifted Window-based Multi-head Self-Attention

Efficient batch computation for shifted configuration

  • Shifted window partitioning을 적용하면 원래 ⌈h/M⌉ × ⌈w/M⌉ 개였던 윈도우 수가 (⌈h/M⌉ + 1) × (⌈w/M⌉ + 1)늘어나게 된다.
  • 따라서 일부 window는 M×M보다 작아져서 (예: 이미지 가장자리) padding이 필요하게 된다.

단순한 해결책

  • 작은 window를 M×M으로 패딩한 뒤 attention 연산 시 패딩된 부분을 마스킹하는 방식이다.

→ 하지만 이 방식은 연산량이 크게 증가한다. (예: 2×2 윈도우 → 3×3 윈도우 = 2.25배 계산 증가)

Cyclic shift

  • feature map을 좌상단 방향으로 M/2만큼 이동시켜 기존 window 수를 유지한다.
    • cyclic shift:경계를 넘어간 값들이 반대쪽 끝으로 되돌아오는 방식
  • 이 방식으로 window를 구성하면, 비록 하나의 window 안에 서로 떨어진 부분이 포함될 수 있으나,

→ self-attention은 각 서브 window 내에서만 수행되도록 masking 처리한다.

  • 결론적으로 W-MSA 방식과 window 개수가 같게 유지되어, 연산 효율(낮은 latency)이 높아진다.

Relative position bias

  • Swin Transformer는 self-attention 계산 시,window 내부의 위치 관계를 반영하기 위해 위와 같이 Relative Position Bias를 추가한다.
  • Query-Key 간의 relative position bias를 나타내는 B는 M²xM² 차원으로, 각 축에 대한 상대 위치 범위는[−M+1, M−1]이므로 전체 경우의 수는 (2M−1)×(2M−1)이고, 이를 효율적으로 구현하기 위해 더 작은 크기의 행렬 (2M−1)×(2M−1) 차원의 행렬 B hat을 학습하고, 여기서 값을 가져와 B를 구성한다. (Query - Key의 상대적인 위치 2M - 1 가지)
  • 이는 absolute positional encoding (ViT에서 사용) 또는 위치 정보없이 학습하는 방법보다 성능이 더 좋았다.
  • 학습된 relative position bias는 다른 window 크기로 fine-tuning 시에도 재사용 가능하며 이때에는 bicubic interpolation을 통해 적절히 resizing하면 된다.

Architecture variant

공통 설정

  • Window 크기 M:기본값 7
  • Query dimension d: 32 (head당 쿼리 벡터 차원)
  • MLP 확장 계수: 4 (MLP 중간 hidden dim = 4 × 입력 dim)

모델 버전별 아키텍처

모델명시작 채널 수 CStage별 블록 개수모델 크기 & 연산량비교 대상
Swin-T96[2, 2, 6, 2]0.25x Swin-BResNet-50 / DeiT-S 수준
Swin-S96[2, 2, 18, 2]0.5x Swin-BResNet-101 수준
Swin-B128[2, 2, 18, 2]기준 모델 (ViT-B와 유사)ViT-B / DeiT-B
Swin-L192[2, 2, 18, 2]2x Swin-B대형 모델
  • Stage별 블록 수는 W-MSA와 SW-MSA가 1세트를 이루는 Swin Transformer block 쌍의 개수이다.

Experiments

  • Swin Transformer의 성능을 검증하기 위해 다음 세 가지 주요 Vision task에 대해 실험을 수행했다.
    1. Image Classification: ImageNet-1K
    2. Object Detection: COCO
    3. Semantic Segmentation: ADE20K
  • 이후 실험에서는:
    • 제안한 Swin Transformer의 성능을 기존 SOTA 방법들과 비교하고,
    • Swin 구조 내의 핵심 설계 요소들에 대해 ablation study를 수행했다.

Image Classification on ImageNet-1K

실험 데이터셋

  • ImageNet-1K: 1,000 클래스, 128만 개 학습 이미지, 5만 개 검증 이미지 사용
  • ImageNet-22K: 2만 2천 클래스, 1,420만 개 이미지 (사전학습용)

학습 설정

  1. ImageNet-1K에서 직접 학습
  • Optimizer: AdamW
  • Epoch: 300
  • Learning rate: 0.001 → cosine decay, warm-up: 20 epoch
  • Batch size: 1024
  • Weight decay: 0.05
  • Augmentation: [DeiT 논문] 전략 대부분 사용 ↳ 단, Repeated Augmentation, EMA는 사용하지 않음 (성능 향상 없음)
  1. ImageNet-22K 사전학습 → ImageNet-1K 파인튜닝
  • 사전학습 (22K):
    • Epoch: 90
    • Warm-up: 5 epoch
    • Batch size: 4096
    • Learning rate: 0.001 (cosine decay), weight decay: 0.01
  • 파인튜닝 (1K):
    • Epoch: 30
    • Batch size: 1024
    • Learning rate: 고정 1e-5
    • Weight decay: 1e-8

성능 비교 결과

  1. ImageNet-1K 단독 학습
  • DeiT보다도 비슷한 계산복잡도에서 정확도가 더 우수했다.
  • RegNet과 비교했을때 Swin이 속도-정확도 trade-off에서 더 우수하다.
  • Swin은 architecture search를 거친 RegNet보다 효율적이다.
  1. ImageNet-22K 사전학습 후 파인튜닝

  • Swin-B: ViT보다 +2.4% 정확도↑, FLOPs↓, 추론속도 유사
  • Swin-L: Swin-B보다 추가로 +0.9% 성능↑

Swin Transformer는 ViT, ConvNet 기반 Backbone보다 더 뛰어난 정확도와 효율적인 연산 성능을 보이며, 사전학습을 통한 fine-tuning에서도 성능 향상이 확실했다.

Object Dectection in COCO

데이터셋

  • COCO 2017
    • 학습: 118K
    • 검증: 5K
    • 테스트 (test-dev): 20K

학습설정

  • 적용 프레임워크 (총 4가지):
    • Cascade Mask R-CNN
    • ATSS
    • RepPoints V2
    • Sparse R-CNN
  • 공통 설정:
    • Multi-scale training (짧은 변: 480–800 / 긴 변 최대 1333)
    • Optimizer: AdamW
    • Learning rate: 1e-4
    • Weight decay: 0.05
    • Batch size: 16
    • Epoch: 36 (3x schedule)
  • 모든 실험은 동일한 설정에서 backbone만 교체하여 공정하게 비교하였다.
  • Swin Transformer & ResNe(X)t: 계층적 feature map 제공하기 때문에 detection/segmentation에 직접 적용 가능하였다.
  • DeiT: 단일 해상도 feature map만을 제공하기 때문에 deconvolution layer로 계층적 feature map 구성이 필요했다.

성능 비교 결과

Swin vs ResNet(X)t

  • Swin-T는 ResNet-50 대비 +3.4~4.2 box AP 향상했다.
  • 파라미터 수, 연산량(FLOPs), 지연(latency)은 소폭 증가했다.

  • Swin-B와 ResNeXt101-64x4d 을 비교했을대, 모델 크기 및 계산량은 유사하지만 성능은 현저히 향상되었다.

  • ResNeXt 계열 모델은 CuDNN으로 최적화된 커널 함수를 사용해 추론 속도에서 유리하다.
  • 반면, Swin Transformer는 PyTorch 기본 연산 함수로 구현되어 있어 아직 커널 최적화가 덜 되어 있다.
  • 그럼에도 불구하고, Swin은 객체 탐지 및 마스크 분할 정확도에서 분명한 우위를 보였다.

Swin-T vs DeiT-S (Cascade Mask R-CNN 기반)

  • 유사한 모델 사이즈의 DeiT-S와 비교했을때, Swin-T는 더 빠르고 정확도도 높다.

기존 SOTA 모델과의 성능 비교 (COCO test-dev)

  • Swin-L은 사전학습 외부 데이터 없이도 기존 최고 성능보다 큰 폭으로 향상된 성과를 달성했다.

Semantic Segmentation on ADE20K

데이터셋

  • ADE20K: 150개 semantic category, 총 25,000장 이미지
    • Train: 20K
    • Val: 2K
    • Test: 3K

학습설정

  • Base framework: UperNet

성능 비교 결과

비교 대상성능 차이 (mIoU)요약
Swin-S vs DeiT-S+5.3↑ (49.3 vs 44.0)유사 연산량 대비 큰 향상
Swin-S vs ResNet-101+4.4↑기존 CNN보다 우수
Swin-S vs ResNeSt-101+2.4↑최신 CNN보다도 우위
Swin-L vs SETR-Large+3.2↑ (53.5 vs 50.3)더 작은 모델로 SOTA 달성

Ablation Study

  • Swin Transformer 구조 내의 핵심 설계 요소 요소들이 ImageNet-1K, COCO, ADE20K에서 어떤 영향을 주는지 분석하였다.

Shifted Window의 효과

  • window 간 상호작용 강화로 전반적 성능 향상되었다.
  • shifted window로 발생하는 latency는 미미했다.

Relative Position Bias의 효과

  • absolute position embedding은 classification에는 효과적이나 detection/segmentation에서는 성능이 저하되었다.
  • Relative Position Bias는 세 가지 task 모두에서 성능이 향상되었다.

Self-Attention 구현 방식 속도 및 정확도 비교

  • Cyclic shift 구현 방식은 특히 깊은 layer에서 naive padding 방식보다 더 효율적이며, Performer보다도 빠르면서 더 높은 정확도를 보였다.
  • Shifted window 방식은 Performer 대비 +2.3% 더 높은 ImageNet top-1 정확도를 기록했다.
  • Sliding window 방식과 유사한 정확도를 유지하면서도, 연산 속도는 훨씬 더 빠르다.

Conclusion

  • Swin Transformer는 이미지 크기에 따라 계산량이 선형적으로 증가하는 효율적인 구조와 함께, CNN처럼 hierarchical feature map을 생성할 수 있는 새로운 vision transformer이다.
  • 이 덕분에 기존 transformer가 어려움을 겪었던 object detection과 semantic segmentation과 같은 고해상도 vision task에서도 sota 성능을 달성했다.
  • 향후 비전과 언어를 아우르는 통합 Transformer 구조로의 확장 가능성도 시사한다.
profile
제 글이 유익하셨다면 ♡와 팔로우로 응원 부탁드립니다.

0개의 댓글