HeYStRanGeR
article thumbnail

(23.05.18)

SSL(self-supervised learning) 논문 리뷰 9탄

이것도 Kaiming He의 논문이다. 간단하게 정리해보았다.

 

- 논문 제목: Masked Autoencoders Are Scalable Vision Learners (CVPR 2022)

- https://arxiv.org/pdf/2111.06377.pdf

- https://github.com/facebookresearch/mae


 

Abstract

본 논문은 masked autoencoders 가 computer vision에서 scalable self-supervised learners라는 것을 보여준다.

MAE approach는 간단하다. 

==> input image의 random patches에 mask를 씌우고, missing pixels에 대해 reconstruct한다.

 

MAE의 2가지 core design

1. asymmetric encoder-decoder architecture

- encoder는 mask token 없는 visible patch들만 연산한다.

- decoder는 latent representation과 mask token으로부터 original image를 reconstruct한다.

2. input image에 대한 masking 비율이 높을수록(75%) nontrivial & meaningful self-supervisory task를 만든다는 것을 찾았다.

==> 이 두가지는 large models를 효율적이고 효과적으로 학습할 수 있도록 했다.

==> downstream tasks 에 대한 transger 성능에 대해서 supervised pretraiing보다 높은 성능을 보였다.

 

 

 

Method

asymmetric design

- encoder: mask tokens 없이 operate

- decoder: latent representation과 mask token 으로부터 full signal을 reconstruct

 

masking

- image를 non-overlapping patches 로 나누어준다. 

- 정규분포에 따라 replacement없이 random patches를 추출한다.(==random sampling)

- high masking ratio로 random sapmling하여 의존성을 줄여주어 efficient encoder를 만들 수 있도록 한다.

 

MAE encoder

- ViT 사용. visible, unmasked patches들만 적용한다.

- positinal embedding 추가하여 linear projection 을 통해 patch들을 임베딩하고, transformer blocks를 통해서 과정 진행한다.

- full set의 25%만 사용하기 때문에 (masked patches 제거하니까) compute and memory를 조금만 사용한다.

 

MAE decoder

- encoded visible patches와 mask tokens 로 구성된 full set이 MAE decoder의 input으로 들어온다.

- 모든 token에다가 positional embedding을 추가한다. (이게 없으면 mask token이 image에서 어떤 위치에 있는지에 대한 정보가 없다)

- image reconsturction task를 수행하기 위한 pre-training에만 사용된다. (down stream task에서 사용되지 않음)

 

Reconstruction target

- MAE는 각 masked patch에 대한 pixel 값을 예측하여 reconsturct한다. 

- decoder의 출력값에 있는 각 요소는 patch를 표현하는 pixel 값의 벡터이다. 

- decoder의 마지막 층은 linear projection이다.  (ouput channel의 수 == patch에서 pixel 값의 수)

- loss function: MSE (mean squared error), masked patches에 대해서만 loss 계산한다.

- 모든 pixel에 대한 mean, standard deviation을 계산하여 각 mased path에 normalize한다.

 

Simple implementation

- 모든 input patch에 대해 token을 생성한다. (positional embedding을 더하여 linear projection)

- token list를 랜덤하게 shuffle하고, masking ratio를 따라 token list의 마지막 부분을 제거한다.

- 이 과정으로 완성된 small subset을 encoder에 넣는다.

- encoded patche의 list에다가 masked token을 추가하고 이 full list를 unshuffle하여 모든 token을 target과 정렬한다.

 

 

 

Experiment

 

 

728x90
profile

HeYStRanGeR

@HeYStRanGeR

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!