CLIP (Contrastive Language-Image Pre-Training) 알아보기

2022. 8. 13. 14:57관심있는 주제/Paper

728x90

 

CLIP에서 사용하는 아이디어가 좋아 보여서, 그 부분만 살펴보기로 한다.

 

 

최첨단 컴퓨터 비전 시스템은 미리 결정된 객체 범주의 고정된 세트를 예측하도록 훈련된다.

 

이러한 제한된 형태의 감독(Supervision)은 다른 시각적 개념을 명시하기 위해 추가적인 라벨링 데이터가 필요하기 때문에 일반성(Generality)과 유용성(Usability)을 제한한다

이미지에 대한 원시(raw) 텍스트에서 직접 학습하는 것은 훨씬 광범위한 감독 소스를 활용하는 적절한 대안이다.

우리는 어떤 자막이 어떤 이미지와 함께 가는지 예측하는 간단한 사전 교육(pretraining) 작업이 인터넷에서 수집된 4억 개의 (이미지, 텍스트) 쌍 데이터 세트에서 SOTA 이미지 표현을 처음부터 학습하는 효율적이고 확장 가능한 방법임을 보여준다.

사전 훈련 후 자연어를 사용하여 학습된 시각적 개념을 참조하거나 새로운 시각적 개념을 설명함으로써 모델의 다운스트림 작업으로의 zero shot transfer을 가능하게 한다.

 

우리는 OCR, 비디오의 동작 인식, 지역 현지화 및 많은 유형의 세분화된 객체 분류와 같은 작업에 걸쳐 기존의 30개 이상의 컴퓨터 비전 데이터 세트를 벤치마킹하여 이 접근 방식의 성능을 연구한다.

이 모델은 대부분의 작업에 사소하지 않게 transfer가 가능하며, 데이터 세트별 훈련 없이 fully superviosed 기준선과 경쟁하는 경우가 많다.

 

자기 회귀(auto-regressive) 및 마스킹 언어 모델링(masked language modeling)과 같은 작업에 구애받지 않는 목표는 컴퓨팅, 모델 용량 및 데이터에서 많은 차원으로 확장되어 기능을 지속적으로 향상했다.

 

이러한 결과는 웹 스케일 텍스트 모음 내에서 현대의 사전 교육 방법에 접근할 수 있는 총감독이 고품질 크라우드 레이블 NLP 데이터 세트의 감독을 능가한다는 것을 시사한다.

 

웹 스케일에서 텍스트 데이터를 이용해서 사전 교육하는 방법이 굉장히 효과적인데, 이미지 같은 경우는 현재는 클라우드 레이블 데이터 세트를 표준으로 학습하는 관행이 있다. 

 

pre-training

 

 

 

CLIP 방법론은 이미지 인코더와 텍스트 인코더를 결합하여 각 배치의 옳은 페어로 예측하게 학습하는 것이다.

테스트 시간에 학습된 텍스트 인코더는 대상 데이터 세트의 클래스의 이름 또는 설명을 내장하여 제로 샷 선형 분류기를 합성한다.

이전 논문에서는 다음과 같다.

VirTex(Desai & Johnson, 2020), ICMLM(Bulent Sariyildiz et al., 2020) 및 Con-VIRT(Zhang et al., 2020)는 최근 텍스트에서 이미지 표현을 학습하기 위한 변압기 기반 언어 모델링, 마스크 언어 모델링 및 대조 목표의 잠재력을 입증했다.

PoC으로서 흥미진진하지만, 이미지 표현 학습을 위해 자연어 감독을 사용하는 것은 여전히 드물다고 한다.

이는 일반적인 벤치마크에서 입증된 성능이 대안적 접근법보다 훨씬 낮기 때문일 수 있다.

 

방식

Natural Language Supervision

우리의 접근 방식의 핵심은 자연어에 포함된 감독으로부터 인식을 배우는 아이디어이다.

서론에서 논의된 바와 같이, 이것은 전혀 새로운 생각이 아니지만, 이 공간에서 일을 묘사하는 데 사용되는 용어는 다양하며 심지어 모순되어 보이고, 진술된 동기도 다양하다. Zhang 등(2020), Gomez 등(2017), Joulin 등(2016) 및 Desai & Johnson(2020)은 모두 이미지와 페어링 된 텍스트에서 시각적 표현을 학습하지만 접근 방식을 각각 비지도, 자기 지도, 약지도 및 지도라고 설명하는 방법을 소개한다.

 

