상세 컨텐츠

본문 제목

[5주차 / 임종우 / 논문리뷰] AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE

2023 Summer Session/CV Team 2

by imngooh 2023. 8. 3. 20:26

본문

  • 작성자 : 17기 임종우
  • Attention
    • 디코더에서 출력 단어를 예측하는 모든 time step에 인코더의 모든 output을 참고할 수 있다는 아이디어
    • 다만 이때, 해당 time step에서 주목해야할 부분과 관련이 있는 부분에 더 집중하여 살펴본다.
    RNN을 통한 machine translation task에서,
    • Query, key, value간의 계산을 통해 attention score를 만들어 사용한다.
  • Transformer
    • RNN을 배제하고 attention module 만으로 encoder 및 decoder를 구성한 모델 구조
    • self-attention
      • 입력 시퀀스를 query, key, value 세가지 모두로 사용하여 attention에 대한 계산을 진행함
        • Query : 질의 값
        • Key : query와 유사도 계산의 대상이 되는 값.
        • Value : 계산된 유사도와 곱해져 최종 attention score를 만들기 위한 반영값
          -   입력 sequence(embedding vector)에 특정 학습 가능한 matrix를 곱해 qkv를 만든다.

          -   유사도는 q와 k의 내적에 output vector의 차원 \*\*0.5를 나눈 값을 softmax하여 사용

-   positional encoding
    -   RNN에서는 존재하던 sequence의 순서에 대한 정보가 사라졌으므로, position에 대한 정보를 추가로 encoding 해 줌

-   multi-head attention
    -   attention을 여러개의 head에 대해 동시에 진행 및 그 결과를 concat하여 사용

http://jalammar.github.io/illustrated-transformer/


AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE

: Vision Transformer

Abstract

Transformer 아키텍쳐가 NLP분야에서 사실상 표준으로 사용되고 있는 반면, CV 분야에서의 활용은 미미한 상황이다. CV분야에서, attention은 convolution network와 함께 사용되거나, CNN의 기본 구조는 유지하되, 일부 부분을 대체하는 방법으로만 사용되고 있다. 저자들은 image classification에 CNN이 꼭 사용되지 않아도 된다고 생각하였고, image를 patch로 쪼개어 그 sequence를 이용해 transformer만으로 image classification을 수행하였다. 이러한 Vision Transformer(ViT)는 대규모의 데이터셋에서 학습하였을때, 학습에 있어 적은 computing resource만 필요로 하면서도, SOTA를 달성하는 모습을 보였다.

Introduction

  • self attention을 기반으로 하는 Transformer architecture가 NLP분야에서 주요 모델로 떠오르고, BERT등 이를 활용한 다양한 모델이 등장하고 있는 상황
  • Transformer의 계산 효율성과 scalability로 인해 엄청난 크기의 parameter를 가지는 모델도 학습시킬 수 있게 되었다.
  • 반면 CV분야에서는 CNN 구조가 주류로 남아있는 상황
  • NLP분야에서 Transformer의 성공에 힘입어, self attention을 CNN구조에 접목하려는 시도가 있어왔다. 다만, 이는 현재의 하드웨어 가속기에 효율적으로 최적화되지 않아 사용되지 못하였고, 여전히 CNN 모델들이 SOTA로 남아있었다.
  • 저자들은 Transformer 모델을 최대한 수정하지 않고 이미지에 직접적으로 사용하고자 시도하였다.
  • 이를 위해 이미지를 Patch로 쪼개고 이 patch들의 linear embedding의 sequence를 Transformer에 input으로 주도록 하였다.
  • Image patch들이 NLP에서의 token과 같은 방식으로 취급되도록 한 것이다.
  • ViT를 ImageNet과 같은 mid-sized dataset에 강한 regularization 없이 학습을 진행하였을 때는 동일한 사이즈의 ResNet과 같은 모델들보다 몇 퍼센트 떨어지는 성능을 보였다.
  • 이러한 결과는 Transformer 구조가 CNN에 비해 inductive bias가 적어 데이터의 양이 충분하지 않으면 잘 일반화되지 않기 때문으로 보인다.
  • 여기서 inductive bias란 translation equivariace, locality를 의미한다.
    • Inductive bias:
      • 모델이나 알고리즘 자체가 가지고 있는 편향이나 특성
      • ex) CNN : convolution으로 구성되어 locality를 잘 잡아낸다. 위치가 바뀌어도 잘 알아낸다 등
  • 그러나, 더 큰 데이터셋에 대해 모델을 훈련시켰을때에는 적은 inductive bias라는 한계를 극복하는 모습을 보였다.
  • 그 결과, ViT는 mupltiple image recognition benchmark에서 SOTA를 기록하였다.

