My Vision, Computer Vision

[논문 리뷰/요약] SLIP: Self-supervision meets Language-Image Pre-training 본문

Paper

[논문 리뷰/요약] SLIP: Self-supervision meets Language-Image Pre-training

gyuilLim 2025. 1. 23. 18:49

 

 

 

 

SLIP: Self-supervision meets Language-Image Pre-training

Recent work has shown that self-supervised pre-training leads to improvements over supervised learning on challenging visual recognition tasks. CLIP, an exciting new approach to learning with language supervision, demonstrates promising performance on a wi

arxiv.org

 


Abstact

  • 본 연구에서는 Self-supervised learning(자기 지도 학습)이 Visual representation learning(시각적 표현 학습)을 위한 Language supervision(언어 지도)에 도움이 되는지에 대해 탐구한다.
  • 또한 Self-supervised learningPre-training CLIP을 결합한 Multi-task learning framework인 SLIP을 제안한다.

1. Introduction

  • 현재에도 대부분의 State-of-the-art 성능은 Supervised Pre-training에 의존하고 있다.
  • Unsupervised learning의 한 종류인 Self-supervised learning은 언어 도메인에서 큰 성공을 거두었고, 최근 비전 분야에서도 발전을 이루었다.
  • Self-supervised learning은 사람이 직접 Annotation하는, 노동력에 의존하지 않는다는 이점이 있다.
  • 최근, CLIP에서 Representation learning의 새로운 접근 방식이 소개되었다. CLIP의 학습에는 이미지와 자유 형식(Free-form)의 텍스트만 있으면 된다.
  • 본 연구에서는 이미지에서 Self-supervised learning의 모멘텀이 Language supervision에도 적용될 수 있는지에 대해 탐구한다.
  • 저자들은 Language supervision과 Self-supervision을 결합한 Multi-task frameworkSLIP(Self-supervision meets Language-Image Pre-training)을 소개한다.

2. Related Work

Language supervision

  • DeViSE, BoW, N-gram ouucurance, ICMLM, VirTex 등은 Language supervision을 통해 시각적 표현(Visual representation)을 학습할 수 있다는 것을 입증했다.
  • 최근 CLIP은 구조의 간단함, 큰 규모, 높은 성능으로 주목 받았고, ALIGN은 CLIP dataset보다 더 크지만 Noise가 있는 데이터셋을 사용하여 그에 준하는 성능을 보여주었다.

Self-supervised learning

  • Self-supervised learning 중에서 Contrastive learning은 간단하고 효율적이라 빠른 발전을 이루었다.
  • 뿐만 아니라 Self-distillation, Input Reconstruction 등 도 제안되고 있다.

Multi-modal multi-task learning

  • MURAL은 ALIGN의 다국어 활용을 위해 Cross-lingual objective(목적 함수)를 도입했다.
  • 동시에 DeCLIP은 CLIP에 추가적인 Training objectives를 도입하고 자체적으로 수집한 데이터를 학습시켰다.

3. SLIP Framework

  • 본 논문에서는 카테고리 라벨없이, Visual representation 학습을 위해 Language supervision, Image self-supervision을 결합한 SLIP을 소개한다.
  • Pre-training 동안, 입력 이미지는 Image encoder를 통해 임베딩되고, Language supervision, Image self-supervision 브랜치에 각각 나뉘어진다.

3.1. Contrastive Language-Image Pre-training

  • CLIP은 Image와 Caption을 이용한 Contrastive learning의 효과를 입증했는데, 두 임베딩 벡터의 내적으로 유사도를 계산하여 Positive pair의 유사도는 커지게, Negative pair의 유사도는 작아지게끔 학습 된다(InfoNCE loss).
  • Contrastive learning을 사용하지 않는 방법에는 BoW 나 캡션을 예측하는 방법이 있는데, 이 방법들은 CLIP보다 성능이 낮다.
  • 또한 Contrastive learning은 특정 태스크에 대해 학습하지 않아도 분류할 수 있는 Zero-shot이 가능하다.

3.2. Image Self-Supervision

  • View(Image)-based self-supervised learning은 동일한 이미지를 다양한 뷰 혹은 증강시켜 Positive pair로 취급하고 학습하는 방법이다.
  • 본 연구에서는 이러한 방법의 대표적인 예인 SimCLR의 Self-supervised objective를 SLIP에 활용한다.(다른 Objective로도 대체 가능)
  • 또한 ViT 아키텍쳐를 사용하고, 학습을 위해 MoCo v3의 하이퍼 파라미터 세팅을 따른다.

3.3. Our Method

# fi, ft: image, text encoders
# hi, ht: CLIP image, text projectors
# hs: SimCLR projector
# c: SimCLR loss scale

def forward(img, text):
    # 입력 이미지에 대해 crop한 이미지를 xi, 두 개의 서로 다른 증강을 적용한 이미지를 각각 x1, x2라 한다.
    xi, x1, x2 = crop(img), aug(img), aug(img)
    # toknize된 text를 yt라 한다.
    yt = tokenize(text)

    # 각 이미지와 텍스트는 Encoder를 거쳐 Representation으로 추출된다.
    wi, w1, w2 = fi(xi, x1, x2)
    wt = ft(yt)

    # 증강된 두 이미지는 SimCLR의 projector로 임베딩되고
    # 입력 이미지와 텍스트는 CLIP의 projector로 임베딩된다.
    z1, z2 = hs(w1), hs(w2) # SSL embed: N x C2
    zi, zt = hi(wi), ht(wt) # CLIP embed: N x C1

    # simclr의 loss와 clip의 loss를 스칼라 덧셈으로 합친다.
    # 이 때 simclr의 로스값은 c로 scaling해준다.
    loss = c * simclr(z1, z2) + clip(zi, zt)
    return loss

