AI

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

마농농 2025. 2. 19. 18:00

0. Swin Transformer: Hierarchical Vision Transformer using Shifted Windows [Liu et al., 2021]

[원문 링크]

https://arxiv.org/pdf/2103.14030

 

[참고 영상]

https://www.youtube.com/watch?v=SndHALawoag


1. 기존 ViT의 한계 : Computational bound

  • ViT에서 큰 patch를 사용하면 이미지 주요 정보를  classification하는 작업에는 적절함
    • 예. 이미지 전체를 하나의 label로 예측하는 경우
  • 하지만, 일부 task에서 image를 pixel단위의 세밀한 정보로 처리해야 할 필요가 있음
    • 예로, 이미지 내부에 있는 작은 사람
    • 이런 task를 Semantic Segmentation이라 함
      • 각 pixel이 어떤 class에 속하는지 결정하는 것
    • 이 경우 16*16 patch size는 너무 커서 1*1 patch size (piexl 단위)로 처리해야 함
      • 256*256 piexel image는 (256/16)*(256/16), 즉 63,000개 이상의 토큰을 다루어야 함
      • 이 정도까지는..괜찮지만! 만약 full hd 이미지 (1920*1080)라면 200만개 이상의 토큰을 다루어야 함
      • 게다가 4k이미지라면 불가능
  • 결론 : pixel size 로 patch를 결정하면, image에서 생성되는 token수가 기하급수적으로 증가 -> 계산량 폭증

2. Solution : Swin Transformer

  • Swin Transformer explained
    • 1) image를 4*4 patch size로 분할
      • ex. 16*16 image -> 4*4=16 patches
    • 2) linear projection : 각 patch를 C 차원 vector로 변환
      • BERT에서 착안된 방법, Swin-Tiny 는 96, Large는 1922
      • ex. 각 patch를 C=4로 변환하면, 1 patch = [x, x, x, x] 로 새롭게 벡터로 변환됨 
    • 3) 각 patch는 특정 개수 M개의 이웃 patch 끼리만 상호작용하도록 제한됨
      • 일반 Transformer와 중요한 차이점
        • 일반적으로, 모든 patch가 서로 attention하게 되면서 하나의 patch가 이미지 내의 모든 patch와 상호작용, 즉 정보 공유를 함
        • Swin Transformer는 이 상호작용이 제한됨
      • Transformer vs Swin의 computation 차이, self-attention: O(n^2) vs O(M*n)
        • 기존 transformer, quadratically scaling attention computation with the sequence length
          • n개의 token이 n개와 상호작용
        • swin은 첫 번째 image token이 M 범위 밖의 다른 patch와 연결되지 않은 것처럼 동작
          • 연산량은 M에 비례해서 증가, Linear하게 증가함

지금까지의 과정 그림 / patch vector의 표현력이 증가하여 더 넓은 영역의 정보를 포함할 수 있도록 설계 https://www.youtube.com/watch?v=SndHALawoag

  • 이 과정을 반복적으로 진행

  • Problem : window기리 information exchange x
  • Solution  add shift operation

기존에 정보 교환이 되지 않은 patch들이 다음 layer로 가면서 정보 교환이 됨, by window shift (그림 설명 : layer l의 빨간 patch들의 영역끼리 정보 교환 -> 다음 layer l+1에서 파란 patch들과 정보 교환이 됨)