1. 정리 목적

CLIP을 활용해보자

  • 이미지 & 텍스트 pair에 대해 pre-trained 된 CLIP 모델을 도입해보며, 추가 학습없이 손쉽게 이미지 정보를 피쳐로 활용하여, 응용 가능성을 살펴보고자 함
  • 추가 학습은 활용가능성 검토 후 고려

정리 결과 요약

1. pre trained CLIP 모델은 이미지 표현 피쳐를 얻기 위해 충분히 활용가능함

  • 추가학습 없이 zero-shot 으로도 unseen 데이터에 대해 ResNet50 모델보다 더 좋은 성능을 보임 → 3.1. Image Classification
  • 27개의 데이터셋에서 CLIP의 이미지 피쳐로 학습(linear probe)했을 때, 실험당시 SOTA모델보다 높은 성능을 보임 → 3.2 Image Embedding

2. 세분화된 분류 문제나 MNIST 등의 그림 내 숫자를 맞추거나, OCR등의 성능은 다소 부족함 → 4. 한계점

2. CLIP 모델 소개

기존 vision 모델의 제약

  • 기존 SOTA Computer vision 시스템은 고정된 category에 대해서만 예측을 수행하도록 학습
  • 이는 확장성, 일반성 등을 심각하게 저해하며 데이터를 모으기도 힘들다.

CLIP?

  • CLIP (Contrastive Language-Image Pre-training) in 2021
  • CLIP은 웹에서 얻은 4억개의 (image, text caption) pair 데이터로 이미지와 텍스트의 의미적 관계를 효과적으로 학습하는 모델
  • 학습된 모델에 자연어 지시문(reference)을 주면 zero-shot으로 모델을 downstream task에 적용할 수 있다.
  • 결과적으로 OCR, action recognition 등 30개의 기존 task에서 좋은 성능을 보였다.

학습 데이터 & 학습방식

  • 학습 데이터
    • CLIP은 4억개의 웹의 이미지와 자연어를 input으로 학습하는 방식
    • 별도의 번거로운 labeling 작업이 필요 없다는 강력한 장점이 있음
  • 학습방식 구분 - Natural Language Supervision
    • 모델의 학습방법은 unspervised, supervised, self-supervised 등으로 주로 구분함
    • 하지만, CLIP 모델의 학습방식은 'Natural Language Supervision' 이라고 지칭함
      • 자연어와 이미지를 주고 유사도를 계산하는 방식
  • 1개의 batch는 𝑁개의 (image, text) 쌍으로 구성
    • image와 text를 하나의 공통된 space로 보낸 다음
    • positive pair에서의 유사도(cosine similarity)는 최대화하고
    • negative pair에서의 유사도는 최소화하도록
    • Cross Entorpy loss를 사용하여 학습한다.
  • 인코더 선택
    • Image: ResNet-D, ViT(Visual Transformer) 2가지를 바꾸어 실험결과를 기록 (다른 인코더로 커스텀 가능)
    • Text: Transformer 를 사용 (BERT 등 별도 인코더로 커스텀 가능)
CLIP 모델의 학습구조모델 학습의 pseudo코드

CLIP 모델 활용 (Using CLIP for zero-shot transfer)

  • 제시된 Label을 text input으로 주고, Image input을 넣으면, 이미지와 적합한 text의 확률(softmax) 값을 제시해줌
    • zero-shot model로 다양한 이미지 분류기를 만들 수 있음
    • e.g. 개 vs 고양이 분류기, MNIST(숫자 글씨) 분류기 등
  • 프롬프트 엔지니어링
    1. text input에 대해 단순히 plane, car, dog .. 등으로 제시하는것 보다 A photo of {object} 으로 제시하는것의 분류 성능이 더욱 좋다고 함
      • ImageNet 데이터셋에서 1.3% 정확도 개선이 있었다고 함
      • 웹에서 얻은 학습데이터 이므로, 단순히 명사로 되어있지 않았기 때문에, input을 문장형태로 제시하는것임
    2. Prompt engineering and ensembling
      • 여러 프롬프트를 만들어  text encoder의 임베딩을 앙상블 후, image 인코더와의 유사도를 계산하면, 그렇지 않은것보다 조금 높은 정확도를 가짐
        • A photo of a big {label} && A photo of a small {label}
        • 임베딩 앙상블이 sum, avg, max 인지는 적혀있지 않음
zero-shot prediction 활용사례prompt Engineering & ensemble 결과 비교

3. 이미지 정보 추출

'CLIP 모델 활용'에서 언급한것 처럼, 이미지 input 에 대해 활용할 요소가 다양하다. 아래 2가지 방법에 대해 논문에 나온 성능을 확인해본다

  • 1) 분류 대상 text를 넣으면 이미지 분류가 가능
  • 2) 이미지 인코더의 최종 layer의 가중치를 임베딩으로 사용하여 별도 분류 모델 생성가능

3.1. Image Classification

zero-shot CLIP performance

  • ResNet50 과 비교했을때, 27개 중 16의 평가데이터에서 CLIP이 더 좋은 성능을 보임
    • ResNet모델과 비교하여 unseen data에 대해서 매우 잘 분류함 (27개 중 16개 데이터에서 우세함)
  • 데이터셋별 특징
    • STL10에서는 99.3%의 정확도로 SOTA를 달성
    • EuroSAT, RESISC45은 satellite image를 분류하는 데이터셋에서는 성능이 저조함
      • 웹에서 수집되기 힘든 특수한 이미지에 대해서는 성능이 충분하지 않을 수 있음
