[CVPR 2024] Koala: Key frame-conditioned long video-LLM

안녕하세요 이번에 소개할 논문은 Long Video QA 문제를 다루는 video LLM 연구입니다. 이 방법론은 이미 학습된 video LLM이 더 긴 비디오 길이에도 잘 동작하도록 adaptation 시켜 주는 방법을 제안하는 논문입니다. 그럼 바로 리뷰 시작하겠습니다.

1. Introduction

이번에 소개할 논문은 long video에 대해 질문에 답할 수 있는 video-LLM을 어떻게 만들지 다루는 연구입니다. 분 단위 비디오를 이해하려면 단순히 한두 동작을 인식하는 수준이 아니라, 여러 액션들이 어떤 순서와 구조로 묶여서 하나의 activity을 이루는지를 파악해야 합니다. 예를 들어 Figure 1에서 사람이 그냥 스케치를 하는 게 아니라 “노트북 커버를 만들고 있다”는 걸 알아내려면, 모델이 테이프로 고정하기(taping), 길이 재기(measuring) 같은 핵심 동작과 종이(paper) 같은 객체를 포착하고, 이런 요소들이 서로 어떻게 연결되는지를 이해해야 합니다.

최근에는 instruction-tuning이 된 multimodal LLM (mLLM)과 그 video LLM이 여러 멀티모달 다운스트림 태스크에서 좋은 성능을 보여주면서, 긴 비디오 이해에도 이런 vLLM을 써 보자는 흐름이 생겼습니다. vLLM은 보통 몇 초짜리 짧은 비디오에서 소수의 핵심 프레임만 뽑아 visual token으로 바꾸고, 이 토큰들을 텍스트 토큰과 같은 차원에 매핑해 LLM이 이미 가지고 있는 지식을 활용하는 방식입니다. 이렇게 하면 짧은 비디오 안의 동작이나 시각 개념들을 LLM이 언어처럼 다루면서 설명할 수 있게 됩니다.

하지만 이렇게 수백만 개의 짧은 비디오만 가지고 학습한 기존 vLLM들은, 프레임 수가 훨씬 많은 분 단위의 긴 비디오로 넘어가면 여전히 한계를 보입니다. 가장 단순한 확장 방법은 긴 비디오에서도 똑같이 일정 개수의 키 프레임만 샘플링하는 것인데, 이렇게 하면 세밀한 시공간 정보(spatiotemporal information)가 대부분 날아가 버립니다. 그 결과 EgoSchema, Seed-Bench 같은 복잡하고 장기적인 시간 이해가 필요한 벤치마크에서는 성능이 크게 떨어지는 문제가 있습니다.

최근 연구에서는 긴 비디오를 여러 구간(segment)으로 쪼개고, 각 구간마다 키 프레임을 뽑아서 vLLM의 비디오 토크나이저에 여러 번 넣는 방법이 있습니다. 하지만 이 방식은 토크나이저가 구간 내부의 시공간 문맥만 모으도록 설계되어 있어서, 구간들 사이의 관계를 제대로 통합하지 못한다는 한계가 있습니다. 즉, 전체 비디오 관점에서의 “큰 흐름”이나 구간 간 연결성을 보기 어렵다는 문제가 생깁니다.

이러한 한계를 개선하기 위해, 저자들은 Koala라는 vLLM 프레임워크를 제안합니다. Koala는 “Key frame-conditioned long video-LLM”의 줄임말로, 기존에 고정된(frozen) vLLM의 비디오 토크나이저를 그대로 두면서, 그 위에 시공간 쿼리(spatiotemporal queries)를 도입해 더 긴 시간 구간에 걸쳐 시공간 문맥을 모을 수 있도록 적응시키는 self-supervised 방식입니다.

저자는 vLLM의 비디오 토크나이저는 원래 정해진 개수의 프레임을 대상으로 시공간 문맥을 잘 모으는 법을 이미 배웠기 때문에, 입력 프레임 수만 잘 유지해 주면 긴 비디오도 충분히 일반화해서 이해할 수 있다 가정하고, 이를 위해 긴 비디오 전체를 coarse하게 샘플링해서 키 프레임을 뽑고, 이를 통해 비디오의 글로벌 컨텍스트를 인코딩합니다. 그런데 이렇게만 하면 세밀한 시공간 정보가 부족하니, 여기에 더해 좀 더 촘촘한 샘플링 비율로 여러 비디오 세그먼트를 뽑아, 각 세그먼트가 담고 있는 로컬 시공간 정보를 글로벌 컨텍스트에 보완하는 형태로 사용합니다.

