[2022 Neurocomputing]CLIP4Clip: An empirical study of CLIP for end to end video clip retrieval and captioning

오늘 리뷰할 논문은 이미지-텍스트 사전학습 모델인 CLIP을 비디오-텍스트 검색(Video-Text Retrieval)으로 확장한 모델인 CLIP4Clip에 관한 것입니다. 저자는 CLIP의 강력한 멀티모달 표현력을 활용하면서도, 비디오라는 시간 정보를 가진 입력에 맞게 구조를 개선하고, 영상-텍스트 검색에서의 성능을 높이는 방안을 제안하였습니다.



1. Introduction

비디오-텍스트 검색(Video-Text Retrieval)은 대표적인 멀티모달 태스크로, 실제 웹 서비스에서도 많이 활용되는 중요한 기술입니다. 사용자가 특정 문장을 입력했을 때, 그에 대응하는 영상을 검색해주는 것이죠. 기존 Video-Text Retrieval 모델은 대부분 고정된 영상 피처를 사용하는 feature-level 방식이었으며, 표현력에 한계가 있었습니다. 반면 raw video를 직접 학습에 사용하는 방식은 계산량이 크다는 단점이 있었죠. CLIP처럼 이미지-텍스트 간 표현력이 뛰어난 모델이 등장하면서, 이를 비디오 도메인에 전이하려는 시도가 본격화되었습니다.

하지만 CLIP은 이미지 기반 모델이기 때문에, 영상 내 프레임 간의 시간적 관계를 학습하지 못한다는 한계가 있었습니다. CLIP 모델을 기반으로 하되, 영상을 구성하는 여러 프레임 정보를 효과적으로 텍스트와 정렬할 수 있도록 설계된 CLIP4Clip을 제안하였습니다. CLIP을 비디오 검색에 활용하기 위해 제안된 방법으로 이해하시면 좋을 것 같습니다. 구체적으로, 비디오와 텍스트 간의 유사도를 계산하는 다양한 방식 (parameter-free, sequential, tight type)과, 대규모 영상-텍스트 데이터셋(HowTo100M)을 활용한 post-pretraining을 통해 성능을 향상시키는 방법도 함께 제안하였습니다.

2. Method

저자는 CLIP을 기반으로, 비디오-텍스트 사이 유사도를 계산할 수 있도록 확장한 CLIP4Clip을 제안하였습니다. CLIP4Clip은 크게 세 가지 구성 요소로 이루어져 있습니다: 텍스트 인코더, 비디오 인코더, 그리고 Similarity Calculator. 전체적인 구조는 상단 그림 1을 참고하면 이해가 쉬운데, 영상은 프레임 단위로 나눈 후 ViT 구조 기반 인코더를 통해 feature를 추출하고, 텍스트와의 유사도를 계산합니다.

2.1 Video Encoder

CLIP4Clip의 비디오 인코더는 CLIP에서 사용한 ViT-B/32 구조를 그대로 사용합니다. 영상은 여러 프레임으로 나뉘며, 각 프레임은 2D 패치 단위로 나뉘고, Linear Projection을 거쳐 Transformer에 입력됩니다. 이 과정을 통해 프레임마다 CLIP 스타일의 임베딩이 생성됩니다. 이 때, 저자는 시간 정보를 더 잘 반영하기 위해 두 가지 Linear Projection 방식을 실험하였습니다.

  • 2D Linear: 각 프레임을 독립적으로 처리하는 방식 (CLIP 기본 구조)
  • 3D Linear: 여러 프레임의 패치를 시간축을 따라 동시에 처리하여 temporal 정보를 반영하는 방식

결론을 정리하자면, 3D 방식은 시간 정보를 인코딩할 수 있다는 장점이 있지만, CLIP은 원래 2D 방식으로 학습되었기 때문에 성능 상 불리할 수도 있다고 합니다.

2.2 Text Encoder

텍스트 인코더는 CLIP의 텍스트 인코더를 그대로 사용하며, 마지막 [EOS] 토큰의 출력값을 텍스트 임베딩으로 사용합니다. 구조는 Transformer 기반이며, 총 12 layer, 8-head의 self-attention으로 구성됩니다.

2.3 Similarity Calculator

