Image Classification:
일반적으로 이미지를 입력, 클래스 레이블을 출력으로 학습
Traditional superviesed(지도학습) image classifiers:
- 대규모 데이터셋을 기반으로 모델을 pre-training(ResNet,VGGNet,EfficientNet 등)
- Pretraining(사전학습): 모델을 우리가 원하는 데이터에 학습시키기 전, 다른 데이터에 대해 먼저 학습시키는 것. 다른 데이터에 대한 파라미터를 바탕으로 우리가 원하는 데이터의 파라미터를 만들어간다.(재학습)
Limitation:
- Fine-tuning없이 새로운 task에 적용하기 어려워 모델의 일반화가 어렵다.
- 새로운 downstream task에 적합한 다량의 이미지와 레이블링 작업을 요함. 그렇기에 이미지 수집 및 레이블 생성에 많은 시간과 인력이 필요하다.
- 벤치마크 데이터셋(이미지넷에 있는 데이터)와 현실 수집 데이터의 차이로 그 외 데이터셋에는 저조한 성능을 보인다(robust하지 않다)
이를 극복하기 위해
- Fine-tuning이 필요 없는 일반화된 모델
- 이미지 수집 및 정답 레이블 생성에 적은 노력이 드는 모델
- 벤치마크 데이터셋 외 여러 현실 데이터셋에서도 좋은 성능을 보이는 robust한 모델
이 필요하다.
CLIP(Constrative Language-Image Pre-training)이 해당 문제를 극복할 수 있다.
CLIP
Approach
CLIP은 이미지와, 이미지를 결합한 한쌍 즉 pair로 된 데이터를 입력으로 사용해 이미지와 언어에 대한 representation을 함께 학습해 일반화된 특징 학습 가능하다.
또한, 인터넷으로부터 레이블링이 필요 없는 약 4억개의 Image-Text pair 데이터를 수집했다. 레이블링에 대한 인력이 필요없다.(WebImageText)
Image-Text pair를 사용한 pre-training기법은 이전부터 존재했다. (ex. Image captioning).
이미지를 입력하면 해당 이미지를 설명하는 모델이다.
Transformer 기반은 순서가 존재하고, Bag of Words based는 순서 없이 단어만 내보낸다.
하지만 모델 사이즈가 너무 크고, 학습 및 예측 시간이 길어 비효율적이다.
CLIP은 기존의 방식보다 효율적인 constrative learning을 적용해 pretraining 진행할 수 있다.
Zero-shot prediction에서도 상대적으로 가장 우수한 성능을 보인다.
(Zero-shot prediction: 한번도 본 적 없는 특정 하위 문제의 데이터셋에 대해 예측 수행)
CLIP는 Image-Text pair를 사용해 해당 Image에 맞는 Text를 positive로, Image에 맞지 않는 Text를 negative로 진행.
즉, 이미지에 적절한 text를 연결하는 것이 CLIP의 핵심이다.
Methodology
1. Contrastive pre-training
: 배치 단위로 이루어진 N개의 이미지와 텍스트를 각각 인코더에 통과시켜 임베딩 벡터 산출
Image encoder: Modified ResNet/Vision Transformer
Text encoder: Transformer
Encoder를 통과해 생성된 벡터에 가중치를 한번 더 곱하고, L2 Norm을 수행해 최종적으로 임베딩시킨다.
즉, Encoder는 각각의 이미지와 텍스트로부터 특징벡터를 추출한다고 생각하면 된다.
학습을 시키기 위해선, 정답이 필요한데 사용할 수 있는 정답으로 자신을 제외한 나머지 텍스트나 이미지는 서로 다르다는 관계를 사용한다.
예를 들어, I번째 이미지와 유사한 텍스트는 I번째 텍스트 뿐이다.
N^2 개의 쌍 중 N개는 Positive pair, N^2 - N개는 Negative pair이다.
Image와 Text 벡터간의 내적을 통해 코사인 유사도를 계산한다.
각 유사도는 1~N까지의 숫자 중 하나의 Label를 가진 것으로 해석한다. 이를 바탕으로 Cross-Entropy Loss를 계산한다.
본 논문에서는 Image 관점, Text 관점에서의 Cross-Entropy Loss를 각각 계산한다.
먼저, row Image 하나하나에 대해 Text와의 Cross-Entropy Loss를 계산하고
반대로 column에 대해 Cross-Entropy Loss를 계산한다.
해당 방식으로 1번 Image부터 N번 Image 혹은 Text까지의 계산을 적용하면, 각각의 Loss는 N개의 요소를 가지는 벡터가 된다.
그리고 최종 loss를 바탕으로 모델이 학습을 진행한다.
2. Creade dataset classifier from label text
학습은 위의 방식으로 종료되고 이후 Fine-Tuning 과정을 거치지 않고 모델 예측을 수행한다.
즉, 예측 시, 하위 문제에 대한 데이터셋을 활용해 모델을 업데이트 하지 않는 것.
3. Use for zero-shot prediction
- 예측하고자 하는 이미지를 학습된 이미지 인코더에 통과시켜 이미지 임베딩 벡터값 산출
- 텍스트 임베딩 벡터와 코사인 유사도를 계산해 상대적으로 높은 값을 갖는 텍스트 선택
- Fine-Tuning 과정을 거치치 않아도 처음 보는 이미지에 대해 예측 가능
해당 게시물은 고려대학교 산업경영학부 김성범교수님의 유튜브 OPEN DMQA Seminar을 바탕으로 작성된 글입니다.