# s: learnable log logit scale
def clip(zi, zt):
    # 입력 이미지와 텍스트의 임베딩을 정규화하고, 내적(유사도)를 구해준다.
    zi, zt = normalize(zi, zt)
    label = range(N)
    logit = exp(s) * zi @ zt.T

    # 이미지 로스와 텍스트 로스를 각각 구한 후
    li = CrossEntropy(logit, label)
    lt = CrossEntropy(logit.T, label)

    # 평균을 반환한다.
    loss = (li + lt) / 2
    return loss

# tau: softmax temperature
def simclr(z1, z2):
    # 증강된 두 이미지를 정규화하고 큰 값(1e9)로 이루어진 단위 행렬을 만든다.
    z1, z2 = normalize(z1, z2)
    label = range(N)
    mask = eye(N) * 1e9

    # 두 이미지의 내적(유사도)와 같은 이미지에 대한 유사도를 구하는데,
    # 같은 이미지에 대한 유사도 행렬에서는 mask값을 빼주어 자기 자신과의 비교를 방지한다.
    logit = z1 @ z2.T
    logit1 = z1 @ z1.T - mask
    logit2 = z2 @ z2.T - mask

    # logit에 logit1, logit2를 각각 붙여준 후		
    logit1 = cat(logit, logit1)
    logit2 = cat(logit.T, logit2)

    # 각각에 대한 로스를 계산한다.
    l1 = CrossEntropy(logit1 / tau)
    l2 = CrossEntropy(logit2 / tau)

    # 평균을 반환한다.
    loss = (l1 + l2) / 2
    return loss
  • SimCLR과 CLIP을 결합한 방법으로, SLIP이라고 통칭한다.
  • 두 가지의 Contrastive learning이 수행되는데, 하나는 입력 이미지의 서로 다른 두 증강에 대한 것이고, 다른 하나는 이미지와 텍스트에 대한 것이다.
  • 자세한 내용은 주석을 참고할 것.

4.1. Implementation Details

Datasets

  • YFCC100M 데이터셋에서 필터링하여 15M 하위 집합을 구성하며, YFCC15M이라고 한다.
  • 또한 Conceptual Captions 3M(CC3M)CC12M 에서도 평가한다.

Data Augmentation

  • YFCC15M은 하나의 이미지에 Title, Description 이렇게 두 개의 캡션 정보가 있는데, 학습 동안 두 캡션 중 하나를 랜덤하게 선택한다.
  • CLIP 브랜치의 이미지는 50~100% 크기로 Resize, Crop하고 이를 Global cropping이라 한다.
  • Self-supervised 브랜치에는 MoCo v3에서 사용하는 증강을 적용하여 두 개의 뷰를 만들어낸다.

Architecture

  • ViT-B/16, ViT-L/16, ResNet50과 계산량, 파라미터 수가 비슷한 ViT-S/16을 이미지 인코더로 사용한다.
  • Text Encoder로는 CLIP의 가장 작은 Transformer(38M parameter)를 사용하고, 49K개의 토큰을 Byte-pair encoding(BPE)하여 사용한다. 최대 길이는 77이다.
  • CLIP 브랜치에서는 이미지와 캡션을 512차원으로 임베딩한다.
  • Self-supervised 브랜치에서는 3-layer MLP를 사용하여 256차원으로 출력한다.

Training

  • 배치는 4096, AdamW 옵티마이저, Weight decay는 CLIP, SLIP에 각각 0.5, 0.1을 적용한다.

Zero-shot Transfer Evaluation

  • ImageNet을 포함한 다양한 데이터셋에서 Zero-shot 평가를 수행한다.
  • CLIP에서 사용된 프롬프트 템플릿을 통해 앙상블을 수행한다.

Linear Classification Evaluation

  • Linear classification 평가를 위해 MoCo v3와 똑같은 설정을 사용한다.
  • SGD를 모멘텀과 함께 사용하고 Weight decay는 적용하지 않는다.
  • ImageNet에서는 학습률을 0.01로 설정하고, 다른 데이터셋은 실험으로 결정했다.
  • Cropping, Flipping 증강을 적용하여 100 에포크동안 학습한다.

End-to-end Finetuning Evaluation

  • ImageNet 파인튜닝을 위해 BeiT의 학습 절차를 따른다.
  • 이는 큰 비중의 Regularization과 Data augmentation을 적용하고, Layerwise learning rate decay를 사용한다.
  • ViT-B와 ViT-S는 100 에포크동안 학습하고 ViT-L은 50 에포크동안 학습한다.

5. Empirical Evaluations

5.1. ImageNet Classfication

SLIP, CLIP, SSL(Self-Supervised Learning, SimCLR)를 ImageNet으로 평가한 결과

  • YFCC15M 데이터셋으로 Pre-training한 후 ImageNet에 평가한 결과이다.
  • Zero-shot Transfer, Linear Classficiation, End-to-end Finetuning 세 가지로 나눠서 평가했다.

5.2. Model and Compute Scaling

  • 첫번째 테이블은 ViT 인코더의 크기를 다르게 적용하여 평가한 결과이다.
  • YFCC15M에서 100 에포크 학습한 후 ImageNet-1K에서 1200 에포크 학습했다.
  • 두번째 테이블은 ViT-B/16을 사용하여 에포크를 다르게 적용한 결과이다.
728x90