안녕하세요 정의철 연구원입니다. 이번에도 Text-Video Retrieval 논문을 리뷰하고자 합니다. 이번에 소개할 방법론은 2022년 논문이지만 여러 논문에서 baseline이 되는 방법론이기에 꼭 한 번 공부해볼 필요가 있다고 생각해 리뷰하게 되었습니다. 그럼 바로 리뷰 시작하겠습니다.
1. Introduction
요즘 유튜브나 틱톡, 넷플릭스 같은 플랫폼 덕분에 우리는 전 세계에서 쏟아지는 비디오 콘텐츠를 쉽게 접할 수 있게 되었습니다. 이렇게 많은 영상들 속에서 우리가 궁금한 정보를 담은 영상을 빠르게 찾기 위해서는 텍스트와 영상이 서로 얼마나 관련 있는지를 파악해서 가장 잘 맞는 영상을 찾는 기술이 필요합니다. 이런 기능을 가능하게 해주는 기술이 바로 Text-Video retrieval 입니다. 보통 이 task에서는 텍스트와 비디오를 어떤 ‘joint latent space’에 임베딩 한 다음, 그 두 임베딩이 얼마나 가까운지를 측정하는 방식으로 이뤄집니다. 여기서 많이 쓰이는 게 cosine similarity 같은 거리 계산 방법입니다.

그런데 문제는, 영상이라는 매체는 텍스트보다 훨씬 더 많은 정보를 담고 있다는 점입니다. 하나의 영상은 수십, 수백 개의 장면으로 구성되어 있습니다. 반면 텍스트는 그중 일부만을 묘사합니다. 예를 들어, 그림1에서는 한 뉴스 영상 안에 교황이 사람들에게 축복을 주는 장면도 있고, 버스 사고 장면도 있고, 연설중인 장면도 있을 수 있습니다. 이러한 비디오 영상에 대해 평균 연산을 적용하여 하나의 임베딩 값으로 뽑아낸다면 retrieval 모델이 텍스트 쿼리를 입력받았을때, 텍스트와는 관계없는 장면까지 포함될 수가 있습니다. 그러면 검색 결과가 부정확해질 수 있겠죠. 따라서 올바른 retrieval task를 수행하기 위해서는 비디오 전체를 보는 것이 하니라 입력된 텍스트와 가장 관련 있는 부분(프레임)을 찾는 것이 중요합니다.
하지만 기존 모델들은 mean-pooling이나 self-attention과 같은 방법을 통해 비디오의 전체 내용을 인코딩하는 방식이 대부분입니다. 이러한 방식은 텍스트에 없는 장면까지도 모델이 고려하게 만들어서, 결과적으로 검색 성능이 떨어지는 문제가 있습니다.
이러한 문제를 해결하기 위해 저자는 X-Pool이라는 모델을 새롭게 제안합니다. 이 모델은 기존 방법론들과 달리 텍스트와 비디오 프레임 사이의 직접적인 연관성을 추론할 수 있도록 설계됐습니다. 다시 말해, 영상 전체를 무작정 요약하지 않고, 텍스트와 가장 잘 맞는 특정 장면들만 뽑아서 집중하는 구조입니다. 그런 다음 그 장면들을 바탕으로 비디오를 표현하는 방식을 사용합니다.
저자의 contribution은 다음과 같습니다:
- text-conditioned video pooling이 효과적이란 것을 실증적으로 입증
- cross-modal attention 기반의 X-Pool 모델 제안
- 다양성이 높은 비디오에서도 높은 성능을 유지한다는 것을 입증
2. Problem Statement
Text-Video retrieval에서는 주어진 텍스트(t)와 비디오(v) 간의 유사도를 계산하는 함수 s(t,v)를 학습하는 것을 목표로합니다. 모델은 관련 있는 텍스트-비디오 쌍에는 높은 점수, 관련 없는 쌍에는 낮은 점수를 주도록 학습됩니다. Retrieval task에는 Text-Video retrieval(t2v)과 비디오-텍스트 retrieval(v2t)의 종류가 있습니다. t2v에서는 쿼리 텍스트(t)가 주어질때 각 비디오 v∈V 간의 유사도를 계산해서 비디오를 순위화하는 게 목표이고, v2t에서는 쿼리 비디오 (v)와 각 텍스트 t∈T 간의 유사도를 계산해서 텍스트를 순위화하는 것이 목표입니다. 모델의 입력 데이터를 더 자세히 살펴보면 비디오 v는 단순한 하나의 이미지가 아니라, 시간 순서대로 구성된 여러 개의 프레임으로 이루어진 시퀀스입니다. 수식으로 살펴보면 다음과 같고

