YAI Archive

ViT, YOLO

Vision Transformer와 YOLO 계열 객체 탐지 모델의 구조 차이, 학습 방식, 실제 적용 포인트를 정리한 발표 기록입니다.

발행일
2026년 6월 13일
작성자
YAI

ViT, YOLO

16기 · CV · 논문리뷰 · 4주차

Vision Transformer와 YOLO 계열 객체 탐지 모델의 구조 차이, 학습 방식, 실제 적용 포인트를 정리한 발표 기록입니다.

이미지 분류와 탐지 문제에서 architecture 선택 기준을 비교하는 데 초점을 맞췄습니다.

image.png

Preliminary: Transformer

Attention Is All You Need

Transformer 등장 배경

Sequence Modeling, transduction task에서 사용된 NLP 모델들

  • Recurrent model(RNN): 1번째로 입력된 단어부터 마지막으로 입력된 단어까지 encoding 하기 때문에 긴 sequence length에 취약함.
  • 최근 연구에서는 factorization trick과 computation을 통해 계산 효율과 모델 성능을 개선했다.
  • BUT 긴 sequence length에 취약하다는 문제가 여전히 남아있음
  • Attention mechanism: decoder에서 output을 만들 때 incoder의 hidden state를 전부 참고해서 만듦. sequence length 에 무관하게 사용 가능.
  • encoder의 hidden state를 참고할 때, 모두 동일한 비율로 참고하는 것이 아닌, 예측할 단어와 관련이 있는 단어를 집중(Attention)해서 본다.
  • BUT 여전히 RNN과 함께 사용되었음

⇒ recurrence를 사용하지 않고, attention 만 사용해서 input/output global dependency를 추출하는 아이디어(Attention is All You Need) 로 Transformer 모델 제안.

  • RNN을 사용하지 않고 단어의 위치정보를 파악 ⇒ positional encoding 을 추가 도입

Model Architecture

Encoder, Decoder 구조

Encoder

  • 6개의 identical layer(각 layer마다 2개의 sub-layer)로 구성
  • sub layer 1 : multi-head self-attention mechanism
  • sub layer 2 : position-wise fully connected feed-forward network
  • 각 sublayer 마다 Layer Nomarlization(LM) 후 residual connection

Decoder

Attention

$Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V$

⇒ 어떤 단어와 가장 높은 연관성을 갖는지 확인하는 지표

  • Query: 영향을 받을 단어
  • Key: 영향을 주는 단어
  • Value: 영향에 대한 가중치

ViT (Vision Transformer)

An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

1. Introduction

Self-attention 기반 Transformer는 NLP 분야의 표준으로 자리잡았는데, CV 분야에서는 transformer의 적용이 한정적이고 대신 CNN 구조가 우세했다. NLP의 성공에 자극받아 CNN-like 구조를 self-attention과 결합하는 연구가 많이 수행됐고, 실제로 일부 연구에서는 완전히 CNN(convolution)을 대체하기도 했다.

그러나 convolution을 대체하는 모델은 이론상 효율적이었음에도, 현대 하드웨어에서는 아직까지 효율적으로 작용하지 못했다.

⇒ 논문의 배경에서는 여전히 ResNet-like 구조가 SOTA.

⇒ 가능한 적게 변형한 transformer 모델을 image에 직접적으로 적용하는 실험 진행

⇒ 이미지를 patch 단위로 분해하고, patch의 linear embedding sequence를 input으로 transformer에 전달 (word token과 같은 방식) 후 학습

2. Preliminary

Transformer

상단 Trasnformer 블록 참조

Inductive Bias

CNN이 가진 특징으로, 모델이 처음 보는 input에 대한 output을 예측하기 위해 사용하는 ‘가정’이다.

CNN은 convolution filter를 사용해 연산을 하기 때문에, 같은 특징이 이미지 어느 위치에 나타나든 동일하게 감지할 수 있다는 가정으로 → object 위치가 바뀌어도 동일한 object로 인식할 수 있고(Translation Equivariance), 이미지의 한 부분이 주변 정보와 강하게 연결되어있다는 가정으로 → 특정 영역만 보고 feature를 추출할 수 있다(Locality).

