An Image is Worth 16x16 Words:

ViT (Vision Transformer)

ViT(Vision Transformer)는 이미지 인식 작업에 트랜스포머 (Transformer) 아키텍처를 직접적으로 적용하여 성공을 거둔 모델이다. 기존 위키 문서

기존 컴퓨터 비전 분야에서는 합성곱 신경망 (CNN) 이 주류였으나, ViT는 CNN 의 유도 편향 (inductive bias) 이 필수적이지 않음을 증명하며, 이미지 패치 (patch) 를 시퀀스 토큰으로 간주하고 순수 트랜스포머로 처리할 수 있음을 보여주었다. 대규모 데이터로 사전 학습된 ViT는 ImageNet, CIFAR-100, VTAB 등 다양한 벤치마크에서 최상위 성능 (SOTA) 을 달성하면서, 기존 CNN 대비 훈련에 필요한 계산 자원을 현저히 줄였다.

목차

  1. 개요
  2. 배경 및 동기와
  3. 방법론
  4. 실험 결과
  5. 고찰 및 한계
  6. 여담
  7. 각주

개요 ViT

ViT (Vision Transformer) 는 Alexey Dosovitskiy 등을 포함한 구글 리서치 팀이 제안한 모델로, 이미지 분류 작업을 위해 설계된 트랜스포머 기반 아키텍처이다. 이 모델의 핵심 아이디어는 이미지를 고정된 크기의 패치로 쪼갠 후, 각 패치를 선형 임베딩하여 시퀀스 토큰처럼 처리하는 것이다.

기존의 CNN 기반 모델과 달리, ViT는 이미지 데이터에 특화된 유도 편향 (예: 국소성, 병진 불변성) 을 모델 구조에 직접 심어두지 않는다. 대신, **대규모 데이터셋 (ImageNet-21k, JFT-300M 등)**에서 학습함으로써 이러한 편향이 없더라도 데이터 자체가 패턴을 학습하도록 유도한다.

"An Image is Worth 16x16 Words" 이미지 한 장은 16x16 크기의 패치 16개 (단어) 가 모여 이루어진다는 비유에서 제목을 따왔다. 사실 16x16 은 256 픽셀이지, 단어가 16개 있는 게 아니다.

주요 특징

  • 순수 트랜스포머: CNN 의 합성곱 연산 없이 순수 어텐션 (Attention) 메커니즘만 사용.
  • 대규모 데이터 의존성: 작은 데이터셋에서는 CNN 보다 성능이 떨어지지만, 대규모 데이터 (수천만 장) 에서는 CNN 을 압도.
  • 효율성: SOTA 성능을 달성하더라도 훈련 비용 (compute) 은 기존 CNN 대비 2~4 배 적게 듦.

배경 및 동기 트랜스포머

자연어 처리 (NLP) 분야에서는 트랜스포머 아키텍처가 표준이 되었으며, BERT나 GPT 시리즈가 이를 통해 엄청난 성과를 냈다. 반면, 컴퓨터 비전 (CV) 분야에서는 여전히 CNN (Convolutional Neural Networks) 이 지배적이었다.

기존 접근법의 한계

기존 CV 연구들은 트랜스포머를 이미지 처리에 적용할 때 다음과 같은 방식을 주로 사용했다.

  1. CNN 과 어텐션을 결합 (Hybrid).
  2. CNN 의 특정 부분을 어텐션으로 대체하되 전체 구조는 유지.
  3. 국소적 어텐션 또는 희소 (sparse) 어텐션 사용.

이러한 방식들은 이론적으로는 효율적이지만, 현대 하드웨어 가속기 (TPU 등) 에서 대규모로 스케일링하기엔 복잡한 엔지니어링이 필요했다.

ViT 의 접근

ViT 연구진은 "CNN 의 유도 편향이 정말 필요한가?"라는 질문을 던졌다. 그들은 트랜스포머를 이미지 처리에 최소한의 수정으로 적용하는 실험을 진행했다.

  • 이미지를 $16 \times 16$ 크기의 패치로 분할.
  • 각 패치를 벡터로 변환하여 시퀀스 입력.
  • NLP 의 토큰 (단어) 처럼 처리.