여기서 F는 프레임 개수를 의미합니다. 즉, v=[v1,v2,…,vF]⊤ 처럼 각 프레임들이 차례대로 나열된 구조를 가집니다
정리하면, 모델은 이 비디오 프레임 시퀀스와 토큰화된 텍스트 시퀀스를 받아서 둘 사이의 유사도 점수를 계산하고, 이걸 기반으로 가장 적절한 검색 결과를 정렬하는 겁니다.
3. Methodology
3.1 Expanding Joint Text-Image Models
Bootstrapping From Joint Text-Image Models
요즘 많은 연구에서 텍스트와 이미지를 동시에 이해하는 모델들이 좋은 성능을 보여주고 있다는 점은 잘 알려져 있습니다. 대표적인 예로는 CLIP 모델이 있죠. 이 모델들은 텍스트와 이미지를 Joint space에 넣고, 서로 의미적으로 얼마나 유사한지를 잘 파악할 수 있게 훈련되어 있습니다. 저자는 이러한 모델의 기존 텍스트-이미지 추론 능력을 활용하여 Joint Text-Video 모델을 bootstrapping 하고자 합니다. CLIP모델을 Bootstrapping하면 비디오 데이터를 많이 사용하지 않아도 되고, 학습이 효율적이며 사전 훈련된 텍스트-이미지 모델의 표현력을 자연스럽게 가져올 수 있다는 장점을 가지고 있습니다.
CLIP as a Backbone
CLIP으로부터 부트스트랩하기 위해, 저자는 먼저 텍스트와 개별 비디오 프레임을 joint latent space에 임베딩 한 후, 프레임 임베딩을 풀링하여 비디오 임베딩을 얻습니다. 이를 수식으로 표현하면 다음과 같이 표현됩니다.

주어진 텍스트 t는 CLIP의 텍스트 인코더 ψ를 통해 임베딩되고, 비디오 v는 여러 프레임 vf로 구성되어 있고, 각 프레임은 CLIP의 이미지 인코더 ϕ를 통해 임베딩됩니다. 이걸 모든 프레임에 대해 반복하면 프레임 임베딩들의 시퀀스 Cv=[cv1,cv2,…,cvF]∈RF×D를 얻게 됩니다.
Computing Text and Video Embeddings
이제 이걸 바탕으로 최종 텍스트-비디오 유사도를 계산하려면, 텍스트와 비디오 각각을 하나의 벡터로 표현해야됩니다.