텍스트와 비디오 프레임 간의 유사도를 계산하기 위해, 저자는 세 가지 방식의 Similarity Calculator를 제안하였습니다.

Parameter-free type (Mean Pooling):
프레임별 임베딩을 단순 평균 내어 하나의 ‘평균 프레임 표현’을 만들고, 텍스트 임베딩과 코사인 유사도를 계산합니다. 새로운 학습 파라미터가 없기 때문에 작은 데이터셋에서도 안정적인 성능을 보일 수 있다는 장점이 있습니다. 수식은 아래와 같습니다.

Sequential type (LSTM / Transformer):
프레임 간의 순서를 반영하기 위해 LSTM 또는 Transformer Encoder를 사용해 시간 정보를 인코딩합니다. position embedding을 추가하여 프레임 시퀀스를 순차적으로 학습한 뒤, 평균 풀링을 적용해 유사도를 계산합니다. 이후 계산은 Mean Pooling 방식과 동일합니다.

Tight type (Cross-modal Transformer):
영상과 텍스트 임베딩을 하나의 시퀀스로 concat한 후, 멀티모달 Transformer를 통해 유사도를 직접 학습합니다. 가장 많은 파라미터가 추가되며, cross-attention 과 같은 형태가 되죠. 아래 수식에서 U_i가 바로 concat 입력이되고, 이후 Transformer Encoder를 통과시켜 얻은 첫 번째 토큰 \tilde{U}_i[0]을 기반으로 유사도를 계산합니다.

다만 저자는 이 방식은 학습 파라미터가 많기 때문에, 데이터셋이 작을 경우 성능 저하가 발생할 수 있다고 합니다.

2.4 Training Strategy

CLIP4Clip은 비디오과 텍스트 간의 유사도를 학습하기 위해, 기존 CLIP 구조를 유지하면서도 비디오 입력에 맞춘 학습 전략을 적용하였습니다. 주요 학습 구성 요소는 크게 세 가지입니다: Loss Function, Frame Sampling, Pre-training.

2.4.1 Loss Function

학습은 Text-to-Video Video-to-Text 양방향 유사도를 동시에 고려하는 cross-entropy loss 기반으로 이루어집니다. 아래 수식에서 (4) 비디오→텍스트 유사도 기반 Loss (5) 텍스트→비디오 유사도 기반 Loss (6) 최종 Loss는 두 방향을 더한 형태

이처럼 양방향 유사도 정렬을 동시에 학습함으로써, 모델이 영상-텍스트 간의 정렬 관계를 더 안정적으로 학습할 수 있도록 설계하였습니다.

2.4.2 Frame Sampling

비디오는 여러 프레임으로 구성되어 있기 때문에, 전체 프레임을 모두 사용하기에는 계산 비용이 큽니다. 이에 따라 저자는 효율적인 학습을 위해 일정 수의 프레임만 추출하는 sampling 전략을 사용하였습니다.

  • Head sampling: 영상 앞부분 프레임을 순서대로 선택
  • Tail sampling: 영상 뒷부분 프레임을 선택
  • Uniform sampling: 전체 영상 길이를 기준으로 균등한 간격으로 프레임 선택

실험 결과, 대부분의 데이터셋에서 Uniform 방식이 가장 안정적인 성능을 보였으며, Tail sampling은 성능이 가장 낮게 나타났다고 합니다. 이는 영상의 중요한 정보가 전체에 걸쳐 분포한다는 점에서, Uniform sampling이 더 나은 시각 정보를 담을 수 있음 나타낸다고 하네요.

2.4.3 Pre-training

기본적으로 CLIP은 이미지-텍스트 페어를 기반으로 사전학습되었기 때문에, 시간 정보를 포함한 비디오-텍스트 도메인에 바로 적용하기엔 한계가 있습니다. 이를 보완하기 위해, 저자는 비디오-텍스트 대규모 데이터셋인 HowTo100M 중 약 38만 개의 샘플을 활용하여 post-pretraining을 수행하였습니다.

이 때 사용된 학습 방식은 MIL-NCE Loss 기반의 contrastive learning입니다.
MIL-NCE는 Multiple Instance Learning Noise-Contrastive Estimation의 약자로, 하나의 문장이 여러 개의 프레임(또는 클립) 중 어떤 부분과 정확히 대응되는지를 모를 때, 이를 포괄적으로 학습할 수 있도록 설계된 loss입니다.

