CLIP: Learning Transferable Visual Models From Natural Language Supervision
이 연구는 추가 학습 없이 새로운 문서에서 정보를 추출하는 Zero-shot Document Query System의 가능성을 탐구합니다. BLIP, BLIP-2, LLaVA, MiniGPT-4 등 최신 Multimodal Language Model을 활용한 접근 방식과 그 성능을 분석합니다
Jun 22, 2023
CLIP (Contrastive Language-Image Pre-training)
Before we go any further…
CLIP은 텍스트와 이미지를 바탕으로 하는 multi-modal representation learning.
- 데이터의 representation의 중요성을 각인 시켜주었던 논문(DALL-E2, IMAGEBINDE의 key concept으로 사용).
- 데이터의 modality의 장벽을 허물고 경계를 모호하게 해준 논문.
- 간단한 아이디어라 조금이라도 연관된 데이터가 있다면 modality, domain에 상관 없이 적용 가능.
Motivation
NLP Model
- BERT, GPT의 모델은 자연어를 기반으로 한 모델이며, 이러한 모델은 자연어의 특정 label이 필요 없이 raw text만을 가지고 학습이 가능.
- Raw text만 가지고 학습했음에도 불구하고 NLI benchmark (e.g. GLUE), zero-shot task에 SOTA를 달성하는 등 뛰어난 성능을 보임.
결론: Semi-supervised learning을 사용하여 학습했음에도 불구하고 fine-tuning 등을 통해 여러 task에 훌륭한 성능을 내어줌.
Vision Model
- Motivation
- NLP 모델을 학습하는 방식들은 현재까지도 NLP 분야에서 task-agnostic한 모델 연구로 이어지고, ChatGPT 등은 이러한 task-agnostic 모델의 대표적인 예시.
결론: (ChatGPT가 나오기 전이지만) 저자들은 supervised learning을 벗어나서 학습할 수 있는 방법을 CV 분야에서도 적용할 수 없을까 고민함.
- Issues
- 낮은 zero-shot task 성능
- 당시 ImageNet SOTA: 88.4%
- Zero-shot task: 11.5%
- 정보의 빈약성
- Labeling의 수고로움
기존 CNN 기반의 vision 모델은 강력한 성능을 보였지만 zero-shot task에 대해서 낮은 성능을 보여줌.
많은 이미지 데이터셋은 labeling 되어있는 데이터들인데, 이는 단순히 이미지가 어떠한 카테고리로 분류되는지만 나타내기 때문에 이미지 전체를 나타내기에는 그 정보량이 빈약하다는 문제점이 존재.
Labeling 자체는 어려운 task가 아니지만, 수백만장의 데이터를 하나씩 labeling을 하는 것은 많은 비용이 듦.
- Approach
- Natural Language Supervision
- 이미지와 자연어를 이용한 multi-modal learning이 image representation에 뛰어나다는 연구는 많이 진행 되어왔음 → Label 보다 비교적 많은 정보량 함축.
- 이미지와 자연어 쌍은 비교적 Web상에서 구하기 쉬움.
- Web 상의 많은 이미지는 caption과 설명이 같이 있기 때문.
- 자연어와 이미지의 representation을 동시에 학습할 수 있음.
- 자연어(prompt)를 조정하여 다양한 task에 쉽게 적용 가능하고, 확장성이 용이함.
- 대용량 데이터 수집
- MS-COCO, Visual Genome 처럼 지식 그래프, 객체 정보 등을 설명하고 있고 quality가 좋은 데이터들은 데이터의 크기가 작음.
- YFCC100M은 데이터는 크지만 quality가 낮음.
Image-Text task로 여러 데이터가 고려될 수 있음.
결론: Web crawling을 통해 직접 4억개의 image-text 쌍 데이터인 WebImageText (WIT) dataset을 제작함.
CLIP Pre-training & Architecture
Pre-raining
- Image Captioning?
- 원래 저자들은 VirTex 모델처럼 CNN 기반 image encoder와 transformer 기반 decoder를 이용하여 image captioning 방법으로 학습을 수행하고자 함.
- Transformer 언어모델은 아래 그림처럼 같은 accuracy를 확보하는 데 다른 모델에 비해 그 효율성이 엄청 낮음.
- Image captioning 방식으로 모델을 학습할 때, decoder는 정확한 단어를 예측하려고 하고 비슷한 이미지에 다양한 텍스트가 올 수 있기 때문에 학습이 상당히 느림.
- 하나의 이미지에 여러 텍스트가 올 수 있다는 점을 생각해보면, text decoder를 통해 이렇게 정확한 단어를 예측하고자 하는 것은 'representation하는 데 과한 task.
결론: 최종 선택한 CLIP 모델이 image captioning을 위한 baseline 보다 효율적임.
- Contrastive Learning
- 효율적인 contrastive learning을 사용하여 representation을 적용.
- 의 batch에서 에서 의 negative, 개의 positive 정보를 얻을 수 있고 총 의 정보를 얻을 수 있음.
img_f = image_encoder(image) text_f = text_encoder(text) """ img_f text_f EOS feature """ img_f = F.normalize(img_wts(img_f)) text_f = F.normalize(text_wts(text_f)) cos_sim = torch.mm(img_f, text_f.transpose(0, 1)) sim_output = cos_sim * temperature.exp()
Architecture
- Image Encoder
- ResNet-D: ResNet50, ResNet101, ResNet50x4, ResNet50x16, ResNet50x64
- ViT: ViT-B/32, ViT-B/16, ViT-L/14
- Text Encoder
- Transformer
- Training: 32 epoch
CLIP Results
Zero-shot Classification
- Method
- Results
- Zero-shot Image Classification
- Visual N-Grams 모델보다도 zero-shot 분류 성능이 더 좋았지만, Visual N-Grams 연구가 나오기 전에는 Transformer 모델도 없었으며 학습 데이터 양또한 CLIP이 많다는 부분 등을 언급하면서 이 모델과의 비교가 완전히 공평한 조건에서 이루어지지 않았다는 부분을 언급.
- Zero-shot Linear-probe
- Pre-trained ResNet-50에 비해 27개의 task 중 16개에서 더 좋은 결과를 보여줌.
- EuroSAT, RESISC45은 인공위성 데이터이며, 지엽적인 정보를 CLIP은 pre-training 하면서 습득하지 못한 것으로 보여짐.
- Few-shot Task 성능과 비교
- CLIP Zero-shot task는 다른 모델들의 few-shot 결과보다 좋았으며, CLILP의 zero-shot 평균 성능은 4-shot 일때이며, 이는 다른 baseline 모델의 16-shot의 결과와 비슷한 수준.
- Prompt의 중요성
- ChatGPT에서 프롬프트를 이용하여 다양한 task를 수행할 수 있는 것처럼, 당시 논문에서도 일찌감치 프롬프트를 이용하여 zero-shot 성능을 더 끌어올릴 수 있고 다양하게 적용될 수 있다고 언급.
- 아래 결과는 실제로 프롬프트만 바꿔줬을 때, 4배 더 많은 연산을 한 모델과 같은 성능을 보여줌.
- Results Examples
- GT Wrong
Representation Evaluation using Linear-probe
- Why?
- Linear-probe를 하기 위해 FC-layer를 사용하지 않고 Logistic Regression (LR) Linear Classifier를 이용 → 모델이 학습한 이미지의 representation의 failure를 좀 더 명확히 판단 가능하기 때문(FC-layer는 model의 failure를 보정 및 가릴 수 있기 때문).
- Zero-shot 실험과 비슷한 맥락에서 확장된 분석이 가능하기 때문.
- Representation Linear-probe Results
- ViT 기반의 CLIP 모델이 가장 좋은 성능을 보여줌.
- 위에서 CLIP 다음으로 좋은 결과를 보여준 EfficientNet-NoisyStudent 모델과 비교한 결과에서 더 좋은 결과를 얻음.
Robustness
- Task Shifting
- 아래 그림의 y축의 결과는 위의 Representation을 설명하는 처음 그림의 결과, x축은 ImageNet 분류 결과.
- CLIP을 제외한 다른 baseline 모델들은 ImageNet에서 pre-trained 된 모델이라 다른 데이터셋으로 평가하였을 때 점선 아래, 즉 ImageNet 결과보다 낮은 결과를 보여줌.
- CLIP은 데이터셋의 상관 없이 똑같이 높은 결과를 보여줌 → CLIP이 robust하다는 것을 방증.
- Distribution Shifting
- 학습된 이미지와 비교하여 distribution shifting이 일어난 이미지에 대해서도 CLIP은 강건하게 작용.
- (Left) Ideal line과 CLIP이 다른 baselines 보다 더 가까움.
- (Right) ImageNet에서 pre-trained 된 ResNet101보다 distribution shifting 된 데이터에 더 강간한 결과를 보여줌.
Comparison with Human Performance
- Results
- Oxford IIT Pets test set 으로 개/고양이 labeling 수행.
- 사람도 zero-shot, 개/고양이 하나/두가지 예시를 보고 one/tow-shot으로 labeling 수행.
- CLIP의 zero-shot 성능이 human performance보다 좋음.
- Human VS CLIP
- 사람이 어려워하는 task는 CLIP도 똑같이 어려워하는 경향이 있음.
Limitation
- ResNet-50, 101과 비교해서 zero-shot CLIP이 더 좋지만 평가에 활용된 dataset의 각각의 supervised SOTA에 비하면 많이 낮은 성능을 가져서 zero-shot CLIP이 SOTA 성능에 도달하려면 계산량이 1000배 정도 증가할 것으로 예상.
- zero-shot CLIP이 잘하는 task도 있지만 task-specific 모델과 비교하여 지엽적인 이미지 분류 task에 대해서는 약함 → CLIP은 고품질의 OCR representation을 학습하지만, MNIST에서 88%의 정확도밖에 달성하지 못하였고 이는 단순한 LR 모델보다 낮은 성능.
- WIT dataset에 MNIST같은 특이한 데이터가 없었을 확률이 높음.
- CLIP이 generalization 문제를 완전히 해결하지 못함을 방증.
- 딥러닝의 데이터 활용률이 매우 낮다는 근본적인 문제점을 해결하지 못함.
- 어쨌든 수집한 4억개의 데이터도 supervision을 위한 데이터셋이며, 이 이미지를 1초에 하나씩 32 epoch 학습을 한다면 405년이 걸림.
- 이러한 문제점을 해결하기 위해 self-supervision 방법등을 도입해볼 필요성이 있음.
- 인터넷에서 수집한 데이터로 CLIP을 학습시켰기 때문에 CLIP은 기존에도 사람이 가지고 있는 여러 사회적 편견들도 똑같이 학습하게 됨.
Text-Text CLIP
Sentence Embedding
Spearman Rank Correlation between GT and consine similarity
Model | STS12 | STS13 | STS14 | STS15 | STS16 | SICK-R |
Avg. GloVe embeddings | 55 | 71 | 60 | 68 | 64 | 54 |
Avg. BERT embeddings | 39 | 58 | 58 | 63 | 61 | 58 |
BERT CLS-vector | 20 | 30 | 20 | 37 | 38 | 143 |
InferSent-GloVe | 53 | 67 | 62 | 73 | 67 | 66 |
Universal Sentence Encoder | 64 | 68 | 65 | 77 | 73 | 77 |
SBERT-NLI-base | 71 | 77 | 73 | 79 | 74 | 73 |
Text CLIP | 70 | 69 | 69 | 78 | 71 | 68 |
Test Example
src : What are the most visited websites in Iran?
gt (0.806359): What websites are popular in Iran?
trg 0 (0.806359): What websites are popular in Iran?
trg 1 (0.806359): What websites are popular in Iran?
trg 2 (0.670667): Is Iran safe to travel?
trg 3 (0.618899): Do most Israeli favor settlement expansion in West Bank?
trg 4 (0.598458): What does Balaji Viswanathan feel about astrology?
trg 5 (0.592356): Which are the best freelancing sites in India?
trg 6 (0.590484): What is the meaning of Islamic banking or Islamic window? Why RBI is considering this type of banking system for conventional banks?
trg 7 (0.578498): Which banks give high interest rates in India?
trg 8 (0.574674): Is it really true that US is backing ISIS?
trg 9 (0.570506): What is the best Real Estate website company?
src : Is it possible to make time machine and do time travel?
gt (0.662521): Will time travel be possible in the next 10 years?
trg 0 (0.773328): It is possible to travel by time?
trg 1 (0.770381): Is time traveling possible in future?
trg 2 (0.763108): Could time travel be possible?
trg 3 (0.763108): Could time travel be possible?
trg 4 (0.763108): Could time travel be possible?
trg 5 (0.763108): Could time travel be possible?
trg 6 (0.755130): Is it possible to time travel to past?
trg 7 (0.755130): Is it possible to time travel to past?
trg 8 (0.755130): Is it possible to time travel to past?
trg 9 (0.755130): Is it possible to time travel to past?
Dialogue Embedding
src : Now, tell me, what do you eat?
gt (0.522589): Well, I don't eat any meat, but I do eat fish and eggs.
trg 0 (0.611957): Scrambled egg, bacon, three pieces of bread and a cup of tea.
trg 1 (0.583295): I'll use ginger, garlic scallion, hot pepper and vinegar.
trg 2 (0.566221): I like seafood on my pizza.
trg 3 (0.560516): Doctor, I have a bad cough and a headache.
trg 4 (0.552998): Breakfast juice and please make my coffee very strong.
trg 5 (0.550847): Sour-peppery soup.
trg 6 (0.545678): I am good at stewing beef with potato, frying chicken, hot and sour soup etc.
trg 7 (0.542675): My cigarettes.
trg 8 (0.539856): Quiet color.
trg 9 (0.532516): Maybe just a quick sandwich, salad, or something.
src : 오오 가족 다같이 산책을?
gt (0.516126): 웅웅 하하 근데 아마 엄마랑 주로 할거같아
trg 0 (0.551610): 어 가족들끼리 다같이 공원도 가고
trg 1 (0.546570): 아니! 이런 날에 혼자 걷기 너무 좋아
trg 2 (0.516126): 웅웅 하하 근데 아마 엄마랑 주로 할거같아
trg 3 (0.508402): 예전에는 자주 다녔는데 요샌 서로 바빠서 잘 안 가는 편이야 하하
trg 4 (0.479374): 응응 하하 걷다보면 당떨어져서 초콜릿 먹어야해
trg 5 (0.475145): 우리는 애기 재울려고 산책 나가
trg 6 (0.474212): 산책 하는 거 너무 좋아해
trg 7 (0.456209): 가을이 산책 너무 좋아해서 저기 공원이랑 중학교 돌아
trg 8 (0.453845): 강아지랑 산책하면 좋지 여유롭기도 하고
trg 9 (0.451602): 난 그냥 길동이랑 산책하고 운동할 것 같아
src : 거기 안심도 맛있고 원카츠도 맛있어 츄릅...
gt (0.509743): 원카츠가 아예 메뉴 이름인가 보네!
trg 0 (0.514283): 에바임 난 아무리 맛집이어도 그만큼 기다려서 못 먹어...
trg 1 (0.509743): 원카츠가 아예 메뉴 이름인가 보네!
trg 2 (0.491534): 요즘 떡볶이랑 치킨이랑 세트로나와 그건 별루야?
trg 3 (0.479585): 아 좋다 당장 먹으러가자
trg 4 (0.473704): 아 그러면 돈까스인데 치돈으로 고고
trg 5 (0.469278): 지코바? 치킨 브랜드 이름 아니야?
trg 6 (0.468987): 헤이즐넛도 내가 사 감
trg 7 (0.462648): 오 진짜 맛있어서 2개 먹어야 하는데 더 먹고 싶던데
trg 8 (0.459260): 호식인가 시켜
trg 9 (0.456065): 아항 호치킨은 봐준다
Share article