우리는 이 작업 라인에서 공통적으로 사용되는 것은 사용된 특정 방법의 세부 사항이 아니라 훈련 신호로서의 자연어 이해라는 것을 강조한다고 한다.

 

 

효율적인 Pre Training 방법 선택

최첨단 컴퓨터 비전 시스템은 매우 많은 양의 컴퓨팅을 사용합니다. 마하잔 외(2018)는 ResNeXt101-32x48d 및 Xie 외를 훈련시키기 위해 19개의 GPU를 필요로 했다.
2020년)은 노이즈가 많은 학생 EfficientNet-L2를 교육하기 위해 33개의 TPUv3 코어가 필요했다.

이 두 시스템이 단지 1000개의 ImageNet 클래스를 예측하도록 훈련되었다는 것을 고려할 때, 자연어로부터 열린 시각적 개념 세트를 배우는 것은 어려워 보인다.

노력 과정에서, 저자는 훈련 효율성이 자연어 감독을 성공적으로 확장하기 위한 핵심이라는 것을 발견했고, 이 메트릭을 기반으로 최종 사전 훈련 방법을 선택했다고 한다.

 

VirTex와 유사한 우리의 초기 접근 방식은 이미지의 캡션을 예측하기 위해 이미지 CNN과 텍스트 변환기를 처음부터 공동으로 훈련시켰다. 그러나 이 방법을 효율적으로 확장하는 데 어려움이 있었다.
그림 2에서 우리는 ResNet-50 이미지 인코더보다 이미 두 배의 컴퓨팅을 사용하는 6,300만 개의 매개 변수 변환기 언어 모델이 동일한 텍스트의 단어 봉지 인코딩을 예측하는 훨씬 단순한 기준선보다 3배 느리게 ImageNet 클래스를 인식하는 것을 학습한다는 것을 보여준다.

 

이 두 가지 접근 방식 모두 key 유사성을 공유합니다.

그들은 각 이미지에 수반되는 텍스트의 정확한 단어를 예측하려고 노력한다.

이미지와 함께 발생하는 설명, 댓글 및 관련 텍스트가 매우 다양하기 때문에 어려운 작업이다.

이미지에 대한 대조적 표현 학습(contrastive representation learning)의 최근 연구는 대조적 목표가 동등한 예측 목표보다 더 나은 표현을 배울 수 있다는 것을 발견했다(Tian et al., 2019).
다른 연구에서는 이미지의 생성 모델이 고품질 이미지 표현을 학습할 수 있지만 동일한 성능을 가진 대조 모델보다 10배 이상의 컴퓨팅이 필요하다는 것을 발견했다(Cheet al., 2020a). 이러한 발견에 주목하여, 우리는 해당 텍스트의 정확한 단어가 아니라 전체 텍스트 중 어떤 텍스트만 어떤 이미지와 쌍으로 구성되는지 예측하는 잠재적으로 더 쉬운 프락시 작업을 해결하기 위한 시스템 훈련을 탐구했다. 동일한 단어 가방 인코딩 기준선을 시작으로, 그림 2의 대조 목표와 예측 목표를 교환하고 ImageNet으로의 제로 샷 전송 속도에서 4배 이상의 효율성 향상을 관찰했다.

 

N(이미지, 텍스트) 쌍의 배치에 대해 CLIP은 배치에서 가능한 N x N(이미지, 텍스트) 쌍 중 실제로 발생한 쌍을 예측하도록 훈련된다.

이를 위해 CLIP은 이미지 인코더와 텍스트 인코더를 공동으로 훈련하여 N2 - N 잘못된 쌍 임베딩의 코사인 유사성을 최소화하면서 배치에서 N 쌍의 이미지 및 텍스트 임베딩의 코사인 유사성을 극대화함으로써 멀티모달 임베딩 공간을 학습한다.

즉 같은 페어끼리는 유사성을 최대화하고, 다른 부분들에 대해서는 유사성이 없도록 학습시키는 것이다.

 

