[논문리뷰 | CV] Swin Transformer: Hierarchical Vision Transformer using Shifted Windows (2021) Summary

9e0na·2023년 7월 17일
1

[논문리뷰]

목록 보기
12/41
post-thumbnail

Title

  • Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
  • Swin Transformer

논문 리뷰 시작에 앞서 고려대학교 산업경영공학부 dsba 연구실_허재혁님의 영상을 참고하면서 글을 작성한다는 점을 미리 말씀드립니다!


0. 논문을 읽기 전에 알면 좋을 것

Inductive Bias

  • 모델이 데이터에 대해 가지고 있는 가정을 의미한다
  • 모델을 잘 예측하기 위해 사전 정보를 통해 추가된 가정을 의미한다.
  • 즉 학습하지 않은 데이터가 들어갔을 때 잘 예측하기 위한 가정

Inductive Bias가 부족하다는 것은?

  • 모델이 주어진 데이터를 충분히 이해하지 못한 상태에서 일반화하기 어려운 상태
  • 모델이 다양한 데이터를 학습하지 않아 새로운 데이터에 대한 예측력이 떨어지는 상태

왜 부족할까?

  • 모든 input을 그대로 받아와 attention을 동시에 구해주기 때문임
  • 그래서 다른 모델에 비해 Transformer 기반 모델은 self-attention or positional embedding을 통해 모든 정보는 활용하지만, inductive bias는 부족함.

Abstract

ViT 문제점

  • 기존 ViT는 Classification Task를 위한 모델로 객체의 크기가 항상 일정하지 않음
  • Image의 해상도가 증가함에 따라 계산복잡도가 커짐.
    ✅ 계산복잡도는 이미지의 크기의 제곱에 비례하기 때문에 연상량이 매우 증가한다는 문제점 가짐.

해결방안 & Swin Transformer 배경

  • Computer Vision에서 다양한 목적에 맞게 Backbone Network로 사용될 수 있는 Transformer Model 제안
  • Transformer 구조에 이미지의 특성을 반영할 수 있는 방법 제안
    Shifted window를 사용하는 hierarchical(계층적인) Transformer 구조로 해결함
  • 기존 ViT보다 적은 연산량을 갖는 방법 제안
    ✅ 기존 ViT는 이미지의 크기에 제곱에 비례했지만, Hierachical 구조의 경우 다양한 크기에 대해 유연하기 때문에 Linear하게 변함
    ✅ non-overlapping window내에 있는 patch 간의 self-attention을 수행함으로써 계산복잡도 개선
  • 다양한 Computer Vision Task에서 좋은 성능을 도출함

1. Introduction

  • Text와 Image의 차이점
    : 해상도(resolution) / 물체의 크기 (the scale of visual entities)

  • Swin Transformer는 Hierachical(계층적인) 구조를 활용하기 때문에 Object Detection과 Segmentation Task에서 SOTA 달성

    ✅ 하지만 Classification Task에서는 EfficientNet와 성능이 비슷함. (상대적인 낮음)

  • Layer가 깊어지면서 image의 resolution을 변경하기 때문에 서로 다른 scale information을 갖고 있음.
    ✅ Object Detection의 FRN 구조를 사용하여 multi-scale information를 활용하기 때문에 Object Detection과 Segmentation Task에서의 성능이 매우 좋음.
  • Hierachical & Shifted Windows를 사용하여 patch size를 다양하고 유동적으로 사용 가능하게 하여 representation을 학습함.

1.1. Hierachical Transformer

1.1.1. Vit

  • image를 작은 patch들로 분할하는 방식
    (image -> patch)
  • [CLS] token 사용

1.1.2. Swin Transformer

  • ViT보다 더 작은 patch들로 분할해서 점점 patch들을 merge하는 방식
    (patch -> proportion of image -> image)
    작은 단위의 patch에서 점점 merge하고 계층마다 다른 representation을 가지기 때문에 다양한 크기의 entity를 다룰 수 있음. -> 좋은 성능으로 이어짐
  • Local Window를 Model에 적용
    • 외각선이 빨간색 선인 것들을 window라고 하고, window 내부에서만 self-attention을 진행하게 되어 연산량을 줄임.
  • Hierachical Transformer 구조이기 때문에 계층마다 다른 해상도의 결과값을 얻을 수 있어서 Segmentation / Object Detection Task에서 적합한 BackBone 형태라고 말할 수 있음.
  • [CLS] token을 사용하지 않고 token들의 평균값을 활용하여 classification을 수행함.

