Emerging Properties in Self-Supervised Vision[.,2021] Transformers

Sungchul Kim·2021년 12월 28일
0

Self-Supervised learning

목록 보기
1/2
post-thumbnail

Summary

  • Self attention from a VIT with 8 ×\times 8 patches trained with no supervision

본 연구에서는 Vision Transformer(VIT)의 feature를 self-supervised-learning기반으로 찾는데 초점을 두었습니다. 저자는 self-supervised 방법으로 학습된 VIT feature는 이미지의 semantic segmentation에 대한 명확한 정보를 포함하고 있다고 주장하였습니다. 이러한 방법으로 학습된 feature들에 대해 k-NN classifier로 성능을 측정해보았는데 imagenet 데이터에 대하여 top-1 acc가 78.3%에 도달하였다고 주장합니다.

추가로 DINO라는 새로운 방법을 제안합니다. DINO관련하여 추후에 설명하도록 하겠습니다. (VIT에 DINO를 결합하여 linear evaluation진행한 결과, imagenet 데이터에 대하여 top-1 acc가 80.1%에 도달하였다고 주장합니다.)

Introduction

VIT는 convnet을 대체하는 model로 등장하였지만, 저자는 VIT가 가지는 단점들에 대해 지적합니다. VIT가 가지는 단점들은 아래와 같습니다.

  • Computing cost가 많이 듭니다.
  • 학습하는데 요구되는 데이터수가 많아야 합니다.

저자는 self-supervised learning에서 널리 사용되는 Transformer 모델에서 motive를 받고 VIT에 대해 검증을 진행해 보았다고 합니다. 또한 저자가 제안한 DINO 방법론은 knowledge-distillation과 비슷하게 작용되는 방법론으로써, ema/centering/sharpening을 적용합니다.

Related work

Self-Supervised learning

Instance classification

각각의 image를 다른 class로 간주하고 class를 discrimination하는데 초점을 둔 task입니다. 그러나 모든 image를 각각의 class로 간주하고 학습한 classifier를 discrimination하는 과정에서 많은 연산비용이 든다고 지적을 합니다. 이러한 단점을 보완하고자 noise contrastive estimator를 제안합니다.(NCE)

Noise contrastive estimator(NCE)

NCE는 학습된 classifier를 discrimination하는 과정에서 전체 데이터셋에 대해 softmax function을 적용하는 것이 아닌, 일부를 샘플링하여 샘플링된 데이터셋에 대해서만 softmax function을 취하는 방법을 말합니다.

Learn unsupervised features without discriminating between images

위에서 언급하였던 instance classification의 경우 이미지의 positive/negative sample 모두 사용해서 loss를 계산했다면, 단순히 이미지의 positive sample만 matching해서 loss를 계산하는 방법을 말합니다. (ex: BYOL)

Self-training and knowledge distillation

Self-training은 label을 가지고 있는 작은 set으로label이 없는 큰 set로 전파시켜 좀 더 좋은 feature를 만드는데 초점을 두는 방법입니다. (이때, label은 hard/soft label)

또한 Knowledge distillation은 large network를 학습시킨 이후 student network를 학습시키는 경량화 기법으로 설명 할 수 있습니다.

Self-training and knowledge distillation은 위의 두가지 방법론을 결합한 방법입니다. 저자는 knowledge distillation에서 일반적으로 사용되는 teacher network가 student network에게 지식을 전달하는 과정에서 teacher network의 weight가 고정되어 있다고 지적합니다.

Codistillation

Codistillation은 기존 knowledge distillation에서 사용되는 framework에서 조금 변경된 방법입니다. codistillation과 knowledge distillation의 차이는 아래와 같습니다.

  • Student network와 teacher network 서로 동일한 architecture를 사용합니다.
  • Teacher/student network가 각 모델에게 지식을 전달해주는 방법입니다.

Method

저자는 DINO라는 알고리즘을 제안하였습니다. DINO framework 및 pseudo code는 다음과 같습니다.

DINO를 설명하기 앞서 Knowledge distillation에서 사용되는 softmax function에 대해 설명하도록 하겠습니다. softmax function은 아래와 같습니다.( τs\tau_{s}는 temperature parameter를 의미하며, τs\tau_{s} >0 이여야 합니다.)

Ps(x)(i)=exp(gθs(x)(i)/τs)k=1Kexp(gθs(x)(k)/τs)P_{s}(\mathcal{x})^{\mathcal{(i)}} = \frac{exp(g_{\theta_{s}}(\mathcal{x})^{\mathcal{(i)}}/ \tau_{s})}{\sum_{k=1}^{K}exp(g_{\theta_{s}}(\mathcal{x})^{\mathcal{(k)}}/ \tau_{s})}