이를 모델링하기 위해Conditioned Segment (CS) 토크나이저와 Conditioned Video (CV) 토크나이저를 제안합니다. CS 토크나이저는 학습 가능한 segment queries를 사용해서, 전체 비디오의 글로벌 컨텍스트를 참고하면서 각 세그먼트 안에서 중요한 프레임 수준 개념들을 골라내고 aggregation 합니다. 그리고 CV 토크나이저는 temporal concept queries를 도입하고, 서로 다른 세그먼트 사이의 문맥적 관계를 추론해 줍니다. 이를 통해 여러 세그먼트에 대해 시공간 정보를 담은 visual token 시퀀스를 만들어 내고, 최종적으로 LLM의 입력으로 들어가게 됩니다.

2. Method

기본적으로 video Large Language Model(vLLM)은 주어진 텍스트 쿼리를 텍스트 토큰 ztext 으로 인코딩하고, 비디오 V에 대해서는 키 프레임을 선택한 뒤 Q-Former(F_VQT) 로 처리하여 키 프레임 토큰 zkey 를 추출합니다. 이후 zkey 를 projection하여 ztext 와 동일한 차원으로 맞춘 뒤, 두 토큰 시퀀스를 concat{ztext , zkey }하여 LLM에 입력함으로써 최종 답변을 생성합니다.

하지만 기존에 키프레임을 뽑는 방식은 coarse한 방식으로 프레임을 선택하기 때문에 세밀한 움직임이나 순간적인 변화에 대한 정보는 소실되는 문제가 있습니다. 따라서 저자가 제안하는 Koala 모델은 비디오를 여러 세그먼트 단위로 나눈 뒤, 키 프레임에서 얻은 전역 컨텍스트 zkey를 조건으로 하여 추가 토크나이저(Conditioned Segment(CS), Conditioned Video (CV))를 도입하여 세그먼트별 시공간 정보를 추출하고, 이를 기존 키 프레임 토큰을 보완하는 형태로 LLM 입력에 함께 사용하는 방식을 제안합니다. (ϕinter 는 FCS , FCV 를 거쳐나온 토큰을 LLM 입력 형태에 맞게 projection하는 함수)

저자가 제안하는 아키텍쳐는 아래 그림과 같고, 이제 CS와 CV를 어떻게 만드는지 구체적으로 설명 드리겠습니다.

2.1 Conditioned Segment Tokenizer

먼저 Conditioned Segment (CS)를 계산하기 위해서 원래 키 프레임 zkey 에 대해 학습 가능한 Qsegs 을 더해주고 사전 학습된 비디오 쿼리 Qvideo와 concate 하여 Q-former에 입력될 Query를 만듭니다. 그리고 i번째 비디오 세그먼트에 대해 각 프레임을 인코딩해서 얻은 프레임 특징들을 Key/Value로 하여 Q-Former에 입력합니다. 이를 수식으로 표현하면 다음과 같습니다.

2.2 Conditioned Video Tokenizer

위에서 설명드린 CS는 각 세그먼트의 로컬 정보와(Si) 전체 비디오를 대표하는 글로벌 정보(zkey)를 참고해서 토큰을 만들기 때문에 글로벌 정보를 보강할 수 있습니다. 하지만 세그먼트 별로 나누어서 인코딩하기에 다른 세크먼트로부터의 문맥 정보는 충분히 포함하고 있지 않습니다. 이러한 한계를 보완하기 위해 저자는 세그먼트 전반에 걸쳐 spatiotemporal관계를 보강하도록 설계된 Conditioned Video (CV) 를 추가로 제안합니다.