텍스트 임베딩은 이전 값을 바로 사용하고 비디오 임베딩은 여러 프레임 임베딩들을 하나로 통합하는 과정을 거칩니다. 이때 사용하는 함수가 emporal aggregation function ρ입니다. 이렇게 하면 텍스트 임베딩과 비디오 임베딩을 같은 공간에 위치시킬 수 있고, 둘 사이의 유사도를 계산할 수 있게 됩니다.
3.2 Gap: Text-Agnostic Pooling
앞에서 비디오를 여러 프레임으로 나눈 다음, 이걸 하나의 벡터로 통합하여 텍스트와 비교한다고 말씀드렸습니다. 그런데 여기서 중요한 문제가 있습니다. 지금까지 대부분의 연구들은 비디오 프레임들을 통합하는 방법으로 mean pooling, self-attention, LSTM 같은 기법을 사용했습니다. 이런 기법들은 입력된 텍스트를 전혀 고려하지 않고, 비디오 자체만 보고 판단합니다. 다시 말해, 어떤 텍스트가 주어졌든, 영상의 모든 프레임을 동일하게 다루는 거죠.
이런 방식이 simple baseline 될 수는 있지만, 실제로는 큰 한계점이 있습니다. 왜냐하면, 비디오는 텍스트보다 훨씬 더 많은 정보를 담고 있는 매체이기 때문입니다. 예를 들어, 텍스트가 “교실에서 발표하는 학생”이라고 말할 때, 비디오에는 발표 장면뿐 아니라 책상, 창문, 다른 사람들, 심지어 배경 음악까지 다양한 정보가 함께 들어 있죠. 텍스트가 말한 건 그중 “발표하는 장면”뿐인데, 나머지 정보까지 함께 인코딩해버리면 오히려 노이즈가 될 수 있는 겁니다. 저자는 이를 텍스트가 특정 sub-regions만을 표현한다고 말하고 있습니다.
여기서 content diversity 이라는 개념이 등장합니다. 이 개념은 비디오가 하나의 주제만 담고 있는 게 아니라 서로 다른 장면, 배경, 움직임 등 여러 종류의 시각적 내용을 포함하고 있다는 것을 뜻합니다. 실제로 유튜브나 영화처럼 wild하게 찍힌 영상들은 대부분 이런 다양성을 가지고 있습니다. 그래서 이런 상황에서 텍스트를 고려하지 않고 단순히 전체 프레임을 평균 내는 방식은 제대로 작동하지 않을 수밖에 없습니다. 따라서 저자는 단순히 비디오 전체를 통합하는 것이 아니라, 텍스트를 바탕으로 어떤 프레임이 중요할지를 판단하고, 그 프레임들만 골라서 학습하는 방식을 제안합니다.
3.3 Key Insight: Text-Conditioned Pooling
이제 어떻게 텍스트와 가장 의미적으로 유사한 프레임들만 선택하는지 알아보겠습니다. 저자는 새로운 방식의 temporal aggregation function π를 제안합니다. 이 함수는 단순히 비디오 프레임을 평균 내는 게 아니라, 입력된 텍스트 t를 기준으로, 의미적으로 가장 유사한 프레임만 골라서 그 정보만 통합하는 방식입니다. π를 t에 조건화함으로써, 비디오 v에서 가장 관련성 높은 정보를 추출할 수 있으며 이를 수식으로 표현하면 다음과 같습니다.

이때 이 임베딩을 zv∣t 라고 표현하고, 텍스트 임베딩 zt 와의 유사도는 코사인 유사도로 계산합니다. 그럼 이제 본격적으로 구현을 해야하는데 직관적이고 간단한 방법으로 Top-k 방식이 있습니다. 이는 말 그대로 텍스트와 가장 유사한 프레임 상위 k개만 뽑아서 평균 내는 방식입니다.

여기서 K는 어떤 프레임들을 선택할지 나타내는 집합인데, 텍스트 임베딩 ct와 각 프레임 임베딩 cfv 사이의 코사인 유사도가 높은 순서로 상위 k개를 고릅니다. 저자는 이 단순한 top-k 방식만 써도 기존의 텍스트를 무시하고 전체 프레임을 다 평균내는 방식보다 훨씬 성능이 좋다는 것을 발견합니다.
3.4 Our Model: X-Pool
Towards Parametric Text-Conditioned Pooling
지금까지 설명한 top-k 프레임 선택 방식은 단순하고 효과적이긴 했지만, 한계도 분명히 존재합니다.
- k 값을 직접 설정해야 한다는 문제
- 단순히 코사인 유사도만 보고 선택하는 건 깊은 의미 추론이 어렵다는 단점
- 유사도가 낮은 프레임은 완전히 무시된다는 단점
저자는 이런 문제를 해결하고자 parametric approach, 즉 학습 가능한 방식의 text-conditioned pooling을 제안합니다(X-Pool).
Cross-Modal Language-Video Attention.
X-Pool의 핵심은 텍스트와 비디오 프레임 사이의 의미적 관련성을 스스로 학습하는 attention 메커니즘을 활용하는 것입니다. 그냥 가장 유사한 프레임을 고정된 기준으로 고르는 것이 아니라, 모델이 텍스트 내용에 따라 어떤 프레임이 중요한지를 직접 배울 수 있게 설계된 거죠. 이 과정에서 사용된게 scaled dot-product attention입니다. 이건 Transformer에서도 사용하는 방식인데, 텍스트를 쿼리로 하고, 비디오 프레임을 키와 값으로 만들어서 연관성 있는 정보를 뽑아내는 방식입니다. 수식으로 설명 드리면 다음과 같습니다.