예를 들어, 긴 영상에 대한 캡션 하나가 있을 경우, 캡션과 정확히 어떤 클립이 정렬되는지는 불확실하죠. 이럴 때 MIL-NCE는 영상 내 여러 클립을 모두 candidate로 두고, 그 중 최소 하나는 positive pair일 것이라는 전제 하에 학습을 진행합니다. 즉, “이 문장은 이 영상의 일부 구간과 반드시 관련이 있을 것이다”라는 가정을 기반으로, 영상 전체를 구성하는 클립 중 가장 유사한 것을 정답으로 간주해 contrastive loss를 계산한다고 합니다.

이 방식은 긴 영상과 짧은 문장 간의 정렬이 불완전한 경우에도 학습이 가능하다는 장점이 있으며, 저자는 이를 통해 CLIP4Clip의 비디오 인코더가 영상 내 핵심 정보에 집중할 수 있도록 설계하였습니다. Post-pretraining은 주로 parameter-free 구조(mean pooling)에 적용되었으며, 실험 결과 zero-shot 및 fine-tuning 상황 모두에서 성능이 향상되는 것으로 나타났습니다.

3. Experiments

저자는 제안한 CLIP4Clip의 성능을 검증하기 위해 총 다섯 개의 영상-텍스트 검색 벤치마크에서 실험을 수행하였습니다: MSR-VTT, MSVD, LSMDC, ActivityNet, DiDeMo. 실험은 Text-to-Video Retrieval 기준으로 수행되었으며, 평가 지표로는 Recall@1, 5, 10, Median Rank(MdR), Mean Rank(MnR)를 사용하였습니다.

3.1 Dataset

저자가 데이터셋을 정리해줬기도 했고, Video-Text Retrieval 리뷰는 처음이기에 한번 데이터셋도 간략하게 다뤄보겠습니다.

MSR-VTT Dataset | Papers With Code
  • MSR-VTT: 가장 널리 사용되는 영상-텍스트 검색 벤치마크 중 하나. 총 10,000개의 영상 클립과 20만 개의 캡션으로 구성되어 있으며, 평균 20초 길이의 영상과 하나당 20개의 캡션이 제공. 학습에 9,000개, 테스트에 1,000개 영상.
MSVD Dataset | Papers With Code
  • MSVD (Youtube2Text): 비교적 작은 규모의 데이터셋으로, 1,970개의 영상과 약 8만 개의 문장으로 구성. 각 영상에는 평균 40개 이상의 캡션이 존재하며, 짧은 문장들이 중심이라 zero-shot 또는 소규모 fine-tuning 성능을 확인하는데 많이 사용.
LSMDC Dataset | Papers With Code
  • LSMDC: 영화 장면 기반으로 수집된 대규모 데이터셋. 총 118,081개의 비디오-문장 쌍으로 구성되어 있으며, 비디오당 하나의 문장만 제공. 문장이 상대적으로 길고 복잡한 구조를 가지고 있어, 단순한 영상 설명을 넘어 구성적 의미 이해가 필요한 태스크.
ActivityNet Captions Dataset | Papers With Code
  • ActivityNet Captions: 한 영상 내 여러 segment와 각 구간에 해당하는 문장이 주어지는 paragraph-level 영상 설명 데이터셋. 총 20,000개 이상의 비디오 segment와 100,000개 이상의 문장으로 구성되어 있으며, 영상 하나가 여러 문장과 연결되기 때문에 Fine-grained retrieval 성능 평가 가능.
DiDeMo Dataset | Papers With Code
  • DiDeMo: 모바일 환경에서 촬영된 짧은 영상으로 구성된 데이터셋. 각 영상은 6개의 temporal segment로 나뉘며, 각 구간마다 사용자 주석 기반의 문장이 포함. 다른 데이터셋과는 달리 구간 단위의 정렬 능력을 요구하기 때문에, Temporal Localization이 중요한 실험 환경.

3.2 Experimental Details

영상과 텍스트 모두 기존 CLIP의 사전학습된 인코더를 그대로 사용하며, 학습 시 두 인코더는 함께 fine-tuning되었다고 합니다. 학습 초기에는 CLIP의 표현력을 보존하는 것이 중요하다고 판단하여, 처음 몇 epoch 동안은 일부 layer만 학습하도록 하고 이후 모든 layer를 fine-tuning하는 방식으로 안정적인 학습을 진행하였다고 합니다.