먼저 세그먼트 Si에 대해 Fcs를 통해 나온 CS 토큰을 zsegs,i​ 으로 정의하겠습니다. 저자는 이 토큰들에 대해 학습 가능한 temporal queries Qtemp 를 도입하여 zsegs,i​ 의 토큰들에 더해집니다. 이 Q 를 통해 이 토큰들은 비디오의 몇 번째 세그먼트(시간 구간)에 속해 있다라는 시간 정보를 인코딩 할 수 있습니다. 그리고 저자는 추가적으로 학습 가능한 concept query Qconcepts 를 도입합니다. 이 토큰은 모든 세그먼트 i에 대해, t번째 토큰에 더해지는 토큰으로, ‘t번째 토큰’이라는 공통된 역할을 공유하게 해서 비디오 전반에서 비슷한 개념끼리 정렬되게 만들어줍니다. 수식으로 표현하면 다음과 같습니다.

이제 Qfinal,i,t 을 Key/Value로 하고, 2.1과 비슷하게 키 프레임 zkey 에 대해 학습 가능한 Qinter 을 더해주고 사전 학습된 비디오 쿼리 Qvideo와 concate 하여 Q-former에 입력될 Query를 구성합니다. 이후 Q-former의 값과 zkey를 가중합하여 최종 출력을 생성합니다.

2.3 Learning objective

저자가 도입한 FCS , FCV, ϕinter 를 최적화하는 방식에 대해 설명드리겠습니다. 저자는 사전 학습된 vLLM이 instruction-tuned 되어 있다는 점을 활용하여, “fix a car engine”과 같은 레이블을 질의(query)–응답(response) 형식의 instruction 템플릿으로 변환한 뒤 모델을 파인튜닝합니다.

입력 비디오 V에 대해 질의 프롬프트를 P, 이에 대응하는 응답을 M개의 단어로 이루어진 시퀀스 R={l^1,⋯ ,l^M}라고 할때 다음과 같이 cross-entropy loss를 최소화하는 방식으로 학습을 진행합니다.

즉 이전 시점까지의 정답 단어 l^<j 가 주어졌을 때 j 번째 단어 lj​의 조건부 확률을 최대화하도록 autoregressive 하게 학습을 진행합니다.

3. Experiment

저자는 HowTo100M에서 4~30분 길이로 이루어진 25만 개의 long instructional 비디오를 필터링해 학습에 사용하며,

zero-shot long video question answering을 태스크로 하여 EgoSchema와 Seed-Bench에서 평가합니다. 추가적으로 제안한 모듈이 short 비디오에서도 동작하는지 확인하기 위해 Seed-Bench의 short-term action recognition에서도 평가를 진행합니다. 구현 측면에서 Koala는 Video-LLaMA 모델을 기반으로 필터링된 HowTo100M 서브셋에 대해 2 epoch 동안 파인튜닝됩니다.

EgoSchema evaluation

비교 모델로는 sota vLLM들과 LLM 모델로 비교를 진행합니다.

먼저, 테이블 1에서는 Flan-T5 LLM 모델이 이 벤치마크에서 높은 성능을 보였습니다. 이는 기존 vLLM들이 long-term temporal reasoning에 대해 잘 추론하지 못한다는 것을 보여주는 결과입니다. 반면 저자의 방법론은 Flan-T5 모델보다 좋은 성능을 보이며 같은 Llama-2을 LLM으로 사용한 Video-Llama보다도 7%의 성능 향상을 보여주면서 저자가 도입한 토크나이저 함수가 시간적 관계를 추론하는 데 효과적임을 보여주고 있습니다.

그리고 여기서 보여준 성능 향상이 HowTo100M의 비디오 데이터에 대해 파인튜닝했기 때문인지 아닌지 확인하기 위해, CS/CV를 제거한 상태에서 Video-Llama 캡셔닝 모델만 추가로 파인튜닝하는 실험도 수행했는데, 이 경우 오히려 기본 Video-Llama 대비 top-1 정확도가 약 5% 감소하는 결과가 나타났다고합니다. 따라서 Koala에서 관찰된 성능 향상은 단순한 추가 학습 효과라기보다, CS/CV 토크나이저에서 비롯된 구조적 이점으로 해석할 수 있습니다.

Seed-Bench Procedure Understanding

