CNN의 시대가 끝났다? Vision Transformer (ViT)가 이미지를 보는 새로운 방식: Self-Attention부터 CLIP, SAM까지!


핵심 요약

2020년, 이미지 인식의 왕좌를 차지했던 CNN에 도전장을 내민 모델이 등장합니다. 바로 Vision Transformer(ViT)입니다. 놀라운 사실: ViT-H/14는 ImageNet에서 88.55% 정확도를 달성하면서 ResNet 기반 모델보다 4배 적은 계산 비용으로 더 좋은 성능을 냈습니다! “이미지 한 장은 16×16 단어의 가치가 있다”라는 논문 제목처럼, ViT는 이미지를 패치 단위로 쪼개 문장처럼 처리합니다. 이 포스팅에서는 CNN과 ViT의 근본적 차이, Self-Attention의 마법, 그리고 CLIP과 Segment Anything(SAM)까지 – 비전 AI의 새로운 패러다임을 완벽하게 분석합니다.


Table of Contents


1. CNN vs Transformer: 이미지를 보는 두 가지 눈

1-1. CNN: 10년간 이미지 인식의 왕

Convolutional Neural Network(CNN)는 2012년 AlexNet 이후 10년 이상 컴퓨터 비전의 표준이었습니다.

CNN의 핵심 철학:

  • 국소성(Locality): 인접한 픽셀끼리 관련이 있다
  • 이동 불변성(Translation Equivariance): 고양이가 왼쪽에 있든 오른쪽에 있든 고양이다

비유로 이해하기:
CNN은 돋보기로 이미지를 훑는 탐정과 같습니다. 3×3 픽셀씩 차례로 살피면서 “여기에 눈이 있네”, “여기에 코가 있네”를 찾아가죠. 이 방식은 직관적이고 효율적입니다.

1-2. Transformer의 등장: NLP에서의 혁명

2017년, Google의 “Attention is All You Need” 논문이 자연어 처리(NLP)를 완전히 바꿨습니다.

Transformer의 핵심:

  • Self-Attention: 모든 단어가 다른 모든 단어와의 관계를 계산
  • 위치 인코딩: 순서 정보를 별도로 주입
  • 병렬 처리: RNN과 달리 한 번에 전체 시퀀스 처리 가능

GPT, BERT, ChatGPT… 모두 Transformer 기반입니다.

1-3. 그렇다면 이미지에도 Transformer를?

2020년, Google Brain 팀이 질문했습니다:

“NLP에서 그렇게 잘 작동하는 Transformer를, 이미지에 직접 적용하면 어떨까?”

결과는 Vision Transformer(ViT)였습니다. 논문 제목이 모든 것을 말해줍니다:

“An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale”

이미지 한 장이 16×16 단어의 가치가 있다… 무슨 의미일까요?


2. Vision Transformer 작동 원리: 이미지를 문장처럼 읽기

2-1. 이미지를 패치로 쪼개기

ViT의 첫 번째 단계:

  1. 이미지 분할: 224×224 이미지를 16×16 픽셀 패치로 분할
  2. 패치 수 계산: (224÷16) × (224÷16) = 196개 패치
  3. 각 패치 = 하나의 “토큰” (NLP의 단어와 같은 역할)

비유:
이미지를 퍼즐 조각처럼 쪼개는 겁니다. 각 조각이 독립적인 “단어”가 되고, 이 단어들의 관계를 분석하는 게 ViT의 방식입니다.

2-2. 패치 임베딩 (Patch Embedding)

각 16×16 패치는 768개의 숫자(벡터)로 변환됩니다.

과정:

  1. 16×16×3 = 768차원 벡터로 펼침 (Flatten)
  2. Linear Projection으로 임베딩 공간에 투영
  3. 모든 패치가 동일한 차원의 벡터로 표현됨

코드로 이해하기:

patch = image[i:i+16, j:j+16] # 16×16 패치 추출
flattened = patch.flatten() # 768차원 벡터로 펼침
embedding = linear_layer(flattened) # 임베딩 변환

2-3. 위치 임베딩 (Positional Embedding)

문제: 패치를 섞어도 Transformer는 구분하지 못함!

해결: 각 패치에 위치 정보를 추가합니다.

  • 패치 1번: [0.1, 0.2, …] 임베딩 + [위치 1 정보]
  • 패치 2번: [0.3, 0.1, …] 임베딩 + [위치 2 정보]

