공돌이 공룡의 서재

[논문 리뷰] ViT : Vision Transformer 본문

딥러닝/Vision

[논문 리뷰] ViT : Vision Transformer

구름위의공룡 2021. 8. 18. 01:51

 

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

https://arxiv.org/abs/2010.11929

 


 

<1.> Introduction

 

NLP에서는 Transformer model이 2017년 나타난 이후로 BERT, GPT 등의 모델들이 나타나면서 큰 발전이 있었다.

 

Computer vision task에서는 여전히 CNN 기반 모델들이 SOTA를 차지하다가, Transformer model에 관한 논문으로 ICLR 2021에 실린 논문으로 ViT가 등장하면서, 기존 SOTA와 견줄만하거나 그 이상의 성능을 보여주는 모델들이 등장하기 시작했다.

 

Transformer에 NLP처럼 1D sequence가 아니라, image를 input으로 사용하려면 새로운 접근 방식이 필요하고, 논문에서는 이를 patch라는 개념을 적용해 해결했다.

 

Transformer 모델은 CNN과 비교했을 때 inductive bias가 부족한데, 이를 해결하기 위해서는 데이터의 양이 충분해야 한다고 설명하고 있다.

 


 

<2.> ViT

 

Model Overview

Overview

  • Transformer Encoder를 여러 번 stack 한 구조다. Multi-head Attention은 attention mechanism을 병렬로 처리할 수 있도록 한 module로 Transformer 논문에서도 살펴보았듯이 연산 속도면에서도 좋고, ensemble 효과도 있다고 볼 수 있다.
  • 구조 자체는 BERT와 굉장히 유사하다. BERT에서도 [Class] Token을 따로 두고 classification에 사용했는데, ViT에서도 이를 따라가고 있다.

 

Embedding

  • Transformer: Attention is all you need에서는 token들로 이뤄진 1D sequence를 embedding으로 한 번 전처리를 하고, 그 결과에 sinusoidal positional embedding을 추가한 것을 input으로 사용한다.
  • ViT에서는 image를 일정 크기의 patch로 자르고, 이 patch들로 sequence를 구성한다.
  • Positional embedding을 patch embedding에 추가해서, 위치 정보를 담고 있도록 한다.

 

Inductive Bias

  • CNN 모델에서는 convolution layer가 locality property를 잘 잡아냄 / 2D neighborhood structure : 이웃 픽셀(feature)들도 같이 고려할 수 있음 / translation equivariance 한 특징이 있기 때문에 모델 전체가 그러한 특징을 갖게 된다.
  • 그러나 ViT에서는 MLP layer만 이런 특성을 갖고 있고, transformer에 있는 self-attention layer의 경우 global한 특징이 있다. 즉, 이미지 전체에 대한 정보를 보게 되어서 patch들간 spatial relation에 대한 학습이 필요하다.
  • 따라서 ViT는 inductive bias가 없다고 할 수 있다. 그에 따라 더 많은 데이터를 통해 학습시켜야 일반화 성능을 갖출 수 있다.

 

Hybrid Architecture

  • raw image patch를 사용하는 것보다, CNN model에서 얻은 feature map으로 sequence를 사용할 수 있다. 

 

 


 

<3.> Fine Tuning

 

Large Dataset에 ViT를 pre-train 하고 그 이후 downstream task에 fine-tuning 한다. pre-train에서 사용했던 prediction head를 없애고 DxK 차원의 feedforward network를 만든다. (K는 downstream task class 수)

 

이 방법은 pre-train시 사용했던 이미지보다 fine-tuning에서 더 큰 이미지를 사용할 때 유용하다.

 

ViT는 임의의 sequence 길이도 다룰 수 있도록 design되어 있는데, 이 경우 pre-train 과정에서 학습시킨 position embedding이 여전히 의미를 가질 수 있도록 2D interpolation을 사용한다.

 


<4.> 그 외

 

Experiment

  • Transformer encoder를 stack한 수 : 12 / 24 / 36에 따라 ViT-Base / Large / Huge로 구분한다.
  • JFT dataset (300M dataset...)을 사용해서 얻은 결과와 CNN기반 SOTA model을 비교했다.
    거의 비슷하지만 조금씩 나은 성능을 보여줬다.
  • score만 가지고 ViT가 좋다라고 하기에는 JFT dataset을 Google 같은 대기업이 아닌 이상 준비하기도, 사용하기에도 힘들다는 단점이 있다고 봐야겠다. 이 정도 큰 dataset이 아니면 inductive bias 문제로 성능이 떨어질테니까...
  • 그럼에도 연산량 면에서는 CNN 기반보다는 좋다고 봐야겠다. Multi-head의 이점이다.
Comments