인공지능

CV 분야에서 Transformers

원담 2025. 5. 28. 11:47
728x90

CV 분야에서 Transformer

Image Generation (이미지 생성)

  • Image Transformer (2018): 텍스트 생성 방식(GPT-like)을 이미지 픽셀에 적용
  • Taming Transformer (2020): VQ-VAE와 Transformer를 결합해서 더 효율적인 생성 가능

잠깐!

  • CNN: 근처 픽셀 중심으로 점점 넓혀서 보기
  • Transformer: 처음부터 전체를 보고, 어디가 중요한지를 학습
항목  CNN  Transformer (ViT 등)
입력 처리 방식 필터로 국소 영역 처리 패치 단위로 전체 주목
시야 범위 처음엔 작음 → 깊어지며 커짐 처음부터 전체를 볼 수 있음
관계 학습 국소적, 계층적 전역적, 위치 간 관계 바로 학습 가능
병렬 처리 상대적으로 빠름 상대적으로 느릴 수 있음 (ViT 초기에는)

Image Recognition (이미지 인식) : 이미지를 픽셀 단위로 자른 '패치(patch)'들을 입력으로 사용하여 각 패치를 일종의 단어(token)처럼 취급 하고 모든 패치 간의 중요도(Attention score)를 계산해서 인식 한다.

  • ViT (Vision Transformer): 이미지를 패치로 나눠서 입력하고, Attention으로 각 위치 간 관계를 학습
    • Transformer를 그대로 이미지에 적용
  • Swin Transformer: 계층적 구조를 도입해 로컬 정보 + 전역 정보 동시에 처리 가능
    • CNN의 계층적 구조를 결합한 더 실용적인 Vision Transformer
  • 이미지 분류 (cat/dog), 객체 탐지, 이미지 세그멘테이션 등
항목  Vision Transformer (ViT)  Swin Transformer
등장 2020년 2021년
구조 이미지를 패치로 나눈 후, 전역 self-attention 수행 슬라이딩 윈도우(local window) 기반 attention → 계층적 구조 도입
시야(Field of View) 처음부터 이미지 전체 작은 윈도우 → 점점 넓게 (CNN처럼 계층적 확장)
특징 전역 관계 학습에 탁월 계산량 줄이고, 국소-전역 정보 모두 활용
장점 전체 패치 간 관계 학습 가능 (전역적) 효율성 ↑, 해상도 높은 이미지도 잘 처리
단점 고해상도에서 느리고 비효율적 구조 복잡함, 구현 난이도 있음

Transformer 등장 이전: RNN 기반 이미지 생성

PixelRNN / PixelCNN 은 이미지를 “왼쪽 → 오른쪽, 위 → 아래” 순서로 한 픽셀씩 예측해서 생성한다

PixelRNN 구조 ➡ 단점: 속도 느림, 병렬화 어려움

  • 각 픽셀을 이전 픽셀들에 대한 조건부 확률로 모델링
  • 즉, 이미지도 시퀀스(sequence)처럼 보고 처리
구조
설명
Row LSTM 가로 방향으로 한 줄씩 순차 예측
Diagonal BiLSTM 대각선 방향으로 병렬화 가능
PixelCNN CNN을 사용해서 병렬화 시도 (하지만 여전히 느림)

Conditional PixelCNN  텍스트 조건부 이미지 생성의 시초 격 구조

  • 특정 조건(h)에 따라 이미지 생성. 예: "숫자 3을 그려줘" → 조건을 기반으로 픽셀 예측
  • 구조는 Gated PixelCNN, ResNet 기반 등 발전
용어 
의미
Conditional PixelCNN 조건(h)을 입력받아 해당 조건에 맞는 이미지를 픽셀 단위로 생성
Gated PixelCNN 게이트 연산을 추가해서 더 복잡하고 정교한 분포를 학습할 수 있게 개선한 구조
ResNet 구조 도입 잔차 연결(residual connection)을 통해 딥한 네트워크 학습 안정화 및 성능 향상

이미지 생성에서의 Transformer 

PixelCNN을 대체하기 위해 등장한 첫 Transformer 기반 이미지 생성 모델이다. 픽셀을 토큰처럼 보고, GPT처럼 한 픽셀씩 생성한다. Masked Self-Attention 사용하여 미래 픽셀은 안 보고 이전 픽셀만 보고 예측할 수 있다.

  • Local Self-Attention: 전부 다 보진 않고, 가까운 픽셀끼리만 Attention → 연산량 절감
  • 1D, 2D attention 둘 다 시도
  • 성능은 PixelCNN/PixelRNN보다 비슷하거나 더 나은 성능을 보인다

Generative Pretraining from Pixels (GPP)

GPT처럼 이미지를 픽셀 단위 시퀀스로 바꾸고, Autoregressive 또는 Masked 방식으로 사전학습한다. 이건 이미지 Transformer가 어떻게 사전학습(Pretraining)을 하느냐에 대한 설명이다.

