안녕하십니까 다제입니다.
오늘은 clipcap이라는 논문을 소개드리고자 합니다.
clipcap은 Image-Caption Domain에 활용되는 모델입니다.
image caption이란, 입력된 이미지를 이해하고 이미지에 대한 설명을 텍스트로 출력하는 도메인입니다.
※ caption : 이미지에 대한 간략한 설명 또는 주석
즉, clipcap은 clip이라는 모델을 이용하여 이미지를 이해하고 gpt2를 활용하여 이미지에 대한 설명(caption or description)을 생성해내는 모델입니다. 차근차근 하나씩 설명을 드릴 예정인데, 바쁘고 결론만 알고 싶은 분들을 위해 Abstract에 최대한 요약 해놓았습니다. Clip을 모르시는 분들은 제가 포스팅한 Clip(Constractive Language-Image Pre-Training) 글을 참고해주세요.
간략히 설명을 드리면, 4억장의 image-caption dataset을 학습시켜 image와 caption에 대한 임베딩 값을 가지고 있는 모델입니다.
목차
- 0. Abstract
- 1. Introduction
- 2. Related Work
- 3. Method
- 3.1 Overview
- 3.2 Language model fine-tuning
- 3.3 Mapping Network Architecture
- 3.4 Inference
- 4. Results
- 4.1 Datasets
- 4.2 Baselines
- 4.3 Evaluation metrics
- 4.4 Quantitative evaluation
- 4.5 Qualitative evaluation
- 4.6 Language model fine-tuning
- 4.7 Prefix Interpretability
- 4.8 Prefix length
- 4.9 Mapping network
- 4.10 Implementation details
- 5. Conclusion
- 6. Code review
- 7. Link(paper, github)
0. Abstract
1) 발표 일자 : 2021년 11월경
2) 발표자 : OpenAI
3) Model : ClipCap
4) 기존 모델들의 문제점
-. 새로운 데이터가 추가되었을 때 추가학습하는데 오랜 시간이 걸림 -> 모델이 무거움(가벼운 모델이 필요함)
-. 이미지에 대한 라벨링 작업이 필요한데, 데이터마다 라벨링이 모두 다르기에 이를 통일(전처리)하는데 어려움이 있음
( 같은 사진에 다른 caption이 매핑되어 이를 맞추는 등의 다양한 전처리 작업 또는 object detection annotations)
-. 한 사진에 대해 다양하게 설명될 수 있는데, 기존 모델들은 학습데이터에서 살펴본 문장에 한하여 이미지 설명을 도출함
5) 제작의도 : 대량의 데이터로 학습한 모델(clip, gpt2, transformer 등)을 활용하여 image caption 모델을 제작하자
6) 데이터의 입출력
-. Training
* input : Clip encoder (image)embeddings vector + image caption
* output : image caption
-. Inference
* input : clip encoder (image)embeddings vector
* output : image caption
7) Clip과 언어모델(transformer, gpt2)를 연결하기 위해 MLP를 사용하였고,
pre-training 시 clip과 언어모델은 freeze하고 MLP만 학습시키는 방식으로 훈련시간과 비용을 절감함
8) 저자들이 말하는 기여점은
① 새로운 데이터가 있을 때마다 빠르게 학습 시킬 수 있도록 pre-trained model frozen을 통해 가벼운 모델을 만들었고
② 언어모델을 fine-tuned 할 수 있도록 모델을 간소화하였다고 이야기합니다.
( 제 생각에는 결국 같은 말인거 같은데.. 풀어서 설명을 해놓으셨더라구요.. 논문에서.. )
1. Introduction
-. image caption task는 크게 2가지의 어려움이 있습니다.
-. 첫째, 이미지의 의미를 이해하는 것 -> clip으로 해결
-. 둘째, 이해한 이미지를 표현하는 것 -> GPT2 or Transformer로 해결
그러나, clip과 GPT2 등의 언어모델을 사용한다고 하더라도,
이미지와 caption을 연결((mapping between image and text representations) 부분에서 아직도 어려움이 남아 있습니다.
이러한, 문제를 해결하기 위해 저자들은 Prefix, Mapping Network(MLP)를 제작하여 접근하였습니다.
※ Prefix : Clip image encoder를 통해서 추출된 image embedding vectors
※ MLP : Multi-layer perceptron
이러한 접근은 다양하고 풍부한 문장을 생성하는데 기여했다고 합니다.
또한, GTX1080 GPU를 이용하여 80hours정도면 학습이 완료될 수 있으니, 얼마나 가벼운 모델인지 감이 오시죠?
2. Related Works
-. Clip은 image encoder와 text encoder를 가지고 있는데 해당 논문에서는 text encoder를 사용하지 않고 language model을 사용합니다.
-. 기존에 많은 모델들이 image와 text를 연결하려는 시도가 있었지만, dataset에 따라 추가적인 annotations이 필요했습니다.
-. 그러나, clipcap에서는 clip을 사용하면 이러한 추가적인 annotations이 필요하지 않다.
-. 또한, 기존 모델들은 최적화를 위해 CIDEr을 수행했는데, 여기서는 훈련시간을 줄이기 위해 의도적으로 최적화를 하지 않습니다.
3. Method
-. 해당 논문에서의 목표를 다시 정의해보자면, 한번도 보지 못한 입력 이미지로부터 의미있는 caption을 생성하는 것입니다.
-. cⁱ : i번째 caption
-. cₗ : Caption tokens max length
-. θ : Model's trainable parameters
-. x : Image embedding
-. k(const) : prefix length
-. p : prefix embedding
-. Z : concat p and c
(3) 수식에 대한 설명
- . Input image(x) to CLIP -> CLIP embeddings
- . Mapping CLIP embedding to k embedding vector
- . F is tanh activation Function
- . Activation Function make prefix embedding
(4) 수식에 대한 설명
- Concat Prefix embedding to Caption tokens
- During training, feed the language model with prefix-caption concatenation
- Training objective is predicting the caption tokens
(5) 수식에 대한 설명
- (5) is cross-entropy loss, predicting word after word
- clip image encoder를 통해서 추출된 prefix에는 image에 대한 features가 MAX value가 되어 있고, 다음 토큰을 예측하기 위해 auto-regressive language model을 사용하였습니다.
3.1 Overview
-. Clipcap component(구성요소)와 그 목적을 정리하보면,
* clip image encoder를 사용하여 image embedding 추출합니다.
* gpt2 & gpt2 tokenizer를 사용하여 caption sequence fo embeddings vectors를 추출합니다.
* mapping network를 ${F}$ 로 표현하고, image embedding -> K image embedding vectors로 변환합니다.
※ K : prefix length
-. 훈련할 때는 prefix-caption concatenation 을 입력으로 넣어주고,
-. 훈련의 목표를 주어진 prefix에 따른 caption token을 예측하는 자동회귀 방식으로 진행하게 됩니다.
3.2 Language model fine-tuning
-. 제가 이 논문을 읽게 된 계기는 image vectors와 text embedding vector를 어떻게 연결 방식이 궁금하여 읽게 되었습니다.
* 결론부터 말씀드리자면, clip image encoder를 통해 생성한 image embedding vector의 shape을 변경하여 MLP를 제작하게 됩니다. 이 부분이 궁금하시다면, clipcap github에 있는 코드를 참고하시면 됩니다. 이렇게 생성된 MLP가 mapping network로 활용되어 이미지 정보를 공유하게 됩니다.
-. 논문 저자들도 이 고민을 "Our main challenge"라고 표현하였고, 중요한 이슈였으며 위와 같은 아이디어는 새로운 패러다임이라고 소개합니다.
* clip과 gpt2는 다양하고 풍부한 representation을 가지고 있으며,
* 이들은 각각의 독립적인 latent spaces로 존재합니다.
* 그러기에 합쳐서 훈련해서는 안된다고 합니다.
* 또한, 많은 Datasets에서는 caption을 다 다른 스타일로 표기해두었기에 이러한 전처리 작업이 어렵다고 이야기 합니다.
* 이러한 이유로 저자들은 mapping network를 훈련하는 동안 언어모델을 fine-tuning하는 방식을 제안하게 됩니다.
* MLP + GPT2 architecture는 fine-tuning할 때 gpt도 훈련이 되게 됩니다.
* 결과적으로 mapping network만 fine-tuning하는 것이 유연하고 풍부한 결과를 얻을 수 있도록 하였습니다.
-. 하지만, fine-tuning은 파라미터 수를 증가시킨다는 단점이 있기에 저자들은 다시 고민에 했다고 이야기하고 있습니다.
* 이러한 이유로 저자들은 mapping network만 pre-train하기로 결정하였습니다. 그렇게 하기 위해 MLP을 Transformer에 태우는 방식을 적용하게 됩니다.
* 이때 언어모델을 frozen함으로써 mapping network가 언어모델에 수렴하도록 학습을 시키게 됩니다.
* 이는 gpt2가 문장을 잘 생성한다는 전제가 있기 때문에 가능한 방법입니다.
* 아래 표는 MLP + GPT2와 Transformer + GPT2가 inference할 때 어떤 식으로 shape 변하게 되는지를 요약해둔 내용입니다.
3.3 Mapping Network Architecture
-. Transformer를 language model로 사용하는 또 다른 장점은 바로 prefix length를 늘릴 수 있다는 점 입니다.
-. Prefix length 길이가 늘어나게 되면, Image embedding vector 내 있는 이미지 정보를 더 많이 뽑아 볼 수 있게 됩니다.
-. 위에 표를 보시면, prefix length가 길어질 때마다 많은 양의 정보가 담기는 것을 관찰 수 있습니다.
3.4 Inference
-. input : clip encoder (image)embeddings vector
-. output : image caption
-. output을 출력하는 방법
* 빔서치를 활용하는 방법
* clipcap 구조를 그대로 사용하는 방법
* 결과적으로 빔서치를 이용하지 않는 방법
* 빔서치를 사용하지 않는 이유 : Though some methods utilize object tags of the novel classes, we only consider the setting of no additional supervision, as we find it more applicable in practice. Therefore, we do not employ a constrained beam search
4. Results
-. 다양한 실험을 진행하였는데, Dataset은 무엇을 사용하고 Baseline은 어떻게 설정하였는지,
-. 그 외 어떤 조건을 변경하며 실험을 하였는지 살펴보도록 하겠습니다.
4.1 Datasets
-. dataset의 종류 : conceptual caption / nocaps datasets / COCO-caption
-. COCO-caption dataset은 80 class를 가지고 있으므로 이를 훈련에 사용하였습니다.
-. 그리고 nocaps datasets을 unseen class로 validation and test set으로 일반화성능을 측정합니다.
-. nocap dataset에서 clipcap 모델의 성능이 높음을 확인할 수 있고, nocap은 크게 3가지로 나누어서 성능을 측정하게 됩니다.
* in-domain : COCO dataset에 있는 클래스
* near-domain : 새로운 클래스와 COCO dataset 내에 있는 클래스
* out-of-domain : 새로운 클래스
4.2 Baselines
-. BUTD : LSTM을 이용하여 caption을 제작하는 모델
-. VLP and Oscar : transformer를 활용하여 제작한 모델
-. clipcap의 base model : Ours;Transformer
-. clipcap의 fine-tunde model : Ours;MLP + GPT2 tuning
※ ROUGE : n-gram recall로 ROUGE-L은 가장 긴 Sequence의 Recall을 평가하는 방식
※ CIDEr(Consensus-based Image Description Evaluation) : reference caption과 candidate caption의 n-gram간 유사도를 이용하여 평가하는 방식
※ SPICE : CIDEr이 reference caption과 candidate caption의 단순한 n-gram의 겹침이 주가 된다는 문제점을 지적하며 Semantic scene graphs를 제작하고 graph간의 F1-score를 측정하는 방식
4.3 Evaluation metrics
-. COCO dataset : BLEU, METEOR, CIDEr, SPICE
-. nocaps dataset : CIDEr, SPICE
-. Conceptual Captions : ROUGE-L, CIDEr, SPICE
-. Clipcap의 훈련시간까지 함께 체크하였고, 다른 모델들에 비해 훨씬 적은 시간이 걸린다는 것을 관찰할 수 있다
나머지 4.4~4.7까지는 저자들이 어떠한 고민을 하였는지 알 수 있는 부분이니 읽어보면 좋을듯 합니다.
4.9 Mapping network
-. 이곳에서는 ablation study에 대한 실험 이야기를 기재해 놓은 곳입니다.
-. ablation study는 "machine learning system의 building blocks(여기에서는 Mapping network)을 제거해서 전체 성능에 미치는 효과에 대한 insight를 얻기 위한 과학적 실험" 방법을 의미합니다.
4.10 Implementation details
-. K = 10 을 논문에서 사용하였고
-. AdamW optimization을 사용하였으며,
-. weight decay는 Loshchilov et al. [24]에서 소개한대로 고정하여 사용하였습니다.
-. learning rate는 2${e^-5}$ 이고 warm-up 은 5000step으로 사용하였습니다.
-. GPT2는 Wolf et al. [41]에 있는 설정으로 세팅되었습니다.
5. Conclusion
-. clipcap은 추가적인 annotation이 필요하지 않고
-. 빠르게 학습을 할 수 있으며,
-. 다양한 데이터셋에 적용할 수 있다는 장점을 가지고 있습니다.
-. 이러한 접근 방식을 3D 등에 접목해 볼 수 있다고 소개하며 논문은 마무리됩니다.
이상으로 논문 소개를 마치도록 하겠습니다.
틀린 점 이상한 점이 있으시면 언제든 댓글로 문의 부탁드립니다.
감사합니다