[논문리뷰]Swin Transformer 논문 설명
논문리뷰

[논문리뷰]Swin Transformer 논문 설명

728x90

개요

Swin Transformer는 2021년 3월에 마이크로소프트(Asia)에서 발표한 논문

Swin은 ViT에서 모든 Patch가 Self Attention을 하는것에 대한 Computation cost를 지적하면서 나온 논문이고, Shifted Winfows Transformer의 약자이다.

Implication

Patch를 Window로 나누어 해당 윈도우 안에서만 Self Attention을 수행하고 그 윈도우를 계속 shift 하면서 Self Attention 하는 구조를 논문에서 제안

Object Detection과 Segmentation에서 Backbone으로 사용되면서 좋은 성능 나타냄

Introduction

  • ViT는 각 패치 사이즈를 16pixel x 16pixel으로 만들어 총 224/16 ** 2 = 196개의 patch를 가진 상태를 유지하는 반면에 Swin Transformer에서는 마치 feature pyramid network처럼 작은 patch 4x4에서 시작해서 점점 patch들을 merge 해나가는 방식을 취한다.
  • 논문에서는 각 window size(M)을 7x7로 한다. 정리하면 첫번째 레이어에서 4x4 size의 각 patch가 56x56(224/4)개가 있고 이것을 7x7 size의 window로 나누어 8x8개의 window가 생긴다.

Achitecture

  • 크게 Patch Partition, Linear Embedding, Swin Transformer, Path Merging으로 구분이 되며 4개의 Stage로 이루어져 있다.
  • Stage아래에 적혀있는 x2/x2/x6/x2 은 Swin Transformer Block의 횟수인데 1개의 Block당 2개의 encoder가 붙어 있으므로 세트로 묶어서 실제로는 1/1/3/1 개의 Block이 반복된다고 보면 된다.

Patch Merging

  • Patch merging은 이미지처럼 합치는 과정을 거쳐서 Window의 크기를 점차 키워준다.

Swin Transformer Block(Shifted Window based Self-Attention)

  • W-MSA(Windows-MSA), SW-MAS(Shifted Windows-MSA)로 이루어져 있다.

  •  M (즉,window size)은 hw(image size)에 비해 훨씬 작기 때문에 W-MSA의 연산량이 훨씬 적고 결국 image size가 커져도 비전트랜스포머에 비해 연산량을 많이 줄일수있게 되는것을 수식으로 나타낸다.

  • Window Multihead Attention을 한번하고 나서 다음은 Shift Window Multihead Self-Attention을 수행하게 된다.
  • 이때 Window를 shift시키는데 Cycle shift방법을 사용해서 A,B,C구역을 우측 하단으로 shift하고 mask를 씌워서 self-attention을 수행한다.

Relative Position bais

  • 위 식을 보면 기존 Attention에서 softmax를 취하기 전에 B를 더하는 것을 볼 수 있는데 이것이 바로 상대좌표이다.
  • 기존에 position embedding은 절대좌표를 더해주는 방법이었다면 이 논문에서는 상대좌표를 더해주는 것이 더 좋은 방법이라고 제시한다.

Experiments

  • ImageNet dataset에 대해 비전트랜스포머의 base model보다 Swin이 파라미터 수는 훨씬 적지만 성능은 3.4%다는 결과가 나왔고 (노란색)
  • CNN기반 모델중 가장 SOTA model인 에피션트넷과 대등할 정도의 성능을 보여준다. (하늘색)

  • 다른 Task인 Object Detection과 Segmentation 등의 backbone으로 사용했을때의 성능은 거의 다 SOTA를 찍은 것을 볼 수 있다.

  • 다음으로는 shift방법을 사용하지 않은것과 Shifted window를 사용했을때의 성능을 비교해보았는데, shift를 사용하는것의 성능이 더 좋다는 결과가 나오고
  • 존에 사용하던 절대좌표(abs positition embedding)를 쓰는것이 좋은지, 아니면 상대좌표(relative postition embedding)를 쓰는것이 좋은지, 그리고 둘 다 쓰는 것이 좋은지 비교해봤을때 상대좌표만 사용하는 것이 가장 성능이 좋았다고 한다.

장점

  • 대규모 이미지 처리 성능이 뛰어나다.
  • 기존모델보다 더 작은 모델 크기
  • 입력이미지 크기와 해상도에 상관없이 성능이 일관되기 때문에 다양한 컴퓨터 비전 모델이 적용할 수 있다. 그래서 확장성이 우수하다

단점

  • Window 크기 설정의 어려움 : Swin Transformer에서 블록의 크기를 어떻게 설정하느냐에 따라 성능이 크게 달라질 수 있다.
  • 데이터 병렬화의 어려움: Swin Transformer는 입력 이미지를 블록들로 분할하여 처리하는데, 이로 인해 데이터 병렬화가 어려울 수 있다.
  • 작은 객체 처리의 어려움: Swin Transformer는 블록 단위로 Self-Attention을 수행하기 때문에, 작은 객체를 잡아내는 데 어려움이 있을 수 있다.

Swin 논문 설명 요약 By GPT

이 논문은 기존의 Self-Attention 메커니즘을 개선하여 더 큰 이미지를 처리할 수 있도록 하는 기술을 제안합니다. 기존의 Self-Attention은 입력 이미지의 전체 특징을 한 번에 고려하는데, 이로 인해 메모리 사용량과 연산량이 급증하여 대규모 이미지 처리에 한계가 있었습니다.

Swin Transformer는 입력 이미지를 작은 블록들로 분할하고, 블록들 간에만 Self-Attention을 수행하는 방식으로 작동합니다. 이렇게 함으로써 각 블록은 자신 주변의 정보에만 집중할 수 있고, 메모리 사용량과 연산량을 효율적으로 관리할 수 있게 됩니다.

이러한 구조는 이미지 분류, 객체 감지, 세그멘테이션 등 다양한 컴퓨터 비전 작업에 사용될 수 있으며, 높은 성능과 효율성을 보여줍니다. Swin Transformer는 Vision Transformer (ViT)와 비교했을 때 뛰어난 성능을 보여주면서도 더 작은 모델 크기로 이점을 가지고 있습니다. 이로 인해 대규모 이미지 데이터셋에서도 효과적으로 적용될 수 있으며, 컴퓨터 비전 분야에서 주목할만한 기술 중 하나로 평가되고 있습니다.

728x90