[Review] AN IMAGE IS WORTH 16X16 WORDS:
TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE (ViT)


1. Introduction
ViT이전에 computer vision에서 attention 구조는 실용적으로 좋은 성능을 내지 못했음
Transformer구조에 영감을받아
1) image를 patch로 쪼개고
2) patch들의 sequence를 모델의 input으로 사용하는 구조
를 고안했다고함.
- 여기서
image patch들은 NLP에서 token과 같은 역할을 함.
ImageNet과 같은 mid-sized 데이터셋은 ResNet 계열에 비해 약간 낮은 성능을 보였다고함.
- 하지만
ImageNet-21k나 JFT-300M같은 large-scale의 데이터셋에서는 SOTA모델을 뛰어넘는 성능을 보여주었다고함.
Inductive Bias
ViT에서 데이터셋 일정 크기 이상이어야 기존 CNN 계열의 모델보다 성능이 좋았는데 이는 CNN과 Transformer 계열의 모델이 가진 inductive bias의 차이 때문이라고 한다.
CNN모델들은 이미 translation equivariance와 locality라는 inductive bias를 갖는 sliding window 구조로 되어있다.
translation equivariance: 사물의 위치가 바뀌어도 인지할 수 있음 (참고블로그)
sliding window구조가 갖는 inductive bias 덕분에 CNN 계열의 모델은 데이터가 적을 때에도 좋은 성능을 보여준다.
- 하지만 이미
bias를 갖는 구조이기 때문에 많은 데이터가 주어졌을 때에는 오히려 inductive bias가 작은 Transformer 보다 낮은 성능을 보여준다.
1) CNN
locality
two-dimensional neighborhood structure
translation equivariance
2) ViT
MLP layer에서만 locality와 translation equivariance를 갖는다고 한다.
Position embedding도 2D가 아닌 1D를 사용하기 때문에 ViT는 공간정보에 대한 inductive bias가 낮다고 볼 수 있다.
2. Model

1) Patch
- (H×W×C) 크기의 이미지를 (P2⋅C)크기를 가진 N개의
patch embedding으로 바꾸어 사용한다. (H×W=P2×N)
- 여기서 P는 패치의 크기를 의미한다.
2) Classification
classification을 위해 patch embedding 맨 앞에 class 토큰을 추가로 사용한다.
classification head는 pre-train시에는 하나의 hidden layer를 가진 MLP에서 계산되고
fine-tuning시에는 하나의 linear layer에서 계산된다.
3) Position embedding
Transformer와 마찬가지로 위치정보를 나타내기 위해 class토큰과 patch embedding에 1D position embedding을 더해준다.
2D position embedding과 비교했을 때 성능향상이 없어 1D Position embedding을 사용하였다고 한다.
4) Equation
ViT의 구조를 수식으로 나타내면 다음과 같다
- xclass: (1×D)
- X: (N×P2⋅C)
- E: (P2⋅C×D)
- Epos: (N+1)×D
- [X⋅E concatenated with xclass] +Epos
- 위의 식에서 E는 D차원의
Linear Projection을 위한 용도로 사용된다
Patch의 Linear Projection을 통해 z0를 구한 이후부터는 기존의 Transformer와 동일하다
5) Hybrid Architecture
- 원본 이미지에서
patch를 만들지 않고 기존의 CNN모델의 feature map을 patch로 나누어 모델을 학습시키는 방법도 제시하였다.
6) Fine-tuning and High Resolution
fine-tuning시 resolution이 더 큰 image가 들어왔을 경우 Patch의 크기는 고정되어 있기 때문에 sequence의 길이(N)만 길어지게 된다. 이 때, N의 길이가 pre-trained position embedding의 길이와 맞지 않게 되는데, 이 경우에는 2D interpolation을 통해 해결한다고 한다.
3. Experiments

figure 3, 4 - ViT는 다른 모델과 비교했을 때, 학습 데이터가 크고, 많아야 좋은 성능을 얻을 수 있다.
fugure 5 동일 FLOP(연산량)에서 ViT 모델이 BiT 모델보다 좋은 성능을 보였다.

1) Position embedding
- 가운데 이미지는
position embedding간의 cosine similarity를 보여준다.
- 위치정보를 주지 않았음에도 불구하고, 데이터를 학습하며 가까운 위치에 있는
embedding일 수록 similarity가 높아지는 경향을 보이는 것을 확인할 수 있다.
2) Receptive field?
- 오른쪽의 이미지는
layer깊이에 따른 attention weight의 평균거리를 나타낸다.
- 네트워크의 깊이가 얕은
head에서는 작은 attention distance를 가지고, 원본 이미지의 좁은 영역만을 보는 경향이 있고,
- 네트워크의 깊이가 깊은
head에서는 대부분 큰 attention distance를 가지고 원본 이미지의 넓은 영역에 주의(attention)를 기울이는 경향이 있다고 한다.
- 이는
CNN의 Recetptive field와 유사한 경향을 보인다.
3) Attention

ViT의 attention을 시각화한 결과 classification을 위한 semantic 영역에 주의를 기울인다는 것을 확인할 수 있었다고 한다.