On the journey of
[CSE URP]BEiT: BERT Pre-Training of Image Transformers (1) 본문
Experiences & Study/CSE URP' 29
[CSE URP]BEiT: BERT Pre-Training of Image Transformers (1)
dlrpskdi 2023. 8. 24. 17:53BEiT: BERT Pre-Training of Image Transformers
Hangbo Bao, Li Dong, Songhao Piao, Furu Wei
* https://github.com/microsoft/unilm/tree/master/beit
Abstract
- 논문의 제목인 BEIT (Bidirectional Encoder representation from Image Transformers)는 BERT 모델에서 차용한 것
- 입력 이미지를 2가지 방법을 통해 masked image modeling(MIM) 학습
- VIT + Blockwise Masking : image patches (such as 16 x 16 pixles)
- DALL-E Tokenizer : visual toekns (i.e., discrete tokens)
- 전체중의 일부 이미지 패치들을 mask 처리한 것이 VIT 모델에 들어감
- 사전 학습된 MIM objective를 통해 원본 visual tokens를 mask 처리가 된 이미지 패치로 부터 복원을 함
- BEIT 를 사전 학습한 후, 사전학습된 모델에 downstream task를 붙여서 image classification, semantic segmentation을 했을 때 좋은 성능을 보임
1. Introduction
- 트랜스포머(Attention is all you need [VSP+ 17]) 모델이 컴퓨터 비전에서도 좋은 성능을 보이게 됨
- [DBK+20] An image is worth 16x16 words: Transformers for image recognition at scale.
- [TCD+20] Training data-efficient image transformers & distilation through attention.
- 그러나, 이전 결과들에서 비전 트랜스포머는 Convolutional neural netwroks보다 많은 트레이닝 데이터가 필요함
- 데이터 부족 문제를 해결하기 위해서, Vision Transformer에서 self-supervised pre-training 방법을 통해 large-scale image data문제를 해결하고자 함
- [LSB+21] Efficient training of visual transformers with small datasets.
- contrastive learning
- [CXH 21] An empricial study of training self-supervised vision transformers.
- [XLY+21] Self-supervised learning with swin transformers.
- self-distillation
- [CTM+21] Emerging properties in self-supervised vision transformers.
- 자연어 처리에서는 BERT 모델이 큰 성공을 거두게 됨
- [DCLT19] BERT : pre-training of deep bidirectional transformers for language understanding.
- masked language modeling 을 통해 일정 텍스트들을 랜덤하게 mask 처리한 뒤에, 트랜스포머 인코딩을 통하여 오염된 텍스트들의 masked tokens 를 복원함
- BERT에 동기부여를 받아서, denoising auto-encoding 아이디어에 착안하여 VIT를 사전학습 하는 방법을 고안함(Vision Community에서는 연구가 많이 되지 않았음)
- BERT 스타일로 이미지 데이터를 사전학습 하는 것은 매우 challenging
- VIT 입력으로 사용할 사전에 존재하는 vocabulary(i.e, image patchs)가 없음
- 그래서 간단하게 가능한 masked patches에 대해서 softmax classifier 예측을 할 수가 없음
- 대조적으로, 단어나 BPE(https://ratsgo.github.io/nlpbook/docs/preprocess/bpe/)와 같은, 언어 vocabulary는 잘 정의되어 있고 auto-encoding 예측에 사용하기 쉬움
- [SHB16; BPE] Neural machine translation of rare words with subword units.
- 직관적인 대안 방법으로는 task를 regression problem으로 보고, masked patches의 raw pixels을 예측하는 것
- 하지만 pixel-level 복원 task는 short-range dependencies & high-frequency details 를 사전 학습 할 때 모델링 기능을 낭비하게 됨
- [RPG+21] Zero-shot text-to-image generation.
- 하지만 pixel-level 복원 task는 short-range dependencies & high-frequency details 를 사전 학습 할 때 모델링 기능을 낭비하게 됨
- 우리의 목표는, Vision Transformers 사전학습에서 발생되는 위에서 언급한 issue들을 극복하는 것
- a self-supervised vision representation model BEIT(Bidirectional Encoder representation from Image Transformers) 를 소개함
- BERT에 영감을 받아서, masked image modeling (MIM) 을 제안함
- Figure 1과 같이, MIM에서는 이미지를 두가지 관점에서 바라봄
- image patches
- visual tokens
- Figure 1(아래 이미지)
- Figure 1 설명
- BEIT pre-training의 Overview
- 사전 학습 전에 ‘image tokenizer’를 학습하여 auto encoding 스타일로 복원을 하는데, image는 discrete visual tokens로 tokenized됨(학습된 vocabulary에 따라서)
- 이미지를 1. image patches 2. visual tokens 두 가지 관점으로 봄
- 랜덤하게 몇몇 이미지 패치에 대해서 special mask embedding[M] (회색 처리 한 것) 를 함
- 패치들이 backbone vision Transformer에 들어감
- 사전학습의 목표는 오염된 이미지의 인코딩 벡터에 기반하여, 원본 이미지의 visual tokens를 예측하는 것
- 이미지를 쪼개어 grid of patches로 만들고 backbone Transformer에 넣음
- 이미지를 tokenize하여 discrete visual tokens로 만들었는데, discrete VAE 에서 사용하는 latent codes를 포함함
- [RPG+21] Zero-shot text-to image generation
- 사전 학습 동안 일부 이미지 패치를 mask 시키고, transformer의 입력값으로 사용한다.
- 모델은 masked patches의 raw pixels 대신에, 원본 이미지의 visual tokens를 복원하는 것을 학습하게 된다.
- BEIT 모델을 self-supervised learning으로 학습하고 image classification, semantic segmentation에 사용하기 위해 fine-tuning 함
- 처음부터 학습했을 때랑, self-supervised 로 학습했을 때 모두 좋은 성능을 보임
- ImageNet Labels로 중간에 fine-tuning을 했을 때 성능이 향상됨
- 추가연구에서는, BERT 스타일로 이미지 데이터를 사전학습 한 것이 효율성이 좋다는 것을 입증하였음
- 성능 외에, fine-tuning 할 때 수렴 속도 및 안정성 향상으로 training 비용이 감소 됨
- self-supervised BEIT가 semantic regions를 학습하는데 좋은 성능을 보임
Contibutions
- Self-supervised 방식으로 Vision Transformer를 pretrain 하기 위한 Masked Image Modeling(MIM) Task 를 제안함. Variational Autoencoder의 관점에서 이론적 설명을 제공함
- BEIT를 pretrain 하고 image classification, semantic segmentation과 같은 downstream task를 다양한 설정으로 실험함
- Self-supervised BEIT의 self-attention mechanism이 사람의 annotation 없이도 의미 영역(semantic regions)와 물체의 경계(object boundaries)를 학습하는 것을 제시함
2. Methods
- input image x 가 주어지면, BEIT는 상황에 맞는 벡터 표현으로 인코딩 함 (BEIT encodes it to contextualized vector representations.)
- BEIT는 self-supervised learning을 사전학습 된 masked image modeling (MIM)을 통해서 함
- MIM의 목표는 encoding vectors에 기반하여 masked된 image patches들을 복원하는 것
- downstream tasks 는, task layers를 사전학습 된 BEIT에 붙이고 특정 데이터셋 에 대해서 fine-tuning을 수행함
2.1.1 Image Representations : Image patch
- 2D image를 VIT(DBK+20) 처럼 일련의 패치로 쪼개어, 트랜스포머 모델에서 이미지 데이터를 받을수 있도록 함
- [DBK+20] An image is worth 16x16 words: Transformers for image recognition at scale.
- 이미지 패치들은 raw pixels을 보존하고 있고, BEIT의 입력 features로 사용됨
- 실험에서는 224 x 224 이미지를 16x16 패치를 사용하여 14x14 grid 이미지 패치들로 만들었음
2.1.2 Visual Tokens
- 자연어 처리와 유사하게, 원복 픽셀들 대신에 이미지 토크나이저를 사용하여 이산적인 이미지 토큰들을 얻음
- Dall-E 처럼, discrete variation autoencoder(dVAE)를 사용하여 이미지 토크나이저를 학습 시킴
- visutal token learning 에는 두 가지 모듈이 있음
- tokenizer : $q_\phi(z|x)$ 토크나이저는 이미지 픽셀 $x$ 를 visual codebook(vocabulary) 이산형 토큰 $z$ 로 변환 시키는 함수
- decoder : $p_\psi(x|z)$ 는 visual tokens $z$ 를 입력 이미지 $x$ 로 복원하는 함수
- reconstruction objective : $E_{z∼q_{\phi(z|x)}}[logp_\psi(x|z)]$
- 위에 처럼 나타낸 이유는 latent visual tokens가 이산적이어서, 모델 학습에서 미분이 불가능 하기 때문
- Gumbel-softmax relaxation 을 사용해 모델 parameters를 학습 시킴
- $q_\phi$ 는 uniform prior 가 할당됨
- 이미지를 14 x 14 grid of visual tokens 로 tokenize 시킴
- 하나의 이미지에 대한 visual tokens의 개수와 image patches의 개수는 동일하다.
- vocabulary size V는 8192로 함
[배경지식] : Variational Auto Encoder
출처 : https://www.youtube.com/watch?v=CQoM0r2kMvI
- Variational Auto Encoder는 Autoencoder 모델에서 latent vector $z$ 가 평균 $μ$와 분산 $σ^2$ 를 따르는 정규분포로 가정한 모델
- 목적함수의 하한경계인 ELBO (Evidence of Lower Bound)는 $logp(x)$가 최대가 되는 매개변수를 탐색하는 것이 목적이고 1)Reconstruction Term 2)Regularization Term으로 나뉨
- Reconstruction Term : 주어진 입력 데이터 x로 부터 latent vector z를 샘플링하고, z를 통하여 x를 다시 복원
- Regularization Term : KL Divergence를 통해 주어진 입력 데이터 x로 부터 latent vector z를 샘플링하는 확률 분포 q(z|x)가 표준 정규 분포 p(z)와 유사하도록 만들어 줌
2.2 Backbone Network : Image Transformer (수식으로 인해 노션 캡처로 대체)
- 전체 patch에서 patch단위로 아무 곳이나 랜덤하게 Masking 될 부분을 선택하는 것보다는, patch에서 인접한 patch들을 함께 masking 처리해주는 것이 이미지에서 주변정보를 파악하는데 도움이 되고 성능향상에도 도움이 된다고 함
2.3 Pre-Training BEIT: Masked Image Modeling
- 2.1.2의 Discrete VAE를 통해 Image를 Visual Tokens로 변환한 뒤에
- 이미지에서 약 40%의 patch를 랜덤하게 마스킹 하고
Vision Transformer + softmax classifier 를 통해 masked image input 에 대한 visual token 을 예측함
- Pre-training objective Function
- Masked/오염된 이미지로부터 정확한 visual tokens z_i를 최대로 하는 log-likelihood를 찾는 것
Blockwise Masking
- s : Masking size 샘플링 (최소 16개 이상의 patch 마스킹)
- r : Aspect ratio를 0.3 ~ 1/0.3의 범위에서 샘플링
- s,r에서 계산한 값으로 masking block의 높이(a), 넓이(b)를 계산
- Masking block의 좌상단 점 좌표(t, l) 샘플링
- 이전 Masking 정보와 합친 뒤, Masking의 비율이 전체 patch 수의 40%를 넘어가면 종료함
- 예시
- 출처 : http://dsba.korea.ac.kr/seminar/?mod=document&uid=1964
- 아래 예시의 경우 3번의 Masking 영역을 찾았을 때, Masking 된 갯수가 전체 patch 수의 40%인 75를 넘었으므로 종료함
전체 patch에서 patch단위로 아무 곳이나 랜덤하게 Masking 될 부분을 선택하는 것보다는, patch에서 인접한 patch들을 함께 masking 처리해주는 것이 이미지에서 주변정보를 파악하는데 도움이 되고 성능향상에도 도움이 된다고 함
'Experiences & Study > CSE URP' 29' 카테고리의 다른 글
[CSE URP] ViT Self-Attention 구조 (0) | 2023.08.25 |
---|---|
[CSE URP]BEiT: BERT Pre-Training of Image Transformers (2) (0) | 2023.08.24 |
230731 PyTorch를 활용한 딥러닝 구현, MCMC, 코드분석 (0) | 2023.08.07 |
[CSE] Generative Model 개괄 (2) (0) | 2023.07.07 |
[CSE] Generative Model 개괄 (1) (0) | 2023.07.07 |