ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Paper short review] Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 논문 리뷰
    Paper short review 2021. 12. 1. 21:51
    반응형

    @ 굵은 글씨 중요한 내용, 빨간 글씨는 내가 추가한 내용

     

    https://arxiv.org/pdf/2103.14030v2.pdf

     

     

    • 정리: CV의 backbone역할을 할 수 있는 Swin Transformer를 제안하였다. 이 방법론은 nlp에 특화된 transformer를 image에 잘 적용될 수 있게끔 하는 hierarchical transformer와 shifted-windows self-attention layer를 제안한다. hierarchical transformer는 CV에서 FPN(feature pyradmid network)와 비슷한 역할을 수행하고, 각 window(MxM개의 patch를 포함하는 영역) 내에서 self-attention을 수행한다. 추가적으로 window를 옮기면서 수행할 때 발생하는 추가 계산량을 제거하기 위해 shifted-windows self-attention layer를 도입한다.

     

    0. Abstract

    본 논문은 CV의 backbone 역할을 할 수 있는 Swin Transformer를 제안한다. 

     

    Transformer를 CV에 적용할 때, 어떻게 patch로 분할하느냐에 따라서 엄청 다양한 variat가 존재하고, 이미지의 높은 해상도와 같은 이슈로 인해 어려움이 생긴다 (text와 이미지의 차이로 인한 문제점)이러한 차이를 해결하기 위해 Shifted windows로 representation이 계산되는 hierarchical Transformer를 제안한다. Shifted windows는 cross-window connection을 허용하면서, self-attention computation을 non-overlapping local windows로 제한하여 효율성을 높인다. hierarchical 아키텍처는 다양한 scale로 모델링할 수 있으며, 이미지 size에 대한 선형 계산 복잡성을 갖는다.

     

    Swin Transformer의 이러한 특징은 classification, object detection, semantic segmentation과 같은 광범위한 vision task와 호환되도록 한다. 큰 차이로 이전 SOTA 모델을 능가해 vision backbone으로서의 가능성을 입증한다.

     

    코드 및 모델은 https://github.com/microsoft/Swin-Transformer 에서 확인할 수 있다.

     

    3. Method

    3.1. Overall Architecture

    Swin Transformer 아키텍처는 아래 그림과 같다. 먼저 ViT와 같이 patch partition 모듈에 의해 RGB 이미지를 겹치지 않는 patch로 분할한다 (이미지를 그냥 NxN으로 나눈다고 생각하면 됨). 각 patch는 "token"으로 처리되며 (nlp에서 입력 문장과 같은 역할), 그 feature는 raw pixel RGB values의 concatenation으로 설정된다. 구현할 때에는 4 x 4 patch를 사용하므로 각 path의 feautre 차원은 4 x 4 x 3 =48이다 (즉, H/4xW/4개의 patch가 존재하고, 하나의 patch는 4x4x3차원이라는 말 -> patch partition 모듈을 거친 후 (H/4, W/4, 3*4*4)차원 token이 output). Linear embedding layer는 raw-valued feature에 적용되어 임의 차수(=C)로 표시된다.

    수정된 self-attention computation(Swin Transformer blocks)이 있는 Several Transformer blocks이 이러한 patch token에 적용된다. Transformer blocks은 token의 수 ( H/4 × W/4 )를 유지하며, linear embedding과 함께 "1stage"라고 불린다 (1 stage = linear embedding + swin transformer block)

    Hierarchical representation을 생성하기 위해 network가 깊어질수록 patch merging layer에 의해 token 수가 감소한다. 1번째 patch merging layer는 2 × 2 인접 patch의 feature를 연결하고 (인접한 2x2 patch를 하나의 patch로 합침), 4C 차원 연결 feature에 linear layer를 적용한다. 이는 token 수를 2x2=4의 배수로 줄이고, output 차원은 2C로 설정한다. Swin Transformer blocks은 이후 H/8 × W/8 해상도로 feature 변환을 위해 적용된다. 이 절차는 각각 H/16 × W/16 와 H/32 × W/32의 output resolutions으로 "3stage"와 "4stage"로 두 번 반복된다 (총 3번 반복). 이러한 단계는 cnn의 feature map resolution과 동일한 작업이다. 결과적으로 이는 다양한 vision task에 대해 기존 방법의 backbone network를 대체할 수 있게 한다.

     

    Swin Transformer block 
    Swin Transformer는 transformer block의 standard multi-head self-attention (MSA) 모듈을 shifted windows를 기반으로 한 모듈로 변경하고 다른 layer는 동일하게 유지한다. 위의 그림 (b)처럼 Swin Transformer block은 shifted window based MSA module이동된 창 기반 MSA 모듈과 GELU 비선형성을 갖는 2계층 MLP로 구성된다. 각 MSA 모듈과 각 MLP 앞에 LayerNorm(LN) 레이어가 적용되고 각 모듈 뒤에 residual connection이 적용된다.

     

    3.2. Shifted Window based Self-Attention

    Standard Transformer 아키텍처와 image classification을 위한 적응은 모두 token과 다른 모든 token 사이의 관계가 계산되는 global self-attention을 수행한다. Global computation은 token 수와 관련하여 제곱 복잡성으로 이어지며, 이는 고해상도 image를 위한 vision task에 적합하지 않다.

     

    Self-attention in non-overlapped windows
    효율적인 모델링을 위해 local window 내에서 self-attention을 계산할 것을 제안한다. window는 겹치지 않는 방식으로 이미지를 고르게 분할하도록 배열된다. 각 창에 M x M patch가 포함되어 있다고 가정하면, global MSA 모듈의 계산 복잡도와 h x w 패치의 이미지에 기반을 둔 window는 다음과 같다 (기존에는 모든 token과의 attention을 수행했지만, 즉 window 내에서만 self attention을 수행).

    여기서 전자는 patch 수 hw에 대한 제곱 계산 복잡도를 갖고, 후자는 M이 고정된 경우 선형 계산 복잡도를 갖는다(M=7). Global self-attention computation은 일반적으로 큰 hw에 대해 엄청난 계산량 (사실상 불가능)이 주어지는 반면 window based self-attention은 계산 가능하다.

    Shifted window partitioning in successive blocks 

    Window based self-attention 모듈은 window 간 연결이 부족하여 모델링 성능이 제한된다 (window 안에서만 self-attention을 수행하기 때문). 이를 해결하기 위해 기존 계산을 유지하면서 cross-window connections을 도입하기 위해 consecutive Swin Transformer blocks에서 두 partitioning 구성을 번갈아 사용하는 shifted window partitioning approach를 제안한다.

     

    아래 그림에서 볼 수 있듯이, 첫 번째 모듈은 왼쪽 상단 픽셀부터 시작하는 일반적인 분할 전략을 사용하며, 8x8 feature map은 크기가 4x4 (M=4)인 2x2 창으로 고르게 분할된다. 그 다음 모듈은 window를 ( M/2, M/2 )만큼 이동시켜 분할한다.

    이를 통해 consecutive Swin Transformer blocks는 다음과 같이 계산된다.

    여기서 z^l는 (S)MSA 모듈의 output feature를 나타내고, zl은 block l에 대한 MLP 모듈을 나타낸다. 그리고 W-MSA는 window based multi-head self-attention를 SW-MSA는 shifted window based multi-head self-attention을 나타낸다.

    Shifted window partitioning approach는 겹치지 않는 window 간의 연결을 도입하여 밑의 표와 같이 image classification, obejct detection, segmentation에 효과적인 것으로 알려졌다.

    Efficient batch computation for shifted configuration

    Shifted window partitioning의 문제점은 window partition이 이동할 때, ( h/M x w/M )부터 ( (h/M +1) x (w/M +1) )까지 더 많은 window 창이 생성되고, M x M보다 작은 window가 생성된다는 것이다. 이에 따라 우리는 크기를 M x M으로 만들어줘야 한다. 이때, padding과 같은 solution을 사용하면 계산량이 상당히 증가하게 된다.

    따라서 우리는 그림 4와 같이 왼쪽 상단 방향으로 순환 이동함으로써 보다 효율적인 계산법인 cyclic-shift를 제안한다. M x M 보다 작은 window를 이동시켜 window 크기에 맞도록 합친 후 self-attention을 수행하는 방법이다. 그러나 이 방법은 실제로 인접한 window들이 아니기 때문에 해당 window 내에서 self-attention을 계산할 때 Masking 기법을 사용하여 개별적인 sub-window 내의 attention score를 계산할 수 있도록 한다 (합친 경우에는 합치기 전 window끼리의 attention만 계산). 결과적으로 window를 움직이지 않았을 때와 window 분할 수가 같아지게 된다.

    Relative position bias

     

    3.3. Architecture Variants

    우리는 ViTB/DeiT-B와 유사한 모델 크기와 계산 복잡성을 갖는 Swin-B라는 기본 모델을 구축한다. 또한 모델 크기와 계산 복잡도의 각각 약 0.25배, 0.5배, 2배 버전인 Swin-T, Swin-S 및 Swin-L을 소개한다. Swin-T와 Swin-S의 복잡도는 각각 ResNet-50(DeiT-S)과 ResNet-101의 복잡도와 유사하다. Window 크기는 기본적으로 M = 7로 설정된다. 모든 실험에서 각 head의 query 차원은 d = 32이고, 각 MLP의 expansion layer는 α = 4이다. 이러한 모델 변형의 아키텍처 hyper-parameters는 다음과 같다.

    여기서 C는 1 stage에서 hidden layer의 채널 수이다. 

     

    4. Experiments

    4.1. Image Classification on ImageNet-1K

     

    4.2. Object Detection on COCO

     

    4.3. Semantic Segmentation on ADE20K

     

    5. Conclusion

    본 논문은 hierarchical feature representation을 생성하고 input image size와 관련하여 선형 계산 복잡성을 갖는 새로운 Vision transformer인 Swin Transformer를 제안한다. Swin Transformer는 object detection 및 segmentation에서 SOTA를 달성한다. 이를 통해 vision과 text 모두에서 통일된 modeling 기대한다.


    Swin Transformer의 핵심 요소로서, shifted window 기반 self-attention은 vision task에 효과적이고 효율적인 것을 확인할 수 있었다.

     

    My discussion

    Why this paper?

    Swin Transformer2를 읽기 전 기존 논문인 Swin Transformer를 읽기로 결정

     

    --> 기존 transformer를 CV에 적용하면서 가장 잘 알려진 문제 중 하나인 local 특성을 탐지하지 못한다는 문제점을 hierarchical 구조와 window를 통해 해결한 점이 재밌었다. 지금도 좋은 방법론이다 라고 생각하는데, Swin Transformer2는 뭘 개선했을 지 궁금하다.

    --> transformer가 cnn보다 뛰어난 것은 아니다 라는 생각에 갇혀있었다. 하지만 생각해보니 cnn은 수십년동안 image에 특화된 다양한 방법들을 적용하여 좋은 성능을 낸것이지만, transformer는 아직 CV에 적용중인 과도기인데도 불구하고 좋은 성능을 심지어는 SOTA를 달성하는 성능까지도 보인다. transformer가 더욱 발전하여 cv에도 특화된다면 nlp뿐만 아니라 cv까지 평정할 수 있는 방법론이 될 수 있지 않을까 하는 생각이 든다. (+ attention is all you need 논문을 하루빨리 정독해야겠다)

    반응형

    댓글

Designed by Tistory.