Zero-shot CLIP vs ResNet50
논문자료(

zero-shot vs few-shot (제로샷 모델의 효율성)

Zero-shot CLIP vs few-shot linear probesZero-shot CLIP 을 따라잡기 위해 필요한 few-shot의 개수Zero-shot CLIP vs supervised learning CLIP
논문자료
설명- 분류하고자 하는 class에 대해 few-shot 학습한 것과 zero-shot CLIP을 비교
- 4개학습 때까지, zero-shot CLIP의 성능이 제일 우세함
- 16개 학습시
- few-shot CLIP의 성능이 가장 좋음
- BiT-M모델은 2021년 당시 가장좋은 모델이지만, few-shot learning하여
겨우 zero-shot CLIP과 유사한 성능을 보임
- zero-shot CLIP의 성능을 CLIP few-shot linear probe 학습으로 따라잡으려면 필요한 class별 학습데이터를 표시
- 평균 20.8개(중앙값 5.4개)의 데이터가 있어야만 zero-shot CLIP과 동등한 성능을 가질 수 있음
ㄴ zero-shot으로도 좋은 성능을 보이며, 오히려 few-shot으로 최적화하려면 '충분한 데이터'가 필요해질 수 있음
- zero-shot CLIP은 linear probe 학습된 CLIP보다 10%~25% 낮은 성능을 보임
- 25개 데이터셋 중 5개만은 성능이 유사하였음
- 알수 있는것
- 약간의 성능차이는 있지만, zero-shot으로도 괜찮은 성능이 나온다
- 텍스트 데이터로 학습하였지만, image encoder가 image representation 을 잘 학습하였고,
그 임베딩으로 추가학습으로 성능 향상도 가능함
종합 의견=> 충분한 데이터로 학습할 것이 아니라면 zero-shot CLIP을 사용하는것이 매우 효율적=> zero-shot으로 사용해도 충분히 괜찮고, 이미지 임베딩(represantaion) 으로 추가 학습하는것도 좋다

Zero-shot CLIP모델의 분류 성능테스트 샘플

3.2. Image Embedding

Representation Learning

  • 아래 2가지 실험결과를 해석해보면, 잘 학습된 CLIP은 이미지의 설명력이 충분한 임베딩을 만든다
  • 그에 따라, 추가 pre-train없이도 CLIP의 이미지 임베딩을 피쳐로 사용시, SOTA모델을 앞지르는 성능을 보임
  • => CLIP Image Embedding은 다양하게 응용가능할것으로 보임
이미지 분류성능 비교 (Linear Probe CLIP vs SOTA vision models)Feature 설명력 비교 (CLIP vs EfficientNet)
- CLIP 모델이 만드는 Image representation 은 활용하기 좋은 임베딩일까? 를 알 수 있는 실험 (아래)
- CLIP의 Image representation 을 피쳐로 학습(linear probe)했을때, 다른 SOTA모델과의 성능을 비교
- 결론적으로, 2번의 실험(좌, 우)에서 CLIP-ViT, CLIP-ResNet 모델의 결과 중 파라미터가 큰 모델에서 뚜렷하게 가장 좋은 성능을 보임
- CLIP의 이미지를 잘 설명력이 좋은 임베딩을 생성하여, 피쳐로 활용하여 downstream task에서도 훌륭한 성능을 보이는것을 알 수 있음
- CLIP과 EfficientNet 모델의 피쳐를 Logistic Regression 모델의 피쳐로 사용하여, 성능을 비교함
- EfficientNet은 왼편 실험에서 CLIP 제외시 가장 좋은 성능을 보인 모델
- CLIP 이미지 임베딩을 사용한 LR 모델이 27개 데이터셋 중 21개에서 좋은 성능을 보임

4. 한계점

  • 성능지표
    • ResNet-50이나 101과 비교해서 zero-shot CLIP이 좋지만 이 baseline은 현재 SOTA에 비하면 많이 낮은 성능을 가지는 모델이다. 
  • 분류 성능
    • zero-shot CLIP의 성능은 강한 부분(task)도 있지만 그렇지 못한 부분도 많다. Task-specific 모델과 비교하여 여러 유형의 세분회된 분류(즉, 좁은 범위에서의 분류 문제)에서 특히 약하다.
    • 또한 사진에서 가장 가까운 자동차까지의 거리를 분류하는 task와 같은, CLIP이 사전학습 단계에서 학습했을 리 없는 새로운 종류의 문제에서는 정답률이 거의 찍는 수준일 수 있다.
  • 분류 성능(OCR)
    • CLIP은 고품질의 OCR representation을 학습하지만, MNIST에서 88%의 정확도밖에 달성하지 못한다.
    • 매우 단순한 logistic regression 모델보다 낮은 이 성능은 사전학습 데이터셋에 MNIST의 손글씨 이미지와 유사한 example이 거의 없기 때문일 것
    • 이러한 결과는 CLIP이 일반적인 딥러닝 모델의 취약한 일반화(generalization)라는 근본적인 문제를 거의 해결하지 못했음을 의미한다.
  • 윤리문제
    • 인터넷에서 그냥 수집한 데이터로 CLIP을 학습시켰는데, 이러면 CLIP은 기존에도 사람이 가지고 있는 여러 사회적 편견들도 똑같이 학습하게 된다

5. 참고 자료

profile
hi there

0개의 댓글

Powered by GraphCDN, the GraphQL CDN