#Transformer #ComputerVision
아키텍처 스터디 6주차
paper_link, github_code
A ConvNet for 2020 리뷰하려고 했는데 Swin Transformer 이야기가 자꾸 나와서 변경...
컴퓨터 비전은 오랜 시간 동안 CNNs(Convolutional neural network)에 의해 지배되어 있었다. AlexNet과 ImageNet 이미지 분류 챌린지의 혁신적인 성능을 시작으로 CNN은 더욱 스케일이 크고 광범위한 연결, 더 정교한 형태를 통해 점점 더 강력해지도록 진화했다.
반면 NLP 분야에서는 Transformer라는 다른 경로를 택하게 되었다.
언어 모델의 높은 성능을 비전 도메인으로 이전하는 어려움은 두 모달리티의 차이점 떄문이다.
이러한 문제를 해결하기 위해 ==Swin Transformer== 을 제안한다.
계층적인 feature map을 구성하고 이미지의 크기에 대해 선형적인 computational complexity를 가지는 범용 Transformer backbone!
1. 다양한 해상도의 특정 맵을 만들기 때문에 고급 구조와 쉽게 연결할 수 있음
- PN, U-Net과 같은 고급 구조는 다양한 스케일(해상도)의 정보를 활용하기 때문!
2. 윈도우 기반 self-attention은 선형(linear) 복잡도를 가진다?
- 일반 Transformer의 경우 256X256 이미지를 16X16 패치로 나누면 총 256개의 패치가 생긴다. 모든 패치에 대해 self-attention을 하면 계산량은 256X256 = 65,536이 된다. ==계산량 O(N^2)==
- 하지만 Swin Transformer의 경우 이미지 전체를 보지 않고 예를 들어 7X7 패치로 구성괸 작은 윈도우로 나눠서 attentiond를 한다.
- > 즉 한 윈도우 안에서는 49개의 패치만 비교하면 됨. -> 49 X49 = 2,401
- 윈도우가 이미지 전체에 걸쳐 반복되니까 윈도우수는 256/49 = 5개
- 전체 계산량은 2,401X5=12,000.
- 패치 수는 고정되어 있기 때문에 이미지가 커지면 윈도우 수만 증가한다.
- ==계산량 O(N)==
Attention 층이 하나 지나갈 때마다 윈도우를 일괄적으로 반 칸씩 이동하면 이전 층에서 나뉘어져 있는 윈도우 간 연결이 생기고 Attention 영역이 넓어진다.
4X4X3=48
[Stage 1]
H/4 × W/4 × 48
C
[Stage 2]
H/8 × W/8 × 2C
[Stage 3]
H/16 × W/16 × 4C
[!question] 왜 Stage3만 Swin Transformer Block이 6개?
- 가장 핵심적인 특징 학습 단계이기 때문!
- 이 단계에서의 특성 맵은 해상도는 어느 정도 줄어들고 채널 수는 많이 증가해 정보를 정제하기에 좋은 밀도를 가졌으므로 더 많은 블록을 써서 복잡한 패턴을 학습한다.
- 이건 저자들이 다양한 block 수를 조합한 결과 나온 결론
[Stage 4]
H/32 × W/32 × 8C
[Self-attention in non-overlapped windows]
= 겹치지 않는 윈도우 안에서 self-attention
위의 경우 (hw)^2
항 때문에 패치 수가 많을 수록 계산량 제곱으로 늘어나지만
아래(Window 기반)의 경우 M은 윈도우 크기니까 고정되어 있으므로 전체 복잡도는 O(hw)
=> 이미지 크기가 커져도 계산량이 폭증하지 않음
[Shifted Window Partitioning in successive blocks]
= 윈도우를 밀어 연결성 확장
W-MSA -> MLP -> SW-MSA -> MLP 이렇게 번갈아서 사용!!
[Efficient batch computation for shifted windows]
= 효율적인 계산 방식
문제 상황 : 윈도우를 Shift하면 윈도우 수가 늘어난다.
해결법 : Cyclic Shift + Masked MSA
1. Window partition
- 원래 윈도우 위치에서 non-overlapping하게 나눔
- A, B, C는 서로 다른 윈도우에 속한 패치들
2. Cyclic shift
- 윈도우 전체를 오른쪽 아래로 M/2 만큼 이동
- 이때 일부 윈도우는 두 개 이상의 윈도우 조각으로 구성
3. masked MSA(self-attention)
- 각 윈도우 안에서 attention 계산
- 서로 다른 원래 윈도우 출신끼리는 연결하지 않도록!
-> masking을 사용해서 자기 그룹끼리만 attention 계산
4. Reverse cyclic shift
- 계산이 끝난 후 다시 원래 위치로 복원
C는 첫 stage에서 hidden layers의 채널 수
🍳 혼자 북적북적...
==[Float32]가 의미하는 것==
컴퓨터가 부동소수점을 저장하고 계산하는 방식 중 하나. 32비트 부동소수점 의미
float32는 총 32비트(4byte)로 구성되고 3가지로 나뉨
- 1비트 : 부호(sign)
- 8비트 : 지수부(exponent) : 소수점의 위치를 결정 (2의 몇 제곱?)
- 23비트 : 가수부(mantissa)
- 부호 1비트 + 지수 8비트 + 가수 23비트 = 32비트
🌱 가수부?
- 숫자의 실제 유효 숫자(정밀도)를 담고 있는 부분
==부동소수점 연산==
컴퓨터가 소수점을 포함한 수를 가지고 수행하는 계산
- 고정소수점:
0001.1010
(소수점 위치 고정됨)- 부동소수점:
1.101 × 2^3
(소수점 위치가 지수로 표현됨)==FLOPs란?==
컴퓨터가 1초 동안 수행할 수 있는 부동소수점 연산의 횟수 => 연산량
![[Pasted image 20250509124210.png]]
여기서 backbone이란 해당 모델로 이미지의 특징을 추출했다는 것, 그리고 Method는 객체 탐지와 인스턴스 분할을 어떻게 수행할 것인지에 대한 전략을 뜻함!
AP
: Average Precision : 객체 탐지 모델이 예측한 박스가 실제 객체와 얼마나 잘 맞는지 측정함. 정확도와 재현율의 곡선을 기반으로 한 면적(AUC)을 계산한 값.APbox
: 다양한 IoU(Intersection over Union) 임계값을 평균낸 종합적인 성능 지표APbox50
: IoU가 0.50 이상일 때만 정확도로 평가한 AP이며 느슨한 기준APbox75
: 엄격한 기준. 거의 다 맞아야 정답! 모델의 정밀도를 강조하는 지표backbone에서 ResNet과 비교했을 때 모든 method와 평가방법에서 더 나은 성능을 보임!
다른 SoTA 모델과 비교했을 때도 높은 성능을 보임.
This paper presents Swin Transformer, a new vision Transformer which produces a hierarchical feature reprsentation and has linear computational complexity with re-
spect to input image size.
Swin Transformer achieves the state-of-the-art performance on COCO object detection and
ADE20K semantic segmentation, significantly surpassing previous best method.
핵심은 Shifted-Window based self-attention! -> vision problem에 있어 효과적이고 효율적이다!