Related Work

  • Transformer
    • machine translation 을 위해 고안된 구조. 많은 NLP task에서 SOTA를 기록함.
  • Image에 있어 self-attention의 사용
    • pixel 단위로 self attention을 사용하기 위해서는 각 pixel에 대해 다른 모든 pixel과의 연산이 필요하다. 따라서 픽셀의 수 ^2 만큼의 연산이 필요하게 된다. 따라서 실제로 사용하기 거의 불가능하다.
    • 이에 query pixel의 local neighborhood에 대해서만 self attention을 적용하는 방법이 고안된 바 있다. 이렇게 local multi head dot product self attention block을 사용하여 convolution을 완전히 대체할 수 있었다. 다른 방법으로는, Sparse Transformer라고 하여 여러 size의 block에 대해서만 attention을 적용하는 방법이 있었다. 다만, 이는 개별 축을 따라서만 사용할 수 있는 특이 케이스였다.
    • 이와 같은 방법들은 Transformer의 CV분야에서의 가능성을 보여줬지만, hardware 가속기에 적용되기에 너무 복잡하였다.
  • 유사 연구
    • Input image를 2x2 사이즈의 patch로 잘라 self attention을 적용하는 시도가 존재하였다. 이는 ViT와 매우 유사한 형태이다. 다만 2x2 사이즈의 patch로는 small resolution image만 다룰 수 있었지만, ViT는 medium resolution 이미지도 잘 다룰 수 있다. 또한, ViT는 대규모의 사전학습을 통해 vanila Transformer가 CNN보다 좋은 성능을 낼 수 있음을 보였다는 차이점이 존재한다.
    • 이미지 해상도와 color space를 줄인 후, 이미지 픽셀에 Transformer를 적용하는 IGPT모델도 존재한다. 이는 비지도학습 방식으로 학습된 생성 모델이다.

Method

  • ViT를 디자인함에 있어, 원래의 Transformer가 가지는 구조를 최대한 수정하지 않으려 노력하였다. 이를 통해 확장 가능하며 쉽게 사용 가능한 Transformer의 이점을 활용할 수 있었다.

3-1 . Vision Transformer(ViT)

  • 모델의 기본적인 구조는 위 Figure 1에 나타나있다.
  • patch embedding
    • 기존 Transformer는, token embedding vector의 1D sequence를 인풋으로 받는다.
    • 2D 형태를 가지고 있는 이미지를 다루기 위해서, 이미지를 2D patch들의 flatten된 sequence로 나타낼 것이다.
    • 즉, 원래 이미지가 (H,W) 형태, C 채널을 가졌었고, 각각 patch의 해상도가 (P,P)인 경우,N×(P2C)N \times (P^2 C)N×(P2C)형태를 가지게 한다. N은 전체 이미지를 다루기 위해 필요한 patch의 개수이자, input sequence의 length가 된다.
    • Transformer모델 전체에 걸쳐서, latent vector의 size는 D이고, 따라서 linear projection에서행렬곱을 통해 flatten 된 패치들을 D차원으로 변경해준다.
    • 그렇게 linear projection까지 진행한 결과를 patch embedding이라고 부른다.
    • 수식으로 표현하면 다음과 같다.
  • Positional Embedding
    • 위치 정보를 유지하기 위해 patch embedding에 position embedding도 더해주어야 한다.
    • 학습 가능한 1D의 position embedding을 사용하였다. (2D embedding을 사용하였을때와 큰 차이가 존재하지 않았기 때문)
    • patch embeding에 position embedding을 더해준 embedding vector의 sequence가 최종적인 Encoder의 input으로 사용된다.
  • Classification
    • BERT에서 사용하는 class token과 유사하게, embedding된 패치의 sequence앞에 학습 가능한 embedding을 추가한다. 여러 겹 쌓여있는 Transformer들 중 마지막 layer에서 해당 token의 output이 해당 이미지의 representation을 의미하게 되는 것이다.
    • pre-training과 fine-tuning 과정에서 모두 classification head를 해당 값에 대해 사용하는데, pre-training 시에는 하나의 hidden layer가 존재하는 MLP로, fine tuning 시에는 hidden layer가 없는 single linear layer로 사용한다.
  • Encoder의 내부 구조
    • Transformer에서는 multiheaded self attention과 MLP, Layernorm, residual block의 반복되는 구조로 Encoder가 구성되어 있다.
    • 다만 수식과 figure를 살펴보아 알 수 있듯이, layer normalization을 먼저 진행한 후 attention및 add(MLP)을 진행시키는 것을 확인할 수 있다.
  • Inductive bias
    • Vision Transformer가 CNN모델들에 비해 이미지에 특화된 inductive bias를 가지고 있지 않다는 사실에 주목해보자.
    • CNN에서는 locality, 2차원(H,W)의 이미지 구성, translation invariance 등이 각 convolution layer에, 이로 인해 모델 전체에 내재되어있다.
    • 그러나 ViT에서는 MLP layer만이 위치정보를 가지고 있고, translationally equivariant하다. attention layer는 이미지 데이터의 특성에 맞지 않는, global한 특징을 가지고 있다.
    • 이미지의 2차원 구조를 다루는 것도 잘 이루어지지 않는다. 가장 처음에 이미지들 patch로 자른 후 position embedding을 부여하게 되는데, 이 postion embedding은 fine-tuning 과정에서 서로 다른 해상도의 image들을 조정하는데에 사용할 뿐이다.
    • 다른 때에는 2차원에서 패치의 위치 정보가 전달되지 않아, patch들 사이의 모든 공간적인 정보는 처음부터 학습되어야만 한다.
    • 참고
    • 따라서 ViT는 이미지 특정의 inductive bias를 최소화하여 데이터의 특성을 보다 유연하게 학습할 수 있게 되는데 반해, CNN은 이미지 특정의 inductive bias를 많이 내재하여 이미지에 대한 특정한 가정을 가지고 학습하게 됩니다. 이러한 비교에서 ViT의 접근 방식은 더 유연한 학습을 가능하게 하며, 다양한 이미지 처리 작업에 더 좋은 일반화 능력을 제공할 수 있습니다. 따라서 이는 ViT의 장점으로 간주될 수 있습니다.
  • Hybrid Architecture
    • CNN으로부터 얻어진 feature map을 인풋으로 사용해 patch embedding을 얻어 Transformer에 사용하는 하이브리드 구조도 존재한다. 이때, patch 의 사이즈는 1x1로 하여 patch embedding은 단지 feature map을 flatten한 형태로 활용하였다.

