본문 바로가기
Have Done/Attention

[ViTs] Going deep with Image Transformers (1/4)

by 에아오요이가야 2022. 10. 27.

Vision Transformer에 익숙하지 않으신 분들은 다음 tutorial을 공부하는것을 추천드립니다. 

Image classification with Vision Transformer.

간단하게 말씀드리면 영상(이미지)를 다루는데 기존의 convolution layer구조 가 아닌,
Transfomer architecture with self-attention을 Image patches의 sequence에 적용했다고 보시면 됩니다.

(Encoder, Decoder), (key, query, value), (multi-head, masked-head)등등의 복잡한 이름의 개념들이 있지만,
image patches(content information) + Sequence (position information)이 두가지를 동시에 학습한다고 이해하시면 편합니다.

 

Class Attention Image Transformers with LayerScale

Going deeper with Image Transformers by Touvron et al. 에서 사용된 CaiT (Class-Attention in Image Transformers)의 개념을 가볍게 코드로 가져가는 시간으로 활용해 주시면 감사하겠습니다.

 

Introduction

Depth Scaling

Neural Network model의 정확도와 일반화 성능이 depth를 깊게하면(layer를 많이 쌓으면) 높아지는것을 여러분도 아실 것 이라고 생각합니다.
그에대한 근거들로 아래 두 논문을 들 수 있겠습니다.

  1. EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks by Tan et al.
  2. Fast and Accurate Model Scaling by Dollár et al.

하지만

Neural Network에서 사용되던 depth scaling전략을 Vision Transformers에 적용했을 때는,
정확도가 너무 빨리 정체되는(더이상 상승하지 않는) 문제가 있어서 Neural Network에서만큼의 성능을 기대하기 어렵다고

An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale by Dollár et al. 해당 논문에서 주장하고 있습니다.

그래서

CaiT paper의 저자는, ViT (Vision Transformers) architecture에서 정확도 정체 현상을 완화하기 위해 두 가지의 modification을 제안합니다.

1. LayerScale

2. Class-attention layer

이번 튜토리얼은 3단계로 이루어져있습니다.

step 1. Implementation of the individual blocks of CaiT - CaiT에서 사용되는 개별적인 block들 구현 ★★★★★
 
    - LayerScale, Class-Attentionlayer, Talking Head Attention, Stochastic depth layer
 
 
step 2. Collating(collect and combine) all the blocks to create the CaiT model - block들을 모아서 CaiT로 완성하기 ★★★☆☆

    - Feed-forward Network, LayerScaleBlockClassAttention, LayerScaleBlock

 

step 3. pre-trained CaiT model 불러와서 이미지 예측해보고 model의 layer별로 결과 눈으로 확인하기! ★☆☆☆☆

    - 하지만 매우 practical!! 

 

댓글