이로써 모델은 “이 패치가 이미지의 왼쪽 상단에서 왔다”는 것을 알 수 있습니다.

2-4. CLS 토큰: 이미지 전체를 대표하는 특별한 토큰

NLP의 BERT처럼, ViT도 [CLS] 토큰을 사용합니다.

  • 역할: 전체 이미지의 정보를 집약
  • 위치: 패치 시퀀스의 맨 앞에 추가
  • 최종 분류: CLS 토큰의 출력을 분류 헤드에 연결

전체 입력 시퀀스:

[CLS] + [패치1] + [패치2] + … + [패치196] = 197개 토큰

2-5. Transformer Encoder: 핵심 엔진

ViT는 표준 Transformer Encoder를 거의 그대로 사용합니다.

구성 요소역할
Multi-Head Self-Attention패치 간 관계 학습
Layer Normalization학습 안정화
MLP (Feed-Forward Network)비선형 변환
Residual Connection깊은 네트워크 학습 가능

이 구조를 12~32번 반복하면 ViT가 완성됩니다!


3. Self-Attention으로 이미지 패턴 인식하기

3-1. Self-Attention이란?

Self-Attention은 시퀀스의 모든 요소가 다른 모든 요소와의 관계를 계산하는 메커니즘입니다.

CNN vs Self-Attention:

특성CNNSelf-Attention
시야 범위국소적 (3×3, 5×5)전역적 (전체 이미지)
관계 학습고정된 패턴동적으로 학습
장거리 의존성깊은 레이어 필요첫 레이어부터 가능

비유:
CNN이 돋보기라면, Self-Attention은 드론에서 내려다보는 시야입니다. 이미지의 멀리 떨어진 부분도 한눈에 보고 관계를 파악할 수 있죠.

3-2. Query, Key, Value: Attention의 삼총사

Self-Attention은 검색 시스템처럼 작동합니다:

  1. Query (Q): “나는 무엇을 찾고 있는가?”
  2. Key (K): “나는 어떤 정보를 가지고 있는가?”
  3. Value (V): “나의 실제 내용은 무엇인가?”

계산 과정:

Attention(Q, K, V) = softmax(QK^T / √d_k) × V

쉽게 풀어 설명하면:
각 패치(Query)가 다른 모든 패치(Key)와 “얼마나 관련있어?”를 점수로 매기고, 그 점수에 따라 다른 패치들의 정보(Value)를 가중 평균합니다.

3-3. Multi-Head Attention: 다양한 관점으로 보기

하나의 Attention으로는 부족합니다. 이미지에는 다양한 패턴이 있으니까요:

  • Head 1: 색상 관계에 집중
  • Head 2: 경계선에 집중
  • Head 3: 텍스처에 집중

12개의 Attention Head가 각자 다른 관점에서 이미지를 분석하고, 결과를 합칩니다.

3-4. ViT가 실제로 보는 것: Attention 시각화

연구에 따르면, ViT의 Attention 패턴은 CNN의 학습 결과와 유사합니다:

  • 초기 레이어: 국소적 패턴 (가장자리, 색상)
  • 깊은 레이어: 전역적 패턴 (객체 전체, 의미적 관계)

“ViT의 RGB Embedding Filter를 시각화하면, CNN의 low-level layer와 유사한 형태가 나타납니다. 이는 ViT도 CNN처럼 학습이 잘 되었음을 의미합니다.”


4. 성능 비교: ViT vs ResNet vs EfficientNet

4-1. ImageNet 벤치마크 결과

ImageNet 분류 정확도 (Top-1):

모델파라미터ImageNet 정확도사전 학습 데이터
ResNet-152 (BiT-L)928M87.54%ImageNet-21K
EfficientNet-B766M85.20%ImageNet
ViT-L/16307M87.76%JFT-300M
ViT-H/14632M88.55%JFT-300M

다른 벤치마크:

데이터셋ResNet (BiT)ViT-H/14
CIFAR-10093.51%94.55%
VTAB (19 tasks)76.29%77.63%

4-2. 계산 효율성: ViT의 진정한 강점

놀라운 발견:

ViT-H/14는 ResNet 기반 모델보다 적은 계산 자원으로 더 좋은 성능을 달성했습니다!

항목ResNet (BiT)ViT-H/14
사전 학습 비용9,900 TPUv3-core-days2,500 TPUv3-core-days
성능 (ImageNet)87.54%88.55%

