CLIP 모델로 이미지 피쳐를 확보하기 (논문정리)

rupert·2024년 8월 13일
1
post-thumbnail

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개의 댓글