결론적으로, **대규모 데이터 (1,400 만 장 ~ 3 억 장)**를 사용하면 CNN 의 유도 편향 (inductive bias) 이 불필요하며, 데이터 자체가 모든 공간적 관계를 학습할 수 있음을 증명했다.


방법론 ViT

1. Vision Transformer (ViT) 구조

ViT 는 NLP 의 표준 트랜스포머 인코더를 그대로 사용한다. 주요 단계는 다음과 같다.

  1. 패치 분할 (Patch Embedding): 입력 이미지 $x \in \mathbb{R}^{H \times W \times C}$를 $P \times P$ 크기의 패치로 나눈다. ($N = HW/P^2$ 개의 패치 생성). 각 패치를 평탄화 (flatten) 하여 선형 투영 (linear projection) 을 통해 임베딩 벡터로 변환한다. 이를 패치 임베딩이라고 한다. $ \mathbf{x}_p \in \mathbb{R}^{N \times (P^2 \cdot C)} \xrightarrow{\text{Linear}} \mathbb{R}^{N \times D} $

  2. 클래스 토큰 (Classification Token): 분류 작업을 위해 시퀀스 앞에 학습 가능한 cls 토큰을 추가한다. 이 토큰의 최종 상태가 전체 이미지의 표현 (representation) 으로 사용된다.

  3. 위치 임베딩 (Positional Embedding): 패치들의 순서와 위치 정보를 보존하기 위해 1 차원 학습 가능한 위치 임베딩을 추가한다. (2 차원 구조를 직접 학습하기는 어렵지만, 2 차원 보간법을 통해 해상도 변경에 대응).

  4. 트랜스포머 인코더: 추가된 패치 임베딩과 위치 임베딩을 더한 시퀀스를 표준 트랜스포머 인코더 (Multi-Head Self-Attention + MLP) 에 입력한다.

2. 하이브리드 아키텍처

입력 시퀀스를 원본 이미지 패치가 아닌, CNN 의 특징 맵 (feature map) 에서 추출한 패치로 구성할 수도 있다. 이는 ViT-CNN 하이브리드 모델로, 초기에는 CNN 이 국소적 특징을 추출하고 이후 트랜스포머가 전역적 관계를 학습하는 방식이다.

3. 파인튜닝 (Fine-tuning) 및 고해상도 처리

  • 사전 학습: 대규모 데이터셋 (JFT-300M 등) 으로 학습.
  • 파인튜닝: 작은 데이터셋 (ImageNet, CIFAR 등) 에 맞춰 학습.
  • 해상도 증가: 훈련 당시보다 높은 해상도의 이미지를 입력할 경우, 패치 크기는 유지하되 시퀀스 길이를 늘린다. 이때 기존 위치 임베딩을 2 차원 보간법 (interpolation) 으로 조정하여 적용한다.

실험 결과 ImageNet

ViT는 다양한 벤치마크에서 기존 CNN 모델 (ResNet, BiT, Noisy Student 등) 과 비교되었다.

주요 성능 지표 (Table 2 기준)

모델 데이터셋 ImageNet Acc ImageNet ReaL CIFAR-100 VTAB (19 tasks) TPUv3-core-days
ViT-H/14 JFT-300M 88.55% 90.72% 94.55% 77.63% 2.5k
BiT-L (ResNet) JFT-300M 87.54% 90.54% 93.51% 76.29% 9.9k
Noisy Student JFT-300M 88.4/88.5% 90.55% - - 12.3k
ViT-L/16 ImageNet-21k 85.30% 88.62% 93.25% 72.72% 0.23k
  • 성능: ViT-H/14 모델은 JFT-300M 으로 학습 시 모든 벤치마크에서 CNN 기반 모델 (BiT-L) 을 압도했다.
  • 효율성: 최상위 성능을 달성하면서도 훈련 비용은 BiT 대비 약 4 배, Noisy Student 대비 약 5 배 저렴했다.
  • 데이터 스케일링: ViT는 작은 데이터셋 (ImageNet 1k) 에서는 CNN 보다 성능이 낮았으나, 데이터 양이 늘어날수록 (ImageNet-21k, JFT-300M) 성능이 급격히 상승하며 CNN 을 추월했다.