그러나 attention 구조만 사용하는 transformer 모델은 CNN처럼 local receptive field를 보지 않기 때문에 이러한 Inductive Bias가 없다. 대신, 큰 데이터셋 학습으로 스스로 관계를 학습하도록 했다.

  1. 이미지를 patch 단위로 분할
  1. 각 patch들을 transformer encoder에 넣어, Self attention 으로 다른 patch들과 관계를 계산함
  1. positional embedding: patch들의 위치 정보를 넣어서 이미지 내 patch들의 위치를 알 수 있음 (공간적 맥락 이해)

Methods

Vision Transformer

이미지를 고정된 크기의 patch들로 나누고, 각 patch들을 linearly embedding하여 input으로 넣킨 뒤, transformer encoder에 최종적인 output sequence를 학습시킨다. sequence에는 분류를 수행하기 위해 추가적으로 학습 가능한 classification token을 더한다.

  1. patch 나누기

$x\in R^{{H}\times{W}\times{C}}$ → $x_p\in R^{{N}\times{(P^2\cdot{C})}}$

  • (H,W) : 원본 이미지 해상도, C: channel 개수(e.g., RGB→3)
  • (P,P) : 이미지 patch의 해상도
  • $N=HW/P^2$ : patch들의 개수
  1. Transformer input 형태로 바꾸기

표준 transformer는 1D token embedding sequence를 input으로 받는다. 모든 레이어에서 constant latent vector size D를 사용하므로, patch들을 D dimension으로 flatten시켜 벡터로 변환한다. (patch embedding)

$z_0=[x_{class}; x_p^1E; x^2_pE; ... ; x_p^NE]+E_{pos},\quad E\in \mathbb{R}^{(P^2\cdot C)\times D}, E_{pos}\in \mathbb{R}^{(N+1)\times D} $

  • $x_{class}$ : classification token
  • $x^N_pE$: patch로 나눈 각각의 이미지 sequence
  • $E_{pos}$ : 각각 sequence의 순서를 나타내는 positional embedding
  1. Transformer encoder 적용

기존 Transformer Encoder는 multi-head attention을 먼저 진행하고, Layer Normalization(NM)을 진행한다. ViT는 LM 먼저 진행하고 MHA를 수행한다. ⇒ L번 Encoder 연산 후 최종적으로 출력한다.

  1. 이전 입력값에 layer normalization(LN) 한 후에 multihead self-attention(MSA) 적용 $z'_l=MSA(LN(z_{l-1}))+x_{l-1}$
  1. 위의 Transformer에서 나온 output($z'_l)$에 MLP head 적용 $z_l=MLP(LN(z'_l))+z'_l$
  1. classification $y=LN(z^0_L)$

Fine-Tuning and Higher Resolution

Fine tuning 시에는 Pre-training prediction head를 제거하고 DxK 차원의 feedforward layer를 연결해 사용.

파인튜닝을 할때는 pre-training한 이미지보다도 높은 해상의 이미지를 쓰는 것이 성능 향상에 도움이 된다. patch size를 그대로 유지하고 더 많은 sequence를 사용할 수 있기 때문이다.

ViT는 메모리의 한계까지 N의 길이를 늘릴 수 있고, N의 길이가 늘어날 경우 position embedding은 더이상 의미가 없을 수도 있다. 그때는 2차원 구조를 사용해 position embedding을 조정한다.

Experiments

transformer는 CNN에 내재되어있는 inductive bias가 부족해서 충분한 양의 데이터로 학습되지 않으면 일반화가 어렵다. ⇒ but 충분한 대규모 데이터셋으로 학습할 경우, inductive bias를 극복하고 뛰어난 성능을 보임.

YOLO

You Only Look Once: Unified, Real-Time Object Detection

1. Introduction

Task: object detection

object detection 의 기존 접근 방식에서는 classification의 classifier에 위치 정보 판단력을 추가해서 detector로 사용했다.

  • DPM: 이미지 전체를 sliding window 방식으로 classification해서 object 의 위치를 detect
  • R-CNN: 이미지 안에서 region proposal로 bounding box를 생성하고, 그 안에서 classifier로 classification)

⇒ R-CNN의 경우, (1) bounding box 조정 (2) 중복 detetction 제거 (3) object에 따라 bounding box의 점수를 다시 계산하기 위해 후처리 과정을 거치는 복잡함이 있기 때문에 느리고, 각 절차가 독립적으로 훈련되어야하므로 최적화도 어렵다는 문제가 있었다.

