transformer는 자연어처리에서 많이 사용되고 있었는데 비전에서는 제한적으로 적용되어왔다. 비전 분야에서 어텐션은 Convolutional network과 함께 적용되거나, Convolutional network의 특정 요소를 대체하기 위해 사용되었기 때문이다. 기존의 제한적인 어텐션 메커니즘에서 벗어나 CNN구조 대부분을 transformer로 대체함으로서 더 좋은 이미지 분류 성능을 낸다. 하지만 충분한 데이터 셋으로 Pretrain하고 타겟 도메인에 Fine-tuning해야 성능을 제대로 발휘할 수 있다.
비전분야에서는 Convolutional 구조가 아직까지 우세하게 사용되고 있다. NLP에서의 성공에 영감을 받아서 다양한 연구에서 CNN 같은 구조를 self-attention과 결합하려고 시도했는데, 가장 최근의 모델들은 이론상으로는 효과적이었지만, 특수한 어텐션 패턴 사용 때문에 현대 하드웨어 가속기에서 효과적으로 스케일링이 불가능했다.
본 논문에서는 standard transformer를 최소한의 수정으로 직접 이미지에 적용하는 것에 대해 실험을 했다. 이를 위해, 이미지를 패치별로 쪼개고 이러한 패치들의 linear embeddings sequence를 트랜스포머에 input으로 넣었다. 이미지 패치들은 NLP에서의 token과 같은 방식으로 다뤄진다. 이미지 분류에 대한 모델을 supervised 방식으로 학습시켰다.
ImageNet과 같은 중간 사이즈의 데이터셋에서 학습했을 때, 모델은 ResNet보다 약간 낮은 수치의 정확도를 보여줬는데, 이는 트랜스포머가 CNN에 내재되어 있는 inductive biases(translation equivariance and locality)가 부족함을 의미한다. 이 때문에 중간 사이즈의 데이터셋은 이 모델을 학습시키기에 충분하지가 않음을 알 수 있다.
하지만, 모델이 더 큰 데이터셋에서 학습되었을 때는 다른 양상을 보여주는데, 큰 스케일의 학습이 inductive bias를 이겨버리는 것을 알 수 있었다. ViT가 충분한 스케일의 데이터셋에서 사전학습되고 task로 전이 학습될 때 훌륭한 결과를 보여줬기 때문이다.
BERT, GPT
이미지에 Self-Attention을 적용한 Naive application
1) Parmar : 전역적(Globally)으로 적용 X → 쿼리(Query) 픽셀 주변(Local Neighborhood)에만 Self-Attention 적용
2) Weissenborn : 다양한 크기의 Block을 Scale Attention 적용했지만, 효율적인 GPU 사용을 위한 복잡한 엔지니어링 필요함
3) Cordonnier : 2x2 Image Patch를 추출하여, Full Self-attention 사용함(ViT와 가장 유사) 하지만 2x2 Image Patch를 사용하므로 작은 해상도(Resolution)에만 적용됨
VIT 핵심 목적
Large scale pre-training 가능한지
일반적인 Transformer를 바로 적용
Medium-Resolution 이미지에도 적용 가능
심플한 setup을 통해 스케일링이 가능하고 효율적인 실행을 가능하게 했다.
이미지를 여러 패치들로 쪼개고 Linear projection 한 것과 position embedding(픽셀이 아닌 패치별로 포지션을 선정)을 Transformer Encoder에 넣어준다.
Standard Transformer는 token embedding의 1차원 sequence를 input으로 받게 된다. 2차원의 이미지(사실 채널까지 고려하면 3차원이라고 해야 하지만)를 다루기 위해서, image
x를 flattened 2차원 패치들의 sequence로 모양을 바꿔준다.
트랜스포머는 일정한 letent vector 사이즈 D를 모든 레이어에 걸쳐 사용하는데, 이를 통해 패치들을 flatten 시키고 D차원으로 매핑시킨다. 이 projection의 output을 patch embedding이라 한다.
Classification head는 MLP에 의해서 수행되며 사전학습때는 one hidden layer, fine-tuning시에는 single linear layer로 수행된다.
Position embedding은 patch embedding에 위치 정보를 위해 추가되는데, standard learnable 1D position embedding을 사용했다. (2D보다 성능 좋음)
CNN(Locality 가정)이나 RNN(Sequentiality 가정) 경우, Global 한 영역의 처리는 어렵다.
ViT(Self-Attention 메커니즘은 Global 함)는 일반적인 CNN과 다르게 공간에 대한, "Inductive bias"이 없다. 그러므로, ViT는 더 많은 데이터를 통해, 원초적인 관계를 Robust 하게 학습시켜야 한다. * ViT는 MLP Layer에서만 Local 및 Translation 등분산 된다.
Image Patch의 대안으로, CNN의 Feature Map의 Sequence를 사용할 수 있음. 이 하이브리드 모델에서, 패치 임베딩 projection E는 CNN feature map으로부터 뽑아낸 패치들에 적용된다. 특별한 경우로는 패치들이 spatial size 1X1를 가질 수 있는데
이는 input sequence가 feature map의 spatial dimension을 flatten 시키고 트랜스포머 차원으로 projecting 시킴으로써 나온 것을 의미한다. classification input embedding과 position embedding은 위와 같은 방법으로 추가된다.
더 높은 해상도 및 Patch Size 동일하게 두는데 이는 더 큰 효과적인 sequence length를 만들어낸다. ViT는 임의의 sequence 길이를 다룰 수 있긴 하지만, 사전 학습된 position embedding은 의미가 없어지기 때문에, Pre-Trained Position Embedding을 2차원 보간하여 오리지널 이미지에서의 위치에 따라 적용한다.
실험을 위해서 ResNet, ViT 그리고 hybrid(CNN feature map 적용 모델)의 Representation learning capability를 평가했다. 다양한 크기의 데이터셋으로 사전학습을 진행하고 많은 밴치마크 task에 대해서 평가를 했는데. 사전학습 계산비용에 대해서 ViT가 매우 효율적이었으며 대부분의 벤치마크에서 낮은 사전학습 비용으로 SOTA수준의 성능을 달성했다.
마지막으로, self-supervision을 사용해서도 작은 실험을 진행했는데 이에 대해서는 후속 연구에서 다룰 예정이다.
Pre-training
모델의 스케일 능력을 실험하기 위해 ImageNet 데이터셋, ImageNet-21K(21K 개의 클래스와 1400만 개의 이미지)과 JFT(18k개의 클래스와 303M의 고해상도 이미지)를 사용했다.
Transfer Learning
전이 학습에 사용된 데이터셋으로는 ImageNet, CIFAR 10/100, Oxford-IIIT Pets 등이 있다.
BERT에 사용된 구성을 기본으로 실험을 했는데 결과에 나온 B는 Base, L은 Large 그리고 H는 Huge를 뜻한다.
Pre-training
사전학습에 사용된 파라미터로는 Adam optimizer의
β1=0.9, β2=0.999, 그리고 배치 사이즈는 4096으로 실험하였다.
(+ weight decay parameter는 0.1로 설정)
Fine-tuning
Stochastic Gradient를 momentum과 함께 사용했는데 여기서 배치사이즈는 512로 설정하였다.
ViT-L/16을 보면 모든 데이터셋에서 BiT-L과 비슷하거나 더 나은 수치를 보여준다. 중요한 것은 TPUv3로 학습한 비용을 보면 훨씬 적다.
Huge모델인 ViT-H/14은 기존의 모델보다 훨씬 더 나은 성능을 보인다.
그래프는 VTAB task에 대해 기존의 SOTA와 비교한 자료이며 ViT-H/14가 모든 task에서 가장 뛰어난 정확도를 보여주는 것을 알 수 있다.
그래프는 크기가 클수록 학습이 충분히 잘 된 것을 알 수 있다.
ImageNet과 같은 중간 사이즈의 데이터셋에서 학습했을 때, 모델은 ResNet보다 약간 낮은 수치의 정확도를 보여줬는데, 이는 트랜스포머가 CNN에 내재되어 있는 inductive biases(translation equivariance and locality)가 부족함을 의미한다. 이 때문에 중간 사이즈의 데이터셋은 이 모델을 학습시키기에 충분하지가 않음을 알 수 있다.
트랜스포머를 비전에 적용한 기존의 연구들은 스케일링이 불가능했는데 ViT에서는 어떻게 스케일링이 가능한지에 대해 측정한 그림이 다음과 같다.
비전 트랜스포머는 일반적으로 동일한 계산 비용으로 ResNets를 능가한다. 하이브리드는 모델 크기가 작을 경우 순수 트랜스포머보다 개선되지만, 큰 모델의 경우 격차가 사라진다.
왼쪽 그림 : Embedding의 Filter를 확인하였따. 각 Filter의 기능이, 저차원의 CNN Filter 기능과 유사
가운데 그림 : Position Embedding 간의 유사성 확인한다. ViT는 Projection 후 Position Embedding을 Patch Representation에 추가했다.
가까운 패치 간의 유사도 높다.(= Input Patch 간의 공간정보가 잘 학습된다.)
오른쪽 그림 : Self-Attention을 활용해 전체 이미지 정보의 통합 가능 여부 확인. 주목할 점은 ViT는 가장 하위의 layer에서도 전체 이미지에 대한 정보를 통합할 수 있다는 점이다.
낮은 Network depth에서도 attention을 통해 global 하게 정보를 사용할 수 있다는 점을 알 수 있다. 또한 depth가 증가함에 따라 attention distance도 증가함을 알 수 있다.
낮은 Layer의 Self-attention Head는 CNN처럼 "Localization" 효과를 보인다.
후속 연구로 언급했던 self-supervision에 대한 내용으로 Self-supervised 사전학습을 한 ViT-B/16 모델은 ImageNet에서 79.9%의 정확도를 보였지만 supervised 사전학습을 했을 때보다는 4% 정도 성능이 하락했다.
본 논문에서는 이미지 인식에 기존 연구와 달리 직접적으로 트랜스포머를 사용한 방법을 제안했다. Convolution 기반의 모델은 inductive bias를 사용하는 것과는 달리 이미지를 패치로 만들고 NLP에서 사용하던 트렌스포머 인코더를 사용하였다. 단순하지만 확장가능한 이 전략은 대규모 데이터셋으로 사전학습과 결합하여 놀라운 성능을 보여주었다. 따라서 Vision Transformer는 사전 교육 비용이 상대적으로 저렴하면서 많은 이미지 분류 데이터 세트에서 최신 기술과 일치하거나 이를 능가한다.
하지만 세가지 정도의 challenge도 남아있는데,
내용은 모르지만 꾸준히 성장하시는 모습 보기 좋네요ㅎ_ㅎ