“동일한 성능을 달성하기 위해 드는 계산비용이 ViT가 2~4배는 더 적습니다.”

4-3. 데이터 양에 따른 성능 변화

ViT의 아킬레스건: 데이터 요구량

사전 학습 데이터ResNetViT승자
ImageNet (130만)높음낮음ResNet
ImageNet-21K (1,400만)높음비슷무승부
JFT-300M (3억)높음더 높음ViT

핵심 인사이트:

  • 적은 데이터: CNN이 유리 (Inductive Bias 덕분)
  • 대량 데이터: ViT가 압도 (제한 없는 학습 능력)

비유:
CNN은 “이미지란 원래 이런 거야”라는 선입견을 가지고 태어났습니다. 적은 데이터로도 빨리 배우지만, 한계가 있죠. ViT는 백지 상태로 시작해서 데이터가 많으면 더 높이 올라갑니다.

4-4. Inductive Bias: CNN vs ViT의 근본적 차이

Inductive Bias(귀납적 편향)는 모델이 가진 선험적 가정입니다.

모델Inductive Bias특징
CNN높음 (Locality, Translation Equivariance)적은 데이터에 강함, 한계 있음
Transformer낮음 (거의 없음)많은 데이터 필요, 더 높은 잠재력
MLP매우 낮음가장 일반적이지만 비효율적

“Inductive Bias가 강할수록 작은 데이터셋에서 학습 성능이 좋아지는 경향이 있지만, 대규모 데이터에서는 오히려 방해가 됩니다.”


5. 실전 활용: CLIP과 Segment Anything (SAM)

5-1. CLIP: 텍스트와 이미지를 연결하다

CLIP(Contrastive Language-Image Pre-training)은 OpenAI가 2021년에 발표한 모델입니다.

핵심 아이디어:

  • 4억 개의 (이미지, 텍스트) 쌍으로 학습
  • 이미지와 텍스트를 같은 공간에 임베딩
  • Zero-shot으로 새로운 분류 작업 수행 가능!

CLIP의 작동 방식:

  1. 이미지 인코더: ViT 또는 ResNet으로 이미지 → 벡터
  2. 텍스트 인코더: Transformer로 텍스트 → 벡터
  3. 대조 학습: 일치하는 쌍의 벡터는 가깝게, 불일치는 멀게

왜 혁명적인가?

기존 ImageNet 모델: “1,000개 클래스 중 하나로 분류”
CLIP: “아무 텍스트나 줘봐, 그게 이미지랑 맞는지 판단해줄게”

CLIP의 성능:

  • 특정 도메인 학습 없이도 ImageNet 분류 76.2% 달성
  • 자연 이미지에서 기존 모델보다 더 robust
  • OCR, 액션 인식 등 다양한 태스크에 적용 가능

5-2. Segment Anything (SAM): 모든 것을 분할하다

Segment Anything Model (SAM)은 Meta AI가 2023년에 발표한 범용 이미지 분할 모델입니다.

SAM의 혁신:

  • 프롬프트 기반: 클릭, 박스, 텍스트로 분할 영역 지정
  • Zero-shot 일반화: 학습에 없던 객체도 분할
  • 초대형 데이터셋: SA-1B (11억 개 마스크)로 학습

SAM의 구조:

구성 요소역할
Image EncoderViT-H/16 기반, 이미지 특징 추출
Prompt Encoder점/박스/마스크 프롬프트 인코딩
Mask Decoder최종 분할 마스크 생성

SAM 2의 발전 (2024):

  • 비디오 지원: 이미지뿐 아니라 비디오에서도 분할
  • 메모리 메커니즘: 이전 프레임 정보 활용
  • SA-V 데이터셋: 50.9K 비디오, 35.5M 마스크

실제 활용 사례:

  • 사진 편집: 배경 제거, 객체 선택
  • 의료 영상: 종양 영역 분할
  • 자율주행: 도로/장애물 인식
  • AR/VR: 실시간 객체 인식

5-3. 그 외 ViT 기반 모델들

모델특징용도
DeiTKnowledge Distillation으로 ImageNet만으로 학습효율적 ViT
Swin Transformer계층적 구조, 윈도우 기반 Attention고해상도 이미지
BEiTBERT 스타일 사전 학습Self-supervised ViT
MAEMasked Autoencoder효율적 사전 학습
DINOSelf-Distillation라벨 없이 학습

6. ViT의 미래와 한계

6-1. 현재 한계

데이터 요구량:

  • ImageNet만으로는 CNN보다 성능이 낮음
  • JFT-300M 같은 대규모 데이터 필요

계산 복잡도:

  • Self-Attention은 O(n²) 복잡도
  • 고해상도 이미지에서 비용 급증

해석 가능성:

  • Attention이 항상 의미 있는 것은 아님
  • CNN보다 해석이 어려울 수 있음

6-2. 극복 노력

문제해결책대표 모델
데이터 부족Knowledge DistillationDeiT
계산 복잡도윈도우 기반 AttentionSwin Transformer
고해상도다중 스케일 구조Multi-Scale ViT
Inductive Bias 부족CNN과 결합CvT, CoAtNet

6-3. CNN의 시대가 끝났는가?

결론: 아직은 “공존의 시대”

상황추천이유
적은 데이터, 제한된 자원CNN (ResNet, EfficientNet)Inductive Bias로 효율적 학습
대량 데이터, 풍부한 자원ViT더 높은 성능 상한선
중간 상황하이브리드 (CoAtNet, CvT)두 장점 결합
엣지/모바일MobileViT, EfficientViT경량화 ViT

실전 조언:

  • 작은 프로젝트: EfficientNet부터 시작
  • 대규모 서비스: ViT 계열 또는 하이브리드
  • 최신 기술 활용: CLIP, SAM 등 Foundation Model

정리: 핵심 포인트

Vision Transformer(ViT)는 이미지를 16×16 패치로 분할하여 Transformer에 입력

Self-Attention으로 이미지의 전역적 관계를 첫 레이어부터 학습 가능

대량 데이터에서 ViT가 ResNet/EfficientNet을 4배 적은 비용으로 능가

적은 데이터에서는 CNN이 여전히 유리 (Inductive Bias 덕분)

CLIP: 텍스트와 이미지를 연결, Zero-shot 분류 가능

SAM: 모든 것을 분할하는 범용 분할 모델


FAQ: 자주 묻는 질문

Q1. ViT가 CNN을 완전히 대체할까요?

A. 당분간은 아닙니다. 적은 데이터, 제한된 자원 상황에서는 CNN이 여전히 효율적입니다. 하지만 대규모 데이터와 Foundation Model 트렌드에서는 ViT가 주류가 되고 있습니다.

Q2. ViT를 사용하려면 JFT-300M 같은 대규모 데이터가 필요한가요?

A. 아닙니다! DeiT는 Knowledge Distillation으로 ImageNet만으로도 좋은 성능을 달성했습니다. 또한 사전 학습된 ViT를 Fine-tuning하면 적은 데이터로도 충분합니다.

Q3. CLIP과 SAM을 실제 프로젝트에 어떻게 사용하나요?

A. 둘 다 오픈소스로 공개되어 있습니다:

Python 몇 줄로 바로 사용할 수 있습니다!

Q4. ViT는 왜 많은 데이터가 필요한가요?

A. ViT는 Inductive Bias가 적기 때문입니다. CNN은 “인접 픽셀이 관련 있다”는 가정을 내장하고 있어 적은 데이터로도 빨리 배웁니다. ViT는 이런 가정 없이 데이터에서 모든 것을 학습해야 합니다.

Q5. 모바일/엣지 환경에서 ViT를 사용할 수 있나요?

A. 네! MobileViT, EfficientViT, LightViT 등 경량화된 ViT 변형들이 있습니다. 특히 MobileViT는 iPhone에서 1ms 미만의 지연시간을 달성했습니다.


외부 참고 자료

Vision Transformer와 관련 모델을 더 깊게 배우고 싶다면:


정리: 이 글에서 배운 것

CNN은 국소적 패턴에 집중, ViT는 Self-Attention으로 전역적 관계 학습

이미지 → 패치 → 시퀀스 → Transformer 구조로 NLP의 성공을 비전에 적용

대규모 데이터에서 ViT가 CNN을 능가, 적은 데이터에서는 CNN 유리

CLIP은 텍스트-이미지 연결로 Zero-shot 분류, SAM은 범용 분할

하이브리드 모델이 두 장점을 결합하여 실전에서 각광

다음 포스팅에서는 “Diffusion Model 완벽 해부: DALL-E, Stable Diffusion은 어떻게 이미지를 그릴까?”에 대해 자세히 알아봅니다. AI가 그림을 그리는 원리를 파헤쳐 볼게요!


관련 포스팅:

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다