1.1.3. Self-attention in non-overlapped windows

h,w: 세로, 가로 patch 개수
M: local window size

  • 기존에는 image 전체에 대해 self-attention을 수행함.
  • 계산복잡도가 이미지 크기의 제곱에 비례한다는 단점

  • non-overlapping window를 도입하여 window 내 각 patch끼리 self-attention만을 적용함.
  • 이를 통해 (hw)2(hw)^2hwhw로 선형적으로 바꿨고,계산 복잡도를 낮춤.

    • 이때 계산복잡도의 한계를 극복하기 위해 window 내부에서만 patch끼리 self-attention을 계산하였음.
    • 서로 다른 윈도우 간의 공유도 가능함

1.2. Shifted Windows

Window란?

  • N개의 인접한 patch들로 구성되어 있는 patch set
  • Shifted Windows는 Swin Transformer에서 핵심 Idea
  • ([M2\frac{M}{2}, M2\frac{M}{2}]) 크기만큼이동시키면 매 stage마다 window가 다른 patch로 구성되어 있기 때문에 window간 공유가 가능해짐.

[과정]

(1) [왼쪽 그림]과 같이 patch를 분할하고 self-attention
(2) [오른쪽 그림]과 같이 window를 patch로부터 ([M2\frac{M}{2}, M2\frac{M}{2}]) 크기만큼 오른쪽 밑으로 shift 시킨 후 self-attention

✅ self-attention 계산이 M개의 patch들로만 제한되기 때문에 연산의 효율성 Good

  • W-MSA: feature map을 M개의 window로 나눔 [왼쪽 그림]
  • SW-MSA: W-MSA에서 발생한 patch로부터 ([M2\frac{M}{2}, M2\frac{M}{2}])칸 떨어진 patch에서 window 분할 [오른쪽 그림]

-> 하지만 window의 크기가 제각각이라는 문제점이 있음!!!!!!

두 가지 해결책은 다음과 같음.

  • (1) Cyclic shifting
  • (2) 모든 크기를 M으로 통일시키기 위해 padding 추가

1.3. Cyclic shifting

  • Window를 이동시키고 겹치지 않은 부분에 대해 반대편에 있는 patch를 참조함
  • 이때 window내 서로 관련 없는 patch가 섞여 있음
    • 관련 있는 patch끼리만 self-attention을 수행하기 위해 각 window마다 [Mask]를 씌어 관련 없는 부분을 0으로 만들기!

1.4. Relative Postion Bias

  • Transformer는 절대 좌표를 더해줌 (sin과 cos 활용)
    • -1 ~ 1 사이 값
  • Swin Transformer는 한 픽셀에 대한 나머지 픽셀의 상대 좌표를 더해줌
    • -2 ~ 2 사이 값

2. Related Work

  • CNN Based Model
    • ResNet, DenseNet, HRNet, EfficientNet 등등
  • Self-attention based backbone architectures
    • ResNet
  • Transformer based vision backbones
    • ViT, DeiT 등등

3. Method

3.1. Overall Architecture

전체적인 과정

(1) Patch Partion

  • ViT와 같은 patch splitting module을 활용하여 non-overlapping patch로 RGB image를 나눔
  • [HH x WW x 3] -> RGB value 3을 곱해줌

(2) Linear Embedding

  • [H4\frac{H}{4} x W4\frac{W}{4} x 48] tensor를 [H4\frac{H}{4} x W4\frac{W}{4} x C]) tensor로 변환
  • C는 model의 크기에 따라 달라짐

(3) Patch merging

  • Layer가 깊어짐에 따라 주변 patch를 merge하면서 token의 갯수를 줄임
  • [4x4] 크기의 작은 patch들을 점점 합쳐가며 계층 구조를 만듬
  • 인접한 [2x2] patch를 concat하여 channel 수가 4배가 됨
    ✅ Linear Layer를 통해 2C로 만들어줌.
  • 이를 반복하여 [H32\frac{H}{32} x W32\frac{W}{32} x 8C] tensor로 최종 변환

(4) Swin Transformer block

  • 첫 block에서는 W-MSA를 통과한 뒤 두번째 block에서는 SW-MSA를 통과함
  • 2-Layer MLP와 Layer Norm 그리고 GELU를 통과함
    • 각 모듈에 Residual Connection도 적용
    • MSA와 MLP이전에 Layer Norm을 두었음