방식
설명  GPT/BERT 유사
Autoregressive 이전 픽셀만 보고 다음 픽셀 예측 GPT
Masked Prediction 중간 픽셀 일부 가리고 맞추기 BERT

TransGan: CNN을 전혀 쓰지 않은 GAN

  • Generator, Discriminator 모두 순수 Transformer 블록만으로 구성
  • CNN 없이 이미지를 생성하고 평가
기존 GAN 문제  TransGAN 장점
대부분 CNN 기반 CNN 없이 Transformer만으로 구현
CNN은 지역 정보 강함, 전역 정보 약함 Transformer는 전체 정보를 더 잘 모델링
고해상도 한계 있음 Transformer로 더 유연한 구조 가능성 제시

Taming Transformers: 고해상도 이미지를 Transformer로 생성하기, Transformer는 픽셀 하나하나를 토큰으로 보면 너무 길어지고 무거워 지기 때문에 여러가지 해결책들이 나왔다.

구성 
요소설명
VQ-VAE 이미지를 코드북(codebook)으로 압축
VQ-GAN GAN Loss로 더 자연스러운 이미지 압축
+ Transformer 압축된 코드들을 시퀀스로 처리해서 이미지 생성
 
➡ 압축된 코드 시퀀스를 Transformer가 예측 → 훨씬 효율적으로 고화질 이미지 생성 가능! 

단계  구성 요소  설명
① 이미지 압축 VQ-VAE 이미지를 discrete 코드(token)로 압축 (ex: 32x32 코드)
② 고급 압축 VQ-GAN 더 고화질 유지 + GAN loss로 퀄리티 ↑
③ 생성 Transformer 텍스트처럼 코드를 시퀀스로 예측 (auto-regressive)
④ 복원 VQ-GAN 디코더 예측한 코드를 다시 이미지로 복원

정리

시기  이름  특징  한 줄 설명
2018 Image Transformer 픽셀 단위 생성 (AutoRegressive) PixelCNN을 Transformer로 대체
2020 GPP GPT/BERT 스타일 시각 학습 픽셀을 시퀀스로 학습, 전이 학습용
2020 Taming Transformer VQ-VAE + GAN + Transformer 고해상도 이미지 생성도 가능
2021 TransGAN Generator/Discriminator 모두 Transformer CNN 없는 순수 Transformer GAN 구현

이미지 인식에서의 Transformer 

Vision Transformer (ViT) - 이미지 인식용 트랜스포머의 시작

Google에서 2020년에 발표한 논문: "An Image is Worth 16x16 Words" -> 이미지를 작은 패치(조각)로 나눈 뒤, 이걸 텍스트 토큰처럼 Transformer에 넣는다.

CNN ViT
로컬 영역 중심 처리 (필터 중심) 전역 패치 간 관계를 모델링
이미지 전체를 한 번에 처리 패치 단위로 나눠 처리
Conv 연산 기반 Self-Attention 기반
 
항목 ResNet ViT
기반 CNN (Conv) Transformer (Attention)
입력 전체 이미지 패치 분할 후 입력
학습 유연성 다양한 크기 이미지 잘 처리 패치 개수에 민감
 
➡ ViT는 전역 정보를 잘 포착하지만, 학습 데이터가 많지 않으면 CNN보다 불리할 수 있음

BEiT: 이미지용 BERT 스타일 사전학습 -> BEiT는 ViT 기반이지만, BERT처럼 마스킹된 이미지 패치를 복원하는 식으로 사전학습

구조 설명
이미지 → 패치 이미지를 여러 조각으로 분할
마스킹 일부 패치를 [M]으로 가림
예측 나머지 패치들을 보고 마스킹된 걸 복원
토크나이저 이미지 패치를 ‘시각 토큰’으로 바꾸는 도구 사용
 
➡ “이미지도 BERT처럼 사전학습할 수 있다”는 걸 보여준 모델

MAE (Masked AutoEncoder)

구성 
요소설명
Encoder-Decoder 구조 인코더로 관찰된 패치 처리, 디코더로 전체 복원
75% 패치 마스킹 적은 양의 정보만 보고 복원하도록 학습 (효율성↑)
비대칭 구조 인코더는 작고 빠름, 디코더는 복원만 전담
 
➡ 성능은 뛰어나면서 계산량은 줄이는 구조 → 비전 사전학습의 새로운 표준

SAM (Segment Anything Model)

Segment Anything은 “프롬프트만 주면 어떤 이미지든 객체를 분할”할 수 있는 범용 모델입니다.

파트
설명
Prompt Encoder "이거 분할해줘!"라는 위치/텍스트 정보를 입력
Image Encoder ViT 기반으로 이미지 패치를 인코딩
Decoder Cross-attention을 통해 프롬프트 반영 + 마스크 생성
 
728x90