텍스트 임베딩 ct를 쿼리 Qt로 변환, 비디오의 프레임 임베딩 Cv는 key Kv와 value Vv로 projection.
이후 아래 attention 계산을 통해, 각 프레임이 텍스트와 얼마나 관련 있는지 가중치를 계산합니다.

이렇게 해서 얻은 attention 결과는 텍스트에 가장 잘 맞는 프레임들의 정보를 적절히 섞어 만든 비디오 임베딩이 됩니다. 이걸 rv∣t 라고 부르고 이를 다시 FC layer와 residual connection을 통해 조금 더 복잡한 표현으로 만들어줍니다.


아래 그림 2에서는 저자가 제안한 X-Pool 모델이 실제로 어떻게 텍스트를 기준으로 비디오 프레임을 선택하고 통합하는지 보여줍니다.

첫 번째 예시에서 텍스트는 “a man yelling at and punching a sink”를 표현하고 있습니다. 그런데 해당 영상에서는 초반엔 그 장면이 나오고, 후반에는 전혀 다른 장면, 즉 차 옆에 서 있는 남자가 등장합니다. 이건 텍스트와는 관련이 없는 방해 요소로 작용합니다. 여기서 X-Pool 은 텍스트와 진짜 관련 있는 초반 프레임들에 더 높은 가중치를 주고, 텍스트와 무관한 뒷부분은 무시하게 학습이 진행됩니다.반면, mean-pooling 같은 전통적인 방법은 비디오 전체를 그냥 고르게 평균 내기때문에 텍스트랑 관련 없는 장면까지 같이 섞여서 결과에 포함되고, 검색 정확도는 떨어질 수밖에 없습니다. 결론적으로 영상 전체를 평균 내는 것보다, 텍스트에 맞는 프레임만 골라서 쓰는 게 훨씬 좋은 방법이라는 것을 알 수 있습니다.
LOSS
마지막으로 학습 loss를 살펴보면 저자는 symmetric Text-to-Video / Video-to-Text retrieval 구조를 사용해서 학습하고 cross entropy loss를 사용합니다.


4. Experiments
저자는 MSR-VTT, MSVD , LSMDC 와 같은 일반적으로 사용되는 벤치마크 Text-Video retrieval 데이터셋에 대해 실험을 수행하고, Recall@1 (R@1), Recall@5 (R@5), Recall@10 (R@10), MdR 및 MnR를 통해 성능을 평가합니다.
4.1 Datasets
MSR-VTT는 10,000개의 비디오로 구성되어 있고, 각 비디오에는 사람이 작성한 설명 문장(캡션)이 약 20개씩 있습니다. 여기서 중요한 건, 하나의 비디오에 여러 캡션들이 각기 다른 장면을 설명하고 있다는 점이고 이는 저자의 아이디어인 텍스트와 비디오의 가장 관련 있는 특정 프레임만 통합하자는 생각을 뒷받침해주는 구조입니다. .
MSVD는 총 1,970개의 비디오가 있고, 총 12만 개 이상의 캡션이 붙어 있습니다. 각 비디오는 1초에서 62초까지 다양하고, 하나의 비디오가 여러 캡션과 연결되어 있는데 이 역시 서로 다른 장면을 설명하는 경우가 많습니다.
LSMDC는 영화에서 잘라낸 영상 클립들로 구성된 대규모 데이터셋입니다. 총 118,081개의 비디오-캡션 쌍이 있고, 한 비디오당 하나의 설명만 있습니다. 비디오 길이는 대략 2초에서 30초 사이이며 이 데이터셋은 특히 장면 전환이 많고 시각적 내용이 다양해서, 콘텐츠 다양성에 강한 모델인지 테스트하는 데 적합한 환경을 갖추고 있습니다.
4.2 Results
두 가지 훈련 setting (MSR-VTT의 9k-Train과 7k-Train)에서 훈련된 모델 결과를 각각 Table 1, Table 2에 정리했고, MSVD와 LSMDC에 대한 성능 비교는 Table 3과 4에 나와있습니다.