Ps(x)P_{s}(\mathcal{x})는 data(x\mathcal{x})를 입력으로 받아 softmax function을 거친 output probability distribution을 의미합니다. 이때 dimension은 KK입니다. (student network인 gθsg_{\theta_{s}}에 대한 수식입니다. teacher network의 경우 gθtg_{\theta_{t}}로 동일하게 표현 가능하며 output probability distribution은 Pt(x)P_{t}(\mathcal{x})입니다.)

minθs H(Pt(x),Ps(x))min_{ {\theta_{s}}} \ H(P_{t}(\mathcal{x}), P_{s}(\mathcal{x}))

이처럼 Ps(x)P_{s}(\mathcal{x}), Pt(x)P_{t}(\mathcal{x}) 두개의 distribution을 minimize하는 방향으로 학습을 진행합니다.

또한 multi-crop 전략을 사용해서 image를 crop한 이후 원본 image영역의 몇 퍼센트를 차지하는지 계산하고 global view, local view로 구분지었습니다.

예를들어, image가 주어지면 VV라는 집합을 생성합니다. 이 집합은 x1g\mathcal{x}^{g}_{1} , x2g\mathcal{x}^{g}_{2}을 포함하고 있으며 x1g\mathcal{x}^{g}_{1}x2g\mathcal{x}^{g}_{2}를 global views라고 합니다. global view는 original image의 224x224 size를 가지며 original image의 상당 부분을 차지합니다. 이에 반해 local view는 96x96 size를 가집니다. 이렇게 VV를 생성한 이후 동작하는 과정에 대해 설명하도록 하겠습니다. 동작하는 과정은 아래와 같습니다.

  1. Image → multi crop → make global view & local view
  2. Global view는 teacher network, local view는 student network의 input으로 들어갑니다. (local to global)
  3. 각각의 output에 대해 cross entropy loss적용합니다.
  • Image의 distorted view를 생성하였습니다. (distorted view : augmented image)

ㅡㅡㅡㅡㅡㅡㅡㅡ

우선 teacher/student network는 같은 model을 사용하나, paramter는 서로 다릅니다. 본 연구에서는 2가지 방식으로 실험을 진행했습니다.

  • Teacher network(gθtg_{\theta_{t}})의 weight를 freeze시킨다음, student network(gθsg_{\theta_{s}})의 weight를 통해 gθtg_{\theta_{t}}의 weight를 update하는 방식으로 학습이 진행됩니다. update 수식(ema)은 아래와 같습니다. ( 이때 λ\lambda는 0.996~1)
θtλθt+(1λ)θs\quad \theta_{t} ← \lambda \theta_{t} + (1-\lambda) \theta_{s}
  • Student network의 weight를 teacher network로 copy

ㅡㅡㅡㅡㅡㅡㅡㅡ

Model의 collapse를 피하기 위해 teacher network(gθtg_{\theta_{t}})의 output에 centeringsharpening을 적용하였습니다.

  • Centering
cmc+(1m)1Bi=1Bgθt(xi),gt(x)=gt(x)+cc ← mc + (1-m) \frac{1}{B} \sum_{i=1}^{B} g_{\theta_{t}}(\mathcal{x}_{i}), \quad g_{{t}}(\mathcal{x} ) = g_{{t}}(\mathcal{x}) +c

Centering은 first-order batch에 의존하며 최종적으로 teacher network의 bias term으로 적용됩니다. (mm > 0, BB : batch size)

  • Sharpening
    • τt\tau_{t}를 통해 softmax normalization시킴.

다음은 model architecture에 관해 설명하도록 하겠습니다.

Backbone(ff)으로 ViT/Resnet를 사용하였고, ff에 projection head(hh)를 붙여 gg(x\mathcal{x})를 만들었습니다. 즉 feature extractor를 사용하여 feature를 추출한후 downstream task에 사용하였습니다. projection head(hh)는 다음과 같이 구성되어 있습니다. 저자는 2\ell_{2}-norm 여부에 따라 추가로 실험을 진행하였습니다.

  • 3-layer MLP + 2\ell_{2}-norm + weight norm layer(KK dimension)

Implementation and evaluation protocols

Vision Transformer

본 연구에서는 backbone으로 VIT를 사용하였습니다. VIT는 image를 input으로 받으면 겹치지않게 연속적으로 patch별로 잘라서 학습에 사용되는 방법을 말합니다. 저자는 16216^{2}, 828^{2} 로 patch를 구성하여 linear projection을 시킨후 embedding을 진행시킵니다. 그 다음 class token을 추가하여 진행됩니다.

