ABSTRACT
- Transformer 구조는 NLT에 있어서 사실상의 표준이 되었지만 비전 분야에서의 적용은 제한적 입니다.
- 본 논문은 CNN에 의존할 필요 없이 Transformer을 Sequence of Image Patches에 직접적으로 적용시켜도 이미지 분류 테스크에서 매우 우수한 성능을 보일 수 있다는 것을 보여줍니다.
- 대량의 데이터로 사전 학습한 이후, 여러 이미지 인식 벤치마크 (ImageNet, CIFAR-100, VTAB 등)에 전이 학습 시킨 결과 Vision Transformer 은 매우 적은 Computational Resource로 최첨단 CNN에 못지 않은 우수한 결과를 도출할 수 있었습니다.
Intro
- 배경
- Transformer
- 계산 효율성과 확장성 증대로 100억개 이상의 파라미터를 포함하여 이전에 없었던 규모의 모델 학습이 가능해짐
- 모델과 데이터셋이 계속 성장함에도 불구하고 성능의 포화 현상이 보이지 않음.
- 컴퓨터 비전 분야
- 대규모 이미지 인식에서는 여전히 전통적인 ResNet과 유사한 아키텍쳐가 최고 수준 입니다.
- Transformer
- VIT
- 이미지를 패치들로 나누고, 패치들의 선형 임베딩을 Transformer에 입력으로 제공합니다.
- 결과
- 중간 크기 이미지 데이터셋 (ImageNet) 의 경우 비슷한 크기의 ResNet 보다 조금 낮은 정확도를 제공합니다. 그러나 이는 Transformer에 내재된 일부 Inductive Bias를 가지고 있지 않은 결과이며, 충분한 양의 데이로 훈련했을 때에 비해 일반화가 잘 되지 않았기 때문입니다.
- 큰 데이터셋 (14M - 300M 개의 이미지)를 가지고 훈련했을 때는 큰 규모의 훈련이 Inductive Bias를 능가하기 때문에 탁월한 결과를 얻습니다. VIT는 큰 규모의 데이터로 사전 훈련 후, 적은 데이터 포인트를 갖는 테스크를 수행할 때 탁월한 결과를 얻습니다.
- ImageNet 88.5% 정확도, ImageNet-ReaL 90.72% 정확도, CIFAR-100 95.55% 정확도, VTAB의 19개 작업에서 77.63% 정확도
METHOD
- 모델 디자인은 Transformer ( Vaswani et. 2017 ) 아키텍쳐와 거의 같다고 볼 수 있다.
- 입력 Embedding
- 표준 Transformer는 1D 토큰 임베딩의 시퀀스를 입력으로 받는다.
- 2D 이미지를 아래와 같이 2D 패치의 시퀀스로 변환
\( x \in R^{H*W*C} \)
\( x_p \in R^{N*(P^2*C)} \) - (H, W) : 원본 이미지의 해상도
- C : 채널 수
- (P, P) : 각 이미지 패치의 해상도
- N (= \(HW/P^2 \) ) : 패치의 수, Transformer의 유효한 입력 시퀀스 길이
- D : 모든 Layer 에서 동일한 Latent Vectorize Size
- Flatten 한 Patch를 학습 가능하도록 Linear Procjection을 사용하여 D 차원으로 매핑 (eq1)
- Patch Embedding이 출력
- [CLS] Token
- BERT의 [class] 토큰과 유사하게, 우리는 임베딩된 패치의 시퀀스에 학습 가능한 임베딩을 추가합니다.
\( z^0_0 = x_class\) - \( z^0_L \) : 최종 L 번째 Layer의 0번째 토큰
- Pre-Training과 Fine-Tuning을 수행하는 Classification Head 가 부착
- BERT의 [class] 토큰과 유사하게, 우리는 임베딩된 패치의 시퀀스에 학습 가능한 임베딩을 추가합니다.
- Classification Head
- Pre-Training : 1 - hidden layer 인 MLP
- Fine-Tuning : 1 - Linear Layer
- Position Embedding
- Patch Embedding의 Position info를 유지하기 위해 추가
- 2D-Position Embedding 추가해보았지만 더 좋은 성능은 X -> 1D Position Embedding을 사용하게됨.
- Transformer
- 만들어진 결과, Embedding Sequence는 Encoder의 입력으로 들어감.
- Transformer Encoder
- Multi-Head 로 구성된 Self-Attention 메커니 적용 (MSA)
- MLP Block
- 위 두개가 번갈아가며 구성
- 각 블록의 앞에는 레이어 정규화 (LN) 이 적용
- 각 블록 뒤에는 잔차 연결이 적용(Wang etc, 2019; Baevski & Auli, 2019)
- Inductive Bias
- CNN (Locality), RNN (Time Sequential) 의 경우 Global한 영역의 처리가 어려움.
- ViT는 CNN, RNN과 다르게 Inductive Bias가 없음
- CNN에서는 각 레이어 전체 모델에 걸쳐 지역성, 2차원 이웃 구조, 및 번역 동질성이 내장되어 있음.
- ViT에서는 MLP 레이어만 지역적이고 Translation Equivariance 함
- self-attention 레이어는 전역적입니다.
- 2차원 이웃 구조는 매우 적게 사용
- 모델의 초기에 이미지를 패치로 자르는 과정에서 사용
- Fine Tuning 시에는 다른 해상도의 이미지에 대해 위치 임베딩을 조정할 때 사용
- 이 외에 초기화 시 위치 임베딩은 패치의 2D 위치에 대한 정보를 가지고 있지 않으며, 패치들 사이의 모든 공간적 관계는 처음부터 학습되어야 합니다.
- Hybrid Architecture
- 원본 이미지 패치 대신, 입력 시퀀스는 CNN의 특성 맵으로부터 구성될 수 있습니다(LeCun 등, 1989).
- CNN의 Feature는 Spatial한 사이즈가 1x1이 될 수 있음.
( 입력 시퀀스를 특성 맵의 공간 차원을 단순히 평면화한 뒤 Transformer 차원으로 매핑하는 것을 의미 ) - CNN으로 Feature 추출 > Flatten > Eq.1의 Embedding Procjection 이 적용.
- 분류 입력 임베딩과 위치 임베딩은 위에서 설명한 바와 같이 추가
- CNN의 Feature는 Spatial한 사이즈가 1x1이 될 수 있음.
- 원본 이미지 패치 대신, 입력 시퀀스는 CNN의 특성 맵으로부터 구성될 수 있습니다(LeCun 등, 1989).
- FINE-TUNING AND HIGHER RESOLUTION
- 사전 훈련 때보다 더 높은 해상도로 Fine-Tune 하는 것이 성능에 도움 됨.
- 더 높은 해상도의 이미지를 입력으로 주었거나 또는 Patch Size 동일할 때
- Fine-Tune : Pre-trained Position Embedding은 더 이상 의미가 없음
- Pre-Trained Position Embedding을 원본 이미지에서의 위치에 따라 2D 보간 수행
( 수동으로 귀납적 편향 주입 되는 유일한 지점 )
'DL' 카테고리의 다른 글
model.train() / model.eval() / torch.no_grad() / torch.Tensor.require_grads (0) | 2023.12.04 |
---|---|
Pytorch에서 GPU를 사용 (0) | 2023.12.04 |
U-Net 실습4 - 모델 테스트 (0) | 2023.07.07 |
U-Net 실습3 - 모델 학습 및 Tensorboard (0) | 2023.07.06 |
U-Net 실습2 - 네트워크 구조, Dataloader, Transform 구현 (0) | 2023.07.06 |