3.1.1. Patch merging

  • patch를 병합시키면 patch의 갯수는 절반으로 줄어들고, 차원수는 2배로 증가함
    • Downsampling
  • Network의 깊이가 깊어지고 feature map의 size는 점점 작아지므로 ResNet과 같은 feature map의 계층적 표현이 가능해짐

3.1.2. Swin Transformer Block

W-MSA

  • Local Window 안에서 self attention

SW-MSA

  • Local Window 간의 self attention

4. Experiments

모델 버전

  • Image Resolution (Default): 224 x 224
  • 384 x 384일 때는 window size 12

Vision Tasks

  • Classification
  • Object Detection
  • Semantic Segmentation

세팅

  • Classification에 ImageNet 1K 사용
  • ImageNet-22K을 사전학습에 사용
  • Object Detection에 COCO 2017 사용
  • Semantic Segmentation에 ADE20K 사용

Baseline Models

  • ViT / DeiT
  • RegNetY / EfficientNet

본 논문에서 언급한 점

  • AdamW optimizer 사용
  • 다양한 Augmentation & Regularization 필요
    • 기존 ViT에서 Inductive bias가 작기 때문에
  • ViT에서 중요했던 repeated augmentation은 Swin Transformer에 적용시켰을 때 크게 성능 향상이 없었음

4.1. Image Classification on ImageNet-1K

(a) ImageNet-1K

  • [빨간색 네모 칸] Swin vs DeiT
    • Swin 모델이 성능이 조금 더 좋음
  • [초록색 네모 칸] Swin vs CNN Models
    • Swin-B(84.5)와 EfficieNet-B7 (84.3)는 성능이 비슷함
    • Swin Transformer는 CNN기반 모델에 비해 성능과 학습 속도의 trade-off가 더 작음

(b) ImageNet-22K pre-trained models

  • Swin vs Vit
    • model의 size가 커질수록 성능이 좋아짐

4.2. Object Detection on COCO

(a) Frameworks 기준

  • ResNet-50 vs Swin-T
    • Swin-T 성능이 살짝 더 좋음

(b) Backbones 기준

  • CNN based Model vs Swin
    • Swin model들이 성능이 살짝 더 좋음

4.3. Semantic Segmentation on ADE20K

  • SERT + T-Large vs ```UperNet + Swin-L````
    • UperNet + Swin-L 모델이 적은 파라미터로 더 높은 성능을 도출함
  • UNet + Swin-L 모델이라면 더 좋은 성능을 도출할 수 있지 않을까하는 궁금증이 있음!!

4.4. Ablation Study

  • Window 적용 방법에 따른 속도 비교
    • sliding window (naive) vs shifted window (cyclic)
    • shifted window 적용 방법이 성능이 훨씬 좋음.

5. Conclusion

  • 모델 구조
    • Local Window를 적용하여 Inductive bias를 개입 -> 이는 ViT 극복
    • Patch merging을 통한 Hierachical(계층적인) 구조
  • Insight
    • Image 특성을 고려한 모델 구조임
    • ViT보다 작은 계산 복잡도
    • Classfication를 제외한 나머지 CV Task에 확장성 Good
      ✅ Object Detection & Segmentation 대회에서 SOTA 성능을 보임

🎯 Summary

  1. 저자가 뭘 해내고 싶어 했는가?
  • Computer Vision에서 다양한 목적에 맞게 Backbone Network로 사용될 수 있는 Transformer Model 제안
  • Transformer 구조에 이미지의 특성을 반영할 수 있는 방법 제안
  • ViT의 한계점을 극복하고 다양한 CV Task에 적용
  1. 이 연구의 접근 방식에서 중요한 요소는 무엇인가?
  • Shifted Windows
  • Hierachical
  1. 어느 프로젝트에 적용할 수 있는가?
  • Object Detection
  • Segmentation
  1. 참고하고 싶은 다른 레퍼런스에는 어떤 것이 있는가?
  • ViT
  • DeiT
  • UperNet
  • EfficientNet
  1. 느낀점은?
  • 날이 갈수록 논문 리뷰가 점점 어려워진다..
    이번 Swin Transformer의 핵심이었던 patch merge와 Cyclic Shift 부분이 인상 깊었다. 하지만
    아직 Cyclic shift를 잘 모르겠다.. 다시 한번 공부해야겠다.

📚 References

profile
데이터사이언티스트가 되기 위해 [a-zA-Z]까지 정리하는 거나입니다 😊

0개의 댓글