Implementation details

  • dataset : Imagenet without labels
  • optimizer : adamw
  • batch size : 1024
  • learning rate : 10epoch 이후 0.0005 ×\times batch size/256로 늘려줌
    • warmup이후 cosine scheduler을 사용하여 weight decay적용 (0.04~0.4)
  • temperature scaling
    • τs\tau_{s}는 0.1로 고정하였고, τt\tau_{t}는 30epoch이후 warm-up으로 진행함(0.04~0.07)

Evaluation protocols

저자는 크게 두가지 방식으로 evaluation을 진행하였습니다.

  • frozen features을 사용해서 linear classifier를 학습시키는 방법
  • fine-tuning

그러나 위의 방법은 hyperparameter에 sensitive하다고 주장하였습니다.

추가로 저자는 k-NN으로 classify를 하는 방법을 제안하였습니다.

  • Pretrained model을 freeze시킨 상태에서 downstream task data(train data)에 대해 feature를 추출합니다.
  • Test data에 대해 마찬가지로 feature를 추출한뒤, train data feature와 similarity를 구하고 top-k neighbors을 계산하고 classification을 진행하게 됩니다.

Experiments

Imagenet data를 여러 self-supervised 방법들에 적용시켜 feature를 추출한 이후 evaluation을 진행한 결과입니다. (top-1 accuracy, k-NN evaluations)

  • Architecture : ResNet-50, VIT-small
  • Throughput(im/s) : NVIDIA V100 GPU with 128 samples per forward
  • M : feature extractor의 parameter

실험 결과 DINO를 적용하였을때, 좋은 성능을 보였습니다. 추가로 Architecture측면에서 보았을때, VIT-small에 DiNO를 적용한 경우 k-NN에서도 좋은 성능을 보임을 알 수 있었습니다.

위 그림은 Imagenet/GLDv2 데이터셋을 학습한 이후, retrieval dataset에 대해 evaluation결과를 보여줍니다. (이때 evaluation은 k-NN)여기서 GLDv2는 google landmark dataset으로 5M dataset입니다. retrieval dataset은 Oxford,Paris dataset으로 구성되어 있습니다.

  • M / H는 split의 난이도를 의미함. → link
  • supervised(baseline) 보다 SSL방법으로 접근하였을때, 좋은 성능을 보임.
  • GLDv2을 학습한 이후에 test data에 대해 evaluation진행한 결과, 좋은 성능을 보임.

Ablation study

Segmentations from supervised versus DINO

Vision Transformer(VIT)를 Supervised learning/(SSL + DINO)를 학습했을때, 각각에 대하여 attention map을 시각화한 결과입니다.

  • Dataset : PASCAL, VOC12
  • Supervised의 경우, object에 대해 잘 포착하지 않는 경우도 많았는데, SSL + DINO의 경우 object를 깔끔하게 잡아줌.
  • SSL+DINO의 Jac-card similarity가 제일 높음.

Importance of the patch size

위의 그림은 학습된 ViT-S model로 imagenet 데이터에 대해 evaluation을 진행한 결과입니다. (evaluation은 k-NN classification을 사용하였고, y축은 top-1을 의미합니다.)

  • patch size가 줄어들수록 좋은 성능을 보임.
  • patch size \propto 1throughout\frac{1}{throughout}

Important component for self-supervised ViT pre-training

  • Momentum, Sinkhorn-Knopp(SK), Multi-crop(MC), Loss에 따른 실험 결과를 나타냄.
  • DINO method에 Momentum, Multi-crop, CE를 사용하였을때 가장 좋은 성능을 보임.

Impact of the choice of Teacher Network

Building different teachers from the student

Student network의 weight를 이용하여 teacher network의 weight를 update시켜주는 여러 방식에 따른 Top-1 acc 결과를 의미합니다. 여기서 Momentum은 저자가 제안한 ema방법이랑 동일합니다.

  • Student copy : student의 weight를 teacher weight로 copy하는 방법
  • Previous iter : teacher weight를 이전 iteration의 student weight로 대체하는 방법
  • Previous epoch : teacher weight를 이전 epoch의 student weight로 대체하는 방법

실험 결과, Student copy, Previous iter 전략은 학습이 안됬다고 언급하며 ema방법이 가장 좋았다고 주장합니다.

Conclusions

본 연구에서는 SSL기반으로 pretraining한 VIT model의 성능이 convnet과 비교했을때, 우수한 성능을 보였습니다. 또한 ViT model에 DINO방법론을 적용하였을때, 성능 향상에 도움을 준다는 사실을 도출하였습니다. 위의 경우 attention map을 시각화 했을때, object를 잘 잡았습니다.

기존에 많이 사용되었던 linear evaluation방법 뿐만 아니라, k-NN classification을 진행해 성능측정을 함.

profile
김성철

1개의 댓글

comment-user-thumbnail
2023년 1월 11일

student network의 input은 local view + global view 아닌가요?

답글 달기