3-2 Fine-tuning and Higher Resolution

  • 일반적으로, ViT를 대규모의 dataset에서 사전학습 시키고, 비교적 작은 데이터에 대해 fine-tune 시키는 태스크를 사용하였다. 이러한 태스크에서, pre-trained prediction head를 없애고 zero-initailized된 feedforwardlayer(DxK)를 추가하였다.(앞서 말했듯 classficiation layer를 single linear로)
  • 사전학습에 비해 fine-tuning 과정에서 더 높은 해상도의 이미지를 사용하면 성능이 높게 나온다는 사실이 알려져있으므로, 그렇게 진행하였다.
  • 더 높은 해상도의 이미지를 input으로 넣어줄 때, patch size는 동일하게 유지하여 sequence의 length가 늘어났다. 그러나 Transformer는 임의의 sequence length도 처리할 수 있기 때문에 이렇게 진행할 수 있었다.
  • 다만 이럴 경우 사전학습된 position embedding의 의미가 사라지는 문제가 발생하였고, 이를 해결하기 위해 사전학습된 position embedding에 대해 2D interpolation을 진행하여 사용하였다.
  • 이는 ViT에 이미지의 2차원 구조에 대한 inductive bias를 주입해준 유일한 과정이라고 볼 수 있다. 이 외에는 모두 transformer 내에서 학습을 통해 이미지의 특징을 학습하였다.

Experiments

  • ResNet, ViT, Hybrid architecture의 성능을 평가하였다.
  • 모델을 사전 학습 시키는데 필요한 computational cost를 고려할 때, ViT가 가장 좋은 성능을 내었으며, 적은 pre-training cost로도 SOTA의 성능을 얻을 수 있었다.

Setup

  • Dataset
    • 일반적인 ImageNet 데이터 뿐 아니라, 더 많은 클래스 수와 더 많은 이미지를 가지는 데이터셋에 대해서도 실험을 진행하였다.
  • Model Variants
    • ViT -Base, Large, Huge의 세가지 configuration을 사용하였다.
  • Training and Fine-tuning
    • optimizer Adam (SGD보다 전이학습에 있어 더 좋은 성능)
  • Metrics
    • fine-tuning한 후 그 데이터셋에 대한 accuracy 사용
    • few-shot accuracy도 종종 사용. 이는 fine-tuning에 시간이나 비용이 너무 많이 들때 간단하게 성능을 파악하기 위해 사용함

Comparsion to State Of The Art

  • ResNet을 기반으로 하는 BiT와 efficientnet을 기반으로하는 NoisyStudent가 현재 SOTA
  • 해당 모델들과 성능을 비교하였을 때, 다음과 같은 결과를 얻었다.

  • 학습에 소요되는 시간이 기존 모델들에 비해 매우 짧은데 비해, 성능도 더 우수하게 나왔다.