3.3 Comparison to the State of the Art

저자는 제안한 CLIP4Clip이 기존 영상-텍스트 검색 관련 SOTA(State of the Art) 모델들과 비교해 얼마나 경쟁력 있는 성능을 가지는지를 평가하였습니다. 총 다섯 개의 벤치마크 데이터셋(MSR-VTT, MSVD, LSMDC, ActivityNet, DiDeMo)을 기준으로 실험을 수행하였습니다.

(상단 테이블 1) CLIP4Clip은 기존 모델들인 MMT, SupportSet, Frozen, ClipBERT 등을 모두 능가하는 성능을 보였습니다. 특히 seqTransf 구조는 R@1 기준 44.5를 기록하여, Frozen(30.9), SupportSet(30.1)을 큰 차이로 넘겼습니다. 저자는 이는 CLIP의 강력한 표현력과 시계열 정보를 반영한 구조 설계가 결합된 결과라고 설명하였습니다.

(상단 테이블 2) MSVD 데이터셋에서는 meanP 구조가 가장 높은 성능(R@1 46.2, R@5 76.1)을 보였으며, 기존 ClipBERT(22.0), SupportSet(30.1) 대비 큰 차이를 보였습니다. 소규모 데이터셋에서는 파라미터가 적은 구조가 더 효과적이라는 점이 실험을 통해 확인되었습니다.

(상단 테이블 3) 기존 MDMMT, HiT 모델들보다 높은 R@1을 기록하였으며, seqTransf 구조가 22.6을 달성하여 가장 좋은 결과를 보였습니다. 단일 문장만 제공되는 데이터셋 특성상, 문장과 클립 간의 정밀한 정렬 능력이 중요하다는 점에서 CLIP4Clip의 구조적 강점이 드러났다고 볼 수 있습니다.

(상단 테이블 4) CLIP4Clip은 R@1 기준 40.5, R@5 기준 76.6, R@50 기준 98.2를 기록하였으며, SupportSet 및 W2VV++을 크게 앞섰습니다. 긴 영상과 복잡한 문장 구성에서도 안정적인 검색 성능을 보인 점이 인상적이었다고 합니다.

(상단 테이블 5) 기존 Frozen 모델은 R@1 기준 16.5였던 반면, CLIP4Clip의 meanP 구조는 25.0을 기록하며 큰 향상을 보였습니다.영상 내 temporal segment와 문장 간의 정밀한 매칭이 필요한 데이터셋에서도 효과적이라는 점을 보여주었습니다.

3.4 Post-pretraining on Video Dataset

CLIP은 이미지-텍스트 기반으로 사전학습되었기 때문에, 영상 내 시간 정보를 효과적으로 학습하기 위해서는 추가적인 pretraining이 필요합니다. 이를 위해 저자는 HowTo100M 데이터셋에서 38만 개의 영상-문장 쌍을 사용하여 post-pretraining을 수행하였습니다.

실험 결과, post-pretraining은 특히 zero-shot setting에서 큰 성능 향상을 가져왔습니다. MSVD ZS R@1 36.2 → 38.5 / LSMDC ZS R@1 13.6 → 15.1 Fine-tuning 후에도 소폭 향상되었으며, 기존 표현력 손실 없이 시간 정보 학습이 가능하다는 점을 보여주었습니다.

3.5 2D/3D Patch Linear

영상 입력을 Transformer에 넣기 전, 각 프레임의 시각 정보를 어떤 방식으로 패치화하고 투영할 것인지를 결정하는 것도 중요한 요소입니다. 저자는 두 가지 방식을 비교하였습니다:

  • 2D Patch Linear: 각 프레임을 독립적으로 처리 (CLIP 원 구조)
  • 3D Patch Linear: 시간축을 포함하여 여러 프레임을 동시에 처리해 temporal 정보를 반영

3D 방식은 시간 정보를 직접 인코딩할 수 있는 장점이 있지만, CLIP은 원래 2D 구조로 학습된 모델이기 때문에 새로운 방식이 오히려 표현력을 저해할 수 있는데, 이는 실험을 통해 확인할 수 있었습니다.