Table 3에서는 Seed-Bench 벤치마크의 procedure understanding 태스크에 대한 평가 결과를 제시합니다. Procedure understanding은 주어진 비디오 안에서 어떤 행동들이 수행되었는지 찾아내고, 이를 올바른 시간 순서대로 배열해야 하는 태스크라서, 긴 길이에 걸친 temporal understanding이 필요한 태스크입니다. 그런데 표를 보면 알 수 있듯이 mPLUG-Owl, VideoChat, Video-Llama 같은 vLLM들은 오히려 InstructBLIP, VPGTrans 같은 이미지 기반 모델보다 성능이 떨어지는 경우가 많고, 심지어 일부 vLLM은 해당 모델의 base LLM보다도 성능이 낮게 나온모습을 보입니다.

또한, 수백만 개의 비디오–캡션 쌍을 사용해 사전 학습을 진행했음에도, Video-Llama의 성능은 Llama-2 LLM 대비 4% 정도만 개선되는 모습을 보였습니다. 이는 단순히 더 많은 키 프레임을 사용해 temporal context를 aggregate하는 방식만으로는, global 문맥을 고려하기에는 어렵다는 걸 보여줍니다. 반면 저자의 모델은 훨씬 적은 수의 비디오만 사용하여 파인튜닝만 했음에도 불구하고, Video-Llama 대비 약 9%의 성능 향상을 보여주고 있습니다.

다음으로 Seed-Bench Action Recognition에서는 procedure understanding 와 달리 평균 길이가 약 10초 정도인 짧은 비디오를 대상으로 평가를 진행했습니다. 표 3에서 보듯이 mPLUG-Owl, Video-ChatGPT, Valley 같은 vLLM 계열이 오히려 InstructBLIP, VPGTrans보다 성능이 낮게 나왔습니다. 그리고 Video-LLaMA는 수 초 길이 비디오로 사전 학습을 했음에도 VPGTrans보다 약 4% 낮은 성능을 보였는데, 이는 키 프레임 토크나이저만으로는 세밀한 동작이나 물체 상호작용을 포착하는 데 한계가 있음을 보여줍니다. 반면 저자의 모델은 도입한 CS·CV 토크나이저를 통해 Video-LLaMA 대비 6%, VPGTrans 대비 2% 성능이 향상되어, 전역 키 프레임 문맥과 세그먼트 간 시공간 관계를 함께 고려하는 구조가 짧은 액션 인식에서도 효과적이라는 것을 확인할 수 있습니다.

Ablation study

마지막으로 Ablation study 결과를 살펴보겠습니다. 표 4를 통해 알 수 있듯이 저자가 제안하는 모듈을 통해 base 모델 대비 모든 벤치마크에서 일관되게 성능이 향상되는 것을 확인할 수 있고 장단기 시간 이해 모두에서 정확도를 향상시키는 데 도움이 된다는 것을 확인할 수 있습니다.

Author: 정 의철

2 thoughts on “[CVPR 2024] Koala: Key frame-conditioned long video-LLM

  1. 안녕하세요 의철님 좋은 리뷰 감사합니다 🙂
    Koala라는 구조의 핵심을 기존 vLLM의 키프레임 토큰은 그대로 냅두고 긴 비디오에서도 시공간적인 구조를 볼수있게 새 토크나이저인 CS랑 CV를 얹어서 모델에 넣어준다고 이해했습니다

    이때 이 CV토크나이저의 Q_final 구성 Q_temp와 Q_concepts는 콘캣이 아닌 단순 덧셈 방식일까요?
    그럼 서로 다른 의미를 가지는 그 두 정보들이 하나의 벡터로 단순하게 합쳐진다는 건데 기본 트랜스포머에서 토큰임베딩과 포지션임베딩을 단순히 더해서 한 벡터에 공존 시킨 것처럼 본질적으로 같은 구조라고 이해해도 되는지 궁금합니다.

  2. 의철님 안녕하세요 좋은 리뷰 감사합니다.

    저자가 제안한 방식으로 학습하기 위해 기존의 짧은 캡션을 instruction 형태로 변환했다고하였는데, 이 변환은 무엇으로 이루어지는지 궁금합니다.

    또한 egoschema와 같은 데이터셋은 비디오 평균 길이가 어떻게 되나요? 최근에는 1-2시간짜리 비디오 추론 연구가 활발히 진행되는데, egoschema도 그 정도 축에 속하는지 궁금합니다.

Leave a Reply to 김 현우 Cancel reply

Your email address will not be published. Required fields are marked *