AI Engineer

[VIT] Vision Transformer (2021)

scone 2023. 7. 27. 19:28

ABSTRACT

  • Transformer 구조는 NLT에 있어서 사실상의 표준이 되었지만 비전 분야에서의 적용은 제한적 입니다.
  • 본 논문은 CNN에 의존할 필요 없이 Transformer을 Sequence of Image Patches에 직접적으로 적용시켜도 이미지 분류 테스크에서 매우 우수한 성능을 보일 수 있다는 것을 보여줍니다.
  • 대량의 데이터로 사전 학습한 이후, 여러 이미지 인식 벤치마크 (ImageNet, CIFAR-100, VTAB 등)에 전이 학습 시킨 결과 Vision Transformer 은 매우 적은 Computational Resource로 최첨단 CNN에 못지 않은 우수한 결과를 도출할 수 있었습니다.

 

Intro

  • 배경
    • Transformer
      • 계산 효율성과 확장성 증대로 100억개 이상의 파라미터를 포함하여 이전에 없었던 규모의 모델 학습이 가능해짐
      • 모델과 데이터셋이 계속 성장함에도 불구하고 성능의 포화 현상이 보이지 않음.
    • 컴퓨터 비전 분야
      • 대규모 이미지 인식에서는 여전히 전통적인 ResNet과 유사한 아키텍쳐가 최고 수준 입니다.
  • VIT
    • 이미지를 패치들로 나누고, 패치들의 선형 임베딩을 Transformer에 입력으로 제공합니다.
    • 결과
      • 중간 크기 이미지 데이터셋 (ImageNet) 의 경우 비슷한 크기의 ResNet 보다 조금 낮은 정확도를 제공합니다.  그러나 이는 Transformer에 내재된 일부 Inductive Bias를 가지고 있지 않은 결과이며, 충분한 양의 데이로 훈련했을 때에 비해 일반화가 잘 되지 않았기 때문입니다.
      • 큰 데이터셋 (14M - 300M 개의 이미지)를 가지고 훈련했을 때는 큰 규모의 훈련이 Inductive Bias를 능가하기 때문에 탁월한 결과를 얻습니다. VIT는 큰 규모의 데이터로 사전 훈련 후, 적은 데이터 포인트를 갖는 테스크를 수행할 때 탁월한 결과를 얻습니다.
      • ImageNet 88.5% 정확도, ImageNet-ReaL 90.72% 정확도, CIFAR-100 95.55% 정확도, VTAB의 19개 작업에서 77.63% 정확도

 

METHOD

  • 모델 디자인은 Transformer ( Vaswani et. 2017 ) 아키텍쳐와 거의 같다고 볼 수 있다.

Figure 1: 모델 개요. 이미지를 고정된 크기의 패치로 나누고, 각각의 패치를 선형 임베딩으로 변환한 뒤, 위치 임베딩을 추가하여 얻은 벡터 시퀀스를 표준 Transformer 인코더에 입력으로 제공합니다. 분류를 수행하기 위해, 우리는 "classification token"이라는 추가적인 학습 가능한 토큰을 시퀀스에 추가하는 표준적인 접근 방식을 사용합니다. Transformer 인코더의 그림은 Vaswani 등(2017)의 연구에서 영감을 받아서 그려졌습니다.

  • 입력 Embedding
    • 표준 Transformer는 1D 토큰 임베딩의 시퀀스를 입력으로 받는다.
    • 2D 이미지를 아래와 같이 2D 패치의 시퀀스로 변환
      \( x \in R^{H*W*C} \)
      \( x_p \in R^{N*(P^2*C)} \)
    • (H, W) : 원본 이미지의 해상도
    • C : 채널 수
    • (P, P) : 각 이미지 패치의 해상도
    • N (= \(HW/P^2 \) ) : 패치의 수, Transformer의 유효한 입력 시퀀스 길이
    • D : 모든 Layer 에서 동일한 Latent Vectorize Size
      • Flatten 한 Patch를 학습 가능하도록 Linear Procjection을 사용하여 D 차원으로 매핑 (eq1)
    • Patch Embedding이 출력
  • [CLS] Token
    • BERT의 [class] 토큰과 유사하게, 우리는 임베딩된 패치의 시퀀스에 학습 가능한 임베딩을 추가합니다.
      \( z^0_0 = x_class\)
    • \( z^0_L \) : 최종 L 번째 Layer의 0번째 토큰
      • Pre-Training과 Fine-Tuning을 수행하는 Classification Head 가 부착
  • Classification Head
    • Pre-Training : 1 - hidden layer 인 MLP
    • Fine-Tuning : 1 - Linear Layer
  • Position Embedding
    • Patch Embedding의 Position info를 유지하기 위해 추가
    • 2D-Position Embedding 추가해보았지만 더 좋은 성능은 X -> 1D Position Embedding을 사용하게됨.
  • Transformer
    • 만들어진 결과, Embedding Sequence는 Encoder의 입력으로 들어감.
    • Transformer Encoder
      • Multi-Head 로 구성된 Self-Attention 메커니 적용 (MSA)
      • MLP Block
      • 위 두개가 번갈아가며 구성
      • 각 블록의 앞에는 레이어 정규화 (LN) 이 적용
      • 각 블록 뒤에는 잔차 연결이 적용(Wang etc, 2019; Baevski & Auli, 2019)
  • Inductive Bias
    • CNN (Locality), RNN (Time Sequential) 의 경우 Global한 영역의 처리가 어려움.
    • ViT는 CNN, RNN과 다르게 Inductive Bias가 없음
      • CNN에서는 각 레이어 전체 모델에 걸쳐 지역성, 2차원 이웃 구조, 및 번역 동질성이 내장되어 있음.
      • ViT에서는 MLP 레이어만 지역적이고 Translation Equivariance 함
      • self-attention 레이어는 전역적입니다.
    •  2차원 이웃 구조는 매우 적게 사용
      • 모델의 초기에 이미지를 패치로 자르는 과정에서 사용
      • Fine Tuning 시에는 다른 해상도의 이미지에 대해 위치 임베딩을 조정할 때 사용
      • 이 외에 초기화 시 위치 임베딩은 패치의 2D 위치에 대한 정보를 가지고 있지 않으며, 패치들 사이의 모든 공간적 관계는 처음부터 학습되어야 합니다.
  • Hybrid Architecture
    • 원본 이미지 패치 대신, 입력 시퀀스는 CNN의 특성 맵으로부터 구성될 수 있습니다(LeCun 등, 1989).
      • CNN의 Feature는 Spatial한 사이즈가 1x1이 될 수 있음.
        ( 입력 시퀀스를 특성 맵의 공간 차원을 단순히 평면화한 뒤 Transformer 차원으로 매핑하는 것을 의미 )
      • CNN으로 Feature 추출 > Flatten > Eq.1의 Embedding Procjection 이 적용.
      • 분류 입력 임베딩과 위치 임베딩은 위에서 설명한 바와 같이 추가
  • FINE-TUNING AND HIGHER RESOLUTION
    • 사전 훈련 때보다 더 높은 해상도로 Fine-Tune 하는 것이 성능에 도움 됨.
    • 더 높은 해상도의 이미지를 입력으로 주었거나 또는 Patch Size 동일할 때
      • Fine-Tune : Pre-trained Position Embedding은 더 이상 의미가 없음
      • Pre-Trained Position Embedding을 원본 이미지에서의 위치에 따라 2D 보간 수행
        ( 수동으로 귀납적 편향 주입 되는 유일한 지점 )