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하게 증가함
- 기존 transformer, quadratically scaling attention computation with the sequence length
- 일반 Transformer와 중요한 차이점
- 1) image를 4*4 patch size로 분할
- 이 과정을 반복적으로 진행
- Problem : window기리 information exchange x
- Solution add shift operation