이 실험 결과를 통해 모든 데이터셋, 모든 지표에서, X-Pool 모델이 기존의 풀링 방식들을 뛰어넘는 성능을 보였다는 것을 알 수 있습니다. 특히 비교 대상으로 삼은 CLIP4Clip-meanP, CLIP4Clip-seqTransf는 모두 CLIP을 백본으로 사용하기 때문에, 저자의 모델과 직접적인 비교가 가능하고 이를 통해 X-Pool의 성능 향상은, 텍스트에 따라 의미 있는 프레임만 골라서 통합하는 방식 때문이라는 점을 알 수 있습니다.
Top-k Experiments

X-Pool의 설계 아이디어를 좀 더 잘 이해하기 위해, 앞서 설명한 Top-k 함수의 성능도 비교합니다. 여기선 mean풀링과 top-k 풀링을 비교했는데요, 두 방식 모두 사전 학습된 CLIP을 제로샷으로 사용했고, k는 3으로 고정했습니다. 그 결과, top-k 풀링은 mean풀링보다 Recall@1에서 약 6% 상대적으로 더 높은 성능을 보였습니다. 즉, 텍스트와 의미적으로 유사한 프레임만 모아서 통합하면 성능이 올라간다는 사실을 다시 확인합니다. 다만, top-k 방식에도 단점이 있습니다. 가장 큰 문제는 k 값을 미리 정해야 한다는 점입니다.
그래서 각 텍스트-비디오 쌍에 대해 최적의 k를 따로 찾고 히스토그램으로 시각화해봤을때, k는 쌍마다 다르게 나타나서 일관된 기준으로 선택하기 어렵다는 문제가 보였습니다.
Robustness to Content Diversity in Videos

이번엔 비디오의 시각적 다양성, 즉 장면 전환이 많은 영상에 대해서도 테스트를 했습니다. MSR-VTT 테스트 세트에 다른 영상 클립들을 무작위로 삽입해서 장면 전환을 인위적으로 늘린 후, 이렇게 다양성이 증가된 비디오에 대해 실험을 진행했습니다. 그 결과 mean풀링 방식은 전환 수가 늘어날수록 성능이 급격히 하락했고 Median Rank가 2에서 46까지 증가했습니다. 반면, X-Pool은 텍스트에 따라 의미 있는 프레임만 집중하기 때문에, Median Rank가 2에서 9로만 증가하는 모습을 보였습니다. 장면 전환이 많을수록 기존 방식은 노이즈를 그대로 받아들이는 반면, X-Pool은 관련 없는 정보는 억제하고, 관련 있는 장면만 선택한다는 것을 확인할 수 있네요.
Qualitative Examples

X-Pool이 어떻게 프레임마다 attention을 다르게 할당하는지 시각적으로 보여주는 예시들을 확인하고 마치도록 하겠습니다. 위 그림에서 어떤 예시에서는 뇌를 보여주는 애니메이션을 설명하는 텍스트가 주어졌는데, 이 경우 모델은 중간 프레임에만 높은 가중치를 부여했고. 또 다른 경우에는 한 캐릭터가 기계를 바라보는 장면을 묘사하는 텍스트에 대해, 마지막 프레임에 attention되는 모습을 볼 수 있습니다. 또한 심사위원이 무대 위 참가자의 노래를 듣고 있는 상황처럼 비디오 전체가 텍스트와 관련 있는 경우에는, X-Pool이 모든 프레임에 attention을 고르게 분산시킨다는 점도 확인할 수 있습니다. 이를 통해 장면 전환이 많거나 시각적으로 복잡한 영상에도 강건하게 작동함을 입증했습니다.
안녕하세요 정의철 연구원님 리뷰 감사합니다.
Cross-Modal Language-Video Attention로 비디오 프레임-텍스트 연관성 계산하는게 본 논문의 핵심인것 같은데, 궁금한 점이 생겨서 질문드립니다. 프레임의 순서가 무시되는 점은 문제가 되지 않을까요? attention은 각 프레임을 독립적으로 비교하지만, 어떤 사건이 시간에 따라 일어나는 순서를 고려하지 않으면 중요한 정보를 놓칠 수도 있지 않을지 궁금합니다