스케일링 스투디 (Scaling Study)

모델 크기 (Base, Large, Huge) 와 데이터 양, 계산 자원 간의 관계를 분석한 결과:

  1. ViT vs CNN: 동일한 계산 비용 대비 ViT가 CNN 보다 더 높은 성능을 보인다.
  2. 하이브리드 vs 순수: 작은 모델에서는 하이브리드가 약간 우세하나, 큰 모델 (Huge 등) 에서는 순수 ViT와의 차이가 사라진다.
  3. 포화 현상: ViT는 테스트한 범위 내에서 성능 포화 (saturation) 를 보이지 않아, 더 큰 모델과 데이터로 확장할 여지가 있음을 시사한다.

고찰 및 한계 ViT

유도 편향의 중요성

ViT는 CNN 의 유도 편향 (국소성, 병진 불변성) 을 의도적으로 제거했다. 실험 결과, 소규모 데이터에서는 CNN 의 편향이 유리했으나, 대규모 데이터에서는 편향 없이 직접 학습하는 것이 더 효과적임을 확인했다.

어텐션 분석

ViT의 내부 어텐션을 분석한 결과:

  • 낮은 레이어에서도 일부 어텐션 헤드는 이미지의 전역적 영역을 참조한다.
  • 어텐션 거리는 네트워크 깊이가 깊어질수록 증가하며, 분류에 중요한 영역을 집중적으로 주시한다.
  • 하이브리드 모델에서는 초기 레이어에서 어텐션이 국소적으로 집중되는 경향이 있어, CNN 의 초기 레이어와 유사한 역할을 수행한다.

한계점 및 향후 과제

  1. 다른 작업 적용: 현재는 이미지 분류에 국한되어 있으며, 객체 감지 (Detection) 나 분할 (Segmentation) 과 같은 다른 CV 작업으로의 확장이 필요하다. (다만, DETR 등 후속 연구에서 이미 적용됨)
  2. 자기지도 학습 (Self-Supervised Learning): NLP 분야처럼 대규모 자기지도 학습 (예: Masked Image Modeling) 을 적용하면 성능이 더 향상될 수 있으나, 아직 supervised pre-training 대비 4% 정도의 격차가 존재한다.
  3. 계산 비용: 파인튜닝 시 고해상도 이미지를 처리하면 시퀀스 길이가 길어져 계산 비용이 급증할 수 있다.

여담 여담

  • 이름의 유래: 제목인 "An Image is Worth 16x16 Words"는 이미지 한 장을 $16 \times 16$ 픽셀의 패치 256 개 (단어) 로 나눈다는 비유에서 유래했다. 사실 16x16 은 256 이니까 단어 256 개가 맞는 거지, 16 개가 아니다.
  • 코드 공개: 구글 리서치 팀은 파인튜닝 코드와 사전 학습된 모델을 GitHub 에서 오픈소스로 공개했다.
  • 후속 연구: ViT 의 성공은 Vision Transformer 기반의 다양한 모델 (Swin Transformer, DeiT, MAE 등) 을 탄생시켰다. 특히 Swin Transformer 는 계층적 구조를 도입하여 ViT의 계산 효율성 문제를 해결했다.
  • 유머: ViT가 등장한 이후, CNN 연구자들은 "우리가 30 년 동안 해온 게 다 헛수고였나?"라며 당황했다. 하지만 CNN 은 여전히 실시간 인ference 에서 빠르기 때문에 완전히 사라지지는 않았다.

각주 각주

  1. Fine-tuning code and pre-trained models are available at https://github.com/google-research/vision_transformer
  2. ImageNet-21k is a superset of ImageNet with 21k classes and 14M images.
  3. JFT-300M is an in-house dataset with 303M images.
  4. BiT stands for Big Transfer, a large-scale ResNet model.
  5. VTAB (Visual Task Adaptation Benchmark) consists of 19 diverse tasks.