트랜스포머가 NLP를 장악하자 자연스러운 질문이 따라왔다. 이미지에도 적용할 수 있지 않을까?
문제는 이미지가 시퀀스가 아니라는 점이다. 512×512 픽셀 이미지를 그대로 시퀀스로 펼치면 262,144 토큰이다. 트랜스포머의 O(n²) 어텐션 연산으로는 처리 불가능하다.
Google Brain의 Dosovitskiy 등이 2020년 발표한 ViT(Vision Transformer)는 이미지를 **패치(patch)**로 분할해 이 문제를 해결했다.
이미지를 패치 시퀀스로
입력 이미지 (224×224×3)
↓ 16×16 패치로 분할
196개 패치 (14×14 그리드, 각 패치 16×16×3 = 768 픽셀)
↓ 선형 투영 (Linear Projection)
196개 패치 임베딩 (각 768차원)
↓ [CLS] 토큰 추가
197개 토큰 시퀀스
↓ 위치 임베딩 추가
↓ 트랜스포머 인코더
[CLS] 출력 → 분류 헤드
16×16 패치로 분할하면 196개 토큰이다. BERT의 512 토큰보다 적어 트랜스포머가 처리할 수 있는 범위 안에 들어온다.
패치 임베딩
각 패치(16×16×3 = 768 픽셀)를 선형 투영으로 d차원 벡터로 변환한다. 학습 가능한 가중치 행렬 E (768 × d)를 곱한다. 이것이 패치 임베딩이다. CNN의 합성곱 연산 없이 단순 행렬 곱으로 처리한다.
[CLS] 토큰과 위치 임베딩
BERT와 마찬가지로 시퀀스 앞에 [CLS] 토큰을 추가한다. 트랜스포머를 통과한 후 이 토큰의 출력이 이미지 전체의 표현이 되고, 분류 헤드에 입력된다.
위치 임베딩도 학습 가능한 파라미터로 1D 위치(0~196)를 인코딩한다. 논문에서 2D 위치 인코딩(행, 열 따로)과 비교했지만 성능 차이가 없었다. 트랜스포머가 어텐션을 통해 공간 관계를 학습하기 때문으로 해석된다.
핵심 발견: 데이터 스케일
ViT가 ResNet을 이기려면 대규모 데이터가 필요하다.
| 학습 데이터 | ViT-L/16 vs ResNet152 |
|---|---|
| ImageNet (1.2M) | ResNet 승 |
| ImageNet-21k (14M) | 비슷 |
| JFT-300M (300M) | ViT 승 |
CNN은 합성곱의 귀납적 편향(inductive bias) 덕분에 적은 데이터에서도 잘 학습한다. 평행 이동 불변성, 지역 연결성이 이미지의 구조와 잘 맞는다.
ViT는 이런 사전 지식이 없다. 공간 관계를 처음부터 데이터에서 학습해야 한다. 데이터가 충분하면 더 유연하게 전역 관계를 포착하지만, 데이터가 부족하면 CNN이 낫다.
어텐션 시각화
ViT의 어텐션 맵을 시각화하면 흥미로운 패턴이 나온다. 초기 레이어는 인접 패치에 집중하는 지역적 어텐션을 보이고, 깊은 레이어로 갈수록 의미 있는 객체 전체에 걸친 전역 어텐션을 보인다. CNN처럼 설계하지 않았는데도 스스로 지역→전역 계층을 학습한다.
모델 크기
| 모델 | 레이어 | 히든 크기 | 헤드 | 파라미터 |
|---|---|---|---|---|
| ViT-B/16 | 12 | 768 | 12 | 86M |
| ViT-L/16 | 24 | 1024 | 16 | 307M |
| ViT-H/14 | 32 | 1280 | 16 | 632M |
/16은 패치 크기 16×16, /14는 14×14를 의미한다. 패치가 작을수록 토큰 수가 많아 더 세밀하지만 느리다.
이후 영향
ViT는 비전 모델의 패러다임을 바꿨다. 이후 DeiT(데이터 효율적 ViT), Swin Transformer(계층적 ViT), DINO, MAE 등이 ViT를 기반으로 발전했다.
또한 비전과 언어를 같은 아키텍처로 처리할 수 있다는 것을 보여줬다. CLIP, BLIP, LLaVA 같은 멀티모달 모델에서 비전 인코더로 ViT를 사용하는 것이 표준이 됐다.
트레이드오프
ViT는 전역 어텐션을 처음부터 계산하므로 작은 이미지나 소형 객체 탐지에서 CNN보다 효율이 낮다. Swin Transformer는 이를 계층적 구조와 윈도우 어텐션으로 보완했다. 또한 ViT의 O(n²) 어텐션은 고해상도 이미지에서 메모리와 연산량이 폭발한다. 2048×2048 의료 영상이나 위성 영상 처리에는 추가적인 효율화 기법이 필요하다.