Ultralytics YOLO27: 대기자 명단에 등록하세요.
YOLO 라이선스 받기
Ultralytics 용어집으로 돌아가기

Vision Transformer (ViT)

Vision Transformer (ViT)는 이미지를 패치로 나누고 셀프 어텐션으로 패치 간 관계를 파악합니다. 아키텍처, 변형 모델 및 CNN과의 장단점을 다룹니다.

비전 Transformer(ViT)는 언어 모델링에 사용되는 Transformer 아키텍처를 이미지에 적용한 신경망입니다. 이미지를 고정 크기 패치로 나누고 각 패치를 토큰 임베딩으로 변환한 다음 셀프 어텐션으로 시퀀스를 처리하므로 첫 번째 레이어부터 모든 패치가 다른 모든 패치의 정보를 활용할 수 있습니다. Google 연구진은 "An Image is Worth 16x16 Words"에서 이 아키텍처를 소개하고, 합성곱 레이어가 전혀 없는 순수 Transformer도 충분한 데이터로 사전 학습하면 이미지 분류에서 최신 합성곱 신경망(CNN)과 대등한 성능을 보인다는 점을 입증했습니다. 오늘날 ViT는 비전 언어 모델, 세그멘테이션 파운데이션 모델, 자기 지도 학습 백본의 이미지 인코더로 사용됩니다.

비전 트랜스포머 작동 방식#

ViT는 이미지를 시퀀스로 변환한 뒤 텍스트처럼 처리합니다. 아래 단계에서는 224×224 이미지에 ViT-Base/16을 사용합니다.

  1. 패치 임베딩: 이미지를 16×16픽셀 패치로 나누면 14×14 격자에 패치 196개가 생성됩니다. 각 패치를 펼친 뒤 학습 가능한 행렬을 곱해 768차원 임베딩으로 변환합니다. 일반적으로 이 과정은 스트라이드 16의 16×16 합성곱으로 구현됩니다.
  2. 클래스 토큰과 위치 임베딩: 학습 가능한 클래스 토큰을 시퀀스 맨 앞에 추가하고 모든 토큰에 학습 가능한 위치 임베딩을 더합니다. 어텐션만으로는 순서를 파악할 수 없으므로 이 임베딩만이 각 패치의 원래 위치를 알려 줍니다.
  3. Transformer 인코더: ViT-Base에서는 12개인 동일한 블록을 쌓아 구성합니다. 각 블록은 모든 토큰에 걸쳐 정보를 결합하는 멀티헤드 셀프 어텐션과 토큰을 개별적으로 변환하는 GELU 활성화 기반 2계층 MLP를 번갈아 적용합니다. 각 하위 레이어 앞에는 레이어 정규화를 적용하고, 하위 레이어를 잔차 연결로 감쌉니다.
  4. 헤드: 클래스 토큰의 최종 출력을 선형 분류기에 입력합니다. 세그멘테이션과 같은 고밀도 작업에서는 패치 토큰을 사용해 14×14 격자로 다시 구성합니다.

아래 PyTorch 코드는 이미지 하나의 토큰 시퀀스를 구성한 뒤 단일 인코더 블록에 전달합니다.

import torch
from torch import nn

# ViT-Base/16 설정: 16x16 패치, 768차원 토큰, 어텐션 헤드 12개
image = torch.randn(1, 3, 224, 224)
patch_embed = nn.Conv2d(3, 768, kernel_size=16, stride=16)  # 패치마다 선형 투영 하나 적용

# 이미지를 14x14 패치 격자로 나누고 펼쳐 토큰 196개로 변환
tokens = patch_embed(image).flatten(2).transpose(1, 2)

# 학습 가능한 클래스 토큰을 앞에 추가하고 학습 가능한 위치 임베딩을 더함
cls_token = nn.Parameter(torch.zeros(1, 1, 768))
pos_embed = nn.Parameter(torch.zeros(1, 197, 768))
tokens = torch.cat([cls_token, tokens], dim=1) + pos_embed