MSR-VTT 기준, 2D 방식이 R@1 43.1을 기록한 반면, 3D 방식은 41.6으로 성능이 하락하였고, 다른 데이터셋에서도 비슷한 경향이 나타났습니다. 저자는 이 결과를 통해, CLIP의 사전학습된 표현력을 활용하려면 2D 구조를 유지하는 것이 현재로서는 더 효과적이라는 결론을 내렸습니다.

4. Conclusion

본 논문은 이미지-텍스트 사전학습 모델인 CLIP을 기반으로 하여, 영상-텍스트 검색(Video-Text Retrieval) 태스크에 효과적으로 확장한 CLIP4Clip을 제안하였습니다. 저자는 CLIP의 강력한 표현력을 그대로 유지하면서, 시간 정보를 포함하는 영상 입력에 적합한 구조로 조정하고, 다양한 유사도 계산 방식(parameter-free, sequential, tight)을 실험적으로 비교하였습니다. 실험 결과, CLIP4Clip은 MSR-VTT, MSVD, LSMDC, ActivityNet, DiDeMo 등 다양한 벤치마크에서 기존 SOTA 모델들을 능가하는 성능을 보여주었으며, 구조 선택에 따라 데이터셋 특성에 맞는 성능 최적화가 가능함을 확인하였습니다.


CLIP4Clip은 Video-Text Retrieval의 토대가 되는 백본으로 활용되고 있는 것 같아 리뷰하게 되었습니다. 이미지 중심의 CLIP 모델이 시간 정보를 포함한 비디오-텍스트로 자연스럽게 활용되기 위한 간단한 변형을 잘 보여준 것 같습니다.

Author: 홍 주영

3 thoughts on “[2022 Neurocomputing]CLIP4Clip: An empirical study of CLIP for end to end video clip retrieval and captioning

  1. 좋은 리뷰 감사합니다. 리뷰 읽다 궁금한 점이 두 가지 생겨 질문 드립니다.

    CLIP의 구조를 거의 그대로 활용해서 video-text 간 유사도를 계산할 수 있다는 점이 흥미롭네요. 여기서 궁금한 점이 있는데, frame sampling을 했다고 하더라도 동영상이기에 temporal 축으로 영상이 많아져 유사도를 계산하기 위한 feature의 차원이 너무 커지지 않을까 하는 생각이 드는데요, 보통 샘플링을 몇 프레임 정도 하게 되나요? 이 값은 고정된 하이퍼파라미터 값인가요 아니면 동영상 길이에 따라 가변적인 것인가요?
    또, video retrieval 쪽 논문을 살펴보신 이유도 궁금합니다. 향후 해당 분야의 연구를 수행하실 계획이신건가요?

    감사합니다.

  2. 안녕하세요, 좋은리뷰 감사합니다.
    제가 전반적인 흐름을 이해하지 못했을 수 있습니다만, transformer 의 input으로 들어갈 2D 및 3D path 임베딩 벡터들중에서 clip 의 구조에 맞는 2D 패치 임베딩이 현재로서는 더 효과적이라고 논문 결과가 보여주는 것 같습니다. 다만 3D 패치가 만들 수 있는 시간적 정보가 아무래도 video-text 의 관점에서 미래에는 쓰일 수 있다고 생각하시는지 궁금합니다. 단지 모델의 구조적 한계인지? 궁금합니다.
    감사합니다.

  3. 안녕하세요 홍주영 연구원님! 좋은 리뷰 잘 읽었습니다.
    CLIP이 이미지와 텍스트간의 관계를 잘 학습했던 것을 이용해 video-text retrieval에 적용했다는 점이 흥미롭습니다.
    저도 궁금한 게 있는데요 시간 순서를 고려하기 위해서 2D 패치를 시간축으로 연결되는 패치들을 하나로 묶어 비디오 인코더에 전달한다고 이해했습니다. 이렇게 3D 패치로 들어가서 인코더 안에서 시간 순서가 고려되면서 패치간의 관계가 학습되는지가 궁금합니다. 또한 평가지표로 사용하는 Recall 뒤에 붙는 숫자 1, 5, 10이 무엇을 의미하는지도 궁금합니다.
    감사합니다.

류 지연에 답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다