An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
https://arxiv.org/abs/2010.11929
An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
While the Transformer architecture has become the de-facto standard for natural language processing tasks, its applications to computer vision remain limited. In vision, attention is either applied in conjunction with convolutional networks, or used to rep
arxiv.org
Abstract
트랜스포머 모델이 nlp에서 사실상의 표준이 되었지만, CV로의 응용이 아직 부족하다. 비전에서 어텐션은 CNN과 함께 사용되거나, CNN의 일부분을 대체 하기만 한다. 이 논문은 CNN 구조에 의존 없이 순수한 transformer 을 image patch squence에 적용하는 것 만으로도 이미지 분류에서 매우 좋은 성능을 보일 수 있다는 것을 보여준다. 더불어 ViT는 더 적은 computing resource 만을 가지고도 최신 CNN 모델과 비교해 훌륭한 성능을 얻는다.
→기존 CNN에 대한 의존없이 순수한 Transformer 만으로도 더 적은 resource를 사용하며 더 뛰어난 성능을 얻을 수 있다.
Introduction
첫 번째 문단 : transformer(self-attention based model) 은 NLP 에서 널리 선택받는 모델이 되었고, 뛰어난 효율성과 확장성 덕분에 1000억 개 이상의 파라미터를 가진 모델을 훈련시키는 것 또한 가능해졌으며, 모델과 데이터 셋이 커지고 있지만, 성능이 한계에 도달한 모습을 보이고 있지는 않다.
두 번째 문단 : 반면 CV에서는 CNN이 여전히 지배적인 모델이다. transformer의 자연어 처리에서의 성공에 영감을 받아, 여러 연구들이 self-attention을 결합하려했고, 일부는 컨볼루션을 완전히 대체하기도 했지만, 이론적으로는 효율적이지만, 특수한 어텐션 패턴을 사용하기 때문에, 현대 하드웨어 가속기에서 효과적인 확장이 이뤄지지는 않았다. 여전히 ResNet 기반의 모델이 최신 기술로 여겨진다.
세 번째 문단 : NLP에서의 Transformer의 확장 성공에 영감을 받아. 최소한의 수정으로 transformer를 image에 직접 적용하는 실험을 진행했고, image를 patch 로 나누고, 이들의 순차적 선형 임베딩을 트랜스포머의 입력으로 제공하고, 이때, 이미지 패치는 NLP에서의 토큰 처럼 처리되고, 지도학습의 방법으로 모델을 학습한다.
네 번째 문단 : ImageNet 같은 중간 크기의 데이터셋에서 아무런 규제 없이 학습하게 된다면, 이 모델들은 비슷한 크기의 ResNets 보다 몇 퍼센트 낮은 적당한 정확도를 보인다. 다소 실망스러울 수 있지만, 당연한 결과다. 왜냐하면 트랜스포머는 CNN에 내재된 inductive bias(이동 불변성, 지역성) 을 결여하고 있기 때문에, 데이터가 부족하다면, 잘 일반화되지 않기 때문이다.
다섯 번째 문단 : 하지만, 모델이 더 큰 데이터셋(1400만~3억)에서 학습될 때, 상황은 달라진다. 대규모의 학습은 inductive bias를 뛰어넘는다는 것을 찾아냈다. ViT는 충분한 크기의 데이터에서 사전학습된 뒤, 작은 데이터 셋에 전이학습될 때, 좋은 결과를 얻을 수 있다. 특히 imagenet-21k 데이터셋이나, 내부 JFT-300M 데이터 셋에서 사전학습 된 후 여러 이미지 인식에서 최신기술에 근접하거나 능가하는 성능을 얻었다.(image-net 88.55, CIFAR-100 94.55)
→ 이 연구는 transformer 모델의 NLP에서의 성공에 영감을 얻어 cv에서 transformer를 큰 변형 없이 적용해보자가 목적이며. 그 방법은 image를 patch 단위로 자르고 순차 embedding을 거쳐 input으로 주는 것이다. ViT는 충분히 많은 데이터 셋에서 사전학습 된다면 아주 좋은 성능을 얻을 수 있다. 하지만 작은 dataset에 대해서는 CNN 기반 모델 보다 나쁜 성능을 얻기도 하는데, 그 이유는 Transformer 모델은 CNN에 비해 Inductive bias가 적기 때문이다.
inductive bias : 귀납적 편향 내 생각에는 그냥 그럴것이다. 라고 생각하는 강한 추측(가정) 정도라고 생각한다. 논문에서 말하는 inductibe bias를 기반으로 이해해보면 1. Translation Equivariance (이동 불변성) - 이미지의 객체가 이동하거나 위치가 바뀌어도 해당 객체를 인식하는 능력이 변하지 않는다. 2. Locality (지역성) - 이미지 내의 중요한 정보가 공간적으로 인접한 곳에 몰려있을 것이다. 인데, 이런 개념을 바탕으로 나온게 고전 cv의 conv filter 이고, 그렇기에 image의 저 2가지 특성을 더 잘 잡아낼 것이다. 그래서 inductive bias가 높은게 CNN, 낮은게 transformer 라고 하는 것 같다.
Related work
첫 번째 문단 : 2017년 Transformer가 등장한 이후, NLP 에서 최신기술로 자리잡았다. 주로 큰 말뭉치에서 사전학습된 후 task에 맞춰 fine-tune 된다. BERT는 노이즈 제거를 목표로 self-supervised 방법을 사용하여 훈련하며, GPT 계열 연구는 언어 모델링을 사전 훈련 작업으로 사용한다.
두 번째 문단 : 이미지에 자기 주의를 단순히 적용하면 각 픽셀이 다른 모든 픽셀을 참조해야 하므로, 픽셀 수에 대해 이차적인 비용이 발생해 현실적인 입력 크기로 확장하기 어렵다. 따라서 이미지 처리에서 Transformer를 적용하기 위해 여러 근사 방법이 시도되었다. Parmar 등(2018)은 각 쿼리 픽셀에 대해 전역적으로가 아닌, 로컬 이웃에서만 자기 주의를 적용했다. 이러한 로컬 다중 헤드 내적 자기 주의 블록은 완전히 합성곱을 대체할 수 있다(Hu 등, 2019; Ramachandran 등, 2019; Zhao 등, 2020). 다른 연구에서는 Sparse Transformer(Child 등, 2019)가 이미지에 적용할 수 있도록 전역 자기 주의에 대해 확장 가능한 근사치를 사용한다. 주의를 확장하는 또 다른 방법으로는 다양한 크기의 블록으로 주의를 적용하는 방식이 있으며(Weissenborn 등, 2019), 극단적인 경우에는 개별 축에만 적용한다(Ho 등, 2019; Wang 등, 2020a). 이러한 특화된 주의 아키텍처 중 많은 것이 컴퓨터 비전 작업에서 유망한 결과를 보였으나, 하드웨어 가속기에서 효율적으로 구현하기 위해서는 복잡한 엔지니어링이 필요하다.
세 번째 문단 : 이 연구와 가장 연관이 깊은 모델은 On the relationship between self-attention and convolutional layers 이며, input image를 2x2 단위의 patch로 만든 다음 그 위에 완전한 self-attention을 적용한다. 이 연구와 ViT는 비슷한 부분이 많지만, 이 연구는 대규모 사전 학습이 단순한 transformer를 CNN 최신 기술과 견줄 수 있거나 능가할 수 있음을 보여준다. 더불어 이전 모델은 저해상도의 이미지에만 모델을 적용할 수 있었던 것과 달리 ViT는 중해상도 이미지도 처리 가능하다.
네 번째 문단 : self-attention 형태를 CNN과 결합하려는 연구도 많았다. 예를 들어 image 분류를 위해 feature map을 보강하거나, 객체 탐지, 비디오 처리, 비지도 객체 탐지, 통합 텍스트 - 비전 작업등 다양한 분야에 적용되고 있다.
다섯 번째 문단 : 또 다른 관련 최신 모델은 iGPT이다. 이미지 해상도와 색 공간을 줄인 다음 transformer를 image pixel에 적용하는 것이다. 모델은 생성모델로서, 비지도 방식으로 처리되며, 그 결과로 얻어진 representation은 선형 방식으로 미세 조정하거나 분석될 수 있고, image net에서 72% 의 정확도를 달성했다.
여섯 번째 문단 : 이 연구는 표준 image net 보다 더 큰 공간에서의 image recognition 연구들에 기여한다. 추가 데이터를 이용하면standard benchmarks 들에서의 최신 성능을 낼 수 있다. 게다가 CNN 성능이 데이터셋 크기에 따라 어떻게 확장되는지 연구했으며, ImageNet-21k 와 JFT-300M 같은 대규모 셋에서의 CNN 전이학습을 경험적인 탐구를 했다. 우리도 이 두 데이터 셋에 대해 집중하지만, 이전 연구가 Resnet 기반 모델에 집중했던 것과 달리 transformer 기반 모델에 집중한다.
→이전 연구에서는 이미지에 self-attention을 적용하려는 다양한 시도가 있었지만, 많은 경우 하드웨어 최적화가 어렵다는 한계가 있었다. ViT는 Transformer를 이미지에 직접 적용하는 접근을 취하며, 이전 연구(Cordonnier et al., 2020)와 달리 2×2 패치 크기로 제한되지 않고 중해상도 이미지를 처리할 수 있다. 또한, ViT는 ImageNet-21k와 JFT-300M 같은 대규모 데이터셋에 대해 학습하여, 기존 ResNet 기반 모델과의 성능 격차를 줄이거나 이를 능가하는 가능성을 탐구한다.
Method
모델 설계는 Transformer 모델과 거의 비슷하게 만들었는데, 이 단순한 설정의 장점은 NLP Transformer의 효율적인 구현과 확장 가능성을 그대로 활용할 수 있다는 점이다.
3.1 Vision Transformer (ViT)
첫 번째 문단 : 표준 transformer는 1D 입력을 받게 되어있다. 2D image 를 다루기 위해서 우리는 image를 𝐱 ∈ ℝ^(H×W×C) 형태에서 flattern 시켜 𝐱 ∈ ℝ^(N×(P×P×C)) 형태로 만들어 주어야 한다. 이때 P는 우리가 다룰 패치의 해상도가 된다. N은 패치의 갯수로 HW/P^2 이며, 또한 tranformer의 유효 input sequence 길이이기도 하다. 트랜스포머는 모든 층에서 D 사이즈의 고정된 latent vector를 사용하기 때문에, 우리는 patch를 flattern 시키고 학습가능한 linear projection 을 사용하여 D 차원으로 mapping 한다. 이 projection 의 결과를 patch embedding 이라고 부른다.
두 번째 문단 : BERT의 [class] 토큰과 유사하게, 임베딩된 패치 시퀀스에 학습가능한 임베딩(z_0)을 맨 앞에 추가한다. 이후 z_0 의 output인 zL0 는 image representation 을 함축되게 된다. 사전학습이나 fine tuning 시에는 classification head를 붙히게 되는데, pre-train 시에는 한 개의 hidden layer를 가지는 MLP, fine-tuning 시에는 단일 층을 붙히게 된다.
세 번째 문단 : Position embedding들이 position information을 유지하기 위해 patch embedding에 더해진다. 표준에 학습 가능합 1D positional embedding을 사용했는데, 그 이유는 최신의 2D position embedding을 사용한 것과 성능이 크게 차이나지 않았기 때문이다. 그 결과로 얻어진 임베딩 벡터 시퀀스는 인코더의 입력으로 사용된다.
네 번째 문단 : transformer의 encoder는 MSA(Multihead Self-Attention) 과 MLP 블록이 번갈아 쌓인 구조로 이뤄져있으며, 각 블록 전에 Layernorm을 적용하고 각 블록 후에는 residual connection을 적용한다. MLP는 두 layer로 구성되는데 GELU를 이용한다.
→ 주요 특징으로는 이미지를 작은 패치(patch)로 나누고, 각 패치에 대해 embedding을 수행한 뒤, positional embedding을 더해 Transformer의 입력으로 사용하는 것이다. 이때 입력 시퀀스의 맨 앞에는 학습 가능한 classification token을 추가하며, Transformer의 출력에서 이 token의 최종 상태가 이미지의 전체 representation을 나타낸다. 이 representation은 classification head를 통해 최종 분류 작업에 사용된다.
Inductive bias
Vision Transformer(ViT)는 CNN에 비해 이미지에 특화된 inductive bias가 훨씬 적다. CNN에서는 지역성(locality), 2차원 이웃 구조, 그리고 이동 불변성(translation equivariance)이 모델 전체의 각 레이어에 내재되어 있는 반면, ViT에서는 MLP 레이어만이 지역성과 이동 불변성을 가지며, 자기 주의(self-attention) 레이어는 전역적(global)이다. 2차원 이웃 구조는 모델 초기에 이미지를 패치로 나누는 과정과, 다른 해상도의 이미지에 대해 위치 임베딩을 조정하는 fine-tuning 단계에서만 제한적으로 사용된다. 이 외에는 초기화 시 위치 임베딩이 패치의 2D 위치에 대한 정보를 전혀 포함하지 않으며, 패치 간의 모든 공간적 관계를 학습을 통해 처음부터 배워야 한다.
Hybrid Architecture
raw image patch를 사용하는 것 대신에, input sequence를 CNN의 feature map 으로 부터 만들 수도 있다(Backpropagation applied to handwritten zip code recognition 1989) 이 hybrid model 에서 patch embedding projection은 CNN feature map에서 추출한 patch에 적용된다. 특별한 경우로 패치는 1x1 의 사이즈 일 수 있는데, 이는 입력 시퀀스가 feature map의 공간 차원을 단순히 flattern 하고 Transformer 차원으로 투영하는 것으로 얻어진다는 것을 의미한다.
→ raw pixel 쓰기 싫으면, feature map 에서 뽑아 쓸 수도 있다.
3.2 Fine-tuning and Higher Resolution
일반적으로 ViT를 큰 dataset에서 사전학습 시킥, 더 작은 task를 위해 fine-tune 시킨다. 이를 위해 pre-trained prediction head를 제거하고, 0으로 초기화된, D x K(downstream class) 의 MLP 를 붙힌다. fine tune 시에 고 해상도에서 하는 것이 종종 효과적이다. 높은 해상도를 이용할 때, patch size는 고정이기 때문에 더 긴 시퀀스 길이가 생성된다. ViT는 메모리 내에서 가변적인 input 을 받아드릴 수 있지만, pretrain 된 positional embedding 방식이 더 이상 유의미 하지 않을 수 있다. 이를 위해 사전 학습된 위치 임베딩을 원본 이미지에서의 위치를 기준으로 2D 보간할 수 있다. 이 해상도 조정 및 패치 추출 과정은 2D 이미지의 구조를 바탕으로 한 유일한 inductive bias 가 주입되는 과정이다.
→finetune 시 고해상도의 이미지를 사용하는 것이 성능이 좋을 때가 있다. (내 생각에 고해상도 이미지가 들어오면 보다 복잡한 이미지이기 때문에, 학습할 수 있는 것도 많아져서 그런듯) 이 때, 이전까지의 positional embedding 방식이 더 이상 유의미 하지 않은데, 이를 위해 2D interpolation 을 해서 우리의 학습 embedding을 고해상도 이미지에 맞춰서 사용한다.
Experiment
ResNet, ViT, 하이브리드 모델의 표현 학습 능력을 평가했다. 각 모델의 데이터 요구량을 이해하기 위해 다양한 크기의 데이터셋에서 사전 학습한 뒤 많은 벤치마크에서 평가했다. 사전 학습 모델의 계산 비용을 고려한 결과 ViT는 매우 유리하며, 적은 연산량으로 대부분의 벤치마크에서 최첨단(SOTA) 성능을 달성했다. 마지막으로, 자기 지도 학습(self-supervision)을 이용한 작은 실험을 수행한 결과, 자기 지도 학습을 적용한 ViT의 가능성에 대한 유의미한 결과를 얻었다.
4.1 Setup
Datasets. 모델의 확장 가능성을 확인하기 위해 ImageNet dataset(1k classes, 1.3M images), ImageNet-21k(21k classes, 14M images), JFT(18k classes, 303M 고해상도 이미지)를 사용한다. 더불어 Kolesnikov et al. (2020)의 방법을 통해 downstream task의 이미지와 겹치는 train 이미지들에 대해서 중복제거를 했다. 이 데이터 셋들에 대해 학습된 모델들을 원래의 검증 레이블과 정리된 ReaL 레이블(Beyer et al., 2020)을 사용한 ImageNet, CIFAR-10/100 (Krizhevsky, 2009), Oxford-IIIT Pets (Parkhi et al., 2012), Oxford Flowers-102 (Nilsback & Zisserman, 2008). 등의 벤치마크에서 전이하여 성능을 평가한다.
← Kolesnikov et al. (2020) : BiT라는 논문으로 대규모 데이터 셋에서의 학습 전이가 좋은 성능을 내는 것을 보인 논문 중복제거는 이미지의 해시값을 통해 같음 여부를 판단한다고 한다.
또한 19개의 작업으로 구성된 VTAB 분류 스위트(Zhai et al., 2019b)에서 평가를 진행한다. VTAB는 각 작업에 대해 1,000개의 학습 예시를 사용하여 다양한 작업에 대한 저데이터 전이를 평가한다. 이 작업들은 세 가지 그룹으로 나뉜다: 자연(Natural) – Pets, CIFAR 등과 같은 작업들, 전문(Specialized) – 의료 및 위성 이미지 작업, 구조적(Structured) – 위치 추적과 같은 기하학적 이해가 필요한 작업. ← 일반적으로 보기 쉬운 이미지 부터 보기 어려운 이미지 까지 포함하여 시각적 특성을 잘 일반화 하여 이해하였는지를 평가
Model Variants : ViT 구성은 BERT(Devlin et al., 2019)에서 사용된 구성을 바탕으로 하며, 이는 표 1에 요약되어 있다. "Base"와 "Large" 모델은 BERT에서 직접 채택한 것이며, 여기에 더 큰 "Huge" 모델을 추가합니다. 이후 모델 크기와 입력 패치 크기를 간략히 표시하는 표기법을 사용한다. 예를 들어, ViT-L/16은 입력 패치 크기가 16×16인 "Large" 변형을 의미한다. 트랜스포머의 시퀀스 길이는 패치 크기의 제곱에 반비례하므로, 작은 패치 크기를 가진 모델은 계산 비용이 더 많이 든다.
→Base, Large(Bert 그대로), Huge(새롭게), VIT-L/16은 large 모델 16x16의 patch 사이즈로 해석하면 된다.
기본 CNN으로는 ResNet(He et al., 2016)을 사용하지만, Batch Normalization 계층(Ioffe & Szegedy, 2015)을 Group Normalization(Wu & He, 2018)으로 교체하고, 표준화된 합성곱(Standardized Convolutions, Qiao et al., 2019)을 사용한다. 이러한 수정은 전이 학습 성능을 향상시키며(Kolesnikov et al., 2020), 수정된 모델을 "ResNet (BiT)"이라고 명명한다. 하이브리드 모델의 경우, 중간 피처 맵(feature map)을 ViT(Vision Transformer)에 입력하며, 이때 패치 크기는 "1 픽셀"로 설정한다. 서로 다른 시퀀스 길이를 실험하기 위해 다음 두 가지 방식을 사용합니다: (i) 일반 ResNet50의 stage 4 출력을 사용하거나, (ii) stage 4를 제거하고 동일한 수의 계층을 stage 3에 추가하여 stage 3을 확장한 뒤 그 출력을 사용합니다(총 계층 수는 유지). 옵션 (ii)의 경우 시퀀스 길이가 4배 더 길어지며, 더 계산 비용이 높은 ViT 모델이 됩니다.
→CNN 모델은 BiT에서 제시한 전이학습에 더 적합한 모델을 사용하며, 다른 시퀀스길이를 위해 3층, 4층에서 가져온 feature map을 사용할 수 있다. 이때, 3층과 4층의 channel 수는 같게 맞춰주는데, 3층을 가져온 ViT의 경우 시퀀스 길이가 4배가 된다.
Traning & Fine-tuning. 모든 모델(ResNet 포함)을 Adam(Kingma & Ba, 2015) 으로 학습하며, 모멘텀 =0.9, 기울기 감쇄율=0.999로 설정하고, 배치 크기를 4096으로 설정한다. 또한 가중치 감소(weight decay)를 0.1로 높게 설정했는데, 이는 모든 모델의 전이 학습에 유용하다는 것을 발견했다(부록 D.1에서, 일반적인 관행과 달리, 우리의 설정에서는 ResNet에 대해 Adam이 SGD보다 약간 더 잘 작동함을 보여준다). 학습률은 선형 워밍업(linear warmup)과 감소(decay)를 사용하며, 자세한 내용은 부록 B.1에 나와 있다.
Matrics. downstream dataset들에 대한 결과는 few-shot 혹은 fine-tuning accuracy를 기반으로 한다. fine-tuning 정확도는 각 모델을 해당 데이터셋에 대해 fine-tuning 후의 성능을 나타낸다. few-shot 정확도는 훈련 이미지 하위 집합의 (고정된) 표현을 {-1, 1} 대상 벡터에 매핑하는 정규화된 최소제곱 회귀 문제를 해결하여 얻는다. 이 방식은 정확한 해를 닫힌 형태로(closed form) 구할 수 있게한다. 대부분 fine-tuneing 하지만, 빠르게 평가하기 위해서 linear few-shot을 하기도 한다.
4.2 Comparison to State of the Art
비교할 ViT 모델 ViT-H/14, ViT-L/16 , 비교할 CNN 모델 BiT(image net에서 지도학습), Noisy Student = EfficientNet(Image net, JFT-300M 에서 label 정보 지우고 semi-supervised learning) 현재, Noisy Student 는 imageNet에서 SOTA를 달성했고, BiT-L은 본 논문의 다른 데이터 셋에서 SOTA를 달성했다. 모든 모델은 TPUv3에서 훈련되었고, 각 모델의 사전 학습에 소요된 TPUv3-core-day(TPUv3 core와 훈련기간의 곱) 을 나타낸다.
ViT-L/16 : 동일한 데이터셋으로 pretrained 된 BiT-L을 모든 작업에서 능가, 훈련에 필요한 계산 자원도 상당히 적게 요구
ViT-H/14 : 더 어려운 데이터셋(ImageNet, CiFAR-100, VTAB) 에서 성능 추가 개선 + 기존 SOTA보다 적은 연산량
사전 학습 효율성 요인 : 아키텍처뿐 아니라, 학습 일정, 옵티마이저, 가중치 감쇠 등의 변수도 영향을 미침
ImageNet-21k 사전학습 ViT-L/16 : 대부분의 데이터셋에서 우수한 성능 TPUv3 8코어로 30일내 학습 가능
Figure 2 는 VTAB을 해당 하위 카테고리로 분해 한 것인데, 해당 benchmark의 기존 SOTA 모델인 BiT(ImageNet과 Youtube에데이터셋에서 사전학습된 모델)과, VIVI(ImageNet에서 지도, semi-supervised 된 모델), ViT-H/14 는 Natural 과 Structured 부분에 대해 기존 모델들을 능가한다.
4.3 Pre-training Data Requirements
'논문스터디' 카테고리의 다른 글
CLIP (0) | 2025.01.14 |
---|---|
Diffusion Model (0) | 2025.01.03 |
StableDiffusion (0) | 2025.01.02 |