1. Introduction
1.1 Vision Transformer의 등장 배경
기존 NLP 분야에서는 대규모 말뭉치 데이터 셋에서(large text corpus) Transformer를 사전 학습 한 뒤, 특정 세부 분야와 관련된 소규모 데이터 셋에서 파인 튜닝하는 방법이 좋은 성과를 보임.
Computer Vision 분야에서는 주로 Self-Attention과 CNN 구조를 같이 사용하는 모델들이 제안되었지만, 특수한 어텐션 기법 사용으로 인해 현대 하드웨어 가속기와의 호환성이 떨어진다는 한계가 있었음.
본 논문은 Computer Vision 분야(Image Classification)에 StandardTransformer 아키텍쳐를 그대로 도입하기 위해서 Vision Transformer 아키텍쳐를 제시.
1.2 Vision Transformer의 핵심 목표
1.
Standard Transformer 아키텍쳐를 Vision Task에 바로 적용
•
Vision Transformer에서는 한 개의 이미지를 여러 조각(patch)으로 쪼갠 다음에, embedding sequence 데이터 형식으로 만들어 transformer의 input으로 입력.
→ 이미지 patch들은 NLP에서의 token과 동일한 방식으로 다루어짐.
•
이미지 분류 학습(Image Classification)을 위해 지도학습 방식으로 학습됨.
2.
대규모 데이터셋에서의 사전 학습을 통해 기존 Transformer의 inductive bias 문제 해결
•
ImageNet과 같은 중간 사이즈의 데이터 셋에서 학습 했을 때, Vision Transformer 모델은 ResNet과 같은 CNN 기반 모델 보다 정확도가 낮음.
→ Transformer가 CNN 기반 모델보다 inductive biases(translation equivariance and locality)가 부족함을 의미
→ 중간 사이즈의 데이터셋에서 Vision Transformer는 좋은 성능을 내기가 어려움.
•
ImageNet-32k 데이터셋이나, JFT-300M 데이터셋과 같은 대규모 데이터 셋에서 먼저 사전학습을 진행하고, 그 이후 작은 규모의 데이터 셋에서 파인 튜닝을 진행 했을 때 좋은 성능을 보임.
2. Related Works
3. Method
3.1 Vision Transformer(ViT) 구조
Vision Transformer(ViT)는 한 개의 Image를 작은 patch로 쪼개서 image sequence로 만듦
→ Transformer Encoder의 input으로 넣음
[ViT 단계]
1. 이미지를 16x16 patch의 크기로 분할한다.
2. 16x16 patch로 잘라진 이미지들에 각각 linear projection을 수행하여 patch embedding을 생성한다.
→ Iinear projection 과정에서 2D→ 1D으로 flatten 시킴
•
: 원본 이미지 해상도 / : 채널 수
•
: 각 이미지 패치의 해상도
•
: 최종 패치 수, 트랜스포머의 입력 시퀀스 길이
3. 각 Patch Embedding에 Positional embedding과 학습가능한 클래스 Embedding을 더해준다.
•
가장 첫번째 패치 임베딩 앞에 학습 가능한 클래스 임베딩 벡터를 붙여줌.(Learnable Parameter)
→ 이미지에 대한 representation을 나타나는 class label 역할 수행
•
ViT에서도 각 Patch의 공간 정보를 유지하기 위해 각 이미지 Patch Embedding에 Positional Embedding을 추가해줌
4. Transformer encoder를 통해서 embedding을 생성한다.
•
Transformer Encoder는 MSA(Multi-headed self-attention)과 MLP block으로 구성됨
•
LayerNorm(LN)은 모든 블록 앞에서 적용되고, D 차원에 대해서 각 feature에 대한 정규화 진행.
→ 트랜스포머는 모든 레이어에서 같은 차원을 사용하기 때문에(constant laten vector size )
패치를 flatten한 뒤, 각 패치를 차원에 사상하여 정규화된 patch embedding 생성
MSA의 Attention 연산 과정
5. [class]에 대한 embedding만 이용해서 MLP(Multi-Layer Perceptron)에 넣어주고 classification을 진행한다.
•
Classification
Transformer Encoder의 최종 output 값의 가장 첫번째 벡터 y를 하나의 hidden layer로 구성된 MLP Head에 입력하여 해당 이미지 분류를 진행.
•
ViT의 MLP 구조에서는 두 개의 linear 레이어와 GELU 활성화 함수를 사용
3.2 Inductive Bias
Vision Transformer (ViT)는 MLP (Multi-Layer Perceptron) 레이어에서만 지역적인 특성을 가짐.
→ CNN에 비해 이미지에 대한 귀납적 편향(inductive bias)이 훨씬 적게 나타남.
Inductive Bias 란?
모델이 학습 데이터로부터 일반화를 어떻게 수행하는가에 대한 경향성
•
CNN의 Inductive Bias: CNN은 강한 inductive bias를 가지고 있음.
→ CNN의 컨볼루션 연산을 통해 필터를 사용하기 때문에 CNN 기반 모델들은 공간적 계층 구조(spatial hierarchical structure)와 지역성(locality), 그리고 translation equivariance를 학습하게 됨.
이러한 특성으로 인해 CNN은 이미지의 공간적 구조를 효율적으로 학습할 수 있으며, 상대적으로 적은 데이터로도 좋은 성능을 낼 수 있음.
•
Transformer의 Inductive Bias: Transformer, 특히 Vision Transformer (ViT)는 상대적으로 약한 inductive bias를 가짐.
→ Transformer가 고정된 패턴이나 구조를 가정하지 않고, 학습 데이터에서 패턴을 찾아내야 한다는 것을 의미
ViT는 MLP Layer에서만 Locality, Translation equivariance를 학습하기 때문에,
→ 학습 과정에서 더 많은 데이터를 필요로 하며, 이는 충분한 데이터가 없을 경우 일반화 성능이 저하될 수 있음을 의미
3.3 Hybrid Architecture : CNN feature map을 활용
Image Patch를 사용하는 대신, CNN을 통과한 Feature Map Sequence를 이용하는 Hybrid Architecture 제시
→ patch의 크기를 1로 설정하여(P=1), patch 단위로 자를 필요 없이 바로 flatten해서 Transformer의 차원(D)으로 projection 진행
3.4 Fine-tuning and Higher Resolution
•
일반적으로 ViT는 큰 데이터셋에서 Pre-training 되고, 이후에는 (더 작은) 다운스트림 작업에 Fine-Tuning
◦
Fine-Tuning 시, Pre-train에서 사용된 Prediction 헤드를 제거하고, 다운스트림 클래스의 수 K를 가진 D × K 차원의 Feed-Forward 레이어를 새로 첨부
•
Fine-tuning 시, Pre-train 작업 때 보다 높은 해상도에서 Fine-Tuning 하는 것이 유익.
◦
높은 해상도에서 파인 튜닝을 하게되면 패치 크기(P)는 그대로 사용하고, 시퀀스 길이만 늘려주면 됨.
→ 차원(D)가 늘어나니까, 시퀀스 길이인 N값이 늘어남!
◦
하지만 이때 Pre-training 과정에서 사용된 Position Embedding은 더 이상 의미가 없음
•
사전훈련된 Position Embedding을 2D Interpolation(2차원 보간)을 적용하여 기존 Position Embedding을 활용
4. Experiment
4.1 SetUp
4.2 Comparision to SOTA
전이학습 평가를 위한 각 데이터셋 별 ViT 모델과 SOTA CNN 모델과의 성능 비교
•
기존 전이학습 SOTA CNN 기반 모델로는 BiT-L(ResNet), NoisyStudent(EfficientNet) 사용
•
fine-tuning을 각각 3번 진행하고 정확도의 평균과 표준편차를 계산하여 정확성을 평가
•
TPUv3-core-days : 사전학습 시 사용된 코어 수 X 소요 일수 (효율성을 평가하는 지표)
[실험 결과]
1.
ViT는 모델 규모가 증가하고, 데이터셋의 크기가 증가할 수록 지속적으로 성능이 증가함을 알 수 있음
→ ViT Transfer Learning(Fine-Tuning) Task에서 대규모 데이터에서 학습 시키는 것이 중요!
•
중간 사이즈 Dataset: Baseline > ViT
•
큰 사이즈의 Dataset : ViT > Baseline
2.
ViT-L/16을 보면 모든 데이터셋에서 BiT-L과 비슷하거나 더 나은 수치를 보여주고, TPUv3로 학습한 비용이 훨씬 적다는 것을 알 수 있음.
Breakdown of VTAB performance in Specialized, Structured task groups
•
VTAB 데이터 셋에서 Task 별로 각각의 그룹으로 분해하고, 이 벤치마크에서 이전 SOTA 모델들과 비교
◦
BiT (ResNET
◦
VIVI(ImageNet과 유튜브에서 공동 훈련된 ResNet)
◦
S4L(Image Net에서의 지도학습 및 반지도학습)
•
ViT-H/14가 BiT-R152x4 및 다른 Baseline 모델들을 능가함을 확인
4.3 Pre-Training Data Requirements
•
ViT가 대규모 JFT-300M 데이터셋에서 Pre-train 될 때의 성능과 데이터셋 크기의 중요성에 관한 실험 결과
•
Figure 3 - ImageNet, ImageNet-21k, JFT-300M과 크기가 다른 대규모 데이터셋에서 ViT 모델을 Pre-training
◦
작은 데이터셋에서의 성능을 높이기 위해 Weight Decay, Drop Out, Label Smooting 등 세 가지 기본 정규화 매개변수를 최적화
[실험 결과]
◦
ImageNet: ViT-Large < ViT-Base, ImageNet-21k 에서는 비슷한 성능을 보임
◦
크기가 제일 큰 JFT-300M : ViT-H/14 > ViT-L/16 > ViT-L/32
→ (큰 모델일 수록, 큰 데이터셋에서 성능이 좋음)
◦
BiT CNN은 ImageNet에서 ViT보다 우수했지만, 더 큰 데이터셋에서는 ViT가 성능이 좋음.
•
Figure 4 - 9M, 30M, 90M의 Random한 subset vs 전체 JFT-300M 데이터셋에서 모델을 훈련
◦
Subset에 대해 추가적인 정규화는 수행하지 않고 모든 설정에 동일한 하이퍼파라미터를 사용
[실험 결과]
◦
ViT vs ResNet: ViT가 작은 데이터셋에서 더 많이 오버피팅이 발생
◦
90M 이상의 하위 집합(100M, 300M)에서는 ViT가 더 좋은 성능을 보임
◦
작은 데이터셋에서는 CNN의 Inductive Bias이 더 효과적이지만, 큰 데이터셋에서는 ViT도 데이터로부터 직접 관련 패턴을 학습하는 것이 가능하고, 효과적임을 확인
4.5 Inspecting Vision Transformer
ViT가 이미지 데이터를 어떻게 처리하는지 이해하기 위한 내부를 분석 실험 3가지를 진행
1. 필터 시각화
•
첫번째로 Patch Embedding을 만들기위해 Linear Projection을 수행할 때에 주요 요소 28개를 선정해 시각화
→ PCA(주성분 분석)을 통해 D개의 필터 중 28개를 선정
[실험 결과]
•
필터 시각화 결과, 잘 학습된 CNN의 앞쪽 레이어를 시각화했을 때와 유사한 결과가 나옴.
→ 이미지 인식에 필요한, edge, color 등 low-level의 이미지 특징들도 잘 파악(Locality)
2. Position Embedding 유사도 분석
•
Position Embedding간 유사도 분석을 위해 i번째 패치 행, j번째 패치 열에 대한 코사인 유사도 값의 히트맵 분석
[실험 결과]
•
Position Embedding의 i번째 열, j번째 행 값이 이웃한 열, 행의 임베딩 값과 높은 유사도를 보임
→ 가까운 패치일 수록 높은 유사도를 보여줌
→ Input patch 간의 공간정보가 잘 학습됨을 확인! (Transformer사용의 이점)
3. Attention Distance
•
Self-Attention을 활용해 전체 이미지 정보의 통합 가능 여부 확인(Global Context 학습 확인)
→ Attention weights를 바탕으로 Mean Attention Distance를 계산하여 한 픽셀에서 어느 정도 떨어져있는 픽셀까지 확인
[실험 결과]
•
ViT는 가장 하위의 layer에서도 전체 이미지에 대한 정보를 통합 가능
→ 첫번째 레이어(낮은 Network depth)에서도 attention을 통해 global context 학습 가능
•
depth가 증가함에 따라 attention distance도 증가
•
낮은 Layer의 Self-attention Head는 CNN처럼 "Localization" 효과 가짐
5. Conclusion
본 논문의 Vision Transformer에서는 Computer Vision의 기존 연구들과 달리 직접적으로 Standard Transformer를 사용하였다.
기존 CNN 기반의 방법과 달리, 이미지를 패치형식으로 변환해 NLP에서 사용하던 Transformer Encoder를 사용하였다.
Vision Transformer는 대규모 데이터셋으로 Pre-train 했을 때 좋은 성능을 보여주었고, Pre-training 비용이 상대적으로 저렴하면서, 대규모 이미지 분류 데이터 세트에서 SOTA를 달성한 기존 CNN 기반 모델들과 비슷하거나 능가하는 퍼포먼스를 보였다.
Vision Transformer의 Challenge
1.
Image Classification 외의 Object Detection, Image Segmentation과 같은 다른 Vision Task에 적용하는 것
2.
사전학습 방법에 대한 추가적인 연구
3.
ViT를 더 확장시켜 성능 향상
Reference
An Image Is Worth 16x16 Words: Transformers For Image Recognition at Scale