# 모든 토큰이 서로에게 주의를 기울이는 사전 정규화 인코더 블록 하나
block = nn.TransformerEncoderLayer(
    d_model=768, nhead=12, dim_feedforward=3072, activation="gelu", batch_first=True, norm_first=True
)
print(block(tokens).shape)

코드는 torch.Size([1, 197, 768])을 출력합니다. 패치 토큰 196개와 클래스 토큰 하나가 모두 768차원을 유지한 채 ViT-Base의 12개 블록 중 다음 블록에 입력될 준비를 마칩니다.

모델 크기와 변형#

ViT 이름에는 모델 크기와 패치 크기가 표시됩니다. ViT-B/16은 16×16 패치를 사용하는 파라미터 8,600만 개의 Base 모델이며, Large와 Huge 모델의 파라미터 수는 각각 3억 700만 개와 6억 3,200만 개입니다. 패치가 작을수록 토큰 수가 늘어나 세부 정보가 향상되지만 연산 비용이 증가합니다. ViT의 학습 방식이나 구조를 변경한 여러 변형 모델은 다음과 같습니다.

  • DeiT: 강력한 증강과 증류 토큰을 사용하는 학습 레시피로, 추가 사전 학습 데이터 없이 ImageNet-1k만으로도 경쟁력 있는 ViT를 학습합니다.
  • Swin Transformer: 이동하는 로컬 윈도우 내에서 어텐션을 계산하고 단계 사이에서 패치를 병합해, 탐지와 세그멘테이션에 적합한 CNN 형태의 계층 구조를 생성합니다.
  • 마스크드 오토인코더(MAE)와 DINOv2: 레이블 없는 이미지로 ViT를 사전 학습하는 자기 지도 학습 방법입니다. MAE는 마스킹된 패치를 재구성하고, DINOv2는 교사 네트워크의 출력을 일치시킵니다.
  • CLIP과 SigLIP: 이미지와 해당 캡션을 연결하도록 학습된 ViT 이미지 인코더로, 멀티모달 모델의 비전 타워로 널리 재사용됩니다.

응용 분야#

  • 비전 언어 모델: ViT 인코더가 이미지를 토큰 시퀀스로 변환하면 대규모 언어 모델이 텍스트와 함께 이를 읽어 캡션 생성과 시각적 질의응답을 수행합니다.
  • 고밀도 예측: ViT 백본의 패치 토큰은 이미지 전반의 먼 영역에서 문맥 정보를 얻어야 하는 이미지 세그멘테이션과 깊이 추정에 사용됩니다.
  • 비디오 이해: 비디오 ViT는 클립을 시공간 패치로 나눕니다. V-JEPA와 같은 자기 지도 비디오 모델은 레이블 없는 영상에서 동작 및 외관 특징을 학습해 동작 인식과 같은 작업을 수행합니다.

비전 트랜스포머와 CNN 비교#

CNN은 모든 레이어에 각 필터가 작은 주변 영역을 본다는 점에 기반한 지역성과 동일한 필터를 모든 위치에 적용한다는 점에 기반한 평행 이동 등변성이라는 두 가지 가정을 내재합니다. 패치 그리드 외의 공간 구조는 ViT가 데이터로부터 학습해야 합니다. 원 논문에서 이미지 130만 장으로 구성된 ImageNet만으로 학습한 ViT는 비슷한 규모의 ResNets보다 몇 퍼센트포인트 낮은 점수를 기록했으며, 이미지 3억 장 규모의 JFT-300M 데이터셋으로 사전 학습한 결과 ViT-H/14의 ImageNet top-1 정확도는 88.55%에 도달했습니다. 비용도 또 다른 차이점입니다. 셀프 어텐션은 각 토큰을 나머지 모든 토큰과 비교하므로, 이미지의 한 변 길이를 두 배로 늘리면 토큰 수는 네 배가 되고 어텐션 비용은 16배로 증가합니다. 플래시 어텐션은 해당 연산의 메모리 트래픽을 줄이고, 윈도우 어텐션은 비교 연산 자체를 제한합니다. Ultralytics는 Meta의 Segment Anything Model을 실행하며, 해당 모델의 sam_b.pt 체크포인트는 ViT-B 백본을 사용해 각 1024×1024 이미지를 인코딩합니다: 16×16 패치는 4,096개 토큰으로 이루어진 64×64 그리드를 형성하므로, 12개 블록 중 8개는 14×14 윈도우 안에서만 어텐션을 수행하고 나머지 4개는 전역 어텐션을 사용합니다.