Pre-Training Data Requirements

  • 거대한 dataset인 JFT-300M 에 대해 사전학습 되었을때 ViT는 좋은 성능을 내었다.
  • Transformer는 ResNet에 비해 이미지 처리에 대한 inductive bias가 적은데, 그렇다면 dataset의 size가 얼마나 중요할지에 대한 의문이 생긴다.
  • 따라서 ViT를 다양한 크기의 dataset에 대해 사전학습시켜보았다.

  • 그 결과, 가장 작은 dataset인 ImageNet 데이터에 대해서는 ViT가 기존 SOTA 모델에 비해 좋지 않은 성능을 내고, ViT-L이 ViT-B 보다 오히려 좋지 않은 성능을 내는 모습을 확인할 수 있었다.
  • 또한 데이터셋의 크기가 클 때, 즉 충분히 많은 데이터가 존재할때에만 ViT가 기존 모델에 비해 좋은 성능을 냄을 확인할 수 있다.
  • 이러한 실험들을 통해 convolutional layer의 inductive bias가 적은 양의 데이터만 존재할때에는 유용하지만, 충분한 양의 데이터가 존재한다면 학습을 통해 차이가 무의미해진다는 점을 확인할 수 있었다.

Scaling Study

  • ViT가 ResNet 모델들과 동일한 성능을 위해 2~4배 적은 계산량을 필요로 하였다. 즉,전반적으로 성능-계산량의 trade off에서 우수한 면을 보였다.
  • hybrid 구조(CNN+Transformer)가 적은 computational resource에서는 ViT보다 우수한 성능을 보였으나, 모델이 커질수록 그 차이가 사라졌다. 이는 CNN의 local feature preprocessing이 ViT의 성능 향상에 무조건 도움이 될 것이라는 의견을 반박한다.
  • 추가로, ViT는 성능의 saturation이 나타나지 않아, 더 큰 모델의 가능성을 열어두었다.

Inspecting Vision Transformer

  • paech embedding
    • ViT의 첫번째 layer는 image 를 patch로 쪼개고 linear projection을 통해 patch embedding을 만드는 layer였다.
    • 위 Figure는 그 첫번째 layer에서 patch embedding을 만들기 위해 학습된 embedding filter의 일부를 나타낸다.
    • CNN의 filter를 시각화하였을 때와 유사한 모습이다.
  • postiion embedding
    • patch embedding을 만들기 위해서는 projection 후에 position embedding(역시 학습된 값)을 더해주었었다.
    • 위의 Figure는 각 patch에 더해지는 postiion embedding을 시각화한 것이다. 거리가 가까울 수록, 즉 postiion이 유사할수록 cosine similairty가 높게 나타난다.
    • Figure를 보면 같은 행/ 혹은 같은 열에 있는 patch들이 유사한 embedding을 가지는, row-column structure를 가지고 있음을 알 수 있다.
    • 즉, ViT에서 position embedding도 우리가 인식하는 것과 유사하게 잘 학습되어 사용된다.
  • Attention distance
    • self-attention 기법으로 인해 ViT는 낮은 layer에서도 이미지에 대한 전체적인 정보를 모두 활용할 수 있다.
-   위의 figure는 attention weight를 기반으로 이미지 공간 내에서 정보가 통합되는 평균 거리인 attention distance를 계산한 결과이다. 이는 CNN에서의 receptive field와 유사한 개념으로 생각할 수 있다.

-   그 결과, 낮은 층의 layer에서도 몇 개의 attention head가 이미지 전반에 대한 정보를 사용한다는 사실을 확인할 수 있었다. 다른 일부 head들은 small distance를 가져, localized된 feature도, global한 정보도 사용한다는 사실도 알 수 있었다.




-   해당 figure는 ViT가 전반적으로 classification과 연관있는 semantic한 부분에 대해 attention 하고 있음을 보여준다.

Self-supervision

  • NLP분야에서 transformer의 성공은, 모델의 확장성 뿐 아니라 대규모의 self-supervised pre-training 덕분이었다.
  • 따라서 ViT에서도 이러한 시도를 진행하였다.
    • BERT에서 진행한 masked language modeling시도와 유사하게 masked patch prediction for self-supervision을 진행하였다.
    • 다만 supervised pre-training 보다 4%가량 뒤쳐진 성능을 내었다.
    • future work로써 가능성이 남겨져있다.

Conclusion

  • 본 논문은 Transformer architecture의 image recognition에 대한 직접적인 적용을 진행하였다.
  • 이미지 분야에 대한 추가적인 inductive bias를 주입하는 과정 없이, 단지 이미지를 여러 개의 patch의 sequence로 취급하여 기본적인 Transformer 구조를 통해 처리하였다는 의의가 있다.
  • 이렇게 복잡한 과정 없이 이미지를 Transformer를 통해 처리할 수 있게 됨으로써, 대규모의 데이터셋에 대한 사전학습이 가능해졌고, image classification에 있어 SOTA를 달성하였다.

관련글 더보기

댓글 영역