이미지 분류 작업에서 SOTA를 달성했던 ViT모델의 고유한 한계로 인해 Detection, Segmentation등과 같은 복잡한 작업에서 활용되지 못하는 문제를 해결하기 위해 Self-Attention메커니즘을 BackBone으로 활용하기 위해 등장한 모델이 Swin Transformer모델입니다. 해당 모델이 등장하면서 대부분의 SOTA모델이 Transformer Architechure를 활용한 모델로 대체되게 됩니다.
ViT관련한 내용을 참조하시려면, 아래의 링크 참조하시면 됩니다.
https://velog.io/@rlaxodns/%EB%85%BC%EB%AC%B8Vision-Transformers-Swin-Transformers
위의 구조는 FPN(Feature Pyramid Network)으로 다양한 객체 탐지모델에서 활용된다. 다음과 같은 구조가 활용되는 이유는 위에서 설명한 바와 같이 이미지 내에서 물체의 크기가 다양하기 때문에 다양한 크기의 객체를 탐지할 수 있도록 하기 위해 다양한 크기의 이미지를 학습하도록 한다.
위의 구조는 U-Net의 아키텍쳐이다. 해당 모델의 Segmentation 작업의 대표적인 모델로 다양한 해상도의 이미지를 학습시키므로써 고유한 각 픽셀값을 분할하여 '객체분할'작업을 수행할 수 있게 해준다. Encoder부분에서 이미지의 전역적인 Context정보를 추출하고 Decoder를 통해서 원본 크기로 복원하면서 픽셀 단위의 정보를 재구성하게 된다.

[Swin Transformer: Hierachical Architechure]
위에서 설명한 바와 같이 FPN과 U-Net의 인코더-디코더 구조와 매우 흡사한 것을 알 수 있다.
위와 같은 기법으로는 아래와 같다.
<Local Widow 내에서 Self-Attention>

:h, w = 높이, 넓이의 patch수
:M = Local window의 사이즈
위와 같은 특징들 덕분에 다양한 비전 작업에서 강력한 백본 모델로 활용이 가능하다.

Swin Transformer의 전반적인 구조는 위와 같다. 왼쪽의 그림과 같이 4개의 스테이지를 거치게 된다. 그러면서 각 스테이지마다 Patch Merging을 거치면서 이미지의 공간 차원을 줄이게 된다. 이러한 과정을 거치면서 이미지의 전역적인 부분을 학습할 수 있게 되면서 더욱 다양한 정보를 학습할 수 있게 만들어준다.
각 스테이지를 거치면서 는 2씩 증가하게 되는데 이러한 이유는 Patch의 비율을 2씩 점진적으로 키워가기 때문이다.
각 스테이지마다 Swin Transformer Block을 거치게 되는데, 이는 위 그림의 오른쪽과 같다.
Layer Normalization과 Residual Connection을 거치게 되는데, 핵심적인 변경점은 W-MSA와 SW-MSA이다.
W-MSA: Local window 안에서의 Self-Attention을 수행
SW-MSA: Local window 간의 Self-Attention을 수행

위의 SW-MSA기법을 적용하면서 원래 2×2 개의 윈도우가 3×3 윈도우로 늘어난다면 계산량이 2.25배 증가하는 등 비효율적일 수 있다. 이러한 문제를 해결하기 위해서 Batch크기에 따라서 을 묶어주고 사이클릭 시프트 후 하나의 배치 윈도우는 원래 인접해있던 영역이 아닌 여러 개의 작은 서브 윈도우로 구성될 수 있다.
그래서 마스킹 메커니즘을 도입해, 각 서브 윈도우 내부에서만 self-attention이 계산되도록 제한하고 해당 과정 덕분에 계산 효율은 높게 유지되면서 윈도우 간의 경계 문제도 해결할 수 있게 된다.

[Cyclic Shift]
[Reverse Cyclic Shift]
리버스 사이클릭 시프트는 사이클릭 시프트로 이동한 특징 맵을 원래 위치로 복원하는 연산
위 두 가지 기법을 적용하면서 윈도우 별로 나누어진 이미지가 서로 인접한 위치가 아니었기 때문에 Mask 적용하여 셀프 어텐션을 적용하게 된다. 이를 통해 더욱 연산량 자체는 줄이면서 더욱 다양한 크기의 이미지를 학습할 수 있게 해준다.