ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Classification] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale 번역 및 정리 (ViT)
    Paper review/Classification 2021. 11. 8. 21:04

    @ 굵은 글씨 중요한 내용, 빨간 글씨는 내가 추가한 내용

     

    https://arxiv.org/pdf/2010.11929.pdf

     

    주요 기여:

    • Standard Transformer를 vision task에 적용 (CNN 구조 대부분을 제거)
    • large dataset에서 사전학습된 네트워크를 transfer learning하여 small image dataset에서 학습 가능

     


     

    0. Abstract

    Transformer가 NLP에서는 표준이 되었지만 computer vision task에서는 제한적이다.

    기존의 vision task에서 attentionCNN과 함께 적용되거나, CNN특정 요소를 대체하기 위해 사용된다. (EX. DETR CNN으로 feature map 획득 후 transformer 수행)

    본 논문은 CNN을 제거하고, image patchessequences에 직접 적용된 pure transformerimage classification task에서 매우 잘 수행됨을 보인다

    Vision transformer(ViT)적은 계산량으로 SOTA를 달성한다.

     

    1. Introduction

    Transformer(self-attention-based architectures)NLP에서 표준 모델이 되었다. 가장 많이 사용되는 방법은 text corpus를 사전 훈련한 후 더 작은 taskdataset에서 미세조정하는 것이다

     

    그러나 아직 computer vision에서는 CNN이 표준모델이다. CNN 같은 구조를 self-attention과 결합하려고 시도해왔는데, 가장 최근의 모델들은 이론상으로는 효과적이었지만, 특수한 어텐션 패턴 사용 때문에 현대 하드웨어 가속기에서 효과적으로 스케일링이 불가능했다.

     

    NLP에서의 transformer 스케일링이 성공한 것에 따라, .본 논문에서는 standard transformer를 최소한의 수정으로 직접 이미지에 적용하는 것에 대해 실험을 했다. 이를 위해, 이미지를 패치별로 쪼개고 (이미지 패치들은 NLP에서의 token과 같은 방식으로 다뤄지게 된다.), 이러한 패치들의 linear embeddings sequence를 transformer에 input으로 넣었다. 이 모델을 supervised 방식으로 이미지 분류에 학습을 시켜 실험하였다.

     

    ImageNet과 같은 중간 사이즈의 데이터셋에서 학습했을 때, 모델은 ResNet보다 약간 낮은 정확도를 달성했는데, 이는 transformer가 CNN에 내재되어 있는 inductive biases(translation equivariance and locality)가 부족함을 의미한다. 이 때문에 중간 사이즈의 데이터셋은 이 모델을 학습시키기에 충분하지가 않음을 알 수 있다.

     

    모델이 더 큰 데이터셋에서 학습되었을 때는 다른 양상을 보여주는데, 큰 스케일의 학습이 inductive bias를 이겨버리는 것을 알 수 있었다. ViT가 충분한 스케일의 데이터셋에서 사전학습되고 task로 전이 학습될 때 훌륭한 결과를 보여줬기 때문이다. 가장 성능이 좋은 모델은 ImageNet에서 88.55%, ImageNet-ReaL에서 90.72%의 정확도로 SOTA를 달성한다.

    더보기

    Inductive bias

     

    학습 모델이 지금까지 만나보지 못했던 상황에서 정확한 예측을 하기 위해 사용하는 추가적인 가정

    EX) CV는 local 특징을 잘 뽑아내는 CNN을 사용하고, NLP는 sequencial한 특징을 잘 뽑아내는 RNN을 사용한다. 이렇게 모델 설계 자체에 추가적인 가정이 포함된 것이다.

     

    2. Related Work

    Transformer는 기계 번역을 위해 2017년에 제안되었고, 이후 NLP에서 많이 사용되었다. Transformer 기반 모델은 대형 corpus에서 사전훈련된 후 해당 task에 대해 미세조정된다.

    Image에 self-attention을 적용하기 위해서는 각 픽셀이 다른 픽셀에 attention해야한다. 하지만 이는 엄청난 계산 비용이 발생하고 이에 따라 전역이 아닌 각 쿼리 픽셀에 대한 local 인접 영역에만 self-attention을 적용한 연구가 존재했다. 이러한 연구는 유망한 결과를 보여주었지만, 하드웨어에서의 복잡한 엔지니어링을 효율적으로 구현해야 했다.

    가장 관련도가 높은 방법은 input image에서 2x2 크기의 patch를 추출하고 full self-attention을 위에 적용한 모델이다. 이는 ViT와 매우 유사하지만, 우리의 연구는 대규모 사전 훈련이 CNN과의 경쟁을 가능하게 한다는 것을 보인다. 또한 patch 크기를 늘려 기존 작은 해상도만 가능했던 한계점을 중간 해상도까지 개선한다.

    그동안 CNN을 self-attention과 결합하려는 많은 시도가 있었다.

    최근 관련 모델 중 이미지 해상도와 색 공간을 줄여 이미지 픽셀에 transformer를 적용하는 image GPT (iGPT)가 있었다. 이 모델은 generative model로 ImageNet에서 최대 72%의 정확도를 달성한다.

    우리는 ImageNet보다 더 많은 데이터를 사용하여 사전학습을 수행하고 이를 통해 SOTA를 달성하고, ResNet 기반 모델 대신 Transofrmer를 학습한다.

     

    3. Method

    가능한 한 본래의 transformer를 따름으로써 NLP transformer 아키텍처를 바로 사용한 효율적인 실행이 가능하다.

     

    3.1. Vision Transformer (ViT)

    전체적인 모델의 아키텍처는 위와 같다. 표준 transformertoken embeddings1차원 sequence input으로 받는다.

    이미지(H x W x C)를 처리하기 위해 x ∈ R^(H×W×C)를  x_p ∈ R ^(N×(P·P·C))로  flatten해준다.

    • (W,H): input image의 너비 높이(해상도)
    • C: 채널
    • (P,P): 각 patch의 너비 높이(해상도)
    • patch의 개수 N=HW/P^2 

    Transformer는 모든 레이어에서 일정한 latent vector 사이즈 D를 사용하여, patch를 flatten하고 학습할 수 있는 D차원으로 맵핑한다. 이 결과를 patch embedding이라한다.

     

    BERT의 [class] token과 마찬가지로, Transformer 인코더의 output 상태인 (Z^L_0)가 image representation y로 사용되는 임베딩된 patch(z^0_0 = x_class)의 sequence 앞에 학습 가능한 임베딩을 추가한다 (식 4). Pretrain 및 fine-tunning 중에 classification head는 (Z^L_0)에 추가된다.

    position embedding은 위치 정보를 보존하기 위해 patch embedding에 추가된다. 다른 2D-aware position embeddings 도 사용해봤지만 성능 향상에 이득이 없어서, standard 1D position embedding을 사용한다. embedding vecotr의 결과 sequence는 encoder에 대한 input 역할을 한다. (position embedding은 E_pos로 표현된다)

    transformer encoder는 multiheaded selfattention과 MLP 블록이 교차로 구성되어 있다. Layernorm(LN)는 모든 블록 앞에 적용된다.

    Embedded patch -> LN -> MSA -> LN -> MLP-> LN (-> MLP)

    (1): 각 patch 값

    (2): multi-head attention

    (3): MLP(Multi-Layer Perceptron)

    (4): z^0_L은 [cls[ token의 최종 출력, LN(Layer Norm=Normalization Layer)에 해당 값을 넣어 y 획득.

    + y를 MLP에 넣어 최종 예측 수행

    --> 위의 수식은 위의 Transformer encoder 구조를 수식으로 풀어쓴 것 뿐이다.

     

    Inductive bias  ViTCNN보다 imageinductive bias가 적다는 것에 주목한다. CNN에서는 locality,two-dimensional neighborhood structure, translation equivariance등의 bias가 각 layer에서 반영된다. 하지만 ViT에서는 MLP 계층만 이러한 특성을 반영한다 (MLP layer만 local, translationally equivariant하고, self-attention layer는 global하다). 

     

    Hybrid Architecture  Image patch 대신 CNN featrue map을 flatten하여 transformer 차원으로 projection하여 사용할 수 있다.

     

    3.2. Fine-tunning and higher resolution

    ViT를 큰 dataset에서 학습한 후 작은 task로 fine-tunning하기위해 pre-trained prediction head를 제거하고, 0으로 초기화된 D x K 피드포워드 layer를 추가한다 (K는 작은 task의 class 수).

    사전 학습보다 고해상도로 fine-tunning 하는 것이 종종 이득을 보인다. 고해상도 image를 input할 때, patch 사이즈는 동일하다. 이는 효과적인 sequence length를 만든다 (image 사이즈에 따라 patch 사이즈를 다르게 하면 고해상도 image가 input되었을 때,patch도 늘고 sequence length도 늘어나게 됨). patch 사이즈를 고정함으로써 사전학습된 position embedding의 의미가 없어지기 때문에, 원본 이미지에 따라 사전 학습된 position embedding의 2D interpolation을 수행한다.

     

    4. Experiments

    4.1. SETUP

    4.2. COMPARISON TO STATE OF THE ART

    4.3. PRE-TRAINING DATA REQUIREMENTS

    4.4. SCALING STUDY

    4.5. INSPECTING VISION TRANSFORMER

    4.6. SELF-SUPERVISION

     

    5. Conclusion

    Self-attention을 사용한 이전과 달리 초기 patch extraction step외에 image-specific inductive biases를 도입하지 않는다.

    대신, 이미지를 일련의 patch로 해석하고 NLP에서 사용되는 표준 transformer incode로 처리한다.

    ViT는 SOTA를 달성하는 동시에 학습 비용은 낮다.

     

    ViT를 detectionsegmentation에 적용하는 과제와 self-supervised pre-training methods를 탐구하는 과제가 남아있다. 

     

    My Discussion

    --> patch 방법 말고는 없는걸까? (patch 내의 픽셀끼리는 위치정보가 사라지는거 아닌가)

    댓글

Designed by Tistory.