저자는 이러한 유사성 점수에 대해 대칭 교차 엔트로피 손실을 최적화한다. 그림 3에는 CLIP 구현의 핵심에 대한 의사 코드가 포함되어 있습니다. 우리가 아는 한, 이 배치 구성 기법과 목표는 다중 클래스 N-pair loss Son(2016)으로 딥 메트릭 학습 영역에 처음 도입되었으며, Ord 외(2018)에 의해 InfoNCE 손실로 대비 표현 학습에 대중화되었으며, 최근 다음과 같은 대조(텍스트, 이미지) 표현 학습에 적응되었다. Zhang 등(2020)의 의료 영상 영역.

 

저자의 사전 훈련 데이터 세트의 큰 크기 때문에 과적합은 주요 관심사가 아니며 훈련 CLIP의 세부 사항은 Zhang 등(2020)의 구현에 비해 단순화된다. ImageNet 가중치를 사용하여 이미지 인코더를 초기화하거나 사전 훈련된 가중치를 사용하여 텍스트 인코더를 초기화하지 않고 CLIP을 처음부터 교육한다. 우리는 바흐만 외(2019)가 도입하고 첸 외(2020b)가 대중화한 변화인 표현과 대비 임베딩 공간 사이의 비선형 투영법을 사용하지 않는다.

 

대신 선형 투영만 사용하여 각 인코더의 표현에서 다중 모드 임베딩 공간으로 매핑한다.

우리는 두 버전 사이의 훈련 효율성의 차이를 알아차리지 못했고 비선형 투영이 자체 감독 표현 학습 방법에서만 현재 이미지의 세부 사항과 함께 적용될 수 있다고 추측했다.

 

모델 선택

이미지와 텍스트를 학습하는 모델은 다양하게 할 수 있고, 이미지는 ResNet-50  아니면 ViT 같은 것을 쓸 수 있다. 

텍스트 인코더는 Transformer를 사용할 수 있다. 효율적인 계산을 위해 76을 sequenc length를 정했다.

 

 

코드

# image_encoder - ResNet or Vision Transformer
# text_encoder - CBOW or Text Transformer
# I[n, h, w, c] - minibatch of aligned images
# T[n, l] - minibatch of aligned texts
# W_i[d_i, d_e] - learned proj of image to embed
# W_t[d_t, d_e] - learned proj of text to embed
# t - learned temperature parameter
# extract feature representations of each modality
I_f = image_encoder(I) #[n, d_i]
T_f = text_encoder(T) #[n, d_t]
# joint multimodal embedding [n, d_e]
I_e = l2_normalize(np.dot(I_f, W_i), axis=1)
T_e = l2_normalize(np.dot(T_f, W_t), axis=1)
# scaled pairwise cosine similarities [n, n]
logits = np.dot(I_e, T_e.T) * np.exp(t)
# symmetric loss function
labels = np.arange(n)
loss_i = cross_entropy_loss(logits, labels, axis=0)
loss_t = cross_entropy_loss(logits, labels, axis=1)
loss = (loss_i + loss_t)/2

참고

https://towardsdatascience.com/simple-implementation-of-openai-clip-model-a-tutorial-ace6ff01d9f2

 

Simple Implementation of OpenAI CLIP model: A Tutorial

A tutorial on simple implementation of CLIP model in PyTorch.

towardsdatascience.com

https://blog.roboflow.com/how-to-use-openai-clip/

 

How to Try CLIP: OpenAI's Zero-Shot Image Classifier

Earlier this week, OpenAI dropped a bomb on the computer vision world.

blog.roboflow.com

https://openai.com/blog/clip/

 

CLIP: Connecting Text and Images

We’re introducing a neural network called CLIP which efficiently learns visual concepts from natural language supervision.

openai.com

https://github.com/openai/CLIP

 

GitHub - openai/CLIP: Contrastive Language-Image Pretraining

Contrastive Language-Image Pretraining. Contribute to openai/CLIP development by creating an account on GitHub.

github.com

https://arxiv.org/abs/2103.00020

 

Learning Transferable Visual Models From Natural Language Supervision

State-of-the-art computer vision systems are trained to predict a fixed set of predetermined object categories. This restricted form of supervision limits their generality and usability since additional labeled data is needed to specify any other visual co

arxiv.org

https://colab.research.google.com/github/openai/clip/blob/master/notebooks/Interacting_with_CLIP.ipynb#scrollTo=C1hkDT38hSaP

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

 

728x90