⇒ YOLO는 절차를 개선하기 위해, object detection problem을 하나의 regression problem으로 전환했다.

  • bounding box의 위치룰 구하고, class 확률을 구하는 절차를 하나의 regression으로 정의
  • 이미지 내에 어떤 물체가 있고(classification), 어디에 있는지(localization)를 하나의 파이프라인으로 빠르게 구함. ⇒ 이미지를 한 번만 보면 object를 detect 할 수 있음(You Only Look Once; YOLO). 할 수 있음
  • 속도가 매우 빨라 real time에 적용 가능
  • local 파트를 보는 기존 모델(sliding window, region proposal)과 달리, 이미지 전체를 보기 때문에 object가 포함된 주변 배경까지 고려한다. ⇒ background를 false positive로 판단하는 빈도를 절반으로 줄임
  • Generalizable representation(일반화 가능 특징) 학습 ⇒ 새로운 이미지 도메인에서 성능 유지

Methods

1. Detection 방식

  1. input 이미지를 SxS 크기의 Grid cell로 나눈다. : 한 Grid cell 안에 어떤 object의 중심이 포함되면, 해당 Grid cell이 그 object에 대해 탐지를 수행한다.
  1. 각 Grid cell에서 B개의 bounding box을 생성하고 Confidence score를 예측한다.
  • 최종적으로 각 Bounding Box에서 5개의 값 : x, y, w, h, Confidence Score 생성
  • x, y : grid cell 안에서 bounding box의 중심 값 (상대좌표)
  • w, h : 전체 이미지 안에서 bounding box의 너비, 높이 (상대크기)
  • $Confidence Score = Pr(Object)*IOU^{truth}_{pred}$
  • ⇒ 그 box 안에 object가 포함될 확률과, box가 object를 얼마나 잘 담고 있는지 표현
  • $Pr(object)$: object가 포함되면 1, 없으면 0 ⇒ 즉, object가 포함되지 않으면 Confidence score는 0이 됨
  • $IOU^{truth}_{pred}$: 예측된(pred) bounding box와 실제(ground truth) bounding box 간의 겹치는 정도를 측정 ⇒ 즉, 겹칠수록 Confidence Score가 높아짐
  1. 각 Grid Cell에서 C개의 class에 대한 conditional class probability 계산

$Pr(Class_i|Object)$

  • 각 Bounding Box 안에 있는 object가 어떤 class일지 조건부 확률
  1. 최종적으로 구하는 값 = Class-specific Confidence Score

$Pr(Class_i|Object)*Pr(Object)*IOU^{truth}_{pred}=Pr(Class_i)*IOU^{truth}_{pred}$

  • 최종적으로 예측된 정보: S x S x (B x 5 + C) tensor로 표현 가능

2. Model Architecture

  • 24개의 Convolution Layer로 이미지로부터 feature 추출
  • Fully Connected Layer로 Output probability와 coordinate(좌표) 예측
  • ⇒ 최종 output: 7x7x30 tensor
  • ⇒ Fast YOLO 는 24개 대신 9개의 convolution layer 사용, 각 layer의 filter 수를 줄임

3. Training

  1. Pretraining
  1. ImageNet의 1000-class Competition Dataset으로 20개의 convolutional layers pretraining
  1. Pretrained 된 network에 convolutional layer와 fully connected layer를 추가했을 때 성능이 향상되는 연구가 있었음 → 20개의 Convolutional layer 뒤에 4개의 convolution layer와 2개의 fully connected layer 추가 (추가된 layer는 randomly initialized weight)
  1. Training
  1. 마지막 Layer에는 Linear Activation Function 사용, 나머지에는 Leaky ReLU 사용
  1. loss function 최적화
  1. SSE(sum-squared-error)를 사용했을 때는 optimize하기 쉽지만, localization error 와 classification error를 동일 취급하는 문제가 있었다. + 많은 이미지에서 대부분 grid가 obejct를 포함하지 않으므로, confidence가 0으로 수렴해서 모델의 성능을 저하시킨다. + bounding box의 크기가 각각 다른 것을 고려하지 않고 loss를 계산했다.
  1. ⇒ confidence 오류와 bounding box를 잘못 예측하는 오류를 개선

Experiments

Limitations

  1. 각 grid cell에서 detect 할 수 있는 object 수에 제한이 있다.
  1. bounding box의 가로세로비가 기존 학습과 달라질 경우 성능 저하된다.
  1. loss function이 bounding box의 크기를 고려할 때, 큰 box와 작은 box에 서로 다른 weight를 부여한다. ⇒ 작은 bounding box가 위치 변화에 따라 IOU에 더 민감하다 ⇒ localization 문제 발생