솔루션 살펴보기

스포츠 분야의 컴퓨터 비전

스포츠 분야의 컴퓨터 비전

Ultralytics YOLO가 선수 및 공 추적, 경기력 분석, 코칭 인사이트, 선수 재활을 통해 스포츠 비전을 구현하는 방법을 알아보세요.
자세히 알아보기
항공 이미지 컴퓨터 비전

항공 이미지 컴퓨터 비전

Ultralytics YOLO를 활용해 드론 및 항공 이미지를 농업, 양식업, 보전, 지리 공간 분석을 위한 실시간 인사이트로 전환하세요.
자세히 알아보기
항공우주 분야의 컴퓨터 비전

항공우주 분야의 컴퓨터 비전

Ultralytics YOLO를 활용해 항공기 검사, 활주로 FOD 감지, 공항 지상 운영, 복합재 결함 감지 등 항공우주 분야에 컴퓨터 비전을 적용하세요.
자세히 알아보기
보안 분야의 컴퓨터 비전

보안 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 모든 시설을 보호하세요. Vision AI는 경계 모니터링, 위협 감지, 번호판 인식, 작업장 안전을 지원합니다.
자세히 알아보기
로보틱스 분야의 컴퓨터 비전

로보틱스 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 더 스마트한 머신을 구현하세요. 로보틱스 분야의 Vision AI는 자율 주행, 인식, 객체 추적, 실시간 제어를 지원합니다.
자세히 알아보기
물류 분야의 컴퓨터 비전

물류 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 물류를 간소화하세요. 비전 AI는 화물 검사, 분류, 차량 추적, 실시간 창고 안전 모니터링을 지원합니다.
자세히 알아보기
리테일 분야의 컴퓨터 비전

리테일 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 리테일의 새로운 가능성을 열어 보세요. 비전 AI는 재고 추적, 선반 모니터링, 대기열 관리, 더욱 심층적인 고객 인사이트를 지원합니다.
자세히 알아보기
의료 분야의 컴퓨터 비전

의료 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 의료 솔루션을 구축하세요. 의료 분야의 비전 AI는 의료 영상 판독을 가속화하고, 진단을 개선하며, 환자 모니터링을 지원합니다.
자세히 알아보기
제조 분야의 컴퓨터 비전

제조 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 제조 공정을 최적화하세요. 비전 AI는 품질 관리, 결함 탐지, PPE 규정 준수, 조립 라인 자동화를 지원합니다.
자세히 알아보기
자동차 분야의 컴퓨터 비전

자동차 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 자동차 분야에 컴퓨터 비전을 적용하세요. 비전 AI는 도로 안전, 운전자 지원, 차량 자동화를 개선해 더 스마트한 도로를 구현합니다.
자세히 알아보기
농업 분야의 컴퓨터 비전

농업 분야의 컴퓨터 비전

Ultralytics YOLO 모델로 스마트 농업에 비전 AI를 도입하세요. 작물 모니터링, 가축 추적, 정밀 농업을 지원하여 더 높은 수확량과 더 스마트한 농업을 실현합니다.
자세히 알아보기

함께 AI의 미래를 만들어 가세요!

머신러닝의 미래와 함께 여정을 시작하세요