Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

ShuyaVision

[논문 리뷰] Vision Transformer ( An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale) 본문

Vision AI

[논문 리뷰] Vision Transformer ( An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale)

Sangbro 2023. 3. 26. 20:39

Introduction

  Transformer가 나온 이후로, NLP 영역에서는 Bert, GPT 등, 엄청난 발전들이 이루어 진다. 특히 Transformer의 연산 방식은 수 많은 parmameters들을 활용할 수 있게 했고, 수 많은 데이터를 학습할 수 있게 만들었다.
  Computer Vision 영역에서도, 이러한 NLP 영역이 부러웠는지, Transformer를 적용하기 위한 노력을 지속적으로 시도했다. 이를 성공한 논문이 https://openreview.net/pdf?id=YicbFdNTTy ViT(Vision Transformer)이다. 논문에서는 image를 여러 patches로 나누고, Transformer에게 input으로 이러한 patches들의 sequence of linear embedding을 제공했다. 이러한 image patches들은 NLP에 적용된 tokes(word)와 똑같은 취급을 받게 된다. 이를 통해 Transformer의 구조를 최대한 바꾸지 않으면서 Computer Vision Task 들에 대해서도 sota 급 성능을 달성한다.

 

Model

  Transformer의 구조를 최대한 바꾸지 않고, 그대로 적용했기 때문에 Model 자체는 크게 다를 게 없다. 다만, 기존 Transformer는 Machine Translation Task 이기 때문에 Encoder, Decoder의 구조를 선택하여 논문이 publish 되었다. ViT는 Encoder 만을 가져와서 사용한다.

 

[Image Input]

  - NLP의 Transformer는 1-D sequence의 토큰 임베딩을 input으로 받는다.

  - Image를 input으로 사용하기 위해서, 논문에서는 3-D의 image를 2-D flatten patches 들로 변환한다.

  - H x W x C를 N x (P^2 X C) 로 변환한다.

   여기서 H x W는 원본 resolution이며, C는 channel 이다.

   (P, P)는 각 patch의 image resolution이며, N = HxW / P^2로 패치의 개수가 된다. 즉 이미지 하나를 N개의 PxP 의 patch들로 나누어서 사용한다는 뜻이다. (C는 그대로 channel)

  - NLP의 Transformer는 모든 레이어에 D 크기의 constant letent vector를 사용했고, 이를 활용하기 위해 image patches 들은 linear projection을 하여 D demension으로 projection 한다. ( 아래 수식 (1) )

  - 이렇게 만들어진 output을 가지고 patch embeddings를 진행한다.

  - Bert의 [class] token 과 비슷하게, embedded-patches 맨 앞에 z0 = x_class 토큰을 붙인다. 해당 토큰은 learnable 하여 학습이 되며, output 때 y를 예측하는 데 사용한다. (분류 Task)

 

[Position Embedding]

  - patch embedding은 positional information을 유지하기 위해 이루어 지는데, 학습 가능한 1차원의 embedding을 활용한다. ( 2차원의 위치 정보를 활용해보았지만, 눈에 띌 만한 performance는 확인하지 못했다고 한다 )

 

[Inductive bias]

  - CNN의 특징으로는, two-d neighborhood 구조이며, locality를 강하게 학습한다. 또한 translation equivariance 하기 때문에 input에서, 위치가 수정되더라도 동일한 결과로 분류해낼 수 있다. 이에 비해 self-attention layers는 global 하게 연산이 이루어지기 때문에, CNN에 비해서 image-specific inductive bias가 훨씬 적다. 모델 초반부에 position embedding을 할 때에도 2D 위치에 대한 정보를 없애고 시작하기 때문에 image patch들 간의 모든 spatial 한 관계를 처음부터 학습해야 한다.

 

== 추가 ==

  - Equivariance 란 함수의 입력이 바뀌면 출력 또한 바뀐다는 뜻.

  - Translation equivariance는 입력의 위치가 변하면 출력도 동일하게 위치가 변한 채 나온다는 뜻.

  - Inductive bias 란 학습 시에는 만나보지 않았던 상황에 대해 정확한 예측을 하기 위해 사용하는 추가적인 가정을 의미한다 - Wikipedia

  - CNN에서는 이미지의 Locality 를 잘 학습하기 때문에, 어떠한 사진에서 개의 위치가 왼쪽에 치우쳐져 있는 사진만을 학습했더라도, 개가 오른쪽에 있는 사진을 만나더라도 개로 분류할 수 있다. 하지만 ViT의 경우, 이러한 2-d postion 정보를 없앤 채로 학습을 하기 때문에 inductive bias가 낮게 나오는 문제점이 생길 수 있다. 이는 방대한 데이터를 학습한다면 극복 가능한 영역이라고 할 수 있다. 그래서 Transformer 계열이 많은 데이터와 많은 학습 시간을 필요로 하는 듯 하다.

  - inductive bias가 높다고 해서 무조건 좋은 모델은 아니다. 어떠한 데이터에 대해 미리 가정을 하고 있기 때문에 때에 따라서는 학습 과정에서 편향이 생길 수 있다. 예를 들어서 local - receptive field 문제가 지적되었던 SAGAN에서, image를 generate 하는 과정에서 개에 대한 정보를 얼굴에만 집중하고 있기 때문에 self-attention module을 추가한 것과 같은 맥락이라 볼 수 있겠다.

 

[Hybird Architecture]

  - raw image의 대안으로 input sequence는 CNN의 feature map을 활용해도 된다. CNN의 feature map을 뽑아낸 다음 이를 patches 들로 input을 사용한다.

  - 특수한 case로 patch는 1x1의 크기를 가질 수도 있는데, 이 경우, input sequence는 단순히 feature map의 spatial한 차원을 평평하게 만들고 Transformer dimension으로 projection해서 사용할 수 있다.

 

[fine-tuning]

  - 보통 ViT를 large Datasets에 학습을 시킨 후에 작은 datasets으로 fine-tune 한다. 이를 위해 prediction head를 삭제하고, D x K feedfoward Layer (K : downstream classes) 를 활용할 수 있다.

  - Fine-tuning을 진행할 때, pre-trained 때 사용한 datasets 보다 높은 resolution의 이미지를 활용하는 것이 종종 더 좋은 결과를 이끌어 낸다고 알려져 있다.

  - higer resolution 데이터를 fine-tune 하기 위해서는 patch size는 같게 해야하기 때문에 input seqence의 length가 길어지게 된다. 메모리 제한이 없다면 sequence length가 변하는 것은 상관이 없지만, pre-trained 된 positon embedding이 의미가 없어진다.

  - 따라서 pre-trained 된 position embedding 에 original image에서의 location에 맞추어 2-D interpolation를 수행해서 positional embedding 값을 확장해서 사용한다고 한다.

  - 논문에서는 이러한 해상도 조절과 패치 추출법이 ViT에서 2D 구조에 대한 inductive bias를 수동적으로 주